Tahoe, Reno, NewReno, SACK, and Vegas - NUS …ooiwt/cs5229/archives/0708s...timeout/3rd dup ack:...

Post on 11-Jul-2019

217 views 0 download

Transcript of Tahoe, Reno, NewReno, SACK, and Vegas - NUS …ooiwt/cs5229/archives/0708s...timeout/3rd dup ack:...

TCPTahoe, Reno, NewReno,

SACK, and Vegas

cwnd: congestion windowswnd: usable sending windowrwnd: advertised receiver’s windowssthresh: slow-start threshold

RFC793

No cwndOn timeout: retransmitswnd = rwnd

TCP Tahoe

new ack:if (cwnd < sstresh) cwnd += 1else cwnd += 1/cwnd

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

Improving TCP Tahoe:

Packets still gettingthrough in dup ack -- noneed to reset the clock!

TCP Reno

new ack:if (cwnd < sstresh) cwnd += 1else cwnd += 1/cwnd

timeout:retransmit 1st unackedssthresh = cwnd/2cwnd = 1

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

Fast Recovery:the pipe is still

almost full -- noneed to restart

subsequent dup ack:cwnd++

new ack:cwnd = ssthresh

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.

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

U U+W-1

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

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

Simulationof TCP

Tahoe/Reno

R1S1 S2

Enteringqueue

Exitingqueue

ACKed

Improving TCP Reno:

Timeout if multiple lossesin a window

TCP NewReno

Fast recovery starts.

are the outstandingpackets at this time.

Partial ACK

Idea: stays in fast recovery until all havebeen ACKed.

Perhaps the nextpacket is lost?

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

subsequent dup ack:cwnd++

“complete” ack:(all are acked)cwnd = ssthresh

“partial” ack:retransmitcwnd = ssthresh (?)

Note: RFC2581/RFC2582 give theaccurate/gory details. Simplifiedversion is presented here (eg. cwnd vsFlightSize, update of cwnd upon partialACK).

TCP SACK

Coarse Feedback

Go-Back-Nvs

Selective Repeat

Use TCP headeroptions to reportreceived segments.

SACK Blocks:

1st block - report mostrecently received segments

subsequent blocks - repeatmost recent previous blocks

pipe: num of outstandingpackets in the path.

send only if pipe < cwnd

scoreboard: whichpackets have beenreceived?

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

subsequent dup ack:cwnd++pipe--

(if send new packet, pipe++)

“partial” ack:retransmitcwnd = ssthreshpipe -= 2

Power of SACK:Which packet has left the network?Where is the gap?Decouple when to send and what tosend.

TCP Vegas

So far,

packet loss assignal of congestion.

But, already overcongested when

packets are dropped

What other signalsare there?

RTT

Load

Expected Sending Rate

E = cwnd/BaseRTT

BaseRTT: RTT whenno congestion

(take min measured RTT inpractice)

Actual Sending Rate

A = cwnd/RTT

RTT:

If (E-A) < alphacwnd++

else if (E-A) > betacwnd--

Intuition:(E-A) x BaseRTTrepresents extrabuffers occupied inthe network

Picking alpha/beta

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

Picking alpha/beta

beta: beta-alpha shouldnot be too small toprevent oscillation.( = 3/BaseRTT)

Deployment

Feb 2004

70%SACK capable

Where is TCP Vegas?

Problem 1.Can’t compete with

TCP Reno.

Problem 2.Sensitive to RTT

estimation.

TCP BIC/CUBICLinux 2.6.x

Compound TCPMS Windows Vista