오늘하루도 우힣ㅎ

CH3. Transport Layer(4) 본문

네트워크/강의정리

CH3. Transport Layer(4)

우힣 2020. 1. 5. 23:05

6. Priciples of Congestion Control

 - Congestion

-> router가 처리할수 있는 능력보다 더 많은 packet을 받게될때 일어나는 현상을 의미한다.(network가 처리하는것보다 sender측에서 데이터를 보내면 발생하는 것)

-> packet loss가 발생하게 된다.

-> router에 존재하는 queue를 늘린다하더라도 delay가 길어지게 된다.

 

 - Congestion Control

 

     -> knee 

          : Throughput 증가량이 감소하게 된다.

          : Delay가 크게 증가하기 시작한다.

 

     -> cliff

          : Throughput이 급격하게 떨어지게 되고 결국 0이 되게 된다.

          : Delay가 무한정으로 빠른속도로 늘어나게 된다.

          : Congestion이 일어난 것이다,

 

     -> Congestion Control은 knee 상황을 얼마나 잘 대처하느냐에 달려 있다.

-> Implicit Congestion Control

     : packet loss, dealy가 나는 것을 보고 Network layer에서 congestion이 발생했다고 생각하고 조치를 취하는 것이다.

     : TCP에서 packet 손실은 congestion이 일어났다고 본다.

-> Explicit Congestion Control

     : router가 현재 congestion의 발생 유무를 가장 잘 안다. 그렇기 때문에 router(Network Layer)를 통해 congestion의 발생을 명시적으로 end-system에 알려주게 된다.(feedback)

     : feedback 은 두가지 방향으로 갈수가 있게 된다.

       => BECN : 기존에 없던 packet을 만들어 sender측에게 congestion의 발생을 알려줌

       => FECN : sender에서 온 packet에 congestion이 발생했음을 알려주는 표시를 하여 receiver쪽으로 흘려보내고, receiver 가 sender에게 알리는 방식(ACK에 congestion이 발생했음을 알리게 되는것이다.)

 

 - ECN(Explicit Congetsion Notification) in IP/TCP

-> ECN은 AQM mechanism 을 사용하게 된다. 

     : queue에서 active하게 관리를 하는 것이다. queue에 threshold가 존재하고 그것을 넘어서면 알려주도록 하기

-> router가 congestion의 발생을 알려준다.

     : congestion이 일어날려고 한다고 알려준다(threshold 초과)=> 실제 일어난 것은 아니지만 일어난 것 처럼 조치를 취한다.

-> Bits in IP header & TCP header

-> ECN 동작 과정

 

1
2
3
4
4
5

7. TCP Congestion Control

-> window-based congesion control scheme

     : sending rate = WinSize/RTT (WinSize를 증가시키게 되면 보내는 양이 많아짐=> WinSize 통해 보내는정도 결정)

     : WinSize = min(rwnd, cwnd) => flow control, congestion control 모두 지원하기위해 receiver의 window size도 고려한다.

 

 - Congestion Congtrol : Efficient&Fair Allocation

 - AIMD

-> Concerge to fariness&efficiency

     : 아래의 작업이 반복이 되면서 가장 적절한 합의점을 찾는다.

 - Congestion Control Mechanism in TCP

-> Slow Strat

     : 네트워크를 천천히 탐색하여 사용가능한 양을 확인한다

     : 빠르게 사용가능한 bandwidth를 발견가능하다.

     : cwnd는 기하급수적으로 증가한다.

     : 처음 cwnd는 1MSS(Maximum Segment Size)에서 시작이 되게된다.

     : 각각의 ACK에 대해 cwnd는 1segment 씩 증가하게 된다.(2개의 ACK이 오면 2 segment가 증가하는것)

     : 처음은 느리지만 증가폭이 크기 때문에 빠르게 사용 가능한 최대 bandwidth를 찾을수가 있다.

-> Congestion avoidance

     : congestion avoidance 상태에서는 cwnd는 1씩 증가하게된다.

     : 만약 cwnd가 ssthreshold(Slow Start Threshold)보다 작다면 Slow Start, 크다면 Congestion Avoidance상태로 들어가게 된다.

     : Congestion이 발생하게 되면(Time out이 일어나거나, 중복 ACK이 도달하게 된다), ssthreshold값으로 현재 cwnd/2의 값을 저장하고 cwnd는 1MSS부터 시작해 Slow Start를 다시 실행한다.

 

 - Tahole Algorithm

 

     -> 처음 cwnd(congestion window size) = MSS

     -> 가장 효율적인 Winodw size = min(rwnd,cwnd)

     -> ACK이 도착하게됐을때

          : cwnd<sstrheshod => Slow start과정

          : cwnd>=ssthreshold => congestion avoidance

     -> time out, 중복된 ACK가 3개 왔을때

          : ssthreshold = max(현재 cwnd/2, 2MSS)

          : cwnd = MSS

 - Reno

 

     -> time out이 일어날때와, 중복된 ACK가 오는 상황을 분리하여 대처한다.

      -> time out이 일어났을때는 심각한 congestion이 일어났다 생각하고 cwnd=1MSS, ssthrehold = max(cwnd/2, 2MSS)를 사용한다.

      -> 중복된 ACK이 오게 됐을때는 cwnd = cwnd+3MSS, ssthreshold = max(cwnd/2,2MSS)를 사용하게 된다.

          : slow start 과정 없이 바로 congestion avoidance과정으로 들어가 낭비되는 bandwidth를 줄일수 있는 장점이 존재한다.

      -> 중복된 ACK가 아닌 새로운 ACK이 오게 되면 cwnd = ssthreshold가 되고, congestion avoidance모드로 들어간다.

 - TCP Tahoe vs TCP Reno

-> 주로 Reno가 더 좋은 성능을 보여주지만 3개 이상의 손실이 일어나게 되면 Tahoe가 더 좋은 효율을 나타낸다.

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

CH4. Network Layer(2)  (0) 2020.01.11
CH4. Network Layer(1)  (0) 2020.01.08
CH3. Transport Layer(3)  (0) 2020.01.03
CH3. Transport Layer(2)  (0) 2020.01.01
CH3. Transport Layer(1)  (0) 2019.12.30
Comments