본문 바로가기

ComputerScience/Network

TCP - 5. throughput, fairness, ECN

728x90

1. throughput

tcp의 congestion control 때문에 cwnd가 시간에 따라 saw tooth 모양을 띤다.

이번에는 평균 TCP throughput을 알아보자. 

throughput은 window크기와 RTT를 통해 유추할 수 있다.

 

시간에 따라 window 크기를 나타내는 그림이다.  slow start는 지수배로 아주 짧은 시간에 윈도우 크기를 늘리기 때문에 1부터 시작하는 부분은 지우고 생각한다.

평균 윈도우 크기는 3/4W이다. 그럼 매 RTT마다 3/4W 만큼 보낸다고 생각할 수 있으니 throughput은 위처럼 추정할 수 있다.

만약 10Gbps throughput을 얻고 싶다면 loss rate, L은 2*10^(-10) 정도로 매우매우매우 작아져야 한다. 하지만 loss가 발생할 확률이 저렇게 작기는 불가능하다.

 

따라서 기존 방식을 극복해서 더 빠른 속도를 얻기 위해 TCP cubic처럼 새로운 시도가 계속 되고 있다.

2. fairness

모두가 네트워크를 서로 공유하기 때문에 한명이 압도적으로 인터넷을 많이 사용하면 다른 사람이 느려진다고 했다. 

tcp session이 k개 있고 R 대역폭의 link를 공유한다면 각각 R/k만큼 사용해야 fair하다고 할 수 있다.

TCP는 실제로 여러 사용자들의 fairness를 보장하는 통신 프로토콜이다.

두 TCP 세션이 있다고 해보자. 

두 세션이 R링크를 사용하면 저 직각 삼각형 영역 안에서 두 세션이 R을 나눠 가질 것이다.

저 직각 삼각형을 넘어가면 네트워크가 혼잡해지는 것 이므로 AIMD알고리즘이 다시 삼각형 안으로 들어오도록 제한한다.

시간이 지나면 결국 공평하게 y=x 위에서 throughput 증가/감소를 반복한다.

 

* 이렇게 tcp congestion control이 보내는 속도를 조절하기 때문에 패킷 손실이 있더라도 throttle이 없어야 하는 audio/video chat의 경우 UDP를 사용했었다.

* 10명이 R 링크를 공유하는데 내가 TCP connection 11개를 병렬로 유지하고 있다면 나 혼자서 R/2를 사용할 수 있다.

* tcp friendliness : transport layer protocol을 개발할 때, 누군가 greedy하지 않도록 tcp의 fairness를 닮자는 의미

3. Explicit Congestion Notification (ECN)

loss를 인지하거나 3 dup ack를 확인 했을 때 네트워크가 혼잡하다고 생각한다. (end to end argument)

네트워크 router가 congestion detection에 도움을 줄 수 있지 않을까? 하는 방법을 network-assisted congestion control 이라고 한다. (많이 사용하는 방법은 아니다.)

큐가 꽉차서 매우 바빠지려하면 라우터는 패킷의 ip header 2-bit(ECN, 11)를 체크해서 수신자에게 전달한다. 

수신자는 그 비트를 확인하고 송신자에게 ack를 보낼 때 ECE 비트를 체크하여 보낸다. 

그럼 송신자는 ECE 비트를 확인하고 congestion을 인지하게 된다.

 

728x90
반응형

'ComputerScience > Network' 카테고리의 다른 글

Network Layer - 2. What's inside a router? (1)  (0) 2022.05.12
Network Layer - 1. overview  (0) 2022.05.10
TCP - 4. congestion control  (0) 2022.05.03
TCP - 3. flow control, connection management  (0) 2022.05.02
How does Skype work?  (0) 2022.04.29