tcp tahoe reno sack vega
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