Class 11
Class 11
Introduction 1-1
rdt2.2: a NAK-free protocol
▪ Receiver explicitly include seq # of pkt being ACKed
▪ Duplicate ACK at sender results in same action as
NAK: retransmit current pkt
U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008
Sliding
▪ Window of size N: up to N packets
U NL / R in air; states to be determined
sender = ▪ For the data well received in sequence,
RTT + L / R
considered as processed, so move on
Introduction 1-12
Selective repeat
▪ receiver individually acknowledges all correctly
received pkts
• buffers pkts, as needed, for eventual in-order delivery
to upper layer
▪ sender only resends pkts for which ACK not
received
• sender timer for each unACKed pkt
▪ sender window
• N consecutive seq #’s
• limits seq #s of sent, unACKed pkts
0123456 pkt0
0123456 pkt1 0123456
0123456 pkt2 0123456
0123456 pkt0
0123456 pkt1 0123456
0123456 pkt2 0123456
X 0123456
X
timeout
retransmit pkt0 X
0123456 pkt0
will ignore and re-ACK
with seq number 0
▪ Flag bits:
• PSH: indicate receiver to pass data to upper layer
immediately
• URG: Sender upper layer indicate data urgent
• Urg data pointer: pointer for the urgent data
data
checksum urg pointer
window size
acknowledgements: N
User
types
‘C’ Seq=42, ACK=79, data = ‘C’
host ACKs
receipt of
‘C’, echoes
Seq=79, ACK=43, data = ‘C’ back ‘C’
host ACKs
receipt
of echoed
‘C’ Seq=43, ACK=80
User
types
‘C’ Seq=42, ACK=79, data = ‘C’
host ACKs
receipt of
‘C’, echoes
Seq=79, ACK=43, data = ‘C’ back ‘C’
host ACKs
receipt
of echoed
‘C’ Seq=43, ACK=80
User
types
‘C’ Seq=42, ACK=79, data = ‘C’
host ACKs
receipt of
‘C’, echoes
Seq=79, ACK=43, data = ‘C’ back ‘C’
host ACKs
receipt
of echoed
‘C’ Seq=43, ACK=80
350
300
250
RTT (milliseconds)
200
sampleRTT
150
EstimatedRTT
100
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
time (seconds) Transport Layer 3-32
SampleRTT Estimated RTT
TCP round trip time, timeout
▪ timeout interval: EstimatedRTT plus “safety margin”
• large variation in EstimatedRTT -> larger safety margin
▪ estimate SampleRTT deviation from EstimatedRTT:
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(typically, = 0.25)