TCP"
               Reno, NewReno, SACK


4 September 2009
   CS5229, Semester 1, 2009/10
   1
TCP Reno


4 September 2009
    CS5229, Semester 1, 2009/10
   2
14
                                                   cwnd
   ssthresh
     12

     10

      8

      6

      4

      2

      0

4 September 2009
   CS5229, Semester 1, 2009/10
                       3
new ack:"
 if (cwnd < sstresh)"
    cwnd += 1"
 else"
    cwnd += 1/cwnd
4 September 2009
   CS5229, Semester 1, 2009/10
   5
timeout:"
 retransmit 1st unacked"
 ssthresh = cwnd/2"
 cwnd = 1"

4 September 2009
   CS5229, Semester 1, 2009/10
   6
3rd  duplicate ACK:"
 fast retransmission"
  (ie, retransmit 1st unack) "
 fast recovery"
  (details today)"
 ssthresh = cwnd = cwnd/2
4 September 2009
   CS5229, Semester 1, 2009/10
   7
TCP’s rule"

             send more packets if "
                L + cwnd > H"

              [ L .. H-1 ] are outstanding packets     
4 September 2009
       CS5229, Semester 1, 2009/10
       10
4 September 2009
   CS5229, Semester 1, 2009/10
   11
Data Packets


     ACK Packets 
     (received up to this seq number)


     Congestion Window


Sequence
Number




                                                                        Time
4 September 2009
                        CS5229, Semester 1, 2009/10
           12
3rd dup ack:"
 retransmit 1st unacked"
 ssthresh = cwnd/2"
 cwnd = cwnd/2

4 September 2009
   CS5229, Semester 1, 2009/10
   13
Incorrectly clamping the congestion window
                    too soon (without fast recovery)




X


4 September 2009
             CS5229, Semester 1, 2009/10
        14
fast recovery:"

 keep the pipe occupied"


4 September 2009
   CS5229, Semester 1, 2009/10
   15
X


4 September 2009
   CS5229, Semester 1, 2009/10
   16
4 September 2009
   CS5229, Semester 1, 2009/10
   17
X

X


     4 September 2009
   CS5229, Semester 1, 2009/10
   18
TCP Reno timeout with
 multiple losses in a window


4 September 2009
   CS5229, Semester 1, 2009/10
   19
TCP NewReno


4 September 2009
   CS5229, Semester 1, 2009/10
   20
X
X




     4 September 2009
   CS5229, Semester 1, 2009/10
   21
4 September 2009
   CS5229, Semester 1, 2009/10
   22
3rd dup ack:"
 retransmit 1st unacked"
 ssthresh = cwnd/2"
 cwnd = cwnd/2 + 3"
 remember highest 
4 September 2009
   CS5229, Semester 1, 2009/10
   25
“complete” ack:"
 (all  are acked) "
 cwnd = ssthresh

4 September 2009
   CS5229, Semester 1, 2009/10
   26
“partial” ack:"
 (acknowledge n packets)"
 retransmit"
 cwnd = cwnd - n + 1

4 September 2009
   CS5229, Semester 1, 2009/10
   27
Note: RFC2581/RFC2582 give the
 accurate/gory details. Simplified version
 is presented here (eg. cwnd vs FlightSize,
 update of cwnd upon partial ACK).



4 September 2009
   CS5229, Semester 1, 2009/10
   29
What does a dup
             ACK tell us?

4 September 2009
   CS5229, Semester 1, 2009/10
   30
“Coarse Feedback”


4 September 2009
   CS5229, Semester 1, 2009/10
   31
TCP SACK


4 September 2009
    CS5229, Semester 1, 2009/10
   32
Use TCP header
         options to report
       received segments.
4 September 2009
   CS5229, Semester 1, 2009/10
   33
SACK Blocks:"

   1st block - report most recently
   received segments"

   subsequent blocks - repeat most
   recent previous blocks
4 September 2009
   CS5229, Semester 1, 2009/10
   34
pipe: num of outstanding
 packets in the pipe."

 send only if pipe < cwnd

4 September 2009
   CS5229, Semester 1, 2009/10
   35
scoreboard: which
 packets have been
 received?

4 September 2009
   CS5229, Semester 1, 2009/10
   36
X

X


     4 September 2009
   CS5229, Semester 1, 2009/10
   37
3rd dup ack:"
 pipe = cwnd - 3"
 retransmit 1st unacked"
 ssthresh = cwnd/2"
 cwnd = cwnd/2 + 3
4 September 2009
   CS5229, Semester 1, 2009/10
   38
subsequent dup ack:"
 cwnd++"
 pipe--"

 if pipe < cwnd"
  send packet, pipe++
4 September 2009
   CS5229, Semester 1, 2009/10
   39
