16.36:
Communication Systems Engineering
Lectures 15:
ARQ Protocols
Eytan
Modiano
Automatic repeat request (ARQ)
?
Break large files into packets
PKT
H
FI
L
E
PKT
H
PK
T
H
?
Check received packets for errors
?
Use a feedback channel to request retransmissions
?
Retransmit packets containing errors
packet
ACK
Sender
Receiver
Automatic Repeat
ReQuest (ARQ)
?
When the receiver detects errors in a packet, how does it let the transmitter know to re-send the corresponding packet?
?
Systems which automatically request the retransmission of missing packets or packets with errors are called ARQ systems.
?
Three common schemes
–
Stop & Wait
–
Go Back N
–
Selective Repeat
The stop and wait protocol
?
Original ARQ protocol
?
Sender transmits one packet at a time and waits for an ACK
–
Receiver A
C
K
’
s
packets
–
Sender retransmits packet after a timeout
PKT-0
X
ACK-0
PKT-1
ACK-1
PKT-2
PKT-2
ACK-2
TO
?
Packet numbering
–
Sender numbers packets with sequence numbers (SN)
–
Receiver uses request numbers (RN) to ACK packets
RN = j is the same as an ACK for packet j-1
?
Note:
–
Transmitter idle while waiting for ACK
–
Efficiency limited by round trip delay time
–
Requires no storage of packets
Stop and Wait Protocol
Algorithm at
sender (node A)
(with initial condition SN=0)
1)
Accept packet from higher layer when available; assign number SN to it
2)
Transmit packet SN
3)
Wait for an error free packet from B i. if received and it contains RN>SN in the
request # field, set SN to RN and go to 1
ii. if not received within given time (TO),
go to
2
Stop and Wait
Algorithm at receiver (node B)
(with initial condition RN=0)
1)
Whenever an error-free frame is received from A with a sequence # equal to RN, release received packet to higher layer and increment RN.
2)
At arbitrary times, but within bounded delay after receiving any error free frame from A, transmit a frame to A containing RN in the request # field.
Efficiency of stop and wait
Let S = total time between the transmission of a packet and reception of its
ACK
D
TP
= transmission time of the packet
Efficiency (no errors) = D
TP
/S
A
B
D
P
=
prop delay
packet
ACK
S
D
TP
D
P
D
TA
D
P
S = D
TP
+ 2D
P
+ D
TA
D
TA
=
ACK trans. Time
DTP
=
packet trans. time
E = D
TP
/(D
TP
+ 2D
P
+ D
TA
)
Stop and wait in the presence of errors
Let P
= the probability of an error in the transmission of a packet or in its
acknowledgment
S = D
TP
+ 2D
P
+ D
TA
TO = the timeout interval X = the amount of time that it takes to transmit a packet and receive its
ACK.
This time accounts for retransmissions due to errors
E[X] = S + TO*P/(1-P),
Efficiency = D
TP
/E[X]
Where,
TO = D
TP
in a full duplex system
TO = S in a half duplex system
Go Back N
ARQ
(Sliding Window)
?
Stop and Wait is inefficient when propagation delay is larger than the packet transmission time
–
Can only send one packet per round-trip time
?
Go Back N allows the transmission of new packets before earlier ones are acknowledged
?
Go back N uses a window mechanism where the sender can send packets that are within a
“window
” (range) of packets
–
The window advances as acknowledgements for earlier packets are received
PKT-0
PKT-1
PKT-2
PKT-3
PKT-9
PKT-8
PKT-7
PKT-6
PKT-5
PKT-4
ACK-0
ACK-1
ACK-2
ACK-3
ACK-4
ACK-5
ACK-6
ACK-7
ACK-8
WINDOW
WINDOW
WINDOW
WINDOW
Features of Go Back N
?
Window size = N
–
Sender cannot send packet i+N until it has received the ACK for packet i
?
Receiver operates just like in Stop and Wait
–
Receive packets in order
–
Receiver cannot accept packet out of sequence
–
Send RN = i + 1 => ACK for all packets up to and including i
?
Use of piggybacking
–
When traffic is bi-directional RN
’s are
piggybacked on packets going in the
other direction
Each packet contains a SN field indicating that packet
’s sequence number and a
RN field acknowledging packets in the other direction
<--Frame Header --------->
SN
RN
Packet
CRC
Go Back N
ARQ
?
The transmitter has a "window" of N packets that can be sent without acknowledgements
?
This window ranges from the last value of RN obtained from the receiver (denoted
SN
min
) to
S
N
min
+N-1
?
When the transmitter reaches the end of its window, or times out, it goes back and retransmits packet
S
N
min
Let SN
min
be the smallest number
packet not yet
ACKed
Let SN
max
be the number of the next packet to be accepted from the higher
layer (I.e., the next new packet to be transmitted)
Go Back N
Sender Rules
?S
N
min
= 0;
SN
max
= 0
?
Repeat
–
If S
N
max
<
SN
min
+ N (entire window not yet sent)
Send packet
S
N
max
;
SN
max
= SN
max
+ 1;
–
If packet arrives from receiver with RN >
S
N
min
SN
min
= RN;
–
If S
N
min
< SN
max
(there are still some unacknowledged packets) and sender
cannot send any new packets
Choose some packet between
S
N
min
and
S
N
max
and re-send it
?
The last rule says that when you cannot send any new packets you
should re-send an old (not
yet ACKed
)
packet
–
There may be two reasons for not being able to send a new packet
Nothing new from higher layer Window expired (
S
N
max
= SN
min
+ N )
–
No set rule on which packet to re-send
Least recently sent
Receiver Rules
?
RN = 0;
?
Repeat
–
When a good packet arrives, if SN = RN
Accept packet Increment RN = RN +1
?
At regular intervals send an ACK packet with RN
–
Most
DLCs
send an ACK whenever they receive a packet from the other
direction
Delayed ACK for piggybacking
?
Receiver reject all packets with SN not equal RN
–
However, those packets may still contain useful RN numbers
Example of Go Back 7 ARQ
SN
0
3
4
5
t
1
6
RN
0
1
2
3
5
Window
(0,6)
(1,7)
(
5,11)
(2,8)
(
3,9)
Node A
Node B
2
0
5
Packets delivered
0
1
2
3
4
5
?
Note that packet RN-1 must be accepted at B before a frame containing request RN can start transmission at B
RETRANSMISSION BECAUSE OF ERRORS FOR GO
BACK 4 ARQ
0
3
4
t
1
SN
RN
0
1
1
1
1
2
x
3
4
3
Window
Node A Node B
(0,3)
(1,4)
(
2,5)
2
1
2
1
Packets
0
1
2
3
delivered
?
Note that the timeout value here is taken to be the time to send a full window of packets
?
Note that entire window has to be retransmitted after an error
RETRANSMISSION DUE TO FEEDBACK ERRORS
FOR GO BACK 4 ARQ
5
0
3
4
t
1
SN
RN
0
4
5
x
4
5
6
x
5
Window
(0,3)
(2,5)
(4,7)
(5,8)
Node A
Node B
2
3
2
2
1
Packets
0
1
2
3
4
delivered
?
When an error occurs in the reverse direction the ACK may still arrive in time.
This is the case here where the packet from B to A with RN=2
arrives in time to prevent retransmission of packet 0
?
Packet 2 is retransmitted because RN = 4 did not arrive in time, however it did arrive in time to prevent retransmission of packet 3
–
Was retransmission of packet 4 and 5 really necessary?
Strictly no because the window allows transmission of packets 6 and 7 before further retransmissions.
However, this is implementation dependent
EFFECT OF LONG FRAMES
0
2
4
t
1
SN
RN
0
1
3
4
3
5
1
4 5
Window
Node A
Packets
(0,3)
(1,4)
(3,6)
(4,7)
Node B
3
0
1
2
3
4
delivered
?
Long frames in feedback direction slow down the
ACKs
–
This causes a transmitter with short frames to wait or go back
?
Notice again that the retransmission of packets 3 and 4 was not strictly required because the sender could have sent new packets within the window
–
Again, this is implementation dependent
Efficiency of Go Back N
A B
D
TP
D
P
D
P
D
TA
?
We want to choose N large enough to allow continuous transmission while waiting for an ACK for the first packet of the window,
N > S/ D
TP
?
Without errors the efficiency of Go Back N is,
E = min{1, N*D
TP
/S}
packet
ACK
S
S = D
TP
+ 2D
P
+ D
TA
packet
packet
packet
N*D
TP
Efficiency of Go Back N with transmission errors
Approximate analysis
?
S
N
?
?
Assume:
?
TO = N*D
TP
=
?
D
TP
?
?
When an error occurs the entire window of N packets must be retransmitted
Let X = the number of packets sent per successful transmission
E[X] = 1*(1-P) + (X+N)*P
=
1 + N*P/(1-P)
Efficiency = 1/E[X]
Go Back N
Requirements
?
Go Back N is guaranteed to work correctly, independent of the detailed choice of which packets to repeat, if
1) System is correctly initialized 2) No failures in detecting errors 3) Packets travel in FCFS order 4) Positive probability of correct reception 5) Transmitter occasionally resends
S
n
min
(e.g., upon timeout)
6) Receiver occasionally sends RN
Notes on Go Back N
?
Requires no buffering of packets at the receiver
?
Sender must buffer up to N packets while waiting for their ACK
?
Sender must re-send entire window in the event of an error
?
Packets can be numbered modulo M where
M > N
–
Because at most N packets can be sent simultaneously
?
Receiver can only accept packets in order
–
Receiver must deliver packets in order to higher layer
–
Cannot accept packet i+1 before packet i
–
This removes the need for buffering
–
This introduces the need to re-send the entire window upon error
?
The major problem with Go Back N is
this need to re-send the entire
window when an error occurs.
This is due to the fact that the receiver
can only accept packets in order
Selective Repeat Protocol
(SRP)
?
Selective Repeat attempts to retransmit only those packets that are actually lost (due to errors)
–
Receiver must be able to accept packets out of order
–
Since receiver must release packets to higher layer in order, the receiver must be able to buffer some packets
?
Retransmission requests
–
Implicit
The receiver acknowledges every good packet, packets that are not
ACKed
before
a
time-out are assumed lost or in error Notice that this approach must be used to be sure that every packet is eventually received
–
Explicit
An explicit NAK (selective reject) can request retransmission of just one packet This approach can expedite the retransmission but is not strictly needed
–
One or both approaches are used in practice
SRP Rules
?
Window protocol just like GO Back N
–
Window size W
?
Packets are numbered Mod M where M >= 2W
?
Sender can transmit new packets as long as their number is with W of all un-
ACKed packets
?
Sender retransmit un-
ACKed
packets after a timeout
–
Or upon a NAK if NAK is employed
?
Receiver ACKs all
correct
packets
?
Receiver stores correct packets until they can be delivered in order to the higher layer
Need for buffering
?
Sender must buffer all packets until they are
ACKed
–
Up to W un-
ACKed packet
are possible
?
Receiver must buffer packets until they can be delivered in order
–
I.e., until all lower numbered packets have been received
–
Needed for orderly delivery of packets to the higher layer
–
Up to W packets may have to be buffered (in the event that the first packet of a window is lost)
?
Implication of buffer size = W
–
Number of un-ACKed
packets at sender =< W
Buffer limit at sender
–
Number of un-ACKed
packets at sender cannot
differ by more than W
Buffer limit at the receiver (need to deliver packets in order)
–
Packets must be numbered modulo M >= 2W (using log
2
(M) bits)
EFFICIENCY
?
For ideal SRP,
only packets containing errors will be retransmitted
–
Ideal is not realistic because sometimes packets may have to be retransmitted because their window expired.
However, if the window size is
set to be much larger than the timeout value then this is unlikely
?
With ideal SRP, efficiency = 1 - P
–P
= probability of a packet error
?
Notice the difference with Go Back N where
efficiency (Go Back N) = 1/(1 + N*P/(1-P))
?
When the window size is small performance is about the same, however with a large window SRP is much better
–
As transmission rates increase we need larger windows and hence the increased use of SRP
Why are packets numbered Modulo 2W?
?
Lets consider the range of packets that may follow packet i at the receiver
i - W +1
i
i - W +1
x
i
i
- W +1
Packet i may be followed by the first packet of the window (i -W+1) if it requires retransmission
i
i+1
i+2
i+W
x
x
xx
i
i
- W
Packet i may be followed by the last packet of the window (i+W) if all Of the
ACKs
between i and i +W are lost
?
Receiver must differentiate between packets i -W+1 ... i +W
–
These 2W packets can be differentiated using Mod 2W numbering
STANDARD DLC's
?
HDLC, LAPB (X.25), and SDLC are almost the same
–
HDLC/ SDLC developed by IBM for IBM SNA networks
–
LAPB developed for X.25 networks
?
They all use bit oriented framing with flag = 01111110
?
They all use a 16-bit CRC for error detection
?
They all use Go Back N ARQ with N = 7 or 127 (optional)
SDLC packet
flag
address
control
data
C
R
C
flag
Multipoint
SN,RN
communication
?
Older protocols (used for modems, e.g.,
xmodem
) used stop and wait
and simple checksums