Transport Layer: TCP timeout optimizations, TCP Flow Control, Congestion

Host A , 8 byte =100 A CK X loss Seq=9 2 , 8 byte 2nd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2002. Computer Communication 2004-5 ...
Author: Franklin Joseph
33 downloads 1 Views 347KB Size
Host A

, 8 byte

=100 A CK

X

loss Seq=9 2

, 8 byte

2nd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2002.

Computer Communication 2004-5

time

1

timeout

Seq=1 0

, 8 byte

s data

ˆ

=100 A CK 0, 20 bytes data

longer than RTT 

but RTT varies

too short: premature timeout  unnecessary retransmissions ˆ too long: slow reaction to segment loss

X

ˆ

loss AC K

lost ACK scenario

Q: how to set TCP timeout value?

Host B

Seq=9 2

=120

time Cumulative ACK scenario Transport Layer

, 8 byte s data 00, 2 0 byte s data 0 10 K= 120 AC ACK=

time

, 8 byte

AC

s data

2 K=1

0

premature timeout Transport Layer

2

TCP Timeout and Round Trip Time

TCP retransmission scenarios (more) Host A

Seq= 1

Seq=9 2 s data

=100 AC K

Some of the slides have been borrowed from: Computer Networking: A Top Down Approach Featuring the Internet,

Host B

Seq=9 2 s data

Seq=92 timeout

Seq=9 2

http://www.cs.huji.ac.il/~com1 [email protected]

Host A

Host B

Seq=92 timeout

Transport Layer: TCP timeout optimizations, TCP Flow Control, Congestion

TCP: retransmission scenarios

timeout

Digital Communication in the Modern World

3

Q: how to estimate RTT? ˆ SampleRTT: measured time from

segment transmission until ACK receipt  ignore retransmissions ˆ SampleRTT will vary, want estimated RTT “smoother”  average several recent measurements, not just current SampleRTT

Transport Layer

4

TCP Timeout and Round Trip Time

Example RTT estimation: RTT: gaia.cs.umass.edu to fantasia.eurecom.fr

EstimatedRTT = (1-α)*EstimatedRTT + α*SampleRTT

350

ˆ Exponential Weighted Moving Average (EWMA)

300

ˆ influence of past sample decreases exponentially fast RTT (milliseconds)

ˆ typical value: α = 0.125

EstimatedRTT = n −1

250

200

j

α ∑ (1 − α ) SampleRTT j + (1 − α ) n SampleRTTn

150

j =1

100 1

8

15

22

29

36

43

50

57

64

71

78

85

92

99

106

time (seconnds) SampleRTT

Transport Layer

Estimated RTT

Transport Layer

5

TCP Timeout and Round Trip Time

TCP ACK generation

Setting the timeout

[RFC 1122, RFC 2581]

Event at Receiver

TCP Receiver action

ˆ first estimate of how much SampleRTT deviates from

Arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed

Delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK

DevRTT = (1-β)*DevRTT + β*|SampleRTT-EstimatedRTT|

Arrival of in-order segment with expected seq #. One other segment has ACK pending

Immediately send single cumulative ACK, ACKing both in-order segments

Arrival of out-of-order segment higher-than-expect seq. # . Gap detected

Immediately send duplicate ACK, indicating seq. # of next expected byte

Arrival of segment that partially or completely fills gap

Immediate send ACK, provided that segment starts at lower end of gap

ˆ EstimatedRTT plus “safety margin” 

large variation in EstimatedRTT -> larger safety margin

EstimatedRTT:

(typically, β = 0.25) Then set timeout interval: TimeoutInterval = EstimatedRTT + 4*DevRTT Transport Layer

7

6

Transport Layer

8

Fast Retransmit ˆ

Time-out period often relatively long: 

ˆ

ˆ

long delay before resending lost packet

Detect lost segments via duplicate ACKs. 



Sender often sends many segments back-toback If segment is lost, there will likely be many duplicate ACKs.

TCP Flow Control If sender receives 3 ACKs for the same data, it supposes that segment after ACKed data was lost: 

ˆ

sender won’t overflow receiver’s buffer by transmitting too much, too fast