“partial” ack:"
 retransmit"
 cwnd = cwnd - n + 1"
 pipe -= 2"
 if pipe < cwnd"
  send packet, pipe++
4 September 2009
   CS5229, Semester 1, 2009/10
   40
Idea of SACK:"

 Which packet has left the network?"
 Where is the gap?"

 Decouple when to send and what to
 send.
4 September 2009
   CS5229, Semester 1, 2009/10
   43
TCP SACK recovers faster
 than NewReno with
 multiple losses in a window.

4 September 2009
   CS5229, Semester 1, 2009/10
   44
Deployment


4 September 2009
     CS5229, Semester 1, 2009/10
   57
Feb 2004


                                                            NewReno
                                                            Reno
                           8%
                              Tahoe
                    15%




                                              77%




4 September 2009
            CS5229, Semester 1, 2009/10
              58
70% "
                    SACK capable


4 September 2009
    CS5229, Semester 1, 2009/10
   59
TCP BIC/CUBIC"
                    Linux 2.6.x


4 September 2009
    CS5229, Semester 1, 2009/10
   63
Compound TCP "
                    MS Windows Vista


4 September 2009
       CS5229, Semester 1, 2009/10
   64
TFRC"
                     equation-based"
                    congestion control               

4 September 2009
     CS5229, Semester 1, 2009/10
       65
Not everyone uses TCP


4 September 2009
   CS5229, Semester 1, 2009/10
   66
UDP:"

                    Media streaming"
                       Gaming"
                         VoIP
4 September 2009
      CS5229, Semester 1, 2009/10
   67
Why not congestion controlled?"

 1. UDP has low delay, no need
          full reliability. UDP "
     is not congestion controlled. 
4 September 2009
   CS5229, Semester 1, 2009/10
   68
Why not congestion controlled?"

2. No incentive. OTOH, there
 are incentives NOT to use
    congestion control. 
4 September 2009
   CS5229, Semester 1, 2009/10
   69
Sally Floyd, h+p://www.icir.org/floyd/tcp_unfriendly.html 
4 September 2009
         CS5229, Semester 1, 2009/10
          70
“Unresponsive Flows”


4 September 2009
   CS5229, Semester 1, 2009/10
   71
Bad: lead to unfairness
         and congestion collapse.


4 September 2009
   CS5229, Semester 1, 2009/10
   72
Unfairness: unresponsive
       flows consume more bandwidth
         than congestion controlled
                  flows.

4 September 2009
   CS5229, Semester 1, 2009/10
   73
Congestion Collapse:
        wasting bandwidth by sending
         packets that will be dropped


4 September 2009
   CS5229, Semester 1, 2009/10
   77
Today: "
                      a TCP-friendly"
                    unreliable protocol

4 September 2009
        CS5229, Semester 1, 2009/10
   78
Idea: "
      send at a rate that a TCP
         flow would send

4 September 2009
   CS5229, Semester 1, 2009/10
   79
we can do the AIMD-thing"
        at the source, or


4 September 2009
   CS5229, Semester 1, 2009/10
   80
4 September 2009
   CS5229, Semester 1, 2009/10
   81
equation-based "
                    congestion control


4 September 2009
       CS5229, Semester 1, 2009/10
   82
steady"
                        fair"
                    responsive

4 September 2009
    CS5229, Semester 1, 2009/10
   83
how to determine"
                          RTT"
                           tRTO"
                            p

4 September 2009
       CS5229, Semester 1, 2009/10
   84
p is not packet loss rate"
                   but "
             loss event rate

4 September 2009
   CS5229, Semester 1, 2009/10
   85
4 September 2009
   CS5229, Semester 1, 2009/10
   86
4 September 2009
   CS5229, Semester 1, 2009/10
   87
4 September 2009
   CS5229, Semester 1, 2009/10
   88
RTT can fluctuates


4 September 2009
       CS5229, Semester 1, 2009/10
   89
4 September 2009
   CS5229, Semester 1, 2009/10
   90
4 September 2009
   CS5229, Semester 1, 2009/10
   91
4 September 2009
   CS5229, Semester 1, 2009/10
   92
4 September 2009
   CS5229, Semester 1, 2009/10
   93
how to initialize?


4 September 2009
       CS5229, Semester 1, 2009/10
   94
slow start"
                    (until loss occur)"


      Tnow = min(2Tprev, 2Trecv)

4 September 2009
     CS5229, Semester 1, 2009/10
   95
no loss history, how?"

              solve p given T, RTT

4 September 2009
   CS5229, Semester 1, 2009/10
   96
4 September 2009
   CS5229, Semester 1, 2009/10
   97
TFRC is now part of
                    DCCP


4 September 2009
   CS5229, Semester 1, 2009/10
   98

