본문 바로가기
Computer Science/컴퓨터 네트워크

컴퓨터 네트워크: Congestion Control

by 청량리 물냉면 2021. 10. 14.
반응형

TCP: Transmission Control Protocol

9. Congestion Control

 

Congestion

링크가 보낼 수 있는 Maximum 값이 100Mbps인 상황에서 TCP connection 1, 2에서 각각 100Mbps, 총 200Mbps가 들어오면 Congestion 발생

 

 

Packet delay and network load

Delay

데이터 처리 속도가 얼마나 지연되는지

 

Load

데이터가 얼마나 들어가는지

 

  • input의 합이 100Mbps에 가깝게 되면 delay갑자기 증가

 

Throughput versus network load

Throughput

(=receiving rate) 데이터를 얼마나 빠르게 받고 있는지

 

Load

데이터가 얼마나 들어가는지

 

ex. 50Mbits 데이터 송수신

1Mbps: 1초당 1백만 비트를 보낼 수 있는 전송속도. (1초에 1Mbits 전송)

혼잡 X → 전송속도 10Mbps일 때 데이터 전송 5초 걸림

혼잡 O → 데이터 전송 10초 걸렸다고 가정하면

≫ 전송속도는? 5MbpsThroughput 감소

≫  파일 하나 받는데 필요한 총 시간 증가 → 전체 receiving rate(Throughput) 감소

 

 

 

Congestion avoidance, additive increase

데이터 혼잡을 피하기 위해서 tcp에서는 데이터 전송량을 결정한다.

전송할 데이터의 크기, 즉 window size는 rwnd와 cwnd의 최솟값으로 정해진다. 

*RTT(Round Trip Time, 왕복시간)

*연결 setup 과정이 완료된 상태라고 가정.

*이 그림에서 rwnd는 고려하지 않는다. 즉, rwnd는 충분히 크기 때문에 전송량에 영향을 미치지 않는다고 가정한다.

 

    • TCP에는 중앙에서 네트워크의 상태에 따라 각 connection의 데이터 전송량을 관리해 줄 관리자가 존재하지 않는다. 따라서 각 connection에서는 자율적으로 데이터 전송량을 조절한다.
    • 각 connection은 혼잡이 감지되지 않는 한 계속해서 데이터 전송량을 늘리는 방식으로 데이터를 전송한다.
    • Sender는 보낸 패킷에 대한 응답(Ack)이 무사히 도착했다면(packet loss가 발생하지 않았다면), 네트워크에 혼잡이 없었다고 생각한다.
    • Congestion avoidance방식은 데이터에 혼잡이 발생하지 않는 한 이전 전송량에서 데이터를 하나씩 더 늘려 전송하는 방식이다.
    • additive increase는 데이터를 하나씩 보수적으로 증가하는 방식이다. 
    • 만약 packet loss가 발생한다면, 혼잡이 발생했다고 파악하고 해당 네트워크를 사용 중인 모든 connection은 데이터 전송량을 반으로 줄인다

 

Slow start, exponential increase

  • Slow start 방식은 미리 정해진 값(Threshold)까지 패킷 양을 이전에 전송한 양의 2배씩 늘리고, 미리 정해진 값에 도달하면 이후부터는 +1씩 보수적으로 전송량을 늘리는(Congestion avoidance) 방식이다. 
  • exponential increase: 전송량을 두 배씩 늘리는 방식

 

*해당 방식의 명칭이 slow start인 이유

혼잡제어를 고려하지 않았을 때의 데이터 전송방식을 생각해 보자.(flow control)

만약 Receiver의 수신버퍼 크기가 6500byte라면 Sender는 초기에 수신 버퍼를 가득 채울 만큼의 패킷을 전부 전송한다. 이는 전송량을 1에서부터 시작하여 2배씩 늘려가는 slow start 방식보다는 훨씬 빨리 데이터를 전송할 수 있는 방법이다.

따라서 flow control보다 훨씬 느린 데이터 전송 방식이라 하여 slow start라는 명칭이 붙여졌다. 

 

 

 

TCP Congestion policy summary 

  • rwnd의 간섭을 고려하지 않으므로 cwnd를 window size(데이터 전송량)라고 생각해도 된다. 
  • 처음 연결 Slow start로 시작
  • cwnd가 Threshold와 동일해지면 Congestion avoidance 방식으로 전송 방식을 변경한다. (cwnd가 Threshold보다 더 커지지는 않음)
  • Time out(정해진 시간 안에 Ack이 도착하지 않아 Sender가 데이터를 한 번 더 전송해줌)이 발생하면 3개의 중복된 Ack이 도착하지 못할 정도로 커다란 데이터 유실이 발생했다고 판단한다. Time out 시 cwnd를 1로 초기화하고 Threshold 크기는 time out 당시 cwnd의 1/2로 잡아준다. 
  • 3 duplicate Ack이 도착할 시 네트워크 혼잡을 조정하기 위해 3 duplicate Ack 도착 시점 기준으로 cwnd를 1/2 줄여준다

 

Congestion example

AIMD: 늘리는 건 천천히, 줄이는 건 반으로

 

 

 

 


자료 출처:

  • TCP/IP Protocol Suite 4th Edition Slide
    (Behrouz A. Forouzan 저, McGraw-Hill, 2010)
반응형