TCP Fast Retransmit and Recovery Added in WinNT 4.0 SP2

Last reviewed: November 26, 1997
Article ID: Q162179
The information in this article applies to:
  • Microsoft Windows NT Workstation version 4.0
  • Microsoft Windows NT Server version 4.0

SUMMARY

TCP performance on lossy networks has been improved in Windows NT 4.0 Service Pack 2. Support was added for the Van Jacobson TCP fast retransmit and recovery algorithm.

MORE INFORMATION

For an excellent description of fast retransmit and recovery, see "TCP/IP Illustrated, Volume 1," Richard Stevens, page 312, Addison-Wesley, 1994. A summary of behavior before and after you apply Service Pack 2 is presented.

(Assume a receive window size that allows 6 full-sized Ethernet frames to be sent without waiting for acknowledgment.)

Before Service Pack 2

   Sender     Receiver
   -------------------
   packet1 ->
   packet2 ->
              <- ack for data up through packet2
   packet3 -> (assume this packet is lost)
   packet4 ->
              <- ack for data up through packet2
   packet5 ->
              <- ack for data up through packet2
   packet6 ->
              <- ack for data up through packet2
   packet7 ->
              <- ack for data up through packet2
   packet8 ->
              <- ack for data up through packet2
   pause, for retransmission timeout of packet 3 data
   packet3 ->
              <- ack for data up through packet8

NOTE: After a packet is dropped, the receiver immediately sends an acknowledgment indicating the receive position in the byte stream each time it receives another packet that is past the hole. These additional acks for packet 2 are a hint to the sender that there has been a dropped packet. However, prior to Service Pack 2, this indication was not acted upon. Instead, the sender continues sending up to the end of the send window, then pauses. Eventually, the retransmission timer for packet3 expires, and it is resent. An ack is returned for all of the data up through packet8, and the sender starts out again. However, it engages congestion control and starts slowly. As a result, the data throughput is not ideal.

The new behavior after applying Service Pack 2

   Sender     Receiver
   -------------------

   packet1 ->
   packet2 ->
              <- ack for data up through packet2
   packet3 ->    (assume this packet is lost)
   packet4 ->
              <- ack for data up through packet2
   packet5 ->
              <- ack for data up through packet2
   packet3 ->    (new !!)
   packet6 ->
              <- ack for data up through packet6
   packet7 ->
   packet8 ->
              <- ack for data up through packet8

The new behavior exhibits the fast retransmit and recovery algorithm. Now, upon receiving three acks for the same sequence number, the sender will quickly retransmit the missing segment, without waiting for the retransmission timer to expire. It also will engage a lesser degree of congestion control, as described in the before mentioned reference book.


Additional query words: semaphore timed out vj
Keywords : NTPROTOCOL NTRAS NTSrvWkst nttcp kbnetwork
Version : WinNT:4.0
Platform : winnt


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: November 26, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.