Lecture 4: TCP and TFRC

  • 1.
    TCP" Reno, NewReno, SACK 4 September 2009 CS5229, Semester 1, 2009/10 1
  • 2.
    TCP Reno 4 September2009 CS5229, Semester 1, 2009/10 2
  • 3.
    14 cwnd ssthresh 12 10 8 6 4 2 0 4 September 2009 CS5229, Semester 1, 2009/10 3
  • 4.
    new ack:" if(cwnd < sstresh)" cwnd += 1" else" cwnd += 1/cwnd 4 September 2009 CS5229, Semester 1, 2009/10 5
  • 5.
    timeout:" retransmit 1stunacked" ssthresh = cwnd/2" cwnd = 1" 4 September 2009 CS5229, Semester 1, 2009/10 6
  • 6.
    3rd duplicateACK:" fast retransmission" (ie, retransmit 1st unack) " fast recovery" (details today)" ssthresh = cwnd = cwnd/2 4 September 2009 CS5229, Semester 1, 2009/10 7
  • 7.
    TCP’s rule" send more packets if " L + cwnd > H" [ L .. H-1 ] are outstanding packets 4 September 2009 CS5229, Semester 1, 2009/10 10
  • 8.
    4 September 2009 CS5229, Semester 1, 2009/10 11
  • 9.
    Data Packets ACK Packets (received up to this seq number) Congestion Window Sequence Number Time 4 September 2009 CS5229, Semester 1, 2009/10 12
  • 10.
    3rd dup ack:" retransmit 1st unacked" ssthresh = cwnd/2" cwnd = cwnd/2 4 September 2009 CS5229, Semester 1, 2009/10 13
  • 11.
    Incorrectly clamping thecongestion window too soon (without fast recovery) X 4 September 2009 CS5229, Semester 1, 2009/10 14
  • 12.
    fast recovery:" keepthe pipe occupied" 4 September 2009 CS5229, Semester 1, 2009/10 15
  • 13.
    X 4 September 2009 CS5229, Semester 1, 2009/10 16
  • 14.
    4 September 2009 CS5229, Semester 1, 2009/10 17
  • 15.
    X X 4 September 2009 CS5229, Semester 1, 2009/10 18
  • 16.
    TCP Reno timeoutwith multiple losses in a window 4 September 2009 CS5229, Semester 1, 2009/10 19
  • 17.
    TCP NewReno 4 September2009 CS5229, Semester 1, 2009/10 20
  • 18.
    X X 4 September 2009 CS5229, Semester 1, 2009/10 21
  • 19.
    4 September 2009 CS5229, Semester 1, 2009/10 22
  • 20.
    3rd dup ack:" retransmit 1st unacked" ssthresh = cwnd/2" cwnd = cwnd/2 + 3" remember highest 4 September 2009 CS5229, Semester 1, 2009/10 25
  • 21.
    “complete” ack:" (all are acked) " cwnd = ssthresh 4 September 2009 CS5229, Semester 1, 2009/10 26
  • 22.
    “partial” ack:" (acknowledgen packets)" retransmit" cwnd = cwnd - n + 1 4 September 2009 CS5229, Semester 1, 2009/10 27
  • 23.
    Note: RFC2581/RFC2582 givethe accurate/gory details. Simplified version is presented here (eg. cwnd vs FlightSize, update of cwnd upon partial ACK). 4 September 2009 CS5229, Semester 1, 2009/10 29
  • 24.
    What does adup ACK tell us? 4 September 2009 CS5229, Semester 1, 2009/10 30
  • 25.
    “Coarse Feedback” 4 September2009 CS5229, Semester 1, 2009/10 31
  • 26.
    TCP SACK 4 September2009 CS5229, Semester 1, 2009/10 32
  • 27.
    Use TCP header options to report received segments. 4 September 2009 CS5229, Semester 1, 2009/10 33
  • 28.
    SACK Blocks:" 1st block - report most recently received segments" subsequent blocks - repeat most recent previous blocks 4 September 2009 CS5229, Semester 1, 2009/10 34
  • 29.
    pipe: num ofoutstanding packets in the pipe." send only if pipe < cwnd 4 September 2009 CS5229, Semester 1, 2009/10 35
  • 30.
    scoreboard: which packetshave been received? 4 September 2009 CS5229, Semester 1, 2009/10 36
  • 31.
    X X 4 September 2009 CS5229, Semester 1, 2009/10 37
  • 32.
    3rd dup ack:" pipe = cwnd - 3" retransmit 1st unacked" ssthresh = cwnd/2" cwnd = cwnd/2 + 3 4 September 2009 CS5229, Semester 1, 2009/10 38
  • 33.
    subsequent dup ack:" cwnd++" pipe--" if pipe < cwnd" send packet, pipe++ 4 September 2009 CS5229, Semester 1, 2009/10 39
  • 34.
    “partial” ack:" retransmit" cwnd = cwnd - n + 1" pipe -= 2" if pipe < cwnd" send packet, pipe++ 4 September 2009 CS5229, Semester 1, 2009/10 40
  • 35.
    Idea of SACK:" Which packet has left the network?" Where is the gap?" Decouple when to send and what to send. 4 September 2009 CS5229, Semester 1, 2009/10 43
  • 36.
    TCP SACK recoversfaster than NewReno with multiple losses in a window. 4 September 2009 CS5229, Semester 1, 2009/10 44
  • 37.
    Deployment 4 September 2009 CS5229, Semester 1, 2009/10 57
  • 38.
    Feb 2004 NewReno Reno 8% Tahoe 15% 77% 4 September 2009 CS5229, Semester 1, 2009/10 58
  • 39.
    70% " SACK capable 4 September 2009 CS5229, Semester 1, 2009/10 59
  • 40.
    TCP BIC/CUBIC" Linux 2.6.x 4 September 2009 CS5229, Semester 1, 2009/10 63
  • 41.
    Compound TCP " MS Windows Vista 4 September 2009 CS5229, Semester 1, 2009/10 64
  • 42.
    TFRC" equation-based" congestion control 4 September 2009 CS5229, Semester 1, 2009/10 65
  • 43.
    Not everyone usesTCP 4 September 2009 CS5229, Semester 1, 2009/10 66
  • 44.
    UDP:" Media streaming" Gaming" VoIP 4 September 2009 CS5229, Semester 1, 2009/10 67
  • 45.
    Why not congestioncontrolled?" 1. UDP has low delay, no need full reliability. UDP " is not congestion controlled. 4 September 2009 CS5229, Semester 1, 2009/10 68
  • 46.
    Why not congestioncontrolled?" 2. No incentive. OTOH, there are incentives NOT to use congestion control. 4 September 2009 CS5229, Semester 1, 2009/10 69
  • 47.
  • 48.
    “Unresponsive Flows” 4 September2009 CS5229, Semester 1, 2009/10 71
  • 49.
    Bad: lead tounfairness and congestion collapse. 4 September 2009 CS5229, Semester 1, 2009/10 72
  • 50.
    Unfairness: unresponsive flows consume more bandwidth than congestion controlled flows. 4 September 2009 CS5229, Semester 1, 2009/10 73
  • 51.
    Congestion Collapse: wasting bandwidth by sending packets that will be dropped 4 September 2009 CS5229, Semester 1, 2009/10 77
  • 52.
    Today: " a TCP-friendly" unreliable protocol 4 September 2009 CS5229, Semester 1, 2009/10 78
  • 53.
    Idea: " send at a rate that a TCP flow would send 4 September 2009 CS5229, Semester 1, 2009/10 79
  • 54.
    we can dothe AIMD-thing" at the source, or 4 September 2009 CS5229, Semester 1, 2009/10 80
  • 55.
    4 September 2009 CS5229, Semester 1, 2009/10 81
  • 56.
    equation-based " congestion control 4 September 2009 CS5229, Semester 1, 2009/10 82
  • 57.
    steady" fair" responsive 4 September 2009 CS5229, Semester 1, 2009/10 83
  • 58.
    how to determine" RTT" tRTO" p 4 September 2009 CS5229, Semester 1, 2009/10 84
  • 59.
    p is notpacket loss rate" but " loss event rate 4 September 2009 CS5229, Semester 1, 2009/10 85
  • 60.
    4 September 2009 CS5229, Semester 1, 2009/10 86
  • 61.
    4 September 2009 CS5229, Semester 1, 2009/10 87
  • 62.
    4 September 2009 CS5229, Semester 1, 2009/10 88
  • 63.
    RTT can fluctuates 4September 2009 CS5229, Semester 1, 2009/10 89
  • 64.
    4 September 2009 CS5229, Semester 1, 2009/10 90
  • 65.
    4 September 2009 CS5229, Semester 1, 2009/10 91
  • 66.
    4 September 2009 CS5229, Semester 1, 2009/10 92
  • 67.
    4 September 2009 CS5229, Semester 1, 2009/10 93
  • 68.
    how to initialize? 4September 2009 CS5229, Semester 1, 2009/10 94
  • 69.
    slow start" (until loss occur)" Tnow = min(2Tprev, 2Trecv) 4 September 2009 CS5229, Semester 1, 2009/10 95
  • 70.
    no loss history,how?" solve p given T, RTT 4 September 2009 CS5229, Semester 1, 2009/10 96
  • 71.
    4 September 2009 CS5229, Semester 1, 2009/10 97
  • 72.
    TFRC is nowpart of DCCP 4 September 2009 CS5229, Semester 1, 2009/10 98