Lecture 4: TCP and TFRC

Preview:

Citation preview

1

TCP"Reno, NewReno, SACK

4 September 2009 CS5229, Semester 1, 2009/10

2

TCP Reno

4 September 2009 CS5229, Semester 1, 2009/10

3

0

2

4

6

8

10

12

14 cwnd ssthresh

4 September 2009 CS5229, Semester 1, 2009/10

5

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

4 September 2009 CS5229, Semester 1, 2009/10

6

timeout:"retransmit 1st unacked"ssthresh = cwnd/2"cwnd = 1"

4 September 2009 CS5229, Semester 1, 2009/10

7

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

10

TCP’s rule"

send more packets if "L + cwnd > H"

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

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

12

Data Packets

ACK Packets (received up to this seq number)

Congestion Window

Sequence Number

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

13

3rd dup ack:"retransmit 1st unacked"ssthresh = cwnd/2"cwnd = cwnd/2

4 September 2009 CS5229, Semester 1, 2009/10

14

X

Incorrectly clamping the congestion window too soon (without fast recovery)

4 September 2009 CS5229, Semester 1, 2009/10

15

fast recovery:"

keep the pipe occupied"

4 September 2009 CS5229, Semester 1, 2009/10

16

X

4 September 2009 CS5229, Semester 1, 2009/10

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

18

X

X

4 September 2009 CS5229, Semester 1, 2009/10

19

TCP Reno timeout with multiple losses in a window

4 September 2009 CS5229, Semester 1, 2009/10

20

TCP NewReno

4 September 2009 CS5229, Semester 1, 2009/10

21

X

X

4 September 2009 CS5229, Semester 1, 2009/10

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

25

3rd dup ack:"retransmit 1st unacked"ssthresh = cwnd/2"cwnd = cwnd/2 + 3"remember highest

4 September 2009 CS5229, Semester 1, 2009/10

26

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

4 September 2009 CS5229, Semester 1, 2009/10

27

“partial” ack:"(acknowledge n packets)"retransmit"cwnd = cwnd - n + 1

4 September 2009 CS5229, Semester 1, 2009/10

29

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

30

What does a dup ACK tell us?

4 September 2009 CS5229, Semester 1, 2009/10

31

“Coarse Feedback”

4 September 2009 CS5229, Semester 1, 2009/10

32

TCP SACK

4 September 2009 CS5229, Semester 1, 2009/10

33

Use TCP header options to report

received segments.

4 September 2009 CS5229, Semester 1, 2009/10

34

SACK Blocks:"

1st block - report most recently received segments"

subsequent blocks - repeat most recent previous blocks

4 September 2009 CS5229, Semester 1, 2009/10

35

pipe: num of outstanding packets in the pipe."

send only if pipe < cwnd

4 September 2009 CS5229, Semester 1, 2009/10

36

scoreboard: which packets have been received?

4 September 2009 CS5229, Semester 1, 2009/10

37

X

X

4 September 2009 CS5229, Semester 1, 2009/10

38

3rd dup ack:"pipe = cwnd - 3"retransmit 1st unacked"ssthresh = cwnd/2"cwnd = cwnd/2 + 3

4 September 2009 CS5229, Semester 1, 2009/10

39

subsequent dup ack:"cwnd++"pipe--"

if pipe < cwnd" send packet, pipe++

4 September 2009 CS5229, Semester 1, 2009/10

40

“partial” ack:"retransmit"cwnd = cwnd - n + 1"pipe -= 2"if pipe < cwnd" send packet, pipe++

4 September 2009 CS5229, Semester 1, 2009/10

43

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

44

TCP SACK recovers faster than NewReno with multiple losses in a window.

4 September 2009 CS5229, Semester 1, 2009/10

57

Deployment

4 September 2009 CS5229, Semester 1, 2009/10

58

77%

15%

8%

NewReno

Reno

Tahoe

Feb 2004

4 September 2009 CS5229, Semester 1, 2009/10

59

70% "SACK capable

4 September 2009 CS5229, Semester 1, 2009/10

63

TCP BIC/CUBIC"Linux 2.6.x

4 September 2009 CS5229, Semester 1, 2009/10

64

Compound TCP "MS Windows Vista

4 September 2009 CS5229, Semester 1, 2009/10

65

TFRC"equation-based"

congestion control

4 September 2009 CS5229, Semester 1, 2009/10

66

Not everyone uses TCP

4 September 2009 CS5229, Semester 1, 2009/10

67

UDP:"

Media streaming"Gaming"

VoIP

4 September 2009 CS5229, Semester 1, 2009/10

68

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

69

Why not congestion controlled?"

2. No incentive. OTOH, there are incentives NOT to use

congestion control.

4 September 2009 CS5229, Semester 1, 2009/10

70 Sally Floyd, h+p://www.icir.org/floyd/tcp_unfriendly.html 4 September 2009 CS5229, Semester 1, 2009/10

71

“Unresponsive Flows”

4 September 2009 CS5229, Semester 1, 2009/10

72

Bad: lead to unfairness and congestion collapse.

4 September 2009 CS5229, Semester 1, 2009/10

73

Unfairness: unresponsive flows consume more bandwidth

than congestion controlled flows.

4 September 2009 CS5229, Semester 1, 2009/10

77

Congestion Collapse: wasting bandwidth by sending packets that will be dropped

4 September 2009 CS5229, Semester 1, 2009/10

78

Today: "a TCP-friendly"

unreliable protocol

4 September 2009 CS5229, Semester 1, 2009/10

79

Idea: "send at a rate that a TCP

flow would send

4 September 2009 CS5229, Semester 1, 2009/10

80

we can do the AIMD-thing"at the source, or

4 September 2009 CS5229, Semester 1, 2009/10

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

82

equation-based "congestion control

4 September 2009 CS5229, Semester 1, 2009/10

83

steady"fair"

responsive

4 September 2009 CS5229, Semester 1, 2009/10

84

how to determine"RTT"tRTO"p

4 September 2009 CS5229, Semester 1, 2009/10

85

p is not packet loss rate"but "

loss event rate

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 4 September 2009 CS5229, Semester 1, 2009/10

89

RTT can fluctuates

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 4 September 2009 CS5229, Semester 1, 2009/10

94

how to initialize?

4 September 2009 CS5229, Semester 1, 2009/10

95

slow start"(until loss occur)"

Tnow = min(2Tprev, 2Trecv)

4 September 2009 CS5229, Semester 1, 2009/10

96

no loss history, how?"

solve p given T, RTT

4 September 2009 CS5229, Semester 1, 2009/10

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

98

TFRC is now part of DCCP

4 September 2009 CS5229, Semester 1, 2009/10