TCP Tahoe, Reno, NewReno, SACK, and Vegas cwnd : congestion window - - PowerPoint PPT Presentation

tcp
SMART_READER_LITE
LIVE PREVIEW

TCP Tahoe, Reno, NewReno, SACK, and Vegas cwnd : congestion window - - PowerPoint PPT Presentation

TCP Tahoe, Reno, NewReno, SACK, and Vegas cwnd : congestion window swnd : usable sending window rwnd : advertised receivers window ssthresh : slow-start threshold RFC793 No cwnd On timeout: retransmit swnd = rwnd TCP Tahoe new ack: if


slide-1
SLIDE 1

TCP

Tahoe, Reno, NewReno, SACK, and Vegas

slide-2
SLIDE 2

cwnd: congestion window swnd: usable sending window rwnd: advertised receiver’s window ssthresh: slow-start threshold

slide-3
SLIDE 3

RFC793

slide-4
SLIDE 4

No cwnd On timeout: retransmit swnd = rwnd

slide-5
SLIDE 5

TCP Tahoe

slide-6
SLIDE 6
slide-7
SLIDE 7
slide-8
SLIDE 8

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

slide-9
SLIDE 9

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

slide-10
SLIDE 10

Improving TCP Tahoe: Packets still getting through in dup ack -- no need to reset the clock!

slide-11
SLIDE 11

TCP Reno

slide-12
SLIDE 12

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

slide-13
SLIDE 13

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

slide-14
SLIDE 14

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

slide-15
SLIDE 15

Fast Recovery: the pipe is still almost full -- no need to restart

slide-16
SLIDE 16

subsequent dup ack: cwnd++ new ack: cwnd = ssthresh

slide-17
SLIDE 17

… U U+W-1

Suppose U is lost (oldest unacked) and all

  • ther packets are not. At time t, cwnd is

W, and packets [U, U+W-1] are in the pipe.

slide-18
SLIDE 18

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

… U U+W-1

slide-19
SLIDE 19

Between time t and t+RTT, the cwnd becomes W/2 + W-1. So we get to send W/2 new packets during the time. (Soon cwnd is going to become W/2 anyway..)

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

slide-20
SLIDE 20

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

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

slide-21
SLIDE 21
slide-22
SLIDE 22

Simulation

  • f TCP

Tahoe/Reno

slide-23
SLIDE 23

R1 S1 S2

slide-24
SLIDE 24

Entering queue Exiting queue ACKed

slide-25
SLIDE 25
slide-26
SLIDE 26
slide-27
SLIDE 27
slide-28
SLIDE 28
slide-29
SLIDE 29
slide-30
SLIDE 30
slide-31
SLIDE 31

Improving TCP Reno: Timeout if multiple losses in a window

slide-32
SLIDE 32

TCP NewReno

slide-33
SLIDE 33

Fast recovery starts. are the outstanding packets at this time. Partial ACK

Idea: stays in fast recovery until all have been ACKed.

slide-34
SLIDE 34

Perhaps the next packet is lost?

slide-35
SLIDE 35

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

slide-36
SLIDE 36

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

slide-37
SLIDE 37

“partial” ack: retransmit cwnd = ssthresh (?)

slide-38
SLIDE 38
slide-39
SLIDE 39

Note: RFC2581/RFC2582 give the accurate/gory details. Simplified version is presented here (eg. cwnd vs FlightSize, update of cwnd upon partial ACK).

slide-40
SLIDE 40

TCP SACK

slide-41
SLIDE 41

Coarse Feedback

slide-42
SLIDE 42

Go-Back-N vs Selective Repeat

slide-43
SLIDE 43

Use TCP header

  • ptions to report

received segments.

slide-44
SLIDE 44

SACK Blocks: 1st block - report most recently received segments subsequent blocks - repeat most recent previous blocks

slide-45
SLIDE 45

pipe: num of outstanding packets in the path. send only if pipe < cwnd

slide-46
SLIDE 46

scoreboard: which packets have been received?

slide-47
SLIDE 47

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

slide-48
SLIDE 48

subsequent dup ack: cwnd++ pipe--

(if send new packet, pipe++)

slide-49
SLIDE 49

“partial” ack: retransmit cwnd = ssthresh pipe -= 2

slide-50
SLIDE 50
slide-51
SLIDE 51
slide-52
SLIDE 52

Power of SACK:

Which packet has left the network? Where is the gap? Decouple when to send and what to send.

slide-53
SLIDE 53

TCP Vegas

slide-54
SLIDE 54

So far,

packet loss as signal of congestion.

slide-55
SLIDE 55

But, already over congested when packets are dropped

slide-56
SLIDE 56

What other signals are there?

slide-57
SLIDE 57

RTT Load

slide-58
SLIDE 58

Expected Sending Rate

E = cwnd/BaseRTT

slide-59
SLIDE 59

BaseRTT: RTT when no congestion

(take min measured RTT in practice)

slide-60
SLIDE 60

Actual Sending Rate

A = cwnd/RTT

RTT :

slide-61
SLIDE 61

If (E-A) < alpha cwnd++ else if (E-A) > beta cwnd--

slide-62
SLIDE 62

Intuition: (E-A) x BaseRTT represents extra buffers occupied in the network

slide-63
SLIDE 63

Picking alpha/beta alpha: small but non-zero to take advantage of available bandwidth

  • immediately. ( = 1/BaseRTT)
slide-64
SLIDE 64

Picking alpha/beta beta: beta-alpha should not be too small to prevent oscillation.

( = 3/BaseRTT)

slide-65
SLIDE 65

Deployment

slide-66
SLIDE 66

Feb 2004

slide-67
SLIDE 67

70%

SACK capable

slide-68
SLIDE 68

Where is TCP Vegas?

slide-69
SLIDE 69

Problem 1. Can’t compete with TCP Reno.

slide-70
SLIDE 70

Problem 2. Sensitive to RTT estimation.

slide-71
SLIDE 71

TCP BIC/CUBIC

Linux 2.6.x

slide-72
SLIDE 72

Compound TCP

MS Windows Vista