TCP 혼잡 제어
From CS Wiki
TCP 혼잡 제어(TCP Congestion Control)는 TCP(Transmission Control Protocol)에서 네트워크 혼잡을 관리하고 데이터 손실을 줄이기 위한 메커니즘이다. 혼잡 제어는 네트워크 상태에 따라 전송 속도를 동적으로 조절하여 네트워크 자원의 효율성을 높이고, 혼잡으로 인한 성능 저하를 방지하는 데 중요한 역할을 한다.
혼잡 제어 알고리즘의 주요 단계[edit | edit source]
혼잡 회피(Congestion Avoidance)
- 혼잡이 예상될 때 전송 속도를 서서히 증가시키는 단계이다. TCP는 혼잡 윈도(congestion window, cwnd)를 서서히 증가시켜 전송 속도를 점진적으로 높이되, 급격한 증가를 방지하여 혼잡을 최소화한다.
느린 시작(Slow Start)
- 연결이 처음 시작될 때, TCP는 전송 속도를 빠르게 증가시키기 위해 혼잡 윈도를 지수적으로 증가시킨다. 이는 네트워크 대역폭을 빠르게 파악하는 과정으로, 혼잡 윈도가 일정 크기에 도달할 때까지 지속된다. 느린 시작은 혼잡이 발생하지 않도록 초기에 낮은 전송 속도로 시작하고, 네트워크 상태를 파악하면서 속도를 점진적으로 높인다.
빠른 재전송(Fast Retransmit)
- 패킷 손실이 감지되었을 때, 중복된 ACK(확인 응답)를 일정 횟수 이상 수신하면 재전송을 빠르게 수행한다. 이는 타임아웃이 발생하기 전에 손실된 패킷을 재전송하여 데이터 전송 속도를 유지하고, 전송 지연을 줄이는 데 기여한다.
빠른 회복(Fast Recovery)
- 빠른 재전송 이후, 혼잡 윈도를 반으로 줄이고 천천히 전송 속도를 증가시켜 네트워크 혼잡을 회피한다. 빠른 회복 단계에서는 느린 시작 단계로 돌아가지 않고, 혼잡 회피 알고리즘을 통해 윈도 크기를 점진적으로 증가시킨다.
혼잡 제어의 주요 알고리즘[edit | edit source]
AIMD(Additive Increase Multiplicative Decrease)
- 혼잡 회피를 위해 사용하는 알고리즘으로, 혼잡 윈도를 서서히 증가시키다가 혼잡이 발생하면 윈도를 곱셈적으로 감소시킨다.
Tahoe와 Reno
- TCP 혼잡 제어의 초기 알고리즘으로, Tahoe는 느린 시작과 혼잡 회피, 빠른 재전송을 포함하며, Reno는 빠른 회복 기능을 추가하여 성능을 개선하였다.
CUBIC
- 고속 네트워크 환경에서 TCP 성능을 개선하기 위해 설계된 혼잡 제어 알고리즘으로, 윈도 크기를 증가시키는 데 비선형 함수를 사용하여 대역폭을 더욱 효율적으로 활용한다.
예시[edit | edit source]
TCP 연결이 시작될 때, 혼잡 윈도 크기는 일반적으로 1 세그먼트로 시작된다. 전송 중 ACK를 받을 때마다 혼잡 윈도가 지수적으로 증가하며, 혼잡이 감지되면 혼잡 윈도를 절반으로 줄여 혼잡 회피 단계로 전환한다. 네트워크 상황에 따라 느린 시작과 혼잡 회피를 반복하며 전송 속도를 동적으로 조절한다.