0% found this document useful (0 votes)
4 views

Chapter_3_part3

Uploaded by

23-20911-092
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views

Chapter_3_part3

Uploaded by

23-20911-092
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 23

rdt3.

0 in
action sender receiver
sender receiver send pkt0 pkt0
send pkt0 pkt0 rcv pkt0
ack0 send ack0
rcv pkt0
send ack0 rcv ack0
ack0 send pkt1 pkt1
rcv ack0 rcv pkt1
send pkt1 pkt1
rcv pkt1 send ack1
ack1 ack1
send ack1
X
loss timeout
resend pkt1 pkt1
rcv pkt1
timeout
resend pkt1 pkt1 rcv ack1 pkt0 (detect duplicate)
rcv pkt1 send pkt0 send ack1
(detect duplicate) ack1
ack1 send ack1 rcv ack1 rcv pkt0
rcv ack1 ack0 send ack0
pkt0 send pkt0 pkt0
send pkt0 rcv pkt0
rcv pkt0 ack0 (detect duplicate)
ack0 send ack0 send ack0

(c) ACK loss (d) premature timeout/ delayed ACK

Transport Layer 3-1


Performance of rdt3.0
 rdt3.0 is correct, but performance
stinks
 e.g.: 1 Gbps link, 15 ms prop. delay,
L 8000 bits
dtrans = R = 9 = 8 microsecs
8000 bit packet: 10 bits/sec

 U sender: utilization – fraction of time sender busy


sending L/R .008
U = 0.00027
sender = =
30.008
RTT + L / R
 if RTT=30 msec, 1KB pkt every 30 msec:
267kB/sec thruput over 1 Gbps link
 network protocol limits use of physical
resources!
Transport Layer 3-2
rdt3.0: stop-and-wait
operation
sender receiver
first packet bit transmitted, t = 0
last packet bit transmitted, t = L / R

first packet bit arrives


RTT last packet bit arrives, send ACK

ACK arrives, send next


packet, t = RTT + L / R

U L/R .008
sender = = = 0.00027
RTT + L / R 30.008

Transport Layer 3-3


Pipelined protocols
pipelining: sender allows multiple,
“in-flight”, yet-to-be-
acknowledged pkts
 range of sequence numbers must be
increased
 buffering at sender and/or receiver

 two generic forms of pipelined


protocols: go-Back-N, selective
repeat Transport Layer 3-4
Pipelining: increased
utilization
sender receiver
first packet bit transmitted, t = 0
last bit transmitted, t = L / R

first packet bit arrives


RTT last packet bit arrives, send ACK
last bit of 2nd packet arrives, send ACK
last bit of 3rd packet arrives, send ACK
ACK arrives, send next
packet, t = RTT + L / R
3-packet pipelining increases
utilization by a factor of 3!

U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008

Transport Layer 3-5


Pipelined protocols:
overview
Go-back-N: Selective Repeat:
 sender can have  sender can have
up to N unacked up to N unacked
packets in packets in
pipeline pipeline
 receiver only  rcvr sends
sends individual ack for
cumulative ack each packet
 doesn’t ack
packet if there is
a gap(pkt loss)  sender maintains
 sender has timer for each
timer for oldest unacked packet
unacked packet  when timer
Transport Layer 3-6
Go-Back-N: sender
 k-bit seq # in pkt header
 “window” of up to N, consecutive unacked pkts
allowed

 ACK(n): ACKs all pkts up to, including seq # n -


“cumulative ACK”
 may receive duplicate ACKs (see receiver)
 timer for oldest in-flight pkt
 timeout(n): retransmit packet n and all higher seq
# pkts in window
Transport Layer 3-7
GBN in action
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
send pkt2 receive pkt0, send ack0
012345678
send pkt3 Xloss receive pkt1, send ack1
012345678
(wait)
receive pkt3, discard,
012345678 rcv ack0, send pkt4 (re)send ack1
012345678 rcv ack1, send pkt5 receive pkt4, discard,
(re)send ack1
ignore duplicate ACK receive pkt5, discard,
(re)send ack1
pkt 2 timeout
012345678 send pkt2
012345678 send pkt3
012345678 send pkt4 rcv pkt2, deliver, send ack2
012345678 send pkt5 rcv pkt3, deliver, send ack3
rcv pkt4, deliver, send ack4
rcv pkt5, deliver, send ack5

Transport Layer 3-8


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 is not received
 sender timer for each unACKed pkt
 sender window
 N consecutive seq #’s

Transport Layer 3-9


Selective repeat: sender, receiver
windows

Transport Layer 3-10


Selective repeat
sender receiver
data from above: pkt n in [rcvbase,
rcvbase+N-1]
 if next available seq # in window,
 send send pkt
ACK(n)
timeout(n):  out-of-order: buffer
 resend pkt n, restart timer 
in-order: deliver (also
ACK(n) in [sendbase,sendbase+N]: deliver buffered, in-
 mark pkt n as received
order pkts), advance
window to next not-
 if n unACKed pkt, advance window base to
yet-received pkt
next unACKed seq #
pkt n in [rcvbase-
N,rcvbase-1]
 ACK(n)
otherwise:
 ignore
Transport Layer 3-11
Selective repeat in action
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
send pkt2 receive pkt0, send ack0
012345678
send pkt3 Xloss receive pkt1, send ack1
012345678
(wait)
receive pkt3, buffer,
012345678 rcv ack0, send pkt4 send ack3
012345678 rcv ack1, send pkt5 receive pkt4, buffer,
send ack4
record ack3 arrived, nothing receive pkt5, buffer,
send
send ack5
pkt 2 timeout
012345678 send pkt2
012345678 record ack4 arrived
012345678 rcv pkt2; deliver pkt2,
record ack5 arrived
012345678 pkt3, pkt4, pkt5; send ack2

Q: what happens when ack2 arrives?

Transport Layer 3-12


Selective repeat in action
sender window (N=4) sender receiver
012345678 send pkt0
012345678 send pkt1
send pkt2 receive pkt0, send ack0
012345678
send pkt3 Xloss receive pkt1, send ack1
012345678
(wait)
receive pkt3, buffer,
012345678 rcv ack0, send pkt4 send ack3
012345678 rcv ack1, send pkt5 receive pkt4, buffer,
send ack4
record ack3 arrived, nothing receive pkt5, buffer,
send
send ack5
pkt 2 timeout
012345678 send pkt2
012345678 record ack4 arrived
012345678 rcv pkt2; deliver pkt2,
record ack5 arrived
012345678 pkt3, pkt4, pkt5; send ack2

Check current window, all pkts


are Acked or not ….
If acked move to next window Transport Layer 3-13
send_base=sequence number
sender window receiver window
Selective repeat: (after receipt) (after receipt)

dilemma 0123012 pkt0


pkt1 0123012
0123012
0123012 pkt2 0123012
example: 0123012 pkt3
0123012

 seq #’s: 0, 1, 2, 3 0123012


X
 window size=3 pkt0 will accept packet
with seq number 0
(a) no problem
 receiver sees no
difference in two receiver can’t see sender side.
scenarios! receiver behavior identical in both cases!
something’s (very) wrong!
 duplicate data
accepted as new 0123012 pkt0
in (b) 0123012 pkt1 0123012
0123012 pkt2 0123012
X 0123012
Q: what relationship X
between seq # timeout
retransmit pkt0 X
size and window 0123012 pkt0
size to avoid will accept packet
with seq number 0
(b) oops!
problem in (b)?
Transport Layer 3-14
Selective repeat window
size
 Window size should be less than or
equal to half the sequence number
in SR protocol. This is to avoid
packets being recognized
incorrectly
 If the packet’s sequence number is
equal to send_base, the window
base is moved forward to the
unacknowledged packet with the
smallest sequence number
 If the window moves and there are
untransmitted packets with Transport Layer 3-15
Chapter 3 outline
3.1 transport-layer services
3.5 connection-
oriented
3.2 multiplexing and demultiplexing
transport:
3.3 connectionless transport: UDP TCP
 segment
3.4 principles of reliablestructure
data
transfer  reliable data
transfer
 flow control
 connection
management
3.6 principles of
congestion Transport Layer 3-16
TCP:
Overview
 point-to-point  full duplex data
 one sender, one  bi-directional
receiver data flow in
 reliable, in-order same
byte steam connection
 MSS: maximum
 pipelined
segment size
 TCP congestion
and flow control
 connection-
set window size oriented
 handshaking
(exchange of
control msgs)
inits sender,
Transport Layer 3-17
TCP segment structure
32 bits
URG: urgent data counting
(generally not used) source port # dest port #
by bytes
sequence number of data
ACK: ACK #
valid acknowledgement number (not segments!)
head not
PSH: push data now len used
UAP R S F receive window
(generally not used) # bytes
checksum Urg data pointer
rcvr willing
RST, SYN, FIN: to accept
options (variable length)
connection estab
(setup, teardown
commands)
application
Internet data
checksum (variable length)
(as in UDP)

Transport Layer 3-18


TCP seq. numbers, ACKs
outgoing segment from sender
sequence numbers: source port # dest port #
sequence number
byte stream acknowledgement number
rwnd
“number” of first checksum urg pointer

byte in segment’s window size


N
data
acknowledgements:
seq # of next sender sequence number space

byte expected sent sent, not- usable not


from other side ACKed yet
ACKed
but not usable
yet sent
cumulative ACK (“in-
flight”)
incoming segment to sender
Q: how receiver source port # dest port #
sequence number
handles out-of-order acknowledgement number
segments A rwnd

A: TCP spec


checksum urg pointer

Transport Layer 3-19


TCP seq. numbers, ACKs
Host A Host B

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

Transport Layer 3-20


TCP round trip time,
timeout
Q: how to set Q: how to
TCP timeout estimate RTT?
value?  SampleRTT: measured
 longer than time from segment
transmission until ACK
RTT receipt
 but RTT varies  ignore
retransmissions
 too short:  SampleRTT will vary,
premature want estimated RTT
timeout, “smoother”
unnecessary  average several
retransmission recent
measurements,
s Transport Layer 3-21
TCP round trip time,
timeout
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
 exponential weighted moving average
 influence of past sample decreases
exponentially fast RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
 typical value:  = 0.125 350

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


RTT (milliseconds)

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 Transport Layer 3-22
SampleRTT Estimated RTT
TCP round trip time,
timeout
 timeout interval: EstimatedRTT plus
“safety margin”
 large variation in EstimatedRTT -> larger safety
margin
DevRTT = (1-)*DevRTT +
 estimate SampleRTT deviation from
*|SampleRTT-EstimatedRTT|
EstimatedRTT:
(typically,  = 0.25)

TimeoutInterval = EstimatedRTT + 4*DevRTT

estimated RTT “safety margin”

Transport Layer 3-23

You might also like