E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
1
Summary of Reliable DataTransfer
Review
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Review of RDT (1-4)
Rdt 1 = no loss, no error
Rdt 2 = no loss, bit error
2.0 = stop-and-go retransmission w/ ACK & NAK
2.1 = use sequence # to handle duplicate
2.2 = use ACK + seq # to replace NAK
Rdt 3 = loss + error
Use timer  to handle loss but performance sucks
Rdt 4 = Piplining
Two types:  Go-Back-N and Selective Repeat
?
?
?
?
?
?
?
underline_base
(modified by Cheung for EE586; based on K&R original)
2
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Answers!
Rdt 1 = no loss, no error
Rdt 2 = no loss, bit error
2.0 = stop-and-go retransmission w/ ACK & NAK
2.1 = use sequence # to handle duplicate
2.2 = use ACK + seq # to replace NAK
Rdt 3 = loss + error
Use timer  to handle loss but performance sucks
Rdt 4 = Piplining
Two types:  Go-Back-N and Selective Repeat
underline_base
(modified by Cheung for EE586; based on K&R original)
3
?
?
?
?
?
?
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Answers!
Rdt 1 = no loss, no error
Rdt 2 = no loss, bit error
2.0 = stop-and-go retransmission w/ ACK & NAK
2.1 = use sequence # to handle duplicate
2.2 = use ACK + seq # to replace NAK
Rdt 3 = loss + error
Use timer  to handle loss but performance sucks
Rdt 4 = Piplining
Two types:  Go-Back-N and Selective Repeat
underline_base
(modified by Cheung for EE586; based on K&R original)
4
?
?
?
?
?
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Answers!
Rdt 1 = no loss, no error
Rdt 2 = no loss, bit error
2.0 = stop-and-go retransmission w/ ACK & NAK
2.1 = use sequence # to handle duplicate
2.2 = use ACK + seq # to replace NAK
Rdt 3 = loss + error
Use timer  to handle loss but performance sucks
Rdt 4 = Piplining
Two types:  Go-Back-N and Selective Repeat
underline_base
(modified by Cheung for EE586; based on K&R original)
5
?
?
?
?
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Answers!
Rdt 1 = no loss, no error
Rdt 2 = no loss, bit error
2.0 = stop-and-go retransmission w/ ACK & NAK
2.1 = use sequence # to handle duplicate
2.2 = use ACK + seq # to replace NAK
Rdt 3 = loss + error
Use timer  to handle loss but performance sucks
Rdt 4 = Piplining
Two types:  Go-Back-N and Selective Repeat
underline_base
(modified by Cheung for EE586; based on K&R original)
6
?
?
?
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Answers!
Rdt 1 = no loss, no error
Rdt 2 = no loss, bit error
2.0 = stop-and-go retransmission w/ ACK & NAK
2.1 = use sequence # to handle duplicate
2.2 = use ACK + seq # to replace NAK
Rdt 3 = loss + error
Use timer  to handle loss but performance sucks
Rdt 4 = Piplining
Two types:  Go-Back-N and Selective Repeat
underline_base
(modified by Cheung for EE586; based on K&R original)
7
?
?
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Answers!
Rdt 1 = no loss, no error
Rdt 2 = no loss, bit error
2.0 = stop-and-go retransmission w/ ACK & NAK
2.1 = use sequence # to handle duplicate
2.2 = use ACK + seq # to replace NAK
Rdt 3 = loss + error
Use timer  to handle loss but performance sucks
Rdt 4 = Piplining
Two types:  Go-Back-N and Selective Repeat
underline_base
(modified by Cheung for EE586; based on K&R original)
8
?
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Answers!
Rdt 1 = no loss, no error
Rdt 2 = no loss, bit error
2.0 = stop-and-go retransmission w/ ACK & NAK
2.1 = use sequence # to handle duplicate
2.2 = use ACK + seq # to replace NAK
Rdt 3 = loss + error
Use timer  to handle loss but performance sucks
Rdt 4 = Piplining
Two types:  Go-Back-N and Selective Repeat
underline_base
(modified by Cheung for EE586; based on K&R original)
9
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Problem 3
Consider our motivation for correcting protocol rdt2.1. Show thatthe receiver, shown in Figure 3.57, when operating with the sendershown in Figure 3.11, can lead the sender and receiver to enter into adeadlock state, where each is waiting for an event that will neveroccur.
(modified by Cheung for EE586; based on K&R original)
10
Correct
Incorrect
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Problem 4
Give a trace of the operation of protocol rdt3.0when data packets and acknowledgment packetsare garbled.
Easy
(modified by Cheung for EE586; based on K&R original)
11
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Problem 5
Draw FSM for a handshaking protocol between Aand B with the following functions
rdt_send(data)
rdt_unable_to_send(data)
make_pkt(data)
udt_send(packet)
rdt_rcv(packet)
extract(packet,data)
deliver_data(data)
To answer this question:
How many state do you need for sender and receiver?
What are the events? What are the actions?
(modified by Cheung for EE586; based on K&R original)
12
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
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 n - cumulative ACK
Receiver only keeps track of expectedseqnum
Receiver discards out of order packet and sends duplicate ACK’s
timer for oldest in-flight pkt
timeout(n): retransmit packet n and all higher seq # pkts inwindow
gbn_seqnum
underline_base
13
(modified by Cheung for EE586; based on K&R original)
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
GBN in action
send  pkt0
send  pkt1
send  pkt2
send  pkt3
(wait)
sender
receiver
receive pkt0, send ack0
receive pkt1, send ack1
 
