• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Lecture 2: Congestion Control and Avoidance
 

Lecture 2: Congestion Control and Avoidance

on

  • 2,310 views

 

Statistics

Views

Total Views
2,310
Views on SlideShare
2,310
Embed Views
0

Actions

Likes
4
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Lecture 2: Congestion Control and Avoidance Lecture 2: Congestion Control and Avoidance Presentation Transcript

    • Congestion Avoidance! and Control 21 August 2009 CS5229 Semester 1 2009/10 1
    • Van Jacobson, “Congestion Avoidance and Control”, " SIGCOMM 1988 21 August 2009 CS5229 Semester 1 2009/10 2
    • Fixes to TCP in BSD" Handwaving arguments" Less rigorous math" Lots of “magical” hacks 21 August 2009 CS5229 Semester 1 2009/10 3
    • We assume " - the sender always has data to send" - each packet is of the same size" - TCP is message-oriented 21 August 2009 CS5229 Semester 1 2009/10 4
    • cwnd: congestion window" swnd: usable sending window " rwnd: advertised receiver’s window 21 August 2009 CS5229 Semester 1 2009/10 5
    • 1986 21 August 2009 CS5229 Semester 1 2009/10 6
    • TCP throughput from LBL to UC Berkeley (two hops) dropped from 32K bps to 40 bps. 21 August 2009 CS5229 Semester 1 2009/10 7
    • RFC793 21 August 2009 CS5229 Semester 1 2009/10 8
    • Sending window = receiving window" No congestion control" Retransmit only when timeout 21 August 2009 CS5229 Semester 1 2009/10 9
    • Congestion Collapse: " sender sends too fast" routers delay/drop packets" sender retransmit" no useful data getting through 21 August 2009 CS5229 Semester 1 2009/10 10 10
    • 21 August 2009 CS5229 Semester 1 2009/10 11 11
    • Observation: a TCP connection should obey" Conservation ! of ! Packets 21 August 2009 CS5229 Semester 1 2009/10 12 12
    • In equilibrium state, a new packet is not inserted until an old packet leaves. 21 August 2009 CS5229 Semester 1 2009/10 13 13
    • 21 August 2009 CS5229 Semester 1 2009/10 14 14
    • How could this principle be violated? 21 August 2009 CS5229 Semester 1 2009/10 15 15
    • 1. Never reaches equilibrium 21 August 2009 CS5229 Semester 1 2009/10 16 16
    • 2. Inject a packet before the next packet leaves 21 August 2009 CS5229 Semester 1 2009/10 17 17
    • 1. Getting to the equilibrium state 21 August 2009 CS5229 Semester 1 2009/10 18 18
    • Equilibrium state: " self-clocking 21 August 2009 CS5229 Semester 1 2009/10 19 19
    • 21 August 2009 CS5229 Semester 1 2009/10 20 20
    • How to start the ‘clock’? 21 August 2009 CS5229 Semester 1 2009/10 21 21
    • Slow Start 21 August 2009 CS5229 Semester 1 2009/10 22 22
    • Add a new variable cwnd." Start/Restart: cwnd = 1." Upon receiving ACK, cwnd++." Send at most min(cwnd,rwin) 21 August 2009 CS5229 Semester 1 2009/10 23 23
    • 21 August 2009 CS5229 Semester 1 2009/10 24 24
    • Never send more than 2x the max possible rate." (previously 200x is possible!) 21 August 2009 CS5229 Semester 1 2009/10 25 25
    • 21 August 2009 CS5229 Semester 1 2009/10 26 26
    • 2. Inject a packet before the next packet leaves 21 August 2009 CS5229 Semester 1 2009/10 27 27
    • 2. Conservation at Equilibrium 21 August 2009 CS5229 Semester 1 2009/10 28 28
    • Something’s wrong with TCP timer 21 August 2009 CS5229 Semester 1 2009/10 29 29
    • 21 August 2009 CS5229 Semester 1 2009/10 30 30
    • TCP (RFC793) Ri : smoothed RTT Mi : measured RTT RTO : timeout value 21 August 2009 CS5229 Semester 1 2009/10 31 31
    • Variation in RTT when network is loaded 21 August 2009 CS5229 Semester 1 2009/10 32 32
    • β = 2 (recommended) tolerates only 30% load 21 August 2009 CS5229 Semester 1 2009/10 33 33
    • Idea: estimate the variation and use in calculating RTO 21 August 2009 CS5229 Semester 1 2009/10 34 34
    • Measuring Variation" variance: " costly (need to square)" mean error:" simpler 21 August 2009 CS5229 Semester 1 2009/10 35 35
    • 21 August 2009 CS5229 Semester 1 2009/10 36 36
    • 21 August 2009 CS5229 Semester 1 2009/10 37 37
    • 21 August 2009 CS5229 Semester 1 2009/10 38 38
    • 21 August 2009 CS5229 Semester 1 2009/10 39 39
    • To prevent spurious timeout, 21 August 2009 CS5229 Semester 1 2009/10 40 40
    • To pick a value of k, consider bandwidth- dominated link. 21 August 2009 CS5229 Semester 1 2009/10 41 41
    • 21 August 2009 CS5229 Semester 1 2009/10 42 42
    • R doubles each round during slow-start. 21 August 2009 CS5229 Semester 1 2009/10 43 43
    • 21 August 2009 CS5229 Semester 1 2009/10 44 44
    • 21 August 2009 CS5229 Semester 1 2009/10 45 45
    • 21 August 2009 CS5229 Semester 1 2009/10 46 46
    • 21 August 2009 CS5229 Semester 1 2009/10 47 47
    • 3. Moving towards new equilibrium when path changes 21 August 2009 CS5229 Semester 1 2009/10 48 48
    • Idea: adjust cwnd when congestion happens 21 August 2009 CS5229 Semester 1 2009/10 49 49
    • Assume: congestion leads to packet loss, leads to timeout. 21 August 2009 CS5229 Semester 1 2009/10 50 50
    • On timeout, cwnd /= 2" On ACK, cwnd += 1/cwnd 21 August 2009 CS5229 Semester 1 2009/10 51 51
    • Why drop by half ?" 1. Slow-start: " we know R/2 works" 2. Steady state:" a new flow probably? 21 August 2009 CS5229 Semester 1 2009/10 52 52
    • Combining " slow-start " and " congestion avoidance 21 August 2009 CS5229 Semester 1 2009/10 53 53
    • TCP Tahoe 21 August 2009 CS5229 Semester 1 2009/10 54 54
    • 14 cwnd 12 ssthresh 10 8 6 4 2 0 21 August 2009 CS5229 Semester 1 2009/10 55 55
    • 21 August 2009 CS5229 Semester 1 2009/10 56 56
    • cwnd: " “pipe size” probed" ssthresh: " “pipe size” during equilibrium 21 August 2009 CS5229 Semester 1 2009/10 57 57
    • new ack:" if (cwnd < ssthresh)" cwnd += 1" else" cwnd += 1/cwnd 21 August 2009 CS5229 Semester 1 2009/10 58 58
    • timeout/3rd dup ack:" retransmit all unacked" ssthresh = cwnd/2" cwnd = 1" 21 August 2009 CS5229 Semester 1 2009/10 59 59
    • Improving TCP Tahoe:" Packets still getting through in dup ack -- no need to reset the clock! 21 August 2009 CS5229 Semester 1 2009/10 60 60
    • TCP Reno 21 August 2009 CS5229 Semester 1 2009/10 61 61
    • W t send W/2 during this time t + RTT cwnd = W/2 21 August 2009 CS5229 Semester 1 2009/10 62 62
    • 21 August 2009 CS5229 Semester 1 2009/10 63 63
    • 3rd dup ack:" retransmit 1st unacked" ssthresh = cwnd/2" cwnd = cwnd/2 + 3 21 August 2009 CS5229 Semester 1 2009/10 64 64
    • subsequent dup ack:" cwnd++" new ack:! cwnd = ssthresh 21 August 2009 CS5229 Semester 1 2009/10 65 65
    • Suppose U is lost (oldest unacked) and all other packets are not. At time t, cwnd is W, and packets [U, U+W-1] are in the pipe. U U+W-1 … 21 August 2009 CS5229 Semester 1 2009/10 66 66
    • Between time t and t+RTT, we would have retransmitted U and received W-1 duplicate ACK. U U+W-1 … 21 August 2009 CS5229 Semester 1 2009/10 67 67
    • Between time t and t+RTT, the cwnd becomes W/2 + W-1. So we get to send W/2 new packets during the time. (Soon cwnd is going to become W/2 anyway..) U U+W-1 U+W/2+W-1 … 21 August 2009 CS5229 Semester 1 2009/10 68 68
    • At time t+RTT, we receive ACK for packets [U,U+W-1], set cwnd to W/2. U U+W-1 U+W/2+W-1 … 21 August 2009 CS5229 Semester 1 2009/10 69 69
    • 21 August 2009 CS5229 Semester 1 2009/10 70 70
    • timeout:" retransmit all unacked" ssthresh = cwnd/2" cwnd = 1" 21 August 2009 CS5229 Semester 1 2009/10 71 71
    • 3rd duplicate ACK:! fast retransmission! (ie, retransmit 1st unack) " fast recovery" (details in Week 4)" ssthresh = cwnd = cwnd/2 21 August 2009 CS5229 Semester 1 2009/10 72 72
    • Reno cwnd 14 Tahoe cwnd 12 ssthresh 10 8 6 4 2 0 21 August 2009 CS5229 Semester 1 2009/10 73 73
    • AIMD! additive increase! multiplicative decrease 21 August 2009 CS5229 Semester 1 2009/10 74 74
    • Fast Recovery: ! the pipe is still almost full -- no need to restart 21 August 2009 CS5229 Semester 1 2009/10 75 75
    • new ack:" if (cwnd < sstresh)" cwnd += 1" else" cwnd += 1/cwnd 21 August 2009 CS5229 Semester 1 2009/10 76 76
    • timeout:" retransmit 1st unacked" ssthresh = cwnd/2" cwnd = 1" 21 August 2009 CS5229 Semester 1 2009/10 77 77
    • 3rd dup ack:" retransmit 1st unacked" ssthresh = cwnd/2" cwnd = cwnd/2 + 3 21 August 2009 CS5229 Semester 1 2009/10 78 78
    • subsequent dup ack:" cwnd++" new ack:! cwnd = ssthresh 21 August 2009 CS5229 Semester 1 2009/10 79 79
    • Chiu and Jain, “Analysis of Increase and Decrease Algorithms for Congestion Avoidance in Computer Networks”, Comp. Net. & ISDN Sys. 1989 21 August 2009 CS5229 Semester 1 2009/10 80 80