Saturday, April 16, 2011

TCP Selective Acknowledgment (SACK) and Fast Retransmission

TCP Selection Acknowledgment (SACK)

In the above scenario, there are total of 5 segments to be sent from 10.0.0.1 to 172.16.0.1:
1) 1 – 1400, 2) 1401 – 2800, 3) 2801 – 4200, 4) 4201 – 5600, and 5) 5601 – 7000.

Below describes the steps involved in the scenario:
i) Steps 1, 2, and 3 show the TCP three-way handshake connection establishment phase. Both end systems agree to use SACK. The agreed MSS is 1460 1400 bytes.
ii) 10.10.10.1 transmits the 1st and 2nd segments to 172.16.0.1 (Steps 5 and 6). 172.16.0.1 acknowledges the segments (Step 7).
iii) 10.10.10.1 transmits the 4th and 5th segments to 172.16.0.1 (Step 8 and 10). The 3rd segment is lost. With selective acknowledgment, 172.16.0.1 selectively acknowledges the out-of-order segments, instead of cumulatively acknowledging the last in-order segment received (Step 9 and 11).
iv) With fast retransmission, which skips the retransmission of selectively acknowledged segments, 10.10.10.1 retransmits the 3rd segment to 172.16.0.1 (Step 12).
v) Finally, 172.16.0.1 cumulatively acknowledges the receipt of all segments (Step 13).

4 comments:

  1. I'm think that during TCP handshake, hosts agrees to use smaller of the two hosts MSS, and between 1460, 1400 it select 1400.

    ReplyDelete
    Replies
    1. hey, thanks for the nice catch! Someone is really reading my blog posts. :D

      Delete
    2. Thanks for the blog, a lot of useful information.

      Delete
  2. thanks, but this example just illustrates fast retransmit and does not illustrates SACK

    ReplyDelete