Recent TCP
최근 사용되는 TCP
TCP는 Congestion Control에 따라서 그 종류를 달리하고 있다. 특히 현대의 다양한 네트워크 (유무선/장단거리 등으로 구분되는) 환경에 알맞은 최적의 TCP를 적용하는 것은 네트워크 분야의 주요한 관심사이기도 하다. TCP Vegas, New Reno를 거쳐서 다음 TCP들은 OS에 의존적으로 발전하기도 하였다.
TCP New Reno는 가장 널리 채택되었던 알고리즘인데, SACK(Selective ACK)의 지원이 그 후에도 당연시되었고, 모두 Reno와 New Reno의 확장형으로 간주할 수 있다. 다른 TCP 계열은 현재 경쟁 중이고 지속적으로 평가될 것이다.
1) TCP BIC
리눅스 커널 2.6.8 이상에서 사용되어 2.6.18까지 사용된 TCP BIC은 이른바 long fat network (LFN)에서 가장 효율적으로 작동할 수 있는 알고리즘을 가지고 있다. 즉 latency와 speed 둘 다 높은 네트워크에 최적화 되어있다. TCP BIC은 자체적으로 독특한 congestion window algorithm을 가지고 있다. 이 알고리즘은 간단한 로그형태의 concave 함수이다.
이름에서 유추할 수 있듯이 BIC는 Binary Increase하는 컨트롤을 특징으로 한다. 패킷 로스가 발생했을 시 윈도우를 자체적인 multiplicative factor(beta)만큼 줄인다. 이 때 Binary Search를 이용해 윈도우 크기는 maximum과 minimum의 중간으로 이동한다. 이 때 중간 지점으로 한 번의 RTT에 늘리기 어려운 경우, 일정한 상수 값 만큼 이동하는데 이걸 Smax라고 한다. 이 Smax 만큼 증가하는 구간을 Additive Increase라고 한다.
Figure 1. TCP BIC algorithm
패킷 로스가 일어나지 않으면 일정한 Wmin이 작아지고, 결국 일정하게 정해놓은 Smin보다 작아지게 되면 Binary Search 구간이 시작된다. 패킷 로스가 감지되면 Slow Start 구간이 시작된다.
즉, Saturation Point와 Window size 차이가 많이 난다면 aggressive하게 CWND를 증가시키고, 가까워지면 slowly하게 증가시킨다.
2) TCP CUBIC
TCP BIC에는 장점과 단점이 있다. 먼저 장점으로는 high speed를 요구하는 네트워크 상에서 scalability가 용이하며 또한 Binary Search 구간에서의 CWND의 적은 변동으로 인한 stability가 있다. 반면에 단점도 존재한다. 주요한 단점은 다음과 같다.
l Growth function이 작은 RTT에서도 과하게 aggressive할 수 있다.
l Low speed network에서도 aggressive한 정책이 적용될 수 있다.
l 이로 인한 RTT-fairness에 위배가 될 수 있다.
l 다양한 구간(Additive Increase / Binary Search / Max probing, Smax, Smin 등등)으로 인해 복잡도가 증가한다.
따라서 위와 같은 단점들을 보안하는 새로운 window growth function이 필요하게 되었다. 이 function은 단순하며 TCP-friendly하고 RTT-fair한 성격을 요구 받게 되었다. Window growth function은 Cubic function으로 단순하게 바뀌었다. Cubic function은 수학적으로 3차함수꼴을 이르는 말이다. 즉 다음과 같은 모양을 가지고 있다.
이 삼차함수를 바탕으로 Window function을 만들었고, 다음과 같다.
C는 CUBIC parameter, t는 마지막 window reduction(packet loss)로 부터 지난 시간, K는 다음과 같이 정해져 Wmax에 영향을 받는 수이다. t를 도입함으로써 function은 RTT-fair하게 되었는데 이것은 많은 다른 RTT들이 같은 할당된 시간을 갖기 때문이다.
Figure 2. TCP CUBIC algorithm
3) TCP Westwood plus
기존의 TCP Reno protocol stack에서 송신자 측에서 변형을 시도한 것이 TCP Westwood plus 이다. TCP Westwood plus는 wireline과 wireless 네트워크에서 적용될 수 있고, 성능을 최적화하는 방향으로 고안되었다. 이 TCP는 congestion window와 slow start threshold를 정하기 위해서 end-to-end bandwidth 추정 법을 사용한다.
주파수 bandwidth는 low-pass filtering을 이용해서 추정하는데, 이 때 돌아오는 ACK 패킷의 비율을 측정한다. 이상적인 시나리오는, TCP Westwood+는 bandwidth의 time congestion이 반영되어 계산된 threshold와 congestion window를 동적으로 적용하는 것이다. 따라서 wireless 연결에서의 fairness및 throughput을 효과적으로 증대할 수 있다.
4) Compound TCP
Compound TCP는 TCP BIC이나 CUBIC과는 달리 Windows에 적용된 TCP타입이다. 기본적인 목표는 송신자의 congestion window를 TCP 연결 상황에 따라서 aggressive하게 바꾸는 것으로 한다. 이 때 연결상황은 large bandwidth-delay까지 고려하며 fairness를 최대한 침범하지 않는 선에서 한다. Windows에 적용되었으나 Linux 운영체제에도 적용 가능하다.
Compound TCP는 두 CWND를 유지한다. 하나는 일반적인 AIMD, 다른 하나는 delay-based window이다. 실제로 적용되는 sliding window의 사이즈는 두 window 크기의 합이다. AIMD는 TCP Reno의 방식과 동일하게 증가한다. Delay-based window는 다음과 같은 방식으로 window size를 조정한다.
l Delay가 작다면 network utilization의 최대화를 위해 window를 급격히 증가시킨다.
l Queueing이 있는 환경이면 점차적으로 감소시켜 AIMD window의 증가량을 상쇄한다.
이와 같은 알고리즘을 통해 두 window의 크기의 합을 거의 일정하게 유지한다. 특히 queueing이 감지되면 persistent congestion 문제(TCP Vegas에서 발견되는)를 피하기 위해 delay-based window의 사이즈는 추정되었던 Queue의 크기로 줄어든다. 즉, 기존의 TCP와는 다르게 Compound TCP는 delay에 반응하여 window size를 조정하며 TCP Reno의 fairness를 크게 보강하였다.