[강의정리] 데이터통신과네트워크 Transport Layer 기말
Congestion control
Congestion: 너무 많은 소스에서 너무 많은 데이터를 빠르게 네트워크로 보낼 경우 네트워크가 처리할 수 있는 허용 용량(band width)을 넘어 혼잡 발생
Flow control과 다름
- Flow control: 상대방이 데이터를 받을 수 있을 때 그 허용량만큼 보내주는것
- Congestion control: 네트워크 관점에서 데이터가 많아지면 그것을 조절
선제 조건:
- 패킷 로스 발생
- 큐잉 딜레이가 늘어남
Congestion: scenario 1
two sender, two reiciver
one router, inf buffer
output link capacity: R (출력 링크 용량)
패킷이 유실되도 no retransmisson
람다in R/2씩 보내도 람다out R/2
딜레이관점에선 람다in이 증가할수록 딜레이는 기하급수적으로 증가
Congestion: scenario 2
- one router, fin buffers
- sender retransmission of timed-out packet
- application-layer input = application-layer output
- tranport-layer input includes retransmissions
이상적인 상황: perfect knowledge
- sender는 buffer에 유효공간이 있을 때만 data를 보냄
- 람다’in = 람다out
loss packets는 lost 될수있음, 라우터에서 버퍼가 꽉찼을때 드랍
- sender는 패킷이 유실된걸 알때 다시 보냄
- 람다’in >= 람다out
현실적인: 중복패킷
queueing delay 때문에 timeout 발생후 재전송
최악의 경우 람다’in/2 = 람다out
costs of congestion: network congestion이 많아지면 필요하지 않는 재전송이 많아짐
Congestion: scenario 3
- four senders
- multihop paths
- timeout/retransmission 존재
TCP congestion control:
- End-to-end congestion control: 데이터가 로스가 발생하거나 속도가 느려지면 보내는양 조절
- Network-assisted congestion control: 라우터들이 네트워크 복잡도 측정, 유저한테 알려줌
Sender가 transmission rate 정해두고 증가, loss가 생기면 조절
- congestion window, cwnd
- 매 RTT(round trip time)마다 1MSS(maximum segment size)만큼 증가
- 로스가 발생하면 반으로 줄임
TCP Congestion control: sender 측에서 돌아감
sender에서는 window 2개 (cwnd, rwnd(recived window))
LastByteSent-LastByteAcked<=min(cwnd, rwnd)
TCP sending rate: cwnd/RTT bytes/sec
TCP Congestion control algorithm
- slow start
- congestion avoidance
- fast recovery
Slow start
- connection이 시작되면 TCP의 sending rate를 loss가 처음 발생할 때까지 1MSS단위로 증가
- every RTT 마다 sending rate가 2배씩 증가됨
- initial rate가 작지만, exponentially fast(기하급수적으로 빠르게)하게 증가
Congestion Avoidance
- ssthresh: congestion avoidance를 시작하는 시점(마지막 congestion이 발생했을 때 기점의 sending rate 절반)
Fast Recovery
- cwnd size를 duplicate ACKs의 갯수만큼 증가
- 필수적인건 아님
TCP Fairness
- K TCP 세션, Bandwidth R
- 각각 평균 rate R/K
Explicit Congestion Notification (ECN)
- Network-assisted congestion control:
- ECN 비트: 라우터가 패킷이 혼잡하면 설정해줌