receive side of TCP connection has a receive buffer: ˆ

fast retransmit: resend segment before timer expires ˆ

Transport Layer

Transport Layer

32 bits

Rcvr advertises spare room by including value of RcvWindow in segments ˆ Sender limits unACKed data to RcvWindow guarantees receive buffer doesn’t overflow

URG: urgent data (generally not used) ACK: ACK # valid PSH: push data now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) Internet checksum (as in UDP)

= RcvWindow = RcvBuffer-[LastByteRcvd LastByteRead] Transport Layer

10

TCP segment structure

ˆ



app process may be slow at reading from buffer

speed-matching service: matching the send rate to the receiving app’s drain rate

9

TCP Flow control: how it works

(Suppose TCP receiver discards out-of-order segments) ˆ spare room in buffer

flow control

11

source port #

dest port #

sequence number acknowledgement number

head not UA P R S F len used

checksum

Receive window Urg data pnter

Options (variable length)

counting by bytes of data (not segments!) # bytes rcvr willing to accept

application data (variable length)

Transport Layer

12

Recall that TCP **now** gives:

Principles of Congestion Control Congestion:

reliable data transfer (make sure the message gets through) ˆ flow control (don’t overwhelm the receiver) ˆ congestion control (don’t overwhelm the network) ˆ

ˆ ˆ ˆ

UDP gives: No reliability, no packet ordering ˆ No flow control ˆ …

ˆ

ˆ

ˆ

Transport Layer

Transport Layer

13

Causes/costs of congestion: scenario 1 two senders, two receivers ˆ one router, infinite buffers ˆ no retransmission

Host A

ˆ

Host B

14

Causes/costs of congestion: scenario 2

λout

λin : original data

informally: “too many sources sending too much data too fast for network to handle” different from flow control! is expressed as:  lost packets (buffer overflow at routers)  long delays (queueing in router buffers) a top-10 network problem! packet retransmission treats the symptom not the cause (even worsens the cause!)

one router, finite buffers ˆ sender retransmission of lost packet ˆ

unlimited shared output link buffers

Host A

λin : original data

λout

λ'in : original data, plus retransmitted data

large delays when congested ˆ maximum achievable throughput ˆ

Transport Layer

15

Host B

finite shared output link buffers

Transport Layer

16

Causes/costs of congestion: scenario 2

Causes/costs of congestion: scenario 3

= λ (goodput), λ > λ out in out in ˆ “perfect” retransmission (no router overhead) only when loss ˆ always:

λ

ˆ retransmission of delayed (not lost) packet makes

larger (than perfect case) for same

λout

λ

in

ˆ four senders

Q: what happens as λ in and λ increase ?

ˆ multihop paths ˆ timeout/retransmit

even

in

Host A

λin : original data

λout

λ'in : original data, plus retransmitted data

finite shared output link buffers

Host B

“costs” of congestion: ˆ more work (retrans) for given “goodput” ˆ unneeded retransmissions: link carries multiple copies of pkt Transport Layer

Two broad approaches towards congestion control:

λ o u t

End-end congestion control:

H o s t B

ˆ no explicit feedback from

network ˆ congestion inferred from end-system observed loss, delay ˆ approach taken by TCP

Another “cost” of congestion: ˆ when packet dropped, any “upstream transmission capacity used for that packet was wasted! Transport Layer

18

Approaches towards congestion control

Causes/costs of congestion: scenario 3 H o s t A

Transport Layer

17

19

Network-assisted congestion control: ˆ routers provide feedback

to end systems  single bit indicating congestion (SNA, DECbit, ATM)  explicit rate that sender should send at

Transport Layer

20

Exercise 2 Clock synchronization:

There exists γ, t0 , ν, a and b such that∀t≥t0 : ˆ Agreement. For any correct nodes p,

|“Clocks Cp(t) - Cqclose (t)| ≤toγ, each (precision ) other”

q:

ˆ Validity. For every correct node

p: -1t +a ≤ C (t) ≤ (1+ν)t + b, (accuracy) (1+ ν ) “Clocks closep to real time” Transport Layer

21