1.4 KiB
lec9
Continuation of RDT + lec8
Pipelining
Instead of sending just one packet at a time we can send N packets across the network simultaneously.
We have two choices to deal with errors in this case however, go-back-N
or selective repeat
.
Go-Back-N
THings we'll need to deal with:
- timeout
- recevier acknowledgement
Sender
Sends N packets at a time and only re-sends according to highest value ack
the receiver responds with.(the next section explains this better)
REceiver
We will respond with the highest successful sequence number.
Say we were supposed to get 1 2 3 4 but 3 failed.
This is when we send ack1 ack2 but not ack3 or 4
.
This tells the sender to resend everything from 3 onwards.
Selective Repeat
Receiver gets 1 2 3 4
but 3
fails.
This time we send ack1 ack2 nack3 ack4
and 3
is resent.
This will take less bandwidth and still correct issues which can randomly happen.
If we imagine a window moving along a row of packet slots we only move that window along the row as the lowest(sequenced) packet is filled.
If a packet isn't ack
d we wait for a timeout then we resend to the receiver.
Example: Say we send 1 2 3 4 5
but 3
is lost.
Our window would move from 1-5
to 2-7
, wait for timeout then resend, wait for ack
then move forward as it receives 3
.
A useful link for visualizing selective repeat can found here: