컴퓨터통신#6

LeeMir, 06 April 2021

3장 - Transport Layer(이어서)


TCP : Closing a Connection
  • FINbit를 이용해 연결을 종료함
    • 한 호스트에서 보내면 그에 대한 ACK를 받아야하고, 잠시 후 ACK를 보낸 호스트에서 FINbit = 1인 segment를 전송함
    • TIMED_WAIT : ACK가 오지 않으면(Loss된 경우) FINbit를 한번 더 보냄
Congestion
  • 너무 많은 source들이 너무 많은 data를 너무 빨리 보냄
  • Flow Control은 End Host간 이슈, Congestion Control은 Network 전체 차원 이슈
  • Packet Lost와 Deley가 발생
TCP Congestion Control : Additive Increase Multiplicative Decrease
  • Send Window
    • Sent, But Not Acked
    • = min(rwnd, cwnd)
    • rwnd가 충분히 크다면 cwnd(Congestion Window)의 영향을 받음
  • Additive Increase
    • Loss가 발생할 때까지 매 RTT마다 cwnd가 1MSS(Max Segment Size)만큼 증가 : linear
  • Multiplicative Decrease
    • Loss가 발생할 때마다 cwnd를 1/2로 감소
  • cwnd를 동적으로 바꾸면서 Congestion Control을 함
    • rwnd는 무시한다고 가정했을 때 Send Window는 cwnd로 조절함
    • cwnd가 너무 커지면 Network 효율성은 증가하지만, 그만큼 Loss가 발생할 확률이 커짐
TCP Slow Start
  • TCP 세션 설정 직후 cwnd는 linear가 아니라 exponentially하게 늘어남
    • 초기 cwnd = 1 MSS, 이후 매 RTT마다 cwnd가 2배로 늘어남
  • Piggybacked ACK를 사용
    • ACK를 즉각 즉각 보내지 않음
TCP : Detecting, Reacting to Loss
  • Timeout
    • cwnd를 1로 만듦
    • cwnd를 exponentially하게 증가시킴(Slow Start처럼)
    • 임계값이 있어, 도달하면 그 때부터는 linear하게 증가(cwnd = cwnd + 1MSS)
  • 3 Duplicate ACKs : TCP RENO
    • 약한 congestion이라고 생각
    • cwnd를 1/2로 줄이고 이후 linear하게 증가
  • TCP Tahoe는 어떤 상황에서도 cwnd를 1로 만듦
TCP : Switching from Slow Start to CA(Collision Avoidance)
  • Collision Avoidance : Exponential에서 Linear로 전환
  • ssthresh라는 임계값 존재
    • Loss가 Detect되면 cwnd가 절반으로 설정
TCP throughput
  • 윈도우 크기가 W일 때에만 Loss가 발생하는 이상적인 상황에서 TCP throughput = W * 3/4 per RTT
  • TCP throughput = (1.22 * MSS) / (RTT * L^(1/2))
TCP Fairness
  • K개의 TCP Session이 Bandwidth가 R인 하나의 Link(Bottleneck)를 공유한다면, 평균 Rate는 K/R을 유지해야함
  • 두개의 TCP Connection이 있을 때, 처음 둘이 나누어 가진 Throughput은 공평하지 않더라도 AI와 MD를 반복하다보면 Fair에 근접해짐
  • TCP 연결로만 봤을 때는 Fair하나, Application 입장에서는 모든 App이 Connection의 개수가 동일하지 않기 때문에 Fair하지 않음
Explicit Congestion Notification
  • TCP는 End-to-End Congestion Control을 하는데, 이 때 Router는 관여하지 않음
    • 효율성이 떨어지는 측면이 있어 Network(Router)의 도움을 받는 방식인 ECN이 나옴
  • IP의 ToS(Type of Service) Field와 TCP의 CWR, ECE 플래그를 이용함
  • Congestion에 빠진 Router에서 ECN = 11로 설정하면 Destination에서 Source로 ACK를 보낼 때 ECE = 1로 해서 보내면 Source에서는 cwnd를 절반으로 줄임