관리 메뉴

코딩하는 락커

3. 전송 계층 6 본문

🌐 네트워크

3. 전송 계층 6

락꿈사 2022. 4. 5. 11:57

혼잡제어에 대한 접근법

  • 종단간의 혼잡제어
    • 네트워크 계층은 혼잡제어 목적을 위해 트랜스포트 계층에게 어떤 직접적인 지원도 제공하지 않음.
    • 네트워크의 혼잡의 존재는 단지 관찰된 네트워크 행동에 기초파여 종단 시스템이 추측해야함.
      • ex) 타임아웃 / 3중 중복 ACK
  • 네트워크 지원 혼잡제어
    • 네트워크 계층 구성요소가 네트워크 안에서 혼잡 상태와 관련하여 송신자에게 직접적인 피드백을 제공함.
    • 라우터가 각각의 출발지에게 처리하는 패킷의 패킷 헤더 안에 어떻게 출발지의 전송률을 증가시키거나 감소시킬 것인지에 관한 정보를 넣어 보내줌.

 

3.6 TCP 혼잡제어Congestion Control

  • IP 계층이 네트워크 혼잡에 관해서 종단 시스템에게 어떠한 직접적인 피드백을 제공하지 않으므로 TCP는 종단간의 혼잡제어를 사용해야함.
  • TCP는 네트워크 혼잡에 따라 연결에 트래픽을 보내는 전송률을 각 송신자가 제한하는 방법을 사용함.
    • 만약 송신자가 자신과 목적지 간의 경로에서 혼잡이 없음을 감지하면 송신자는 송신률을 높임.
    • 반면 송신자가 경로 사이에 혼잡을 감지하면 송신자는 송신률을 줄임.
    • LastByteSent - LastByteAcked <= min{cwnd(혼잡 윈도우), rwnd(수신 윈도우)}
    • 송신하는 쪽에서 확인응답 안된 데이터의 양은 cwnd와 rwnd의 최소값을 초과하지 않음.TCP 혼잡제어 메커니즘은 추가적인 변수 혼잡 윈도우(congestion window, cwnd)를 기록하는 것임.
  • 송신자의 송신율은 cwnd / RTT 바이트/초 임 => window 사이즈를 결정하는 것은 혼잡 윈도우이다.

 

  • TCP 혼잡제어 알고리즘TCP congestion-control의 세가지 구성요소
    • 슬로 스타트slow start
    • 혼잡 회피congestion avoidance
    • 빠른 회복fast recovery

 

 

슬로 스타트slow start

  • cwnd값을 1MSS(Maximum segment size, TCP 세그먼트가 보낼 수 있는 최대 데이터 양)에서 시작하여 한 전송 세그먼트가 첫 번째로 확인 응답을 받을 때마다 1MSS씩 증가.
  • 확인 응답이 도착하면 송신자는 각 확인응답 세그먼트에 대해 하나의 MSS만큼 혼잡 윈도우를 증가시킴.
  • 그래서 TCP 전송률은 작은 값으로 시작하지만 슬로 스타트 단계 동안에 지수적으로 증가함.
  • 슬로 스타트가 끝나는 시점은
    • 1. 타임아웃에 대한 손실 이벤트가 있을 경우.
      • cwnd값을 1로 하고 새로운 슬로 스타트를 시작함
      • 또한 ssthresh(slow start threshold, 슬로 스타트 임계치)값을 cwnd/2(혼잡이 검출 되었을 시점의 반)으로 정함.
    • 2. cwnd값이 ssthresh와 같은 경우.
      • 혼잡 회피 모드로 전환
    • 3. 3개의 중복 ACK들이 검출된 경우.
      • 빠른 회복 상태로 전환

 

 

혼잡 회피congestion-avoidance

  • 혼잡 회피 상태로 들어가는 시점에서 cwnd값은 대략 혼잡이 마지막으로 발견된 시점에서의 값의 반이 됨.
  • 조금 더 보수적인 접근 방법을 채택하여 매 RTT마다 하나의 MSS만큼 cwnd값을 증가시킴.
  • 혼잡 회피가 끝나는 시점은
    • 1. 타임아웃에 대한 손실 이벤트가 있을 경우.
      • cwnd값을 1로 하고 새로운 슬로 스타트를 시작함
      • 또한 ssthresh값을 cwnd/2(혼잡이 검출 되었을 시점의 반)으로 정함.
    • 2. 3개의 중복 ACK들이 검출된 경우.
      • cwnd값을 반으로 설정.
      • 또한 ssthresh값을 cwnd/2(3개의 중복 ACK들을 수신한 시점의 반)으로 정함.
      • 빠른 회복 상태로 전환.

 

 

빠른 회복fast recovery

  • cwnd값은 잃었던 세그먼트에 대한 매 중복된 ACK를 수신할 때마다 1MSS만큼씩 증가됨.
  • 타임아웃 이벤트 발생 시
    • cwnd값을 1로 하고 새로운 슬로 스타트를 시작함.
    • 또한 ssthresh값을 cwnd/2(타임아웃 이벤트가 발생한 시점의 반)으로 정함.

 

 

TCP Tahoe vs TCP Reno

 

  • TCP Tahoe
    • 3중 중복 ACK 손실 이벤트 발생시(8번째 송신) cwnd가 1MSS로 설정되고 ssthresh에 도달할 때까지 지수적으로 증가하고, 그 이후에 선형적으로 증가함.
  • TCP Reno
    •  3중 중복 ACK 손실 발생시(8번째 송신) cwnd가 12MSS * 0.5 = 6MSS으로 설정되고 선형적으로 증가.
    • 타임아웃 손실 이벤트 발생시 cwnd가 1MSS로 설정되고 ssthresh에 도달할 때까지 지수적으로 증가하고, 그 이후에 선형적으로 증가함.
    • 타임아웃 손실 이벤트와 3중 중복 ACK 손실 이벤트를 구분하여 대처.

 

 

3.7 공평성

 

  • 전송률 R을 갖는 하나의 링크를 공유하는 2개의 TCP 연결이 있다고 가정.
  • 두 연결이 같은 RTT와 MSS를 갖는다고 가정.
  • 다른 TCP 연결이나 UDP 데이터그램도 이 링크를 통과하지 않는다고 가정.
  • 양 연결은 A지점에서 시작.
  • 양 연결은 TCP 혼잡 회피 알고리즘이 결과로써 RTT당 1MSS씩 윈도우를 증가.
  • B지점에서 두 연결의 의해 소비되는 링크 대역폭이 R보다 커지고, 패킷 손실이 발생하면 연결 1과 2는 그들의 윈도우를 감소시켜 C지점이 됨.
  • 이 때 두 연결은 2차원 공간 어디에 있늗지간에 상관없이 동등한 대역폭을 공유하는 방향으로 수렴함.

 

 

공평성과 UDP

  • 많은 멀티미디어 어플리케이션이 전송률 제어를 문제로 TCP를 사용하지 않음.
  • 대신에 혼잡제어를 가지고 있지 않은 UDP를 사용.
  • 이로써 네트워크 환경은 항상 공평하지는 않음.

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

4. 네트워크 계층 2  (0) 2022.04.12
4. 네트워크 계층 1  (0) 2022.04.11
3. 전송 계층 5  (0) 2022.04.04
3. 전송 계층 4  (0) 2022.04.04
3. 전송 계층 3  (0) 2022.03.29
Comments