Last Update: Sep 17, 2024 | Published: Jan 07, 2009
If you use the TCP/IP protocol and you have a 100mbps network adapter, you may notice slow network performance while you copy files. You may also experience this slow performance while you use Windows Explorer in Windows XP.
Note that although the slow performance is known to occur on several 100mbps network adapters, this issue is not specific to Windows.
This issue is due to a high rate of early collisions on the network. The interframe gap (the amount of time that a workstation waits before attempting to transmit on the wire) is less than the IEEE 802.3 specification of 9.6 microseconds. A “collision” occurs when two stations transmit simultaneously on the wire. An “early collision” is any collision that occurs before 512 bits of the frame are on the wire. Early collisions can occur regularly in a normally operating Ethernet network. There is no hardware malfunction or misbehaving station. The IEEE 802.3 specification states that a station must wait 9.6 microseconds (the interframe gap) before the station can attempt to transmit on the wire. Several adapter manufacturers design their adapters with a smaller interframe gap to achieve higher data transfer rates. This smaller interframe gap can lead to a high rate of collisions.
The potential for collisions is also influenced by the behavior of the upper layer protocol. The TCP/IP specification is sending an ACK (acknowledgement) for every other data frame that is received. That is, after a TCP host receives two data frames, the TCP host transmits an ACK to the sender. The potential for collisions is high if a client that has received two packets tries to send an ACK while the sender is trying to send more data to the client.
To resolve this issue, contact the manufacturer of your network adapter for information about increasing the interframe gap. If you have Intel EtherExpress 100B network adapters then you can edit a registry parameter that controls the length of the interframe gap. To modify this parameter if you use an Intel EtherExpress 100B network adapter, follow these steps:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicese100b xParameters
Value Name: Adaptive_ifs Value Type: REG_DWORD Data: 1 (enable adaptive algorithm)
The adaptive algorithm for detecting collisions and tuning the interframe gap is enabled by default. Setting the value data to 0 disables the adaptive algorithm. A value between 2 and 200 sets a predefined interframe gap. Begin by setting the value at 20, and then increase the value by 20s. Measure collisions and note performance, and set a final value that has a low collision rate and does not affect performance.
To work around this issue, you can create a TcpWindowSize registry parameter to have the sender wait to receive an ACK from the receiver before sending more data. Making this change reduces the potential for collision. Follow these steps:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters
Value Name: TcpWindowSize Value Type: REG_DWORD Data: 2920 (decimal) – Number of bytes
Note that modifying this parameter can significantly affect performance. In general, on a wide area network (WAN) or on a regular 10-MB network, there is some latency between the sender and the receiver, depending on the network topology. Therefore, the potential for collisions because of TCP/IP acknowledgement (ACK) does not exist. Tuning TcpWindowSize in this case only reduces throughput.
You may find these related articles of interest to you: