tcp tahoe reno sack vega

Upload: ticorj

Post on 03-Jun-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    1/72

    TCPTahoe, Reno, NewReno,

    SACK, and Vegas

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    2/72

    cwnd : congestion window

    swnd : usable sending windowrwnd : advertised receivers windowssthresh : slow-start threshold

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    3/72

    RFC793

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    4/72

    No cwnd

    On timeout: retransmitswnd = rwnd

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    5/72

    TCP Tahoe

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    6/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    7/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    8/72

    new ack:if (cwnd < sstresh)

    cwnd += 1else

    cwnd += 1/cwnd

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    9/72

    timeout/3rd dup ack:retransmit all unacked

    ssthresh = cwnd/2cwnd = 1

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    10/72

    Improving TCP Tahoe:

    Packets still gettingthrough in dup ack -- no

    need to reset the clock!

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    11/72

    TCP Reno

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    12/72

    new ack:if (cwnd < sstresh)

    cwnd += 1else

    cwnd += 1/cwnd

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    13/72

    timeout:retransmit 1st unacked

    ssthresh = cwnd/2cwnd = 1

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    14/72

    3rd dup ack:retransmit 1st unackedssthresh = cwnd/2

    cwnd = cwnd/2 + 3

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    15/72

    Fast Recovery:the pipe is still

    almost full -- no

    need to restart

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    16/72

    subsequent dup ack:cwnd++

    new ack:

    cwnd = ssthresh

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    17/72

    U U+W-1

    Suppose U is lost (oldest unacked) and allother packets are not. At time t, cwnd isW, and packets [U, U+W-1] are in thepipe.

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    18/72

    Between time t and t+RTT, we would haveretransmitted U and received W-1duplicate ACK.

    U U+W-1

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    19/72

    Between time t and t+RTT, the cwndbecomes W/2 + W-1. So we get to sendW/2 new packets during the time. (Sooncwnd is going to become W/2 anyway..)

    U U+W-1 U+W/2+W-1

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    20/72

    At time t+RTT, we receive ACK forpackets [U,U+W-1], set cwnd to W/2.

    U U+W-1 U+W/2+W-1

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    21/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    22/72

    Simulation

    of TCPTahoe/Reno

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    23/72

    R1S1 S2

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    24/72

    Enteringqueue

    Exitingqueue

    ACKed

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    25/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    26/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    27/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    28/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    29/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    30/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    31/72

    Improving TCP Reno:

    Timeout if multiple lossesin a window

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    32/72

    TCP NewReno

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    33/72

    Fast recovery starts.

    are the outstandingpackets at this time.

    Partial ACK

    Idea: stays in fast recovery until all havebeen ACKed.

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    34/72

    Perhaps the nextpacket is lost?

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    35/72

    3rd dup ack:retransmit 1st unacked

    ssthresh = cwnd/2cwnd = cwnd/2 + 3

    remember highest

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    36/72

    subsequent dup ack:cwnd++

    complete ack:(all are acked)cwnd = ssthresh

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    37/72

    partial ack:

    retransmitcwnd = ssthresh (?)

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    38/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    39/72

    Note : RFC2581/RFC2582 give theaccurate/gory details. Simplied

    version is presented here (eg. cwnd vsFlightSize, update of cwnd upon partialACK).

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    40/72

    TCP SACK

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    41/72

    Coarse Feedback

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    42/72

    Go-Back-N

    vsSelective Repeat

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    43/72

    Use TCP header

    options to reportreceived segments.

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    44/72

    SACK Blocks :

    1st block - report most

    recently received segments

    subsequent blocks - repeatmost recent previous blocks

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    45/72

    pipe : num of outstandingpackets in the path.

    send only if pipe < cwnd

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    46/72

    scoreboard : which

    packets have beenreceived?

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    47/72

    3rd dup ack:pipe = cwnd - 3

    retransmit 1st unackedssthresh = cwnd/2

    cwnd = cwnd/2 + 3

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    48/72

    subsequent dup ack:cwnd++

    pipe--

    (if send new packet, pipe++)

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    49/72

    partial ack:retransmitcwnd = ssthreshpipe -= 2

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    50/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    51/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    52/72

    Power of SACK:Which packet has left the network?

    Where is the gap?Decouple when to send and what tosend.

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    53/72

    TCP Vegas

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    54/72

    So far,

    packet loss assignal of congestion.

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    55/72

    But, already over

    congested whenpackets are dropped

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    56/72

    What other signalsare there?

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    57/72

    RTT

    Load

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    58/72

    Expected Sending Rate

    E = cwnd/BaseRTT

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    59/72

    BaseRTT : RTT whenno congestion

    (take min measured RTT inpractice)

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    60/72

    Actual Sending Rate

    A = cwnd/RTT

    RTT:

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    61/72

    If (E-A) < alphacwnd++

    else if (E-A) > betacwnd--

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    62/72

    Intuition :(E-A) x BaseRTT

    represents extrabuffers occupied in

    the network

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    63/72

    Picking alpha/beta

    alpha: small but non-zeroto take advantage of available bandwidthimmediately. ( = 1/BaseRTT)

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    64/72

    Picking alpha/beta

    beta : beta-alpha shouldnot be too small to

    prevent oscillation.( = 3/BaseRTT)

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    65/72

    Deployment

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    66/72

    Feb 2004

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    67/72

    70%SACK capable

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    68/72

    Where is TCP Vegas?

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    69/72

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    70/72

    Problem 2.

    Sensitive to RTTestimation.

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    71/72

    TCP BIC/CUBICLinux 2.6.x

  • 8/12/2019 TCP Tahoe Reno Sack Vega

    72/72

    Compound TCPMS Windows Vista