receive pkt3, discard,
           (re)send ack1
rcv ack0, send pkt4
rcv ack1, send pkt5
alarm_clock_ringing
pkt 2 timeout
send  pkt2
send  pkt3
send  pkt4
send  pkt5
X
loss
receive pkt4, discard,
           (re)send ack1
receive pkt5, discard,
           (re)send ack1
rcv pkt2, deliver, send ack2
rcv pkt3, deliver, send ack3
rcv pkt4, deliver, send ack4
rcv pkt5, deliver, send ack5
ignore duplicate ACK
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
underline_base
14
(modified by Cheung for EE586; based on K&R original)
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Selective repeat: sender window
sr_seqnum
underline_base
15
(modified by Cheung for EE586; based on K&R original)
data from above:
if next available seq # in window, send pkt
timeout(n):
resend pkt n, restart timer
ACK(n) in [sendbase,sendbase+N]:
mark pkt n as received
if n smallest unACKed pkt, advance window base to next unACKed seq #
sender
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Selective repeat: receiver window
sr_seqnum
underline_base
16
(modified by Cheung for EE586; based on K&R original)
pkt n in [rcvbase, rcvbase+N-1]
send ACK(n)
out-of-order: buffer
in-order: deliver (also deliver buffered, in-order pkts), advance window tonext not-yet-received pkt
pkt n in [rcvbase-N,rcvbase-1]
send ACK(n)
Ignore otherwise
receiver
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
underline_base
Selective repeat in action
send  pkt0
send  pkt1
send  pkt2
send  pkt3
(wait)
sender
receiver
receive pkt0, send ack0
receive pkt1, send ack1
 
receive pkt3, buffer,
           send ack3
rcv ack0, send pkt4
rcv ack1, send pkt5
alarm_clock_ringing
pkt 2 timeout
send  pkt2
X
loss
receive pkt4, buffer,
           send ack4
receive pkt5, buffer,
           send ack5
rcv pkt2; deliver pkt2,
pkt3, pkt4, pkt5; send ack2
record ack3 arrived
0 1 2 3 4 5 6 7 8
sender window (N=4)
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
0 1 2 3 4 5 6 7 8
record ack4 arrived
record ack4 arrived
17
(modified by Cheung for EE586; based on K&R original)
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Selective repeat:dilemma
example:
seq #s: 0, 1, 2, 3
window size=3
receiver window
(after receipt)
sender window
(after receipt)
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2
pkt0
timeout
retransmit pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
X
X
will accept packet
with seq number 0
(b) oops!
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
pkt0
pkt1
pkt2
0 1 2 3 0 1 2
pkt0
0 1 2 3 0 1 2
0 1 2 3 0 1 2
0 1 2 3 0 1 2
X
will accept packet
with seq number 0
1 2 0 1 2
pkt3
(a) no problem
curtain
curtain
receiver cant see sender side.
receiver behavior identical in both cases!
somethings (very) wrong!
underline_base
receiver sees nodifference in twoscenarios!
How to resolve it?
18
(modified by Cheung for EE586; based on K&R original)
seq # range needs to beat least twice as big asthe and window size toavoid problem in (b)
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Problem 6)
Suppose now that we want an SR protocol that sendsmessages two at a time. That is, the sender will send apair of messages and will send the next pair of messagesonly when it knows that both messages in the first pairhave been received correctly. Suppose that the channelmay lose messages but will not corrupt or reordermessages. Design an error- control protocol for theunidirectional reliable transfer of messages.
Answer: you should consider
How many sequent numbers do you need?
How many states in the FSM?
Wait for pair of ACKs
Wait for odd ACK
Wait for even ACK
(modified by Cheung for EE586; based on K&R original)
19
E l e c t r i c a l    &   C o m p u t e r
Department of
Electrical & Computer Engineering
Problem 7
Consider the GBN protocol with a sender window size of4 and a sequence number range of 1,024. Suppose that attime t, the next in-order packet that the receiver isexpecting has a sequence number of k. Assume that themedium does not reorder messages. Answer thefollowing questions:
What are the possible sets of sequence numbers inside the sender’swindow at time t? Justify your answer.
What is the largest (latest) ack number?
What is the smallest (oldest) ack number?
What are all possible values of the ACK field in all possible messagescurrently propagating back to the sender at time t? Justify your answer.
Same or different from the previous part?
(modified by Cheung for EE586; based on K&R original)
20