Digging deeper into TCP and selective retransmission, Part 1

Opinion
Jul 18, 20062 mins

* Dynamics of TCP and selective retransmissions

In our continuing discussion of TCP and selective retransmission of lost packets, we enlisted the help of Gary Kessler, an associate professor at Champlain College in Burlington, Vt., and our resident expert on all things TCP/IP whenever we need a sanity check, and our new friend/reader, Ken Duda, acting president of Arastra. In our discussions with Ken and Gary, Ken offered a couple of great examples of exactly how TCP solves the selective retransmission issue.

According to Ken, “Here are two examples of the exact dynamics. I am assuming that the TCP three-way handshake has happened, and that the congestion window has opened up after slow start, and I am assuming a 1000-byte segment size to simplify the math (1460 is the usual segment size on Ethernet), and that the connection has been idle for a little while, and that SACK is disabled.” He then offers the following sequence of events:

1. The application enqueues 8000 bytes to send (let’s say).

2. TCP launches 8 1000-byte segments into the network.

3. Segment 4 gets dropped somewhere in the network.

4. Segment 1 is received. Recipient sends “ack 1000”.

5. Segment 2 is received. Recipient sends “ack 2000”.

6. Segment 3 is received. Recipient sends “ack 3000”.

7. Segment 5 is received. Recipient sends “ack 3000”.

8. Segment 6 is received. Recipient sends “ack 3000”.

9. Segment 7 is received. Recipient sends “ack 3000”.

10. Segment 8 is received. Recipient sends “ack 3000”.

11. Transmitter receives the acks. After the fourth “ack 3000” (the third duplicate ack), “fast retransmit” kicks in, and the sender retransmits segment 4.

12. Segment 4 is received. Recipient sends “ack 8000”.

13. Transmitter receives the “ack 8000”, and our transmission is complete.

(“Ack” is  positive ACKnowledgement that the information was received.)

Note that in contrast to some other legacy protocols where the windows themselves are actually numbered, TCP uses the byte count to number “virtual windows.”

Next time we’ll conclude this discussion (for now) with a second example.

Jim has a broad background in the IT industry. This includes serving as a software engineer, an engineering manager for high-speed data services for a major network service provider, a product manager for network hardware, a network manager at two Fortune 500 companies, and the principal of a consulting organization. In addition, Jim has created software tools for designing customer networks for a major network service provider and directed and performed market research at a major industry analyst firm. Jim’s current interests include both cloud networking and application and service delivery. Jim has a Ph.D. in Mathematics from Boston University.

More from this author