TCP 혼잡 제어 알고리즘들

원문 TCPの輻輳制御アルゴリズム、どれが一番速い?
의 일부이다.


TCP의 중요한 요소로 혼잡 제어 알고리즘이 있다.
TCP는 시퀀스 번호를 사용한 응답 확인에 의해 데이터의 확실한 도착을 보장하고 있다.
응답 확인을 하지 않은 패킷에 대해서는 다시 같은 데이터를 송신하도록, 수신 측에서 송신 측에 재송 요구가 행해진다.

그러나 네트워크가 혼잡하여 지연이 커지면 같은 데이터를 몇 번이나 다시 보내어 불 필요한 트래픽이 발생하여 혼잡이 더욱 악화하다.
전송량을 제어하고 혼잡 상태를 막는 “혼잡 제어”가 중요하다.

혼잡 제어를 하는 알고리즘의 역사는 TCP의 역사라 해도 과언이 아니다. 여기서 쉽게 발전 과정을 나열해 보자.


혼잡 제어 알고리즘들

1988년 첫 등장한 혼잡 제어 알고리즘 Tahoe 은 후에 등장하는 알고리즘에 많은 영향을 미쳤다.
단계적으로 윈도우 사이즈를 증가시키고 대역량을 증가시키는 “슬로우 스타트”, 재전송 타임 아웃을 기다리지 않고 패킷을 송신하는 “고속 재송 알고리즘” 등이 여기에서 구현됬다. 또 다음에 등장한 Reno는 Tahoe를 개량한 고속 회피 알고리즘을 도입했다.

그 뒤의 수많은 알고리즘은 통계나 수학적 이론을 채용하여 진화를 거듭해 왔다. 특히 2000년 이후 특정 물리 네트워크와 통신 환경에 맞춘 알고리즘이 속속 생겨나고 있다.
예를 들어 고정 지연·광대역(롱 팻 파이프)에서 효율이 높은 BIC , CUBIC , “H-TCP , Fast TCP , Illinois
저 지연·광대역인 데이터 센터를 위한 최적화된 DCTCP , 모바일 회선 및 Wi-Fi 등 무선 환경에 적합한 VenoWestwood 등 있다.
여러가지 알고리즘을 용도에 맞추어 구분할 수 있게 되었다.


구현은 3종류로 나뉜다

이들 TCP의 혼잡 제어 알고리즘은 크게
(1) 패킷 로스를 관측하는 손실 기반 방식
(2) RTT를 지표로 하는 지연 기반 방식
(3) 양쪽 방식을 사용하는 하이브리드 방식
의 3가지로 나뉜다.

(1) 손실 기반 방식은 패킷 로스를 관측하고 손실이 늘어나면 혼잡이 발생했다고 간주하고 전송량을 억제하는 방법이다.
대표 예로서 Reno, Reno의 개량 버전인 NewReno , H-TCP, BIC, CUBIC 등이 있다.

(2) 지연 기반 방식은 패킷의 RTT을 관측하고 RTT가 늘어나면 혼잡 상태가 된 것으로 판단하고 전송량을 줄인다.
주요구현으로는 1994년에 제안된 “Vegas”가 처음 채용하고 있다. 이 외에는 Westwood, Fast TCP 등이 꼽힌다.

(3)의 대표 예로서는 Illinois, DCTCP 와 함께 “CTCP” 와 “YeAH” 등이 있다.


어떤 혼잡 제어 알고리즘 사용이 가능한지는 OS 마다 다르다.
기본적으로 Linux 나 Android는 CUBIC가, OS X에서는 NewReno가 쓰인다.
Windows에서는 CTCP 와 DCTCP을 교체해서 사용할 수 있다.




▼ 윈도우 사이즈
TCP이고 수신 측에서 확인 응답을 기다리지 않고 한번에 송신할 수 있는 데이터의 사이즈. 이 크기를 조정하여 데이터의 유량(흐름)을 제어한다.

▼ 고속 회피 알고리즘
혼잡 정도가 작을 경우 송신 속도를 너무 낮추지 않도록 개량한 알고리즘.

▼ BIC
Binary Increase Congestion control의 약어.

▼ H-TCP
Hamilton TCP의 약어.

▼ DCTCP
Datacenter TCP의 약어.데이터 센터 TCP.

▼ CTCP
Compound TCP의 약어. Windows Vista와 Windows Server 2008에서 첫 채용됐다.

▼ YeAH
Yet Another Highspeed TCP의 약어.


이 글은 2017-12-07에 작성되었습니다.