이 문서의 과거 버전 (r1)을 보고 있습니다. 수정일: 2026.02.14 21:22
혼잡 윈도우 크기는 TCP/IP 프로토콜 스위트에서 혼잡 제어를 수행하기 위해 사용되는 핵심 변수이다. 이는 송신 측이 ACK를 기다리지 않고 한 번에 전송할 수 있는 데이터의 최대 양을 세그먼트 단위로 정의한다. 혼잡 윈도우 크기는 네트워크의 혼잡 상태를 추정하고, 그에 따라 데이터 전송 속도를 동적으로 조절하는 역할을 한다.
혼잡 윈도우의 크기는 고정되어 있지 않다. 연결 초기에는 작은 값에서 시작하여, 패킷 손실 없이 ACK가 성공적으로 수신되면 점진적으로 증가한다. 반면, 패킷 손실이 감지되면 네트워크 혼잡이 발생했다고 판단하여 크기를 급격히 줄인다. 이와 같은 동적 조정을 통해 네트워크의 대역폭을 최대한 활용하면서도 과도한 패킷 손실을 방지한다.
혼잡 윈도우는 수신 윈도우와 함께 실제 전송 가능한 데이터 양을 결정한다. 송신 측은 혼잡 윈도우와 수신 측이 통지한 수신 윈도우 크기 중 더 작은 값만큼만 데이터를 전송할 수 있다. 이는 수신 측의 처리 능력과 네트워크의 수용 능력을 동시에 고려한 조치이다.
혼잡 윈도우 크기 조정 알고리즘은 TCP의 핵심 성능을 좌우한다. 대표적인 알고리즘으로는 슬로우 스타트, 혼잡 회피, 빠른 재전송 및 빠른 회복 단계가 있으며, 이를 구현한 TCP Tahoe, TCP Reno, TCP CUBIC 등의 다양한 TCP 변종이 발전해 왔다.
혼잡 윈도우는 TCP 혼잡 제어의 핵심 매커니즘으로, 송신자가 네트워크의 혼잡 상태를 추정하고 이에 따라 한 번에 전송할 수 있는 데이터 양을 제한하는 가변적인 값이다. 이 윈도우 크기는 승인 응답을 기다리지 않고 전송할 수 있는 데이터 세그먼트의 최대 개수로 정의된다. 혼잡 윈도우의 근본적인 목적은 송신자가 네트워크의 처리 능력을 초과하는 데이터를 무분별하게 쏟아내어 혼잡 붕괴를 유발하는 것을 방지하는 데 있다.
혼잡 윈도우 크기는 네트워크 상태에 따라 동적으로 증가하거나 감소한다. 초기에는 작은 값에서 시작하여 패킷 손실 없이 ACK가 정상적으로 수신되면 크기를 점진적으로 증가시킨다. 이 과정을 통해 송신자는 사용 가능한 네트워크 대역폭을 탐색하고 최대한 활용한다. 반면, 패킷 손실이 감지되면 네트워크에 혼잡이 발생했다고 간주하고 윈도우 크기를 급격히 줄여 트래픽 부하를 완화한다.
이러한 조절 메커니즘은 네트워크 효율성과 안정성을 동시에 달성하는 데 기여한다. 송신률을 적절히 제어함으로써 라우터의 버퍼 오버플로우를 방지하고, 결과적으로 전체 네트워크의 처리율을 최적화하며 불필요한 재전송을 줄인다. 또한, 여러 TCP 연결이 동일한 링크를 공유할 때 각 연결의 혼잡 윈도우가 조정되며, 이는 자원을 공평하게 나누는 공정성을 유도하는 효과를 가져온다.
혼잡 윈도우는 TCP 혼잡 제어의 핵심 매커니즘으로, 송신자가 네트워크의 혼잡 상태를 추정하고 그에 따라 데이터 전송 속도를 동적으로 조절하기 위해 사용하는 가상의 버퍼 크기이다. 이는 수신자의 처리 능력을 나타내는 수신 윈도우와는 구별되는 개념으로, 네트워크 경로 상의 병목 현상을 관리하는 데 초점을 맞춘다.
기본 원리는 송신자가 한 번에 전송할 수 있는 미확인 세그먼트의 최대 개수를 혼잡 윈도우 크기로 제한하는 것이다. 초기에는 작은 크기에서 시작하여, 패킷 손실 없이 ACK를 성공적으로 수신하면 윈도우 크기를 점진적으로 증가시킨다. 반면, 패킷 손실(타임아웃 또는 중복 ACK)이 감지되면 이를 네트워크 혼잡의 신호로 해석하고 윈도우 크기를 급격히 줄인다. 이 과정을 통해 송신자는 네트워크의 수용 가능한 대역폭을 탐색하고 과도한 트래픽으로 인한 혼잡 붕괴를 방지한다.
주요 목적은 크게 두 가지이다. 첫째는 네트워크의 혼잡 붕괴를 방지하는 것이다. 제어 없이 모든 송신자가 최대 속도로 데이터를 전송하면 라우터의 큐가 가득 차 패킷 손실이 빈번히 발생하고, 전체 네트워크 처리율이 급격히 떨어질 수 있다. 둘째는 네트워크 자원의 효율적이고 공정한 활용이다. 혼잡 윈도우 메커니즘은 여러 TCP 연결이 동일한 병목 링크를 공유할 때, 각 연결이 공평하게 대역폭을 나누어 사용하도록 유도한다.
핵심 요소 | 설명 |
|---|---|
동적 조절 | 네트워크 상태(패킷 손실)에 반응하여 크기를 증가시키거나 감소시킨다. |
탐색 기반 | 안정적으로 ACK를 받으면 대역폭이 남아있다고 판단해 크기를 키워 처리율을 높인다. |
반응 기반 | 패킷 손실을 혼잡 신호로 간주하여 크기를 줄여 네트워크 부하를 완화한다. |
공정성 | 여러 연결이 혼잡 시 윈도우 크기를 비슷하게 줄이므로 결과적으로 공평한 대역폭 분배가 이루어진다. |
혼잡 윈도우는 송신자가 ACK를 기다리지 않고 한 번에 전송할 수 있는 데이터의 최대량을 결정함으로써 송신률을 조절합니다. 이 윈도우 크기는 네트워크의 혼잡 상태에 따라 동적으로 증가하거나 감소합니다. 네트워크가 혼잡하지 않을 때는 윈도우 크기를 빠르게 증가시켜 대역폭을 효율적으로 활용하고, 혼잡 징후가 감지되면 크기를 급격히 줄여 네트워크의 과부하를 해소합니다. 이 과정을 통해 단일 연결은 가능한 최고의 처리량을 달성하면서도 네트워크 자원의 공정한 분배에 기여합니다.
네트워크 효율성 측면에서 혼잡 윈도우는 두 가지 극단적인 상황을 피하는 데 목적이 있습니다. 첫째는 네트워크가 수용할 수 있는 양보다 훨씬 많은 패킷을 보내어 라우터의 버퍼를 넘치게 하고 패킷 손실을 유발하는 과도한 송신입니다. 둘째는 네트워크에 여유 대역폭이 충분함에도 불구하고 너무 적은 데이터만을 보내어 링크 용량을 제대로 활용하지 못하는 저효율 송신입니다. 이상적인 효율성은 네트워크의 대역폭-지연 곱에 근접한 양의 데이터를 지속적으로 전송하는 상태, 즉 파이프라인이 꽉 차 있는 상태를 유지하는 것입니다.
상태 | 혼잡 윈도우 크기 영향 | 네트워크 효율성 |
|---|---|---|
혼잡하지 않음 | 크기가 점진적으로 증가 | 사용 가능한 대역폭을 적극적으로 활용하여 처리량 향상 |
혼잡 발생 | 크기가 급격히 감소 (일반적으로 절반으로) | 네트워크 과부하를 완화하여 패킷 손실과 지연을 줄임 |
안정적 운영 | 대역폭-지연 곱 근처에서 미세 조절 | 높은 처리량과 낮은 지연을 동시에 유지하는 최적점 추구 |
따라서, 혼잡 윈도우 크기의 동적 조절은 단순히 하나의 연결 성능을 최대화하는 것을 넘어, 전체 네트워크의 안정성과 여러 흐름 간의 공정성을 보장하는 핵심 메커니즘입니다. 효율적인 네트워크는 개별 송신자의 적응적 행동과 전체 시스템의 균형이 조화를 이룰 때 달성됩니다.
혼잡 윈도우 크기는 슬로우 스타트, 혼잡 회피, 빠른 재전송 및 빠른 회복과 같은 알고리즘에 의해 동적으로 결정되고 조정됩니다. 이 알고리즘들은 TCP 연결의 수명 주기 동안 서로 다른 단계에서 작동하여 네트워크의 최대 대역폭을 탐색하고 혼잡을 피하는 동시에 손실 발생 시 신속하게 대응합니다.
슬로우 스타트 단계에서는 연결 초기 또는 장시간 유휴 상태 후에 혼잡 윈도우 크기를 빠르게 증가시킵니다. 초기 혼잡 윈도우는 일반적으로 1, 2 또는 10 MSS 크기의 세그먼트로 설정됩니다. 송신자는 수신한 각 ACK 패킷에 대해 혼잡 윈도우를 1 MSS만큼 증가시키는데, 이는 매 RTT마다 윈도우 크기가 두 배로 증가하는 지수적 성장을 의미합니다. 이 단계는 네트워크의 용량을 빠르게 탐색하는 데 목적이 있습니다. 슬로우 스타트는 사전에 설정된 임계값에 도달하거나 패킷 손실이 감지될 때 종료됩니다.
혼잡 회피 단계는 슬로우 스타트 임계값에 도달한 후 시작됩니다. 이 단계에서는 보수적으로 윈도우 크기를 선형적으로 증가시켜 네트워크가 포화 상태에 근접하지 않도록 합니다. 일반적인 구현에서는 매 RTT마다 혼잡 윈도우를 1 MSS만큼 증가시킵니다. 이는 각 ACK 패킷 수신 시 cwnd에 1/cwnd를 더하는 방식으로 이루어집니다. 목표는 추가적인 패킷 손실을 유발하지 않으면서 가능한 최대 처리량을 유지하는 것입니다.
패킷 손실이 발생하면, 손실의 유형에 따라 다른 알고리즘이 동작합니다. 빠른 재전송은 수신자로부터 동일한 시퀀스 번호에 대한 중복 ACK를 세 개 연속으로 받으면, 타임아웃을 기다리지 않고 즉시 해당 패킷을 재전송하도록 합니다. 빠른 회복 알고리즘은 이어서 실행되어 혼잡을 심각한 상태로 간주하지 않고 연결을 유지합니다. 빠른 회복에서는 슬로우 스타트 임계값을 현재 혼잡 윈도우의 절반으로 설정하고, 혼잡 윈도우를 새로운 임계값으로 줄인 후 선형 증가 단계(혼잡 회피)로 진입합니다. 반면, 재전송 타임아웃이 발생하는 경우에는 더 심각한 혼잡으로 판단하여 혼잡 윈도우를 1 MSS로 초기화하고 슬로우 스타트를 다시 시작합니다.
알고리즘 단계 | 트리거 조건 | 윈도우 크기 조정 방식 | 주요 목적 |
|---|---|---|---|
슬로우 스타트 | 연결 시작, 타임아웃 후 | 매 RTT마다 지수적 증가 (ACK당 +1 MSS) | 네트워크 용량 신속 탐색 |
혼잡 회피 |
| 매 RTT마다 선형 증가 (ACK당 +1/ | 혼잡 구간 회피 및 안정화 |
빠른 회복 | 중복 ACK 3개 수신 |
| 패킷 손실 후 신속한 회복 및 처리량 유지 |
슬로우 스타트는 TCP 혼잡 제어 알고리즘의 초기 단계로, 송신자가 네트워크의 이용 가능한 대역폭을 탐색하기 위해 혼잡 윈도우 크기를 지수 함수적으로 빠르게 증가시키는 과정이다. 이 알고리즘은 연결이 시작되거나 타임아웃에 의한 패킷 손실이 발생한 후에 시작된다. 초기 혼잡 윈도우 크기는 일반적으로 1개의 MSS 크기 세그먼트로 설정되며, 이후 수신된 각각의 ACK 확인응답 패킷에 대해 윈도우 크기가 1 MSS씩 증가한다. 이는 매 RTT마다 혼잡 윈도우 크기가 두 배로 증가하는 효과를 낳는다.
슬로우 스타트의 주요 목적은 새로운 연결이 네트워크에 급작스러운 부하를 주지 않으면서 가능한 빠르게 최적의 송신 속도에 도달하는 것이다. 이 과정은 혼잡 윈도우 크기가 사전에 설정된 임계값인 ssthresh에 도달하거나, 패킷 손실이 감지될 때까지 계속된다. ssthresh에 도달하면 알고리즘은 혼잡 회피 단계로 전환되어 윈도우 크기의 증가 속도를 선형적으로 늦춘다.
단계 | 조건 | 혼잡 윈도우(cwnd) 증가 방식 | 목적 |
|---|---|---|---|
시작 | 연결 시작 또는 타임아웃 발생 후 | cwnd = 1 MSS | 초기화 |
증가 | 매 ACK 수신 시 | cwnd += 1 MSS | 지수적 증가 |
종료 | cwnd >= ssthresh 또는 패킷 손실 감지 시 | 슬로우 스타트 종료, 혼잡 회피 시작 | 네트워크 혼잡 방지 |
슬로우 스타트라는 이름은 초기 TCP 구현인 TCP Tahoe의 선형 증가 방식에 비해 '느리게' 시작한다는 의미에서 유래했지만, 실제로는 윈도우 크기가 기하급수적으로 증가하기 때문에 매우 공격적인 탐색 단계이다. 현대의 고속 네트워크에서는 초기 윈도우 크기를 더 크게 설정하거나, 혼잡 윈도우 크기 결정 알고리즘의 다른 변형을 사용하여 이 단계의 성능을 개선하기도 한다.
슬로우 스타트 단계에서 혼잡 윈도우 크기가 혼잡 임계값에 도달하면, TCP는 혼잡 회피 단계로 전환한다. 이 단계의 목적은 혼잡을 유발하지 않으면서 가능한 최대의 처리량을 유지하는 것이다. 혼잡 회피에서는 패킷 손실이 발생하지 않는 한, 윈도우 크기를 선형적으로 증가시킨다.
구체적인 동작 방식은 다음과 같다. 송신자는 매 RTT마다 혼잡 윈도우 크기를 1 MSS만큼 증가시킨다. 이는 모든 ACK를 수신할 때마다 cwnd를 cwnd + 1/cwnd만큼 증가시키는 방식으로 구현된다[1]. 이는 기하급수적으로 증가하는 슬로우 스타트와 대비되어, 선형 증가(Additive Increase)라고 불린다.
혼잡 회피 단계에서 패킷 손실이 감지되면, 혼잡 임계값은 현재 혼잡 윈도우 크기의 절반으로 설정된다. 이후, 손실 감지 방식에 따라 동작이 달라진다. 만약 타임아웃에 의한 손실이면, 혼잡 윈도우 크기는 1 MSS로 리셋되고 슬로우 스타트 단계부터 재개한다. 만약 중복 ACK에 의한 손실(빠른 재전송)이 감지되면, 일부 알고리즘(예: TCP Reno)은 빠른 회복 단계로 들어가 절반으로 줄인 윈도우 크기에서 바로 혼잡 회피를 재개한다.
이 선형 증가 방식을 통해, 네트워크는 혼잡 상태의 가장자리에서 운영되며, 대역폭을 공정하게 나누어 사용하는 데 기여한다. 여러 TCP 연결이 동일한 병목 구간을 공유할 경우, 각 연결의 윈도우 크기는 주기적으로 증가하다가 손실 발생 시 감소하는 과정을 반복하며, 결과적으로 대역폭을 균등하게 공유하는 경향을 보인다.
빠른 재전송은 세 번의 중복 ACK가 수신되면 패킷 손실이 발생했다고 판단하고, 타임아웃을 기다리지 않고 즉시 손실된 세그먼트를 재전송하는 메커니즘이다. 이는 혼잡 윈도우 크기를 1로 줄이고 슬로우 스타트를 다시 시작하는 초기 TCP Tahoe와 달리, TCP Reno에서 도입된 빠른 회복 알고리즘과 함께 작동하여 성능을 향상시킨다.
빠른 회복 단계에서는 중복 ACK를 수신할 때마다 혼잡 윈도우를 1 MSS씩 증가시켜, 손실이 발생한 구간에서도 데이터 흐름을 유지하려고 시도한다. 손실된 세그먼트에 대한 누적 ACK가 도착하면, 윈도우 크기를 혼잡 회피 단계의 시작 값으로 설정하고 정상적인 혼잡 회피 모드로 복귀한다. 이 과정은 네트워크의 이용 효율을 높인다.
단계 | 트리거 | 혼잡 윈도우(cwnd) 조치 | 목적 |
|---|---|---|---|
빠른 재전송 | 동일 순번에 대한 3번의 중복 ACK | cwnd를 반으로 줄이고 ssthresh에 설정 | 타임아웃 대기 없이 신속한 손실 복구 |
빠른 회복 | 추가 중복 ACK 수신 | 각 중복 ACK마다 cwnd를 1 MSS 증가 | 파이프라인을 유지하며 데이터 전송 지속 |
회복 완료 | 손실된 세그먼트에 대한 누적 ACK 도착 | cwnd를 ssthresh 값으로 설정 후 혼잡 회피 모드 진입 | 정상적인 혼잡 제어 상태로 복귀 |
이 메커니즘은 단일 패킷 손실에 대한 반응성을 크게 높여, 특히 지연이 큰 네트워크에서 처리율 저하를 완화한다. 그러나 연속적인 패킷 손실이 발생하는 경우에는 효율이 떨어질 수 있어, 이후 TCP NewReno나 SACK 같은 개선된 알고리즘들이 개발되었다.
혼잡 윈도우(cwnd)와 수신 윈도우(rwnd)는 TCP 프로토콜에서 데이터 흐름을 제어하는 두 가지 독립적이지만 상호작용하는 핵심 매커니니즘이다. 혼잡 윈도우는 네트워크의 혼잡 상태를 고려하여 송신자가 결정하는 값이며, 수신 윈도우는 수신자의 버퍼 공간 여유를 바탕으로 수신자가 알려주는 값이다. 실제 송신자가 한 번에 전송할 수 있는 데이터의 최대량은 이 두 윈도우 크기 중 더 작은 값에 의해 제한받는다. 이 제한 값을 유효 윈도우(Effective Window)라고 부른다[2].
수신 윈도우는 TCP 헤더의 '윈도우 크기(Window Size)' 필드를 통해 송신자에게 전달된다. 이 값은 수신 애플리케이션이 데이터를 소비하는 속도와 수신 TCP의 버퍼 용량에 따라 동적으로 변한다. 반면, 혼잡 윈도우는 패킷 손실이나 명시적 혼잡 알림(ECN)과 같은 네트워크 혼잡 신호를 바탕으로 송신자 내부의 알고리즘(예: 슬로우 스타트, 혼잡 회피)에 따라 계산된다. 따라서 네트워크가 혼잡하지 않고 수신자 처리 속도가 빠르다면, 혼잡 윈도우가 성능의 주요 제약 조건이 된다. 반대로 수신자 버퍼가 가득 차거나 애플리케이션 처리 속도가 느리다면, 작은 수신 윈도우가 병목이 되어 혼잡 윈도우가 아무리 커도 데이터 전송이 억제된다.
두 윈도우의 관계는 네트워크와 호스트 상태에 따른 성능 진단에 중요한 단서를 제공한다. 예를 들어, 처리율이 낮은데 패킷 손실이 없다면 이는 네트워크 혼잡보다는 수신 윈도우 제한(즉, 수신측 병목) 때문일 가능성이 높다. 현대 TCP 구현체들은 이러한 상호작용을 고려하며, 특히 TCP 윈도우 스케일링 옵션을 사용해 수신 윈도우의 최대값을 확장하여 고대역폭·고지연 네트워크에서 혼잡 윈도우가 충분히 성장할 수 있는 기반을 마련한다.
TCP의 혼잡 제어는 네트워크 상태에 따라 혼잡 윈도우 크기를 동적으로 조절하는 알고리즘을 기반으로 한다. 시간이 지남에 따라 다양한 TCP 변종(variant)이 개발되었으며, 각각은 혼잡을 감지하고 대응하는 방식에 차이가 있다. 초기 구현체부터 최적화된 현대 알고리즘까지의 발전 과정은 네트워크 효율성과 안정성을 지속적으로 향상시켜 왔다.
초기의 대표적인 알고리즘으로는 TCP Tahoe와 TCP Reno가 있다. TCP Tahoe는 슬로우 스타트와 혼잡 회피 단계를 포함하며, 혼잡 발생(패킷 손실)을 감지하면 혼잡 윈도우 크기를 1로 줄이고 슬로우 스타트를 다시 시작한다. TCP Reno는 Tahoe의 기본 구조를 유지하지만, 빠른 재전송과 빠른 회복 메커니즘을 추가했다. 이를 통해 단일 패킷 손실을 중복 ACK로 빠르게 감지하고, 윈도우 크기를 반으로 줄인 후 혼잡 회피 단계로 진입함으로써 성능 저하를 완화한다.
Tahoe와 Reno의 한계를 보완하기 위해 이후 더 정교한 알고리즘들이 등장했다. TCP NewReno는 Reno의 빠른 회복 단계를 개선하여 한 번의 RTT(왕복 시간) 내에 여러 패킷이 손실된 경우에도 더 효율적으로 복구할 수 있도록 했다. TCP SACK(선택적 확인응답)은 수신자가 손실된 패킷의 구체적인 정보를 송신자에게 알려줌으로써, 여러 패킷 손실 시에도 재전송 효율을 크게 높였다.
고대역폭·고지연 네트워크 환경을 위해 설계된 알고리즘도 있다. TCP BIC와 그 후속인 TCP CUBIC은 혼잡 윈도우 증가 방식을 혁신적으로 변경했다. 특히 CUBIC은 윈도우 크기를 시간의 3차 함수로 증가시켜, 혼잡 발생 후 빠르게 윈도우를 회복하고 이후에는 점진적으로 증가시킨다. 이는 대역폭을 더 공정하게 점유하고 RTT에 덜 민감한 특성을 가지도록 한다.
알고리즘 | 주요 특징 | 혼잡 신호 대응 방식 |
|---|---|---|
TCP Tahoe | 슬로우 스타트, 혼잡 회피 구현 | 패킷 손실 시 윈도우를 1로 리셋 |
TCP Reno | Tahoe + 빠른 재전송/회복 | 중복 ACK 시 윈도우를 반으로 줄이고 회복 |
TCP NewReno | Reno의 빠른 회복 단계 개선 | 한 RTT 내 다중 패킷 손실 복구 능력 향상 |
TCP SACK | 선택적 확인응답 옵션 사용 | 정확한 손실 패킷 정보를 활용한 효율적 재전송 |
TCP CUBIC | 3차 함수 기반 윈도우 증가 | RTT 공정성 향상, 고대역폭 환경에 최적화 |
이러한 변종들은 모두 혼잡 제어의 근본 목표인 네트워크의 공정성과 효율적인 대역폭 활용을 달성하기 위해 발전해 왔다. 현대 운영체제는 주로 CUBIC 또는 NewReno와 같은 향상된 알고리즘을 기본으로 채택하고 있다.
TCP Tahoe와 TCP Reno는 초기 TCP 혼잡 제어 알고리즘의 대표적인 두 변종이다. 두 알고리즘 모두 슬로우 스타트와 혼잡 회피 단계를 기본 골격으로 공유하지만, 패킷 손실을 감지하고 대응하는 방식에서 근본적인 차이를 보인다.
TCP Tahoe는 원조에 가까운 알고리즘으로, 패킷 손실을 타임아웃 발생 또는 세 개의 중복 ACK 수신으로 감지한다. 손실이 감지되면 혼잡 윈도우 크기를 1로 초기화하고 슬로우 스타트 단계부터 다시 시작한다. 이는 네트워크에 큰 충격을 주었던 혼잡이 완화되었을 것이라고 가정한 조치이다. 반면, TCP Reno는 Tahoe의 동작을 개선하여 빠른 회복 메커니즘을 도입했다. Reno는 세 개의 중복 ACK를 '경미한 혼잡'의 신호로 해석한다. 이 경우, 혼잡 윈도우를 반으로 줄인 후(빠른 회복 단계), 타임아웃 없이 중복 ACK가 계속 도착하면 윈도우를 점진적으로 증가시켜 흐름을 유지한다. 그러나 타임아웃이 발생하면 Tahoe와 마찬가지로 윈도우 크기를 1로 리셋한다.
두 알고리즘의 성능 차이는 손실 유형에 따라 뚜렷하게 나타난다. 단일 패킷 손실이 발생한 상황에서는 Reno의 빠른 회복 메커니즘이 효율적이다. Tahoe는 윈도우를 1로 줄이고 슬로우 스타트를 다시 시작해야 하므로 처리율이 급격히 떨어지는 반면, Reno는 윈도우를 반으로만 줄이고 바로 혼잡 회피 단계로 진입할 수 있어 성능 저하가 상대적으로 적다. 그러나 여러 패킷이 연속으로 손실되는 경우, Reno의 빠른 회복 알고리즘은 한 번의 손실 복구 주기 내에 여러 손실을 처리하지 못해 타임아웃을 초래할 수 있으며, 이는 결국 Tahoe와 유사한 성능 저하로 이어진다.
특징 | TCP Tahoe | TCP Reno |
|---|---|---|
손실 감지 | 타임아웃 또는 3개의 중복 ACK | 타임아웃 또는 3개의 중복 ACK |
중복 ACK 대응 | 혼잡 윈도우를 1로 설정, 슬로우 스타트 재시작 | 빠른 회복 단계 진입, 윈도우를 반으로 줄이고 점진적 증가 |
타임아웃 대응 | 혼잡 윈도우를 1로 설정, 슬로우 스타트 재시작 | 혼잡 윈도우를 1로 설정, 슬로우 스타트 재시작 |
주요 단점 | 단일 패킷 손실 시에도 성능 저하가 큼 | 연속 패킷 손실 시 빠른 회복 실패로 타임아웃 발생 가능 |
이러한 Tahoe와 Reno의 한계는 이후 TCP NewReno와 TCP SACK 같은 더 발전된 알고리즘의 등장을 촉진하는 계기가 되었다.
TCP Tahoe와 TCP Reno의 한계를 극복하기 위해 개발된 여러 개선된 혼잡 제어 알고리즘이 존재한다. 각 알고리즘은 패킷 손실 복구 효율성, 고대역폭 활용도, RTT 공정성 등을 개선하는 데 초점을 맞췄다.
TCP NewReno는 Reno의 빠른 회복 단계를 수정한 알고리즘이다. Reno는 한 RTT 동안 여러 패킷이 손실되면 타임아웃에 이를 위험이 있었으나, NewReno는 부분적인 ACK를 처리하여 한 번의 빠른 회복 단계에서 여러 손실된 패킷을 복구할 수 있다. 이로 인해 처리율 저하를 줄이고 네트워크 혼잡 후의 회복 속도를 높였다. TCP SACK(Selective Acknowledgment)는 수신자가 연속되지 않은 데이터 블록의 수신을 명시적으로 알릴 수 있도록 하는 옵션이다. 송신자는 정확히 어떤 세그먼트가 손실되었는지 알 수 있어, 여러 패킷이 손실된 상황에서도 불필요한 재전송을 최소화하고 효율적으로 복구할 수 있다.
고대역폭·고지연 네트워크 환경에서의 성능을 개선하기 위해 설계된 알고리즘도 등장했다. TCP BIC(Binary Increase Congestion control)는 대역폭 탐색을 이진 검색 방식으로 수행하여 혼잡 윈도우 크기를 빠르게 최적 값으로 수렴시키고, 이후 선형적으로 증가시켜 안정성을 유지한다. TCP CUBIC은 BIC의 복잡성을 줄이고 더욱 공정한 RTT 독립성을 확보한 알고리즘으로, 현재 리눅스의 기본 혼잡 제어 알고리즘으로 널리 채택되었다. CUBIC은 혼잡 윈도우 크기를 시간의 3차 함수로 증가시켜, 혼잡 발생 후의 윈도우 증가 속도를 혼잡 발생 시점으로부터의 경과 시간에 기반하여 결정한다. 이 방식은 장거리 고속 네트워크에서 공격적으로 대역폭을 점유하지 않으면서도 높은 처리율을 유지하는 데 기여한다.
알고리즘 | 주요 개선 사항 | 특징 |
|---|---|---|
TCP NewReno | 다중 패킷 손실 복구 | 부분적 ACK를 활용하여 한 번의 빠른 회복 단계에서 여러 손실 복구 |
TCP SACK | 선택적 재전송 | 수신자가 비연속 데이터 수신을 보고, 송신자가 선택적 재전송 가능 |
TCP BIC | 고대역폭 효율성 | 이진 검색 방식의 대역폭 탐색으로 빠른 수렴 및 안정적 유지 |
TCP CUBIC | RTT 공정성 및 확장성 | 시간의 3차 함수 기반 윈도우 증가, 리눅스 기본 알고리즘 |
혼잡 윈도우 크기는 네트워크에서 관측되는 혼잡 신호에 따라 동적으로 조정된다. 주요 혼잡 신호로는 패킷 손실과 명시적 혼잡 알림(ECN)이 있으며, 이 신호들을 감지하여 윈도우 크기를 줄이는 방식으로 네트워크의 과부하를 완화한다.
패킷 손실은 가장 일반적인 혼잡 신호로 간주된다. 손실은 주로 두 가지 방식으로 감지된다. 첫째, 전송한 패킷에 대한 확인 응답(ACK)이 정해진 시간인 재전송 시간 초과(RTO) 내에 도착하지 않으면 타임아웃이 발생한다. 이는 심각한 혼잡이나 경로 상의 문제를 의미하며, 대부분의 TCP 알고리즘은 이 경우 혼잡 윈도우 크기를 1로 초기화하고 슬로우 스타트 단계부터 다시 시작한다. 둘째, 동일한 시퀀스 번호를 가진 중복 ACK가 연속적으로(일반적으로 3개) 수신되면 빠른 재전송이 트리거된다. 이는 일부 패킷이 손실되었지만 이후 패킷들은 정상 도착했음을 의미하는 덜 심각한 혼잡 신호이다. 이 경우 TCP Reno나 NewReno 같은 알고리즘은 윈도우 크기를 절반으로 줄이고 빠른 회복 단계로 진입하여 공극적인 윈도우 감소를 완화한다.
패킷 손실에 의한 간접적인 신호 대신, 네트워크 장비가 직접 혼잡 상태를 알리는 메커니즘인 명시적 혼잡 알림(ECN)이 있다. ECN이 활성화된 경우, 라우터나 스위치는 혼잡이 예상될 때 전송 중인 패킷의 IP 헤더와 TCP 헤더에 ECN 표시를 한다. 수신자는 이 표시를 인지하여 송신자에게 ECN-Echo ACK를 보낸다. 송신자는 패킷을 실제로 손실시키지 않고도 혼잡을 감지하게 되어, 혼잡 윈도우 크기를 사전에 줄임으로써 처리율의 급격한 저하를 방지할 수 있다. ECN은 불필요한 재전송과 지연을 줄여 네트워크 효율성을 높이는 선제적 혼잡 제어 방식이다.
혼잡 신호 유형 | 감지 방법 | 일반적인 대응 조치 (혼잡 윈도우 크기 조정) |
|---|---|---|
패킷 손실 (타임아웃) | 재전송 타이머 만료 | 윈도우 크기를 1 MSS로 설정, 슬로우 스타트 재개 |
패킷 손실 (중복 ACK) | 동일한 시퀀스 번호의 ACK 3개 수신 | 윈도우 크기를 절반으로 감소, 빠른 회복 단계 진입 |
명시적 혼잡 알림 (ECN) | 수신한 ECN-Echo ACK | 윈도우 크기를 절반으로 감소, 혼잡 회피 단계로 진행 |
패킷 손실은 TCP 혼잡 제어에서 가장 중요한 혼잡 신호로 작용하며, 혼잡 윈도우 크기를 조정하는 주요 트리거가 된다. 패킷 손실은 주로 두 가지 방식으로 감지된다. 첫 번째는 재전송 타임아웃(RTO)이 발생하는 경우이며, 두 번째는 중복 ACK를 연속적으로 수신하는 경우이다. 이 두 가지 사건은 네트워크 혼잡의 정도를 다르게 해석하며, 이에 따라 혼잡 윈도우 크기를 줄이는 방식에도 차이가 있다.
타임아웃은 상대적으로 심각한 혼잡 상황을 의미한다. 송신자가 패킷을 보낸 후 미리 계산된 RTO 시간 내에 해당 패킷에 대한 확인응답(ACK)을 받지 못하면 패킷 손실이 발생한 것으로 간주한다. 이는 패킷이 네트워크에서 완전히 유실되었거나 심각한 지연을 겪고 있을 가능성이 높다. 타임아웃이 발생하면, TCP는 혼잡 윈도우 크기를 1로 초기화하고 슬로우 스타트 단계부터 다시 시작한다. 이는 네트워크에 남아 있는 데이터 양을 급격히 줄여 혼잡을 완화시키기 위한 조치이다.
반면, 중복 ACK는 비교적 경미한 혼잡 상황을 나타낸다. 수신자는 순서 번호가 도착해야 할 패킷이 누락되고 그 다음 패킷이 도착하면, 누락된 패킷의 순서 번호를 가진 ACK를 반복적으로 보낸다. 송신자가 동일한 순서 번호에 대한 ACK를 3개 연속으로 받으면(일반적으로 "트리플 듀플리케이트 ACK"), 해당 패킷이 손실되었다고 판단하고 빠른 재전송 알고리즘을 동작시킨다. 이 경우, 혼잡 윈도우 크기를 타임아웃 때처럼 1로 줄이지 않고, 현재 크기의 절반으로 줄인 후 혼잡 회피 단계로 진입한다. 이 방식을 통해 네트워크 효율성을 더 잘 유지할 수 있다.
감지 방식 | 혼잡 신호의 심각도 | 혼잡 윈도우 조정 행동 | 이후 단계 |
|---|---|---|---|
재전송 타임아웃 (RTO) | 심각한 혼잡 / 패킷 유실 | 윈도우 크기를 1로 설정 | 슬로우 스타트 재개 |
중복 ACK (3회) | 경미한 혼잡 / 지연 | 윈도우 크기를 절반으로 감소 (ssthresh 설정) 및 손실 패킷 재전송 | 혼잡 회피 (또는 빠른 회복) |
이러한 차별화된 대응은 TCP가 네트워크 상태에 보다 정교하게 적응할 수 있게 해준다. 타임아웃은 네트워크 경로가 완전히 끊어졌거나 극심한 정체를 겪을 때 발생할 수 있어 보수적으로 접근하는 반면, 중복 ACK는 단일 패킷의 손실로 인한 일시적인 정체일 가능성이 높아 공격성을 낮춘 상태에서 데이터 흐름을 유지하려는 전략이다.
명시적 혼잡 알림은 패킷 손실을 기다리지 않고, 네트워크 라우터가 직접 혼잡을 감지하여 송신자에게 알리는 메커니즘이다. 기존의 혼잡 제어는 패킷 손실을 혼잡의 간접적 신호로 삼지만, ECN은 실제 패킷 손실이 발생하기 전에, 즉 큐잉 지연이 증가하는 단계에서 사전에 혼잡을 통보한다. 이를 통해 불필요한 재전송과 그로 인한 처리량 감소를 줄이고, 네트워크 이용 효율을 높일 수 있다.
ECN이 동작하려면 TCP 연결 설정 단계에서 협상(ECN-Echo와 CWR 플래그 사용)을 거쳐 양단이 ECN을 지원함을 확인해야 한다. 또한, 네트워크의 라우터도 ECN 기능을 지원해야 한다. 지원 라우터는 혼잡이 예상될 때, 통과하는 IP 패킷 헤더의 ECN 필드를 설정하여 혼잡 표시(CE: Congestion Experienced)를 한다. 수신자는 이 표시를 확인하고, 다음 ACK 패킷에 ECN-Echo 플래그를 설정하여 송신자에게 혼잡 상황을 알린다.
송신자는 ECN-Echo 신호를 수신하면, 이를 패킷 손실과 동등한 혼잡 신호로 간주한다. 대부분의 ECN 호환 알고리즘(예: TCP Reno, TCP NewReno)은 이 신호에 반응하여 혼잡 윈도우 크기를 절반으로 줄이고, 혼잡 회피 단계로 진입한다. 동시에, 다음 전송 패킷에 CWR(Congestion Window Reduced) 플래그를 설정하여 혼잡 조치가 취해졌음을 수신자에게 알린다.
ECN의 도입은 지연이 민감한 응용 프로그램이나 무선 환경처럼 패킷 손실 원인이 혼잡만이 아닌 네트워크에서 특히 유용하다. 그러나 모든 네트워크 장비와 종단 시스템이 ECN을 지원해야 효과를 발휘하므로, 보편화에는 시간이 걸렸다. 현대 네트워크에서는 혼잡을 보다 적극적으로 관리하고 성능을 최적화하기 위한 핵심 기술로 자리 잡고 있다.
혼잡 윈도우 크기는 네트워크의 처리율과 지연 시간에 직접적인 영향을 미친다. 적절히 조정된 혼잡 윈도우는 대역폭을 효율적으로 활용하여 높은 처리율을 달성하는 동시에, 버퍼 혼잡으로 인한 큐잉 지연을 방지하여 지연 시간을 낮추는 목표를 가진다. 윈도우 크기가 너무 작으면 네트워크 용량을 충분히 활용하지 못해 처리율이 저하된다. 반대로, 윈도우 크기가 너무 크면 라우터의 버퍼를 과도하게 채워 패킷 지연을 증가시키고, 결국 패킷 손실을 유발하여 성능을 떨어뜨린다. 따라서 혼잡 제어 알고리즘의 핵심은 이 두 가지 성능 지표 사이의 최적 균형점을 찾는 것이다.
혼잡 윈도우 크기 조정 방식은 여러 연결 간의 공정성과 친화성을 결정한다. 예를 들어, TCP의 애드디티브 인크리즈 멀티플리커티브 디크리즈 방식은 공정한 대역폭 분배를 보장하는 데 기여한다. 모든 연결이 패킷 손실 시 윈도우 크기를 반으로 줄이고, 정상 시에는 선형적으로 증가시키므로, 결국 동일한 혼잡 경로를 공유하는 연결들은 대역폭을 균등하게 나누어 갖는 경향이 있다. 이는 네트워크 자원의 공정한 분배를 가능하게 한다.
성능 요소 | 혼잡 윈도우가 미치는 영향 | 최적화 목표 |
|---|---|---|
처리율 | 윈도우가 작으면 대역폭 미활용, 너무 크면 손실 증가 | 사용 가능한 대역폭을 최대한 활용 |
지연 시간 | 윈도우가 너무 크면 버퍼링 지연 증가 | 큐잉 지연 최소화 |
공정성 | AIMD와 같은 알고리즘을 통해 다수 연결이 공평한 대역폭 공유 | 모든 흐름의 공정한 자원 분배 |
친화성 | 혼잡 신호에 반응하여 윈도우를 줄이는 행위는 다른 연결에 유리 | 네트워크 전체의 안정성 유지 |
또한, 혼잡 제어 알고리즘은 네트워크 전체의 안정성, 즉 친화성을 유지해야 한다. 한 연결이 공격적으로 큰 혼잡 윈도우를 유지하면 다른 연결의 성능을 심각하게 저해할 수 있다. 따라서 대부분의 표준 알고리즘은 혼잡 신호를 수신하면 공격적으로 윈도우를 축소하여, 네트워크의 혼잡을 완화하고 다른 연결이 자원을 사용할 기회를 제공한다. 이러한 상호 양보 메커니즘이 없었다면 네트워크는 빈번한 혼잡 붕괴 상태에 빠질 수 있다.
혼잡 윈도우 크기는 네트워크의 처리율과 지연 시간에 직접적인 영향을 미치는 핵심 매개변수이다. 처리율은 단위 시간당 성공적으로 전달된 데이터의 양을 의미하며, 혼잡 윈도우 크기가 최적 수준에 가까울수록 링크 대역폭을 효율적으로 활용하여 높은 처리율을 달성한다. 반면, 윈도우 크기가 너무 작으면 송신자가 네트워크 용량을 충분히 사용하지 못해 처리율이 낮아지는 대역폭 낭비가 발생한다. 너무 크면 혼잡을 유발하여 패킷 손실이 빈번해지고, 재전송으로 인해 유효한 처리율이 오히려 감소한다.
지연 시간 측면에서, 적절한 혼잡 윈도우 크기는 버퍼링 지연을 최소화하는 데 기여한다. 윈도우 크기가 과도하게 커지면 네트워크 라우터나 스위치의 큐에 많은 패킷이 대기하게 되어 큐잉 지연이 증가한다. 이는 종단 간 왕복 시간을 늘리는 주요 원인이 된다. 특히 버퍼 블로트 현상이 발생하는 네트워크에서는 작은 혼잡 윈도우가 오히려 전체 지연 시간을 줄이는 데 유리할 수 있다.
처리율과 지연 시간은 종종 트레이드오프 관계에 있다. 높은 처리율을 추구하여 혼잡 윈도우를 크게 유지하면 큐잉 지연이 증가하고, 지연을 최소화하기 위해 윈도우를 작게 유지하면 처리율이 저하될 수 있다. 따라서 혼잡 제어 알고리즘의 목표는 이 두 지표 사이의 균형을 찾는 것이다. 예를 들어, TCP CUBIC은 대역폭을 빠르게 점유하여 처리율을 높이는 데 중점을 두는 반면, BBR은 모델 기반으로 대역폭과 지연을 측정하여 큐를 채우지 않는 선에서 최적의 운영점을 찾아 지연 증가를 억제하려고 한다.
지표 | 혼잡 윈도우가 너무 작을 때 | 혼잡 윈도우가 너무 클 때 | 최적 수준 근처에서 |
|---|---|---|---|
처리율 | 낮음 (대역폭 미활용) | 낮음 (패킷 손실 및 재전송 증가) | 높음 |
지연 시간 | 일반적으로 낮음 | 높음 (큐잉 지연 증가) | 안정적이고 낮은 수준 유지 |
네트워크 상태 | 비혼잡, 비효율적 | 혼잡, 불안정 | 효율적이고 안정적 |
혼잡 제어 알고리즘의 공정성은 여러 TCP 연결이 동일한 병목 링크를 공유할 때 각 연결이 공평한 대역폭을 얻도록 보장하는 능력을 의미한다. 이상적인 혼잡 제어는 모든 연결이 동일한 양의 대역폭을 나누어 가지도록 한다. 예를 들어, TCP Reno나 TCP CUBIC과 같은 표준 알고리즘은 기본적으로 애드-인크리멘털 멀티플리케이티브 디크리먼털 원칙을 따르며, 이는 공정성을 달성하는 데 기여한다. 그러나 알고리즘의 구체적인 동작 방식에 따라 공정성의 정도는 달라질 수 있다.
혼잡 윈도우 크기 조정 방식은 다른 TCP 연결 또는 다른 종류의 트래픽과의 친화성에도 영향을 미친다. 친화성은 새로운 또는 기존의 다른 TCP 흐름과 공정하게 대역폭을 공유하는 특성을 말한다. 예를 들어, 기존의 TCP Reno 흐름과 새로 시작된 TCP CUBIC 흐름이 경쟁할 때, 한 알고리즘이 과도하게 공격적으로 대역폭을 차지한다면 친화성이 낮다고 평가된다. 높은 친화성은 네트워크의 안정적인 운영에 중요하다.
다양한 TCP 변종 간의 공정성과 친화성은 실제 네트워크 성능에 직접적인 영향을 미친다. 일부 최적화된 알고리즘은 단일 연결의 성능을 극대화하려다 보면 공정성을 해칠 수 있다. 따라서 현대의 혼잡 제어 알고리즘을 설계할 때는 높은 처리율과 낮은 지연 시간을 달성하는 것뿐만 아니라, 여러 흐름 간의 공평한 자원 분배와 기존 프로토콜과의 조화로운 공존도 중요한 평가 기준이 된다.
TCP의 전통적인 혼잡 제어 알고리즘은 대역폭과 지연이 낮은 유선 네트워크를 가정하여 설계되었다. 그러나 고대역폭·고지연 네트워크와 무선 네트워크 같은 현대 환경에서는 새로운 도전과제가 발생하며, 이에 대응하기 위한 새로운 접근법이 등장했다.
고대역폭·고지연 네트워크에서는 기존 슬로우 스타트 및 혼잡 회피 방식이 링크의 잠재적 용량을 충분히 활용하지 못하고, 혼잡 윈도우 크기가 천천히 증가하여 성능이 제한되는 문제가 있다. 이를 해결하기 위해 BBR과 같은 새로운 알고리즘이 제안되었다. BBR은 패킷 손실을 혼잡의 주요 지표로 보지 않고, 대신 대역폭과 왕복 지연 시간의 곱으로 나타나는 BDP를 실시간으로 측정하여 데이터 전송 속도를 직접 조정한다. 이는 혼잡 윈도우 크기보다는 패킷 전송 간격을 조절하는 방식으로, 처리량을 높이고 지연을 줄이는 데 중점을 둔다.
무선 네트워크 환경에서는 패킷 손실의 원인이 혼잡이 아닌 무선 채널의 오류나 핸드오버 때문일 수 있다. 전통적인 TCP는 모든 손실을 혼잡으로 간주하여 혼잡 윈도우 크기를 급격히 줄이므로, 이는 불필요한 성능 저하를 초래한다. 이를 완화하기 위해 무선 링크 계층에서의 손실 복구 메커니즘 강화, 손실 원인을 구분하는 명시적 피드백, 또는 TCP Vegas와 같이 지연 변화를 혼잡 신호로 삼는 알고리즘의 적용이 연구되었다. 또한, 이동 통신 네트워크에서는 QUIC와 같은 TCP 대체 프로토콜이 연결 마이그레이션과 향상된 오류 복구 기능으로 더 나은 성능을 제공하기도 한다.
이러한 발전은 혼잡 제어의 목표가 단순히 혼잡 붕괴를 피하는 것을 넘어, 다양한 네트워크 조건에서 안정적이고 효율적이며 공정한 성능을 보장하는 방향으로 진화하고 있음을 보여준다.
고대역폭·고지연 네트워크는 기존 손실 기반 혼잡 제어 알고리즘의 한계를 명확히 드러낸다. TCP CUBIC과 같은 전통적인 알고리즘은 패킷 손실을 혼잡의 주요 신호로 삼아 윈도우 크기를 줄이는 방식을 사용한다. 그러나 대역폭이 매우 크고 지연 시간이 긴 네트워크에서는 큐가 채워지는 과정에서 발생하는 약간의 패킷 손실만으로도 윈도우가 급격히 감소하게 되어, 실제 사용 가능한 대역폭을 지속적으로 활용하지 못하고 성능이 크게 저하되는 문제가 발생한다.
이러한 문제를 해결하기 위해 구글은 TCP BBR(Bottleneck Bandwidth and Round-trip propagation time) 알고리즘을 개발했다. BBR은 패킷 손실 대신 네트워크 경로의 모델을 직접 추정하는 방식에 기반한다. 이 알고리즘은 데이터 전송을 통해 주기적으로 측정한 대역폭 지연 곱(BDP)과 왕복 지연 시간(RTT)을 사용하여 네트워크의 실제 정체 상황을 추정한다. BBR은 혼잡 윈도우 크기를 손실 없이도 최대 처리량을 낼 수 있고, 동시에 큐 지연을 최소화할 수 있는 지점으로 유지하려고 한다.
BBR의 동작은 크게 다음과 같은 단계로 구성된다.
1. 시작(Startup): 슬로우 스타트와 유사하게 대역폭을 빠르게 탐색한다.
2. 배수 감소(Drain): 시작 단계에서 큐에 쌓인 패킷을 소진하여 지연을 줄인다.
3. 정체 회피(Probe BW): 주기적으로 대역폭을 약간 초과하는 속도로 전송하여 최대 대역폭 변화를 탐지한다.
4. 지연 탐색(Probe RTT): 주기적으로 전송 속도를 낮추어 최소 RTT를 재측정한다.
이 접근 방식은 손실 기반 알고리즘이 겪는 처리량의 급격한 변동을 줄이고, 더 안정적이고 높은 처리량을 제공하며, 특히 장거리 고속 네트워크에서 더 낮은 지연을 유지할 수 있다. 그러나 BBR은 기존 TCP Reno나 CUBIC 흐름과의 공정한 대역폭 공유 문제, 그리고 복잡한 실제 네트워크 조건에서의 최적화 등 지속적인 연구 주제를 남겨두고 있다[3].
무선 네트워크는 패킷 손실의 원인이 유선 네트워크와 근본적으로 다릅니다. 유선 환경에서의 패킷 손실은 주로 라우터 버퍼 오버플로우에 의한 혼잡으로 간주되지만, 무선 환경에서는 채널 간섭, 페이딩, 이동성으로 인한 핸드오버 등 전송 오류가 빈번하게 발생합니다. 표준 TCP 혼잡 제어 알고리즘은 모든 패킷 손실을 혼잡 신호로 해석하여 혼잡 윈도우 크기를 감소시키므로, 무선 오류로 인한 손실까지 혼잡으로 오인하면 불필요하게 전송 속도를 낮추어 처리율이 급격히 떨어지는 문제가 발생합니다.
이 문제를 완화하기 위해 여러 기법이 개발되었습니다. 대표적인 접근법은 손실 원인을 구분하는 것입니다. 예를 들어, TCP 웨스트우드는 수신 측에서 측정한 대역폭 추정치를 기반으로 혼잡 윈도우와 슬로우 스타트 임계값을 설정하여, 무선 손실 시 공격적으로 윈도우를 줄이지 않도록 합니다. 또 다른 방식은 무선 링크 계층에서의 손실을 은폐하는 것입니다. 이는 기지국이나 액세스 포인트가 로컬 버퍼를 사용해 손실된 패킷을 재전송하여, 최종 단말 간 TCP 연결에는 패킷 손실이 발생하지 않은 것처럼 보이게 합니다. 그러나 이 방법은 종단 간 의미의 지연을 증가시킬 수 있습니다.
접근 방식 | 대표 알고리즘/기술 | 주요 메커니즘 | 장단점 |
|---|---|---|---|
손실 원인 구분 | TCP 웨스트우드, TCP 벤로 | 대역폭 측정을 통한 혼잡 판단 | 무선 오류에 강인하나, 측정 정확도에 의존 |
링크 계층 손실 은폐 | 로컬 재전송, Snoop 프로토콜[4] | 무선 구간의 손실을 하위 계층에서 복구 | TCP 계층은 수정 불필요,但 지연 증가 및 구현 복잡성 |
프로토콜 분리 | I-TCP, M-TCP | 무선 구간과 유선 구간의 TCP 연결을 분리 | 무선 구간 영향 고립,但 연결 의미 훼손 및 상태 관리 복잡 |
최근의 모바일 네트워크(예: LTE, 5G)에서는 물리층 및 데이터링크층의 신뢰성 전송 기술이 크게 발전하여 무선 오류율 자체가 낮아졌습니다. 또한, QUIC과 같은 새로운 전송 계층 프로토콜은 UDP 기반으로 설계되어 패킷 손실 복구 메커니즘이 더 유연하며, 무선 환경에서의 성능 향상을 목표로 합니다. 따라서 현대 무선 네트워크에서는 순수 무선 오류의 영향은 상대적으로 줄어들었지만, 이동성에 따른 지연 변동이나 셀 간 핸드오버 시의 일시적 연결 끊김은 여전히 혼잡 윈도우 크기 관리에 중요한 고려사항으로 남아 있습니다.