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을 인지하게 된다.
'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 |