Upload
ticorj
View
231
Download
0
Embed Size (px)
Citation preview
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