Week9 - Lecture2 Chapter - 3
Week9 - Lecture2 Chapter - 3
Week9_Lecture2 (Chapter3)
Transport Layer
rdt_send(data)
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)
start_timer
L/R L/R
Usender =
RTT + L / R
.008 RTT
=
30.008
= 0.00027
U 3L / R .0024
sender = = = 0.00081
RTT + L / R 30.008
rcv_base
Not received
Transport Layer: 3-15
Go-Back-N 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
Applets for Go-Back-N
https://computerscience.unicam.it/marcantoni/reti/applet/GoBackProtocol/goback.html Transport Layer: 3-16
https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/go-back-n-protocol/index.html
GBN: sender extended FSM
rdt_send(data)
First, check if window is full,
if not send and update variables if (nextseqnum < base+N) {
sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum)
N is the window size udt_send(sndpkt[nextseqnum])
base=oldest unack’ed if (base == nextseqnum)
nextseqnum=seqno of next pckt start_timer Timer associated with oldest unacked
nextseqnum++ base == nextseqnum, when?
}
L else
refuse_data(data)
base=1
nextseqnum=1 On timeout resend all
timeout
start_timer unack’ed packets
Wait
udt_send(sndpkt[base])
rdt_rcv(rcvpkt) udt_send(sndpkt[base+1])
Why wait?
&& corrupt(rcvpkt) …
L udt_send(sndpkt[nextseqnum-
Cumulative ACKs, receiver only rdt_rcv(rcvpkt) && 1])
ACKs when packets delivered notcorrupt(rcvpkt)
in order.
base = getacknum(rcvpkt)+1
If (base == nextseqnum)
Here we need to update base
stop_timer
and stop timer if nothing to send
else
or restart if some pckts left
start_timer Transport Layer: 3-17
GBN: receiver extended FSM
default
udt_send(sndpkt) rdt_rcv(rcvpkt)
&& notcurrupt(rcvpkt)
L && hasseqnum(rcvpkt,expectedseqnum)
expectedseqnum=1 Wait extract(rcvpkt,data)
sndpkt = deliver_data(data)
make_pkt(expectedseqnum- sndpkt = make_pkt(expectedseqnum,ACK,chksum)
1,ACK,chksum) udt_send(sndpkt)
expectedseqnum++
Answer:
• Having an unbound window size means to end up with an
unbound number of unacknowledge segments
• An unbound window size means bombarding the buffers
on the network devices along the traffic path as well as
the buffer on the destination
Selective repeat:
sender window
(after receipt) (after receipt)
pkt0
a dilemma!
0123012
0123012 pkt1 0123012
0123012 pkt2 0123012
0123012
example: 0123012 pkt3
X
0123012
seq #s: 0, 1, 2, 3 (base 4 counting) pkt0 will accept packet
with seq number 0
window size=3 (a) no problem
0123012 pkt0
0123012 pkt1 0123012
0123012 pkt2 X 0123012
X 0123012
X
timeout
retransmit pkt0
0123012 pkt0
will accept packet
with seq number 0
(b) oops!
Transport Layer: 3-37
receiver window
Selective repeat:
sender window
(after receipt) (after receipt)
pkt0
a dilemma!
0123012
0123012 pkt1 0123012
0123012 pkt2 0123012
0123012
example: 0123012 pkt3
X
seq #s: 0, 1, 2, 3 (base 4 counting) receiver can’t
0123012
pkt0 will accept packet
see sender side with seq number 0
window size=3 (a) no problem
receiver
behavior
identical in both
cases!
0something’s
123012 pkt0
0(very)
1 2 3 0 1wrong!
Q: what relationship is needed 2 pkt1
pkt2
0123012
X
between sequence # size and 0123012 0123012
X 0123012
window size to avoid problem timeout
X
in scenario (b)? retransmit pkt0
0123012 pkt0
will accept packet
A: Window size should be less than or with seq number 0
(b) oops!
equal to half the sequence number. Transport Layer: 3-38
Summary
window size
Acknowledgements: N
All material copyright 1996-2020 J.F Kurose and K.W. Ross, All Rights Reserved Transport Layer: 3-150
These slides are freely provided by the book authors and it represents a lot of work on their part. We would like to thank J.F Kurose and K.W. Ross.