2c Reliable Transmission
2c Reliable Transmission
Reliable Transmission
Reliable transmission
• How to guarantee packets are delivered correctly?
• Frames may be corrupted or lost, error correction may be impossible
Reliable transmission
• How to guarantee packets are delivered correctly?
• Frames may be corrupted or lost, error correction may be impossible
transmission
Loop:
1. Send next frame
2. Wait for the ACK
Stop-and-wait Sender
Fram
e
Receiver
transmission
ACK
Loop:
1. Send next frame
2. Wait for the ACK
Stop-and-wait Sender
Fram
e
Receiver
transmission
ACK
Loop: Fram
e
transmission
ACK
Loop: Fram
e
transmission
ACK
Loop: Fram
e
ACK
Fram
e
ACK
Fram
e
ACK
Fram
e
Stop-and-wait Sender
Fram
e
Receiver
transmission Timeout
Loop:
1. Send next frame
2. Wait for the ACK
3. If ACK times out:
a. Continue with the same frame
4. If ACK arrives:
a. Continue with the next frame
Stop-and-wait Sender
Fram
e
Receiver
transmission Timeout
ACK
Loop:
1. Send next frame
2. Wait for the ACK
3. If ACK times out:
a. Continue with the same frame
4. If ACK arrives:
a. Continue with the next frame
Stop-and-wait Sender
Fram
e
Receiver
transmission
ACK
Loop: Timeout
Fram
e
transmission
ACK
Loop: Timeout
Fram
e
transmission
ACK
Loop: Fram
e
transmission
ACK
Loop: Fram
e
transmission
ACK
Loop: Fram
e
transmission
ACK
Loop: Fram
e
transmission
ACK
Loop: Fram
e
ACK
Fram
e
Stop-and-wait Sender
Fram
e
Receiver
transmission
ACK
• We want a tight timeout Fram
e
Early
No errors Retransmission Retransmission
Early
No errors Retransmission Retransmission
Continuous Transmission
time
transmission Propagation
delay
• Stop-and-wait is inefficient on
long high-bandwidth links
Time
Endpoint 1 Endpoint 2
Continuous Transmission
time
transmission Propagation
delay
• Stop-and-wait is inefficient on
long high-bandwidth links
Time
Endpoint 1 Endpoint 2
Continuous Transmission
time
transmission Propagation
delay
• Stop-and-wait is inefficient on
long high-bandwidth links
• Link is transmitting a small
fraction of the time
Time
Endpoint 1 Endpoint 2
Continuous 1
transmission
2
3
4
• Stop-and-wait is inefficient on 5
Time
Endpoint 1 Endpoint 2
Continuous 1
transmission
2
3
4
• Stop-and-wait is inefficient on 5
Time
Sliding window algorithm: sender
LAR LFS
SWS = 7
LFR LFA
Receiver …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
ACK’d Acceptable Not acceptable
Transmission errors: duplicate ACKs
• Sender: Retransmit a frame whenever a duplicate ACK is received
• Retransmit whole window on timeout
• Receiver: Send ACK for LFR whenever a frame arrives out of order
LAR LFS • Receiver gets frame(5), sends ack(5)
• Sender gets ack(5)
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
LFR LFA
Receiver …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
Transmission errors: duplicate ACKs
• Sender: Retransmit a frame whenever a duplicate ACK is received
• Retransmit whole window on timeout
• Receiver: Send ACK for LFR whenever a frame arrives out of order
LAR LFS • Receiver gets frame(5), sends ack(5)
• Sender gets ack(5)
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
• Receiver gets frame(7), sends ack(7)
LFR LFA
Receiver …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
Transmission errors: duplicate ACKs
• Sender: Retransmit a frame whenever a duplicate ACK is received
• Retransmit whole window on timeout
• Receiver: Send ACK for LFR whenever a frame arrives out of order
LAR LFS • Receiver gets frame(5), sends ack(5)
• Sender gets ack(5)
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
• Receiver gets frame(7), sends ack(7)
• Sender gets ack(6), sends frame(13)
LFR LFA
Receiver …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
Transmission errors: duplicate ACKs
• Sender: Retransmit a frame whenever a duplicate ACK is received
• Retransmit whole window on timeout
• Receiver: Send ACK for LFR whenever a frame arrives out of order
LAR LFS • Receiver gets frame(5), sends ack(5)
• Sender gets ack(5)
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
• Receiver gets frame(7), sends ack(7)
• Sender gets ack(6), sends frame(13)
• Receiver gets frame(9), sends ack(7)
LFR • Frame 8 missing, window stuck
LFA
Receiver …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
Transmission errors: duplicate ACKs
• Sender: Retransmit a frame whenever a duplicate ACK is received
• Retransmit whole window on timeout
• Receiver: Send ACK for LFR whenever a frame arrives out of order
LAR LFS • Receiver gets frame(5), sends ack(5)
• Sender gets ack(5)
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
• Receiver gets frame(7), sends ack(7)
• Sender gets ack(6), sends frame(13)
• Receiver gets frame(9), sends ack(7)
LFR • Frame 8 missing, window stuck
LFA
• Sender gets ack(7), sends frame(14)
Receiver …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
Transmission errors: duplicate ACKs
• Sender: Retransmit a frame whenever a duplicate ACK is received
• Retransmit whole window on timeout
• Receiver: Send ACK for LFR whenever a frame arrives out of order
LAR LFS • Receiver gets frame(5), sends ack(5)
• Sender gets ack(5)
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
• Receiver gets frame(7), sends ack(7)
• Sender gets ack(6), sends frame(13)
• Receiver gets frame(9), sends ack(7)
LFR • Frame 8 missing, window stuck
LFA
• Sender gets ack(7), sends frame(14)
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
• Receiver gets frame(7), sends ack(7)
• Sender gets ack(6), sends frame(13)
• Receiver gets frame(9), send sack(9)
LFR • Frame 8 missing, window stuck
LFA
Receiver …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
Transmission errors: selective ACKs
• Sender: Retransmits missing frames
• Receiver: Send cumulative ACKs when possible, selective ACKs otherwise
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
• Receiver gets frame(7), sends ack(7)
• Sender gets ack(6), sends frame(13)
• Receiver gets frame(9), send sack(9)
LFR • Frame 8 missing, window stuck
LFA
• Sender gets ack(7), sends frame(14)
Receiver …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
Transmission errors: selective ACKs
• Sender: Retransmits missing frames
• Receiver: Send cumulative ACKs when possible, selective ACKs otherwise
Sender …3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 … •
•
Packets 6-12 in flight
Receiver gets frame(6), sends ack(6)
• Receiver gets frame(7), sends ack(7)
• Sender gets ack(6), sends frame(13)
• Receiver gets frame(9), send sack(9)
LFR • Frame 8 missing, window stuck
LFA
• Sender gets ack(7), sends frame(14)
Time
Endpoint 1 Endpoint 2
Time
How many frame identifiers?
• Frame identifiers are stored in the frame header
• Overhead
• The smaller the better