Slow Performance When Copying File from MS-DOS Client to Windows 2000-Based Computer (244826)



The information in this article applies to:

  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Professional
  • Microsoft Windows 2000 Datacenter Server

This article was previously published under Q244826
IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows Registry

SYMPTOMS

You may observe a long delay when you copy a file from an MS-DOS client to a Microsoft Windows 2000-based computer using the TCP/IP protocol.

NOTE: This behavior does not occur when you copy a file from an MS-DOS client to a computer running Microsoft Windows NT 4.0 or Microsoft Windows 95 or Microsoft Windows 98, or when you copy a file from Windows 2000-based computer to an MS-DOS-based computer.

CAUSE

This behavior occurs because the MS-DOS sender drops packets during the transmission. Windows 2000 uses a default TCP receive window size of 17 KB for Ethernet (8 KB in Windows NT 4.0). MS-DOS sends back-to-back packets in an attempt to fill the receiver's buffer that is flooding its network adapter. The MS-DOS real mode network adapter driver is unable to keep up with the stream of packets sent by the MS-DOS TCP/IP stack, which results in packet losses. The network adapter driver drops packets before they are placed on the wire.

RESOLUTION

WARNING: If you use Registry Editor incorrectly, you may cause serious problems that may require you to reinstall your operating system. Microsoft cannot guarantee that you can solve problems that result from using Registry Editor incorrectly. Use Registry Editor at your own risk.

To work around this problem, set the TCP receive window size in Windows 2000 to a value equal or less than 8 KB:
  1. Start Registry Editor (Regedt32.exe).
  2. Locate the following registry key:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip\Parameters

  3. On the Edit menu, click Add Value, and then add the following registry value:

    Value Name: TcpWindowSize
    Data Type: REG_DWORD
    Value: 8192

  4. Quit Registry Editor.

STATUS

Microsoft has confirmed this to be a problem with MS-DOS real mode network adapter drivers.

MORE INFORMATION

The Maximum Segment Size (MSS) is calculated from the Maximum Transmission Unit (MTU) reported by the NDIS driver (network card). For example, Ethernet = 1460; 4 MB Token Ring = 4128; 16 MB Token Ring = 17888.

When the MS-DOS client sends the first segment of data, the client may send an undersized packet using a TCP window value that is less than the MSS. A network trace shows this value in the TCP header. For Ethernet, the Windows value in the TCP header looks similar to the following example:

TCP: Window = 1450 (0x5AA)

If this situation occurs, configure the TCP receive window size on the Windows 2000-based computer to be a multiple of the TCP window the client uses. In this example, the value is a multiple of 1450 instead of 1460, so the TCP receive window size is 7250 (1450 x 5).

You should not reduce the TCP receive window size to fix network problems. Reducing the window size makes symptoms less apparent, but does not resolve the problem.

You can set the TCP receive window size using the TcpWindowSize registry key. For additional information about how to do this, click the article number below to view the article in the Microsoft Knowledge Base:

120642 TCP/IP and NBT Configuration Parameters for Windows 2000 or Windows NT


Modification Type:MajorLast Reviewed:11/21/2003
Keywords:kbnetwork kbprb KB244826