1

Based on my understanding, in Go Back N, an acknowledgement with sequence number i indicates that all packets up to and including i-1 have been acknowledged.

Hence, if a sender has window size w, and base b, so the window is [b, b+w-1], and receives an acknowledgement n, n > b, the sender may slide the window forward to [n, n+w-1].

Assuming modulo arithmetic is used, how does Go Back N ensure safety in the face of out of order acknowledgements?

For example, assume sequence numbers 0, 1, 2, 3 and a maximum window size of 3. Assume, because of dynamic routing, the sender receives acks in the following order

ack 2
ack 3
ack 1

On receiving acks 2 and 3, it will slide the window forward

| 0 1 2 | 3 0 1 2 3 0 1 2 3
0 1 | 2 3 0 | 1 2 3 0 1 2 3
0 1 2 | 3 0 1 | 2 3 0 1 2 3

On receiving ack 1 (indicating receipt of packet 0), will the sender not slide the window forward again, to

0 1 2 3 0 | 1 2 3 | 0 1 2 3

So the sender cannot disambiguate between ack 2, ack 3, ack 1 (reordered) and ack 1 (dropped), ack 2, ack 3, ack 0 (dropped), ack 1

Michael Lee
  • 303
  • 3
  • 8
  • Don't know general answer but in case of TCP this may help https://networkengineering.stackexchange.com/questions/30268/how-does-a-tcp-sender-recognize-out-of-order-ack-packets – Tim Apr 26 '23 at 17:06

0 Answers0