Networks & Protocols INF566 - X2010 - 2012 Lecture 2a - Congestion control: Seeing Red thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 1
Networks & Protocols INF566 - X2010 - 2012 Lecture 2a - Congestion control: Seeing Red thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 1
Intro, kick-off, objectives and motivation (Thomas) 1 9/1 “What Makes For A Successful Protocol?” (Mark) 2 16/1 “Bufferbloat & the Broken Internet” (Thomas & Mark) 3 23/1 “Carrier-Grade Routing” (Thomas) 4 30/1 “Peering” (Thomas & Mark) 5 6/2 RPKI (Mark) 6 13/2 "Indirection, Encapsulation, and Obfuscation" (Mark & Thomas) 7 20/2 SDOs: the ITU, IETF, ... - Guest Lecture by Elliot Lear 8 27/2 "Homenetworking and The Curse of the End-2-End Model" (Mark) 9 ??? Presentations by buddy-teams (Thomas + Mark) thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 2
Intro, kick-off, objectives and motivation (Thomas) 1 9/1 “What Makes For A Successful Protocol?” (Mark) 2 16/1 “Bufferbloat & the Broken Internet” (Thomas & Mark) 3 23/1 “Carrier-Grade Routing” (Thomas) 4 30/1 “Peering” (Thomas & Mark) 5 6/2 RPKI (Mark) 6 13/2 "Indirection, Encapsulation, and Obfuscation" (Mark & Thomas) 7 20/2 SDOs: the ITU, IETF, ... - Guest Lecture by Elliot Lear 8 27/2 "Homenetworking and The Curse of the End-2-End Model" (Mark) 9 ??? Presentations by buddy-teams (Thomas + Mark) thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 2
Objectives thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 3
Objectives • Recapitulate TCP Congestion Control... thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 3
Objectives • Recapitulate TCP Congestion Control... • ...and why that doesn’t actually work... thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 3
Objectives • Recapitulate TCP Congestion Control... • ...and why that doesn’t actually work... • Can’t fix TCP , can we fix the routers? thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 3
Objectives • Recapitulate TCP Congestion Control... • ...and why that doesn’t actually work... • Can’t fix TCP , can we fix the routers? • We could, but didn’t - let’s blame Cisco ;) thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 3
Flow Control Buffers “in end-points” Sender Receiver Sender window determined by receiver buffer capacity: do not overload receiver. “speed dating matching service” matches rate of sender to rate at which receiving application is reading thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 4
Congestion Control Buffers “in between” Sender Receiver thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 5
Congestion Control Buffers “in between” Different senders “share” links and buffer space Sender Receiver “Network Buffers” (routers, etc.) overload too thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 5
Congestion Control So, what signals do we have... Transport Protocol Signaling Sender Receiver “Something’s Rotten.....”? Goal: thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 6
Congestion Control So, what signals do we have... Transport Protocol Signaling Sender Receiver “Something’s Rotten.....”? Goal: • Less, not more, signals • Infer congestion thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 6
Congestion Control So, what signals do we have... Transport Protocol Signaling Sender Receiver “Something’s Rotten.....”? Goal: • • Message Drops Less, not more, signals • • Duplicate ACKs Infer congestion thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 6
Congestion Control How do we slow down? Transport Protocol Signaling Sender Receiver thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 7
Congestion Control How do we slow down? Transport Protocol Signaling Sender Receiver • Introduce “Congestion Window”, CWS in sender • Set Sender Window = min{UWS, RWS} thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 7
Congestion Control The Beginning: Tahoe (UWS=CWS) thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 8
Congestion Control The Beginning: Tahoe (UWS=CWS) 1. Start: CWS = 1; threshold = reasonable-large-value thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 8
Congestion Control The Beginning: Tahoe (UWS=CWS) 1. Start: CWS = 1; threshold = reasonable-large-value 2. While CWS < threshold: • For each message ACKed: CWS=CWS+1 thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 8
Congestion Control The Beginning: Tahoe (UWS=CWS) 1. Start: CWS = 1; threshold = reasonable-large-value 2. While CWS < threshold: • For each message ACKed: CWS=CWS+1 3. While CWS > threshold: • For each CWS messages ACKed: CWS=CWS+1 thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 8
Congestion Control The Beginning: Tahoe (UWS=CWS) 1. Start: CWS = 1; threshold = reasonable-large-value 2. While CWS < threshold: • For each message ACKed: CWS=CWS+1 3. While CWS > threshold: • For each CWS messages ACKed: CWS=CWS+1 4. If no ACK received before time-out: • threshold = CWS/2 • CWS = 1 thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 8
Congestion Control The Beginning: Tahoe (UWS=CWS) 1. Start: CWS = 1; threshold = reasonable-large-value 2. While CWS < threshold: • For each message ACKed: CWS=CWS+1 3. While CWS > threshold: • For each CWS messages ACKed: CWS=CWS+1 4. If no ACK received before time-out: • threshold = CWS/2 • CWS = 1 ➡ probe for success, back down for failure thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 8
Congestion Control The Beginning: Tahoe (UWS=CWS) 1. Start: CWS = 1; threshold = reasonable-large-value 2. While CWS < threshold: Slow • Start For each message ACKed: CWS=CWS+1 3. While CWS > threshold: Congestion • Avoidance For each CWS messages ACKed: CWS=CWS+1 4. If no ACK received before time-out: • threshold = CWS/2 Recovery • CWS = 1 ➡ probe for success, back down for failure thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 8
Congestion Control Tahoe CWIN Evolution CWIN Size t 1 t 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 9
Congestion Control Tahoe CWIN Evolution CWIN Size t 1 t 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 9
Congestion Control Tahoe acts on no-ack + Timeout Tahoe CWIN Evolution CWIN Size t 1 t 2 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 9
Congestion Control Tahoe • Problems: • Takes complete timeout interval to detect and react to packet loss • Go-back-n is “forced” • So, not good at the lonely packet loss .... thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 10
Congestion Control Reno Slow Start Congestion Avoidance Recovery thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 11
Congestion Control Reno 1. Start: CWS = 1; threshold = reasonable-large-value 2. While CWS < threshold: Slow • For each message ACKed: CWS=CWS+1 Start 3. While CWS > threshold: Congestion • For each CWS messages ACKed: CWS=CWS+1 Avoidance 4. If no ACK received before time-out: • threshold = CWS/2 Recovery • CWS = 1 thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 11
Congestion Control Reno 1. Start: CWS = 1; threshold = reasonable-large-value 2. While CWS < threshold: Slow • For each message ACKed: CWS=CWS+1 Start 3. While CWS > threshold: Congestion • For each CWS messages ACKed: CWS=CWS+1 Avoidance 4. If no ACK received before time-out: • threshold = CWS/2 Recovery • CWS = 1 5. If triple duplicate ACK received: • Fast Retransmit + Fast Recovery (FR&R) thomas@thomasclausen.org http://www.thomasclausen.org mark@townsley.net http://www.townsley.net/ 11
Recommend
More recommend