FIX: The TCP retransmission timeout is longer than expected after a pause in network activity in Windows CE .NET 4.2 (887697)



The information in this article applies to:

  • Microsoft Windows CE .NET 4.2

SYMPTOMS

In Microsoft Windows CE .NET 4.2, activity on a TCP socket may be suspended for a long time. When a retransmission of a packet is required upon resumption of network communication, the timeout before the retransmission may be larger than expected. The delay could be up to 2 minutes instead of the expected 1 to 10 seconds. This behavior only affects packets that must be retransmitted because of a network collision or a lack of wireless network coverage. The first try to send a packet always occurs immediately when the application layer calls the Windows Sockets Send function.

RESOLUTION

Software update information

A supported software update is now available from Microsoft as Windows CE .NET 4.2 Core OS QFE 887697. To resolve this problem immediately, click the following article number for information about obtaining Windows CE Platform Builder and core operating system software updates:

837392 How to locate core operating system fixes for Microsoft Windows CE Platform Builder products

Prerequisites

This software update is supported only if all previously issued software updates for this product have also been installed.

Restart requirement

After you install this software update, you must perform a clean build of the whole platform. To clean the platform, click Clean on the Build menu. To build the platform, click Build Platform on the Build menu. You do not have to restart your computer after you apply this software update.

Software update replacement information

This software update does not replace any other updates.

File information

The English version of this software update package has the file attributes or the later file attributes that are listed in the following table:
   Date         Time   Version     Size       File name
   ----------------------------------------------------------------------------------
   31-Dec-2004  01:01  4.2.4.1231  1,239,800  Wincepb42-041231-kb887697-armv4.exe
   31-Dec-2004  01:01  4.2.4.1231  1,239,800  Wincepb42-041231-kb887697-armv4i.exe
   31-Dec-2004  01:01  4.2.4.1231  1,268,472  Wincepb42-041231-kb887697-mipsii.exe
   31-Dec-2004  01:01  4.2.4.1231  1,268,472  Wincepb42-041231-kb887697-mipsii_fp.exe
   31-Dec-2004  01:01  4.2.4.1231  1,284,856  Wincepb42-041231-kb887697-mipsiv.exe
   31-Dec-2004  01:01  4.2.4.1231  1,280,760  Wincepb42-041231-kb887697-mipsiv_fp.exe
   31-Dec-2004  01:01  4.2.4.1231  1,202,936  Wincepb42-041231-kb887697-sh3.exe
   31-Dec-2004  01:01  4.2.4.1231  1,194,744  Wincepb42-041231-kb887697-sh4.exe
   31-Dec-2004  01:01  4.2.4.1231  1,145,592  Wincepb42-041231-kb887697-x86.exe
The English version of this software update has the file attributes (or later file attributes) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
   Date         Time   Size       File name
   ----------------------------------------

   Path: Public\Common\Oak\Lib\Armv4\Debug
   17-Dec-2004  18:52  1,091,566  Tcp.lib
   17-Dec-2004  18:52    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Armv4\Retail
   17-Dec-2004  18:52    804,080  Tcp.lib
   17-Dec-2004  18:52    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Armv4i\Debug
   17-Dec-2004  18:53  1,092,874  Tcp.lib
   17-Dec-2004  18:53    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Armv4i\Retail
   17-Dec-2004  18:52    805,850  Tcp.lib
   17-Dec-2004  18:52    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Mipsii\Debug
   17-Dec-2004  18:53  1,124,206  Tcp.lib
   17-Dec-2004  18:53    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Mipsii\Retail
   17-Dec-2004  18:53    811,006  Tcp.lib
   17-Dec-2004  18:53    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Mipsii_fp\Debug
   17-Dec-2004  18:53  1,124,386  Tcp.lib
   17-Dec-2004  18:53    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Mipsii_fp\Retail
   17-Dec-2004  18:53    811,114  Tcp.lib
   17-Dec-2004  18:53    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Mipsiv\Debug
   17-Dec-2004  18:54  1,136,174  Tcp.lib
   17-Dec-2004  18:54    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Mipsiv\Retail
   17-Dec-2004  18:54    816,044  Tcp.lib
   17-Dec-2004  18:54    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Mipsiv_fp\Debug
   17-Dec-2004  18:54  1,136,354  Tcp.lib
   17-Dec-2004  18:54    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Mipsiv_fp\Retail
   17-Dec-2004  18:54    816,146  Tcp.lib
   17-Dec-2004  18:54    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Sh3\Debug
   17-Dec-2004  18:54    942,916  Tcp.lib
   17-Dec-2004  18:54    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Sh3\Retail
   17-Dec-2004  18:54    735,600  Tcp.lib
   17-Dec-2004  18:54    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Sh4\Debug
   17-Dec-2004  18:55    942,466  Tcp.lib
   17-Dec-2004  18:55    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\Sh4\Retail
   17-Dec-2004  18:55    732,972  Tcp.lib
   17-Dec-2004  18:55    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\X86\Debug
   17-Dec-2004  18:52    935,614  Tcp.lib
   17-Dec-2004  18:52    143,360  Tcp.pdb

   Path: Public\Common\Oak\Lib\X86\Retail
   17-Dec-2004  18:52    697,704  Tcp.lib
   17-Dec-2004  18:52    135,168  Tcp.pdb

WORKAROUND

To work around this problem, applications that pause communication on a socket should try to send several packets when communications resumes. This behavior will give the TCP layer more statistical data to use to adjust the retransmission time-out (RTO). The more packets that have a short round-trip time (RTT), the faster the RTO will recover.

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.

MORE INFORMATION

Windows CE maintains an RTO for each TCP socket. This timeout is used to estimate how long to wait for an acknowledgement (ACK) to a transmitted packet. If a packet is lost on the network, Windows CE will retransmit the packet after the timeout expires. The RTO is designed to automatically adjust to avoid excessive retries or delays. The RTO does this by measuring the average time that it takes for packets to receive an ACK. For more information, see Internet RFC documents 793, 2988, and 1323. To find these RFC documents, visit the following Web site: Microsoft provides third-party contact information to help you find technical support. This contact information may change without notice. Microsoft does not guarantee the accuracy of this third-party contact information.

Modification Type:MinorLast Reviewed:5/27/2005
Keywords:kbBug kbfix kbQFE KB887697 kbAudDeveloper