SlideShare a Scribd company logo
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
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
   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
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
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
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
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

More Related Content

Lecture 2: Congestion Control and Avoidance

  • 1. Congestion Avoidance! and Control 21 August 2009 CS5229 Semester 1 2009/10 1
  • 2. Van Jacobson, “Congestion Avoidance and Control”, " SIGCOMM 1988 21 August 2009 CS5229 Semester 1 2009/10 2
  • 3. Fixes to TCP in BSD" Handwaving arguments" Less rigorous math" Lots of “magical” hacks 21 August 2009 CS5229 Semester 1 2009/10 3
  • 4. 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
  • 5. 1986 21 August 2009 CS5229 Semester 1 2009/10 6
  • 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
  • 7. RFC793 21 August 2009 CS5229 Semester 1 2009/10 8
  • 8. Sending window = receiving window" No congestion control" Retransmit only when timeout 21 August 2009 CS5229 Semester 1 2009/10 9
  • 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
  • 10. 21 August 2009 CS5229 Semester 1 2009/10 11 11
  • 11. Observation: a TCP connection should obey" Conservation ! of ! Packets 21 August 2009 CS5229 Semester 1 2009/10 12 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
  • 13. 21 August 2009 CS5229 Semester 1 2009/10 14 14
  • 14. How could this principle be violated? 21 August 2009 CS5229 Semester 1 2009/10 15 15
  • 15. 1. Never reaches equilibrium 21 August 2009 CS5229 Semester 1 2009/10 16 16
  • 16. 2. Inject a packet before the next packet leaves 21 August 2009 CS5229 Semester 1 2009/10 17 17
  • 17. 1. Getting to the equilibrium state 21 August 2009 CS5229 Semester 1 2009/10 18 18
  • 18. Equilibrium state: " self-clocking 21 August 2009 CS5229 Semester 1 2009/10 19 19
  • 19. 21 August 2009 CS5229 Semester 1 2009/10 20 20
  • 20. How to start the ‘clock’? 21 August 2009 CS5229 Semester 1 2009/10 21 21
  • 21. Slow Start 21 August 2009 CS5229 Semester 1 2009/10 22 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
  • 23. 21 August 2009 CS5229 Semester 1 2009/10 24 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
  • 25. 21 August 2009 CS5229 Semester 1 2009/10 26 26
  • 26. 2. Inject a packet before the next packet leaves 21 August 2009 CS5229 Semester 1 2009/10 27 27
  • 27. 2. Conservation at Equilibrium 21 August 2009 CS5229 Semester 1 2009/10 28 28
  • 28. Something’s wrong with TCP timer 21 August 2009 CS5229 Semester 1 2009/10 29 29
  • 29. 21 August 2009 CS5229 Semester 1 2009/10 30 30
  • 30. TCP (RFC793) Ri : smoothed RTT Mi : measured RTT RTO : timeout value 21 August 2009 CS5229 Semester 1 2009/10 31 31
  • 31. Variation in RTT when network is loaded 21 August 2009 CS5229 Semester 1 2009/10 32 32
  • 32. β = 2 (recommended) tolerates only 30% load 21 August 2009 CS5229 Semester 1 2009/10 33 33
  • 33. Idea: estimate the variation and use in calculating RTO 21 August 2009 CS5229 Semester 1 2009/10 34 34
  • 34. Measuring Variation" variance: " costly (need to square)" mean error:" simpler 21 August 2009 CS5229 Semester 1 2009/10 35 35
  • 35. 21 August 2009 CS5229 Semester 1 2009/10 36 36
  • 36. 21 August 2009 CS5229 Semester 1 2009/10 38 38
  • 37. 21 August 2009 CS5229 Semester 1 2009/10 39 39
  • 38. To prevent spurious timeout, 21 August 2009 CS5229 Semester 1 2009/10 40 40
  • 39. To pick a value of k, consider bandwidth- dominated link. 21 August 2009 CS5229 Semester 1 2009/10 41 41
  • 40. 21 August 2009 CS5229 Semester 1 2009/10 42 42
  • 41. R doubles each round during slow-start. 21 August 2009 CS5229 Semester 1 2009/10 43 43
  • 42. 21 August 2009 CS5229 Semester 1 2009/10 44 44
  • 43. 21 August 2009 CS5229 Semester 1 2009/10 45 45
  • 44. 21 August 2009 CS5229 Semester 1 2009/10 46 46
  • 45. 21 August 2009 CS5229 Semester 1 2009/10 47 47
  • 46. 3. Moving towards new equilibrium when path changes 21 August 2009 CS5229 Semester 1 2009/10 48 48
  • 47. Idea: adjust cwnd when congestion happens 21 August 2009 CS5229 Semester 1 2009/10 49 49
  • 48. Assume: congestion leads to packet loss, leads to timeout. 21 August 2009 CS5229 Semester 1 2009/10 50 50
  • 49. On timeout, cwnd /= 2" On ACK, cwnd += 1/cwnd 21 August 2009 CS5229 Semester 1 2009/10 51 51
  • 50. 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
  • 51. Combining " slow-start " and " congestion avoidance 21 August 2009 CS5229 Semester 1 2009/10 53 53
  • 52. TCP Tahoe 21 August 2009 CS5229 Semester 1 2009/10 54 54
  • 53. 21 August 2009 CS5229 Semester 1 2009/10 55 55
  • 54. 21 August 2009 CS5229 Semester 1 2009/10 56 56
  • 55. cwnd: " “pipe size” probed" ssthresh: " “pipe size” during equilibrium 21 August 2009 CS5229 Semester 1 2009/10 57 57
  • 56. new ack:" if (cwnd < ssthresh)" cwnd += 1" else" cwnd += 1/cwnd 21 August 2009 CS5229 Semester 1 2009/10 58 58
  • 57. timeout/3rd dup ack:" retransmit all unacked" ssthresh = cwnd/2" cwnd = 1" 21 August 2009 CS5229 Semester 1 2009/10 59 59
  • 58. 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
  • 59. TCP Reno 21 August 2009 CS5229 Semester 1 2009/10 61 61
  • 60. timeout:" retransmit all unacked" ssthresh = cwnd/2" cwnd = 1" 21 August 2009 CS5229 Semester 1 2009/10 71 71
  • 61. 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
  • 62. 21 August 2009 CS5229 Semester 1 2009/10 73 73
  • 63. AIMD! additive increase! multiplicative decrease 21 August 2009 CS5229 Semester 1 2009/10 74 74
  • 64. 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