Transport Layer - TCP Congestion Control

2024. 6. 15. 14:24네트워크

Contents 접기

Overview of TCP Congestion Control

Packet을 주고받는 방법에는 크게 Circuit Switching과 Datagram Packet Switching이 있다.

 

먼저, Circuit Switching은 다음과 같은 3가지 단계로 이뤄진다.

Circuit Establishment
Data Transfer
Circuit Disconnect

Connection Oriented

Circuit을 주고받는 두 stations은 Connection Oriented이기 때문에, delay or loss의 문제가 없지만,

모든 channel이 꽉 차는 Congestion(Call Blocking) 발생할 가능성이 있다.

 

 

Connectionless

반면, Datagram Packet Switching에서는 Connectionless한 방법으로,

Each packet이 independently하게 shared links를 통해  transfer된다.

따라서, congestion이 발생하면 pkt의 delay or loss 가능성이 생긴다. 

 

 

Effects of Congestion - Delay

Congestion으로 인한 dealy는 다음과 같은 3-components가 있다.

Queueing delay : Queue에서 pkt이 대기 상태로 기다리는 시간, depends on packet size
Processing delay : Physical link를 따라 신호가 가는데 걸리는 시간, depends on link bandwidth
Propagation delay : 전파 지연, increases exponentially as traffic load increases

transfer간 dealy 발생 위치

 

 

Effects of Congestion - throughput

Congestion이 발생하면,

성공적으로 수신한 pkt의 수와 전체 pkt의 비율인 throughput이 낮아지게 되므로, pkt transmission 효율이 낮아지게 된다.

 

 

Purpose of Congestion Control

Congestion Avoidance

따라서, Congestion Control은 Congestion-avoidance control을 위한 방법이고,

 

Implicit congestion control

 

Flow Control과 달리, network device(ex. router)는 Congestion에 대한 feedback을 제공하지 않으므로,

sender가 implicit congestion control하는 방법인 전송 비율을 조절하여 congestion을 방지하는 것이다.

 

 

TCP Congestion Control

TCP는 sender에 의해 cwnd(Congestion Window)가 설정되고, sender는 cwnd을 조절하여 송신 속도를 조절하여 congestion control하는 것이다.

 

 

AIMD (Additive Increase Multiplicative Decrease)

 

AIMD는 TCP가 Congestion Control하는 방법 중 모태가 되는 방법이고, 현재는 사용하지 않는다.

1 RTT 당 cwnd는 1 MSS 씩 증가하고(AI),

timeout, congestion과 같은 loss 발생 상황 이후 cwnd는 1/2로 감소(MD) 한다.

 

AIMD Pros and Cons

 

그러나, 원래 전송할 수 있는 loss 상황 이후 cwnd가 1/2로 감소하므로,

원래 보낼 수 있는 pkt 양보다 전송하는 pkt양이 줄어들게 되어 bandwidth가 낭비되는 단점이 있다.

 

 

Slow Start

Slow Start

AIMD의 단점을 보완하기 위한 방법 중 Slow Start는 TCP tahoe version에 등장하였고,

시작 cwnd가 1 MSS로 설정되며, 1 RTT당 cwnd는 2배씩 증가한다.

loss가 상황 이후에는 cwnd는 다시 1 MSS로 설정되는 특징이 있다. 

 

 

Congestion Avoidance (Tahoe)

Slow start 방법은 초기 cwnd가 1 MSS로 설정되지만, 1 RTT당 cwnd 증가량이 지수적으로 증가하므로,

RTT 사이에서 congestion이 일어날 가능성이 높다.

 

Congestion Avoidance operation

 

이에 대한 보완으로 CA에서는 Slow Start Threshold(ssthresh) 값을 정해놓고,

cwnd 와 ssthresh 값을 비교하여 cwnd 증가량을 조정한다. 

CA example

 

여기서, 중요한 점은 loss or 3 duplicate가 탐지된 경우,

조정되는 ssthresh 값은 cwnd 값의 절반이라는 것이다. (ssthresh값의 절반이 아님!)

 

 

Fast Recovery (Reno)

앞서 소개한 Congestion Control 방법들은 loss or 3 duplicate 상황을 동일하게 처리했다는 점이다.

그러나, Timeout으로 인한 congestion 가능성이 3 duplicate ACK로 인한 congestion 가능성보다 높기 때문에,

Fast Recovery 방법에서는 3 duplicate ACK 상황을 다르게 처리한다.

 

new ACK에 대해서는 앞서 소개한 방법과 동일하게 처리하지만, congestion이 탐지된 경우,

Fast Recovery Example

 

buffer를 사용하여 1st unacked pkt만 retransmit하고, timeout 상황에서는 slow start와 달리

3 duplicate ACK 상황에서는 cwnd 값을 1 MSS가 아닌 cwnd/2 + 3 로 처리하는 Fast Recovery 방법을 도입한다.

 

 

Comparison: TCP Tahoe & Reno

TCP Tahoe와 Reno의 가장 큰 차이는

TCP Tahoe는 모든 GBN ARQ와 같이 모든 unacked pkt을 retransmit하고,

TCP Reno는 1st unacked pkt에 대해서만 retransmit한다.

 

Comparison Tahoe & Reno

 

따라서 TCP Reno에서는 congestion 상황 전 후 보내는 segment 양의 차이가 감소하여 throughput 증가로 이어진다.

'네트워크' 카테고리의 다른 글

Network Layer : Data Plane  (1) 2024.06.15