Principles of Congestion Control Congestion: ❒ informally: “too many sources sending too much Congestion Control data too fast for network to handle” ❒ different from flow control! ❒ manifestations: ❍ lost packets (buffer overflow at routers) ❍ long delays (queueing in router buffers) ❒ a top-10 problem! Transport Layer Transport Layer 3-1 3-2 Scenario 1: Queuing Delays Scenario 2: Retransmits Host A λ out λ in : original ❒ two senders, two ❒ one router, finite buffers data receivers ❒ sender retransmission of lost packet unlimited shared Host B ❒ one router, output link buffers infinite buffers Host A λ out λ in : original data ❒ no retransmission λ ' in : original data, plus retransmitted data Host B finite shared output ❒ large delays link buffers when congested ❒ maximum achievable throughput Transport Layer 3-3 Transport Layer 3-4 Scenario 3: Congestion Near Receiver Approaches towards congestion control ❒ four senders Q: what happens as λ Two broad approaches towards congestion control: in λ ❒ multihop paths and increase ? in ❒ timeout/retransmit End-end congestion Network-assisted Host A λ out congestion control: control: λ in : original data λ ' in : original data, plus ❒ no explicit feedback from ❒ routers provide feedback retransmitted data network to end systems finite shared output link buffers ❒ congestion inferred from ❍ single bit indicating end-system observed loss, congestion (SNA, Host B DECbit, TCP/IP ECN, delay ATM) ❒ approach taken by TCP ❍ explicit rate sender should send at Transport Layer 3-5 Transport Layer 3-6 1
TCP AIMD TCP Congestion Control additive increase: multiplicative decrease: increase CongWin by cut CongWin in half ❒ end-end control (no network How does sender perceive after loss event 1 MSS every RTT in assistance) congestion? the absence of loss ❒ sender limits transmission: ❒ loss event = timeout or 3 congestion window events: probing duplicate acks LastByteSent-LastByteAcked 24 Kbytes ❒ TCP sender reduces rate ≤ CongWin ( CongWin ) after loss event ❒ Roughly, 16 Kbytes three mechanisms: CongWin ❍ AIMD rate = Bytes/sec 8 Kbytes RTT ❍ slow start ❍ conservative after ❒ CongWin is dynamic, function time timeout events of perceived network Long-lived TCP connection congestion Transport Layer Transport Layer 3-7 3-8 TCP Slow Start TCP Slow Start (more) ❒ When connection ❒ When connection ❒ When connection Host A Host B begins, increase rate begins, CongWin = 1 begins, increase rate exponentially fast until one segment MSS exponentially until RTT first loss event first loss event: ❍ Example: MSS = 500 two segments bytes & RTT = 200 msec ❍ double CongWin every ❍ initial rate = 20 kbps RTT four segments ❍ done by incrementing ❒ available bandwidth may CongWin for every be >> MSS/RTT ACK received ❍ desirable to quickly ramp ❒ Summary: initial rate up to respectable rate time is slow but ramps up exponentially fast Transport Layer 3-9 Transport Layer 3-10 Refinement (more) Refinement Philosophy: Q: When should the ❒ After 3 dup ACKs: exponential • 3 dup ACKs indicates increase switch to ❍ CongWin is cut in half network capable of linear? ❍ window then grows delivering some A: When CongWin linearly segments gets to 1/2 of its value before • timeout before 3 dup ❒ But after timeout event: timeout. ACKs is “more alarming” ❍ CongWin instead set Implementation: to 1 MSS; ❒ Variable Threshold ❒ At loss event, Threshold is ❍ window then grows set to 1/2 of CongWin just exponentially before loss event ❍ to a threshold, then grows linearly Transport Layer 3-11 Transport Layer 3-12 2
TCP sender congestion control Summary: TCP Congestion Control Event State TCP Sender Action Commentary ACK receipt Slow Start CongWin = CongWin + MSS, Resulting in a doubling of ❒ When CongWin is below Threshold , sender in for (SS) If (CongWin > Threshold) CongWin every RTT previously set state to “Congestion slow-start phase, window grows exponentially. unacked Avoidance” data ACK receipt Congestion CongWin = CongWin+MSS * Additive increase, resulting for Avoidance (MSS/CongWin) in increase of CongWin by ❒ When CongWin is above Threshold , sender is in previously (CA) 1 MSS every RTT unacked congestion-avoidance phase, window grows linearly. data Loss event SS or CA Threshold = CongWin/2, Fast recovery, detected by CongWin = Threshold, implementing multiplicative triple Set state to “Congestion decrease. CongWin will not ❒ When a triple duplicate ACK occurs, Threshold duplicate Avoidance” drop below 1 MSS. ACK set to CongWin/2 and CongWin set to Timeout SS or CA Threshold = CongWin/2, Enter slow start CongWin = 1 MSS, Threshold . Set state to “Slow Start” Duplicate SS or CA Increment duplicate ACK count CongWin and Threshold ACK for segment being acked not changed ❒ When timeout occurs, Threshold set to CongWin/2 and CongWin is set to 1 MSS. Transport Layer Transport Layer 3-13 3-14 3
Recommend
More recommend