Professional Documents
Culture Documents
Transfer
Reliable Delivery
• Making sure that the packets sent by the sender are
correctly and reliably received by the receiver amid
network errors, i.e., corrupted/lost packets
– Can be implemented at LL, NL or TL of the protocol stack.
Totally a design choice
RDT_Send Deliver_Data
RDT_Send Deliver_Data
Timeout
ACK arrives Time
ACK
– If received ACK, send Packe
t
the next packet ACK
– If timeout, ReTransmit Packe
t
the same packet
• Receiver:
– When you receive a
packet correctly, send
an ACK
Recovering from Error
Packe P ac k e
t t Packe
Timeout t
Timeout
Timeout
AC K C K
A
Time
Packe Packe Packe
t t t
Timeout
Timeout
Timeout
AC K
A CK ACK
Timeout
Timeout
ACK 0 0
A CK
Time
Pkt 0 Pkt 0 Pkt 0
Timeout
Timeout
Timeout
ACK 0
ACK 0 ACK 0 Pkt 1
Pkt 1 Pkt 1
U L/R .008
= = = 0.00027
sender 30.008
RTT + L / R microsec
onds
– 1KB pkt every 30 msec -> 33kB/sec throughput over 1 Gbps link
– network protocol limits use of physical resources!
Pipelining: Increasing Utilization
• Pipelining: sender allows multiple, “in-flight”, yet-to-be-acknowledged
pkts without waiting for first to be ACKed to keep the pipe full
– Capacity of the Pipe = RTT * BW
sender receiver
first packet bit transmitted, t = 0
last bit transmitted, t = L / R
Increase utilization
by a factor of 3!
U 3*L/R .024
sender
= = = 0.0008
RTT + L / R 30.008 microsecon
ds
Sliding Window Protocols
• Reliable, in-order delivery of packets
• 2 Generic Versions
– Go-Back-N
– Selective Repeat
Sliding Window:
Generic Sender/Receiver States
Sender
Sender Receiver
Receiver
Last ACK Received Last Packet Sent Next Packet Expected Last Packet Acceptable
(LAR) (LPS) (NPE) (LPA)
… … … …
Sent & Acked Sent Not Acked Received & Acked Acceptable Packet
<= SWS
LAR LPS
Sliding Window- Receiver Side
• The receiver maintains 3 variables
– Receiver Window Size (RWS)
• Upper bound on the number of buffered packets
– Last Packet Acceptable (LPA)
– Next Packet Expected (NPE)
– We want LPS – NPE + 1 <= RWS
<= RWS
NPE LPA
Go-Back-N
Sender
Sender Receiver
Receiver
Last ACK Received Last Packet Sent Next Packet Expected Last Packet Acceptable
(LAR) (LPS) (NPE) (LPA)
… … … …
SWS = N
RWS = 1 packet
Sent & Acked Sent Not Acked Received & Acked Acceptable Packet
• Timeout:
– Retransmit ALL packets that have been previously sent,
but not yet ACKed
• Therefore the name Go-Back-N
Go-Back-N: Receiver Actions
• A packet with “seqno” arrives:
– If seqno == NPE then // in-order packet
• Deliver the packet to the upper layer
• Send an ACK for pkt# = seqno
• This is called “cumulative ACK” scheme
– ACKs not only the current packet, but also all packets before it
– Can we do better?
• Yes: Buffer out-of-order packets at the receiver and do
Selective Repeat (Retransmissions) at the sender
Selective Repeat
Sender
Sender Receiver
Receiver
Last ACK Received Last Packet Sent Next Packet Expected Last Packet Acceptable
(LAR) (LPS) (NPE) (LPA)
… … … …
SWS = N RWS = N
Sent & Acked Sent Not Acked Received & Acked Acceptable Packet
NPE = 5 LPA =8