In network traces you can see that the client sends the "SMB: C NT transact - Notify Change" packet. The Windows 2000-based domain controller sends back an ACK packet to the client 200 milliseconds later. After the client receives the ACK packet, the client begins the next SMB operation and copies the next file.
Note If you are using Network Monitor, you can see the delays better if you use the following filter:
SMB:Command == 0xA0 ( NT transact )
Use this filter in combination with the following display options:
Time: (x) Seconds from previous frame
You can identify the corresponding requests and answers by looking at the following SMB frame attribute:
SMB: Multiplex ID (MID)
The Delayed Acknowledgments functionality is based on Request for Comments (RFC) 1122. TCP uses delayed ACKs to reduce the number of packets that are sent on the network. The Microsoft TCP/IP stack takes a common approach to implementing delayed ACKs. When the data is received by TCP on a connection, the stack only returns an ACK if one of the following conditions is met:
- Condition 1: No ACK is sent for the previous segment that is received.
- Condition 2: A segment is received, but no other segment arrives within 200 milliseconds (the default value) for that connection.
Typically, an ACK is sent for every other TCP segment that is received on a connection unless the delayed ACK timer (200 milliseconds) expires.
You can adjust the delayed ACK timer by using the procedure that is described in the "Resolution" section of this article to add the
TcpDelAckTicks registry value (this value is new in Windows 2000).
Note Be aware that if you change the
TcpDelAckTicks registry value, you may experience unexpected effects in the future. Therefore, Microsoft recommends that you consider other alternatives before you modify the timer.
The delay occurs if the previous packet was acknowledged and the Notify Change request response is queued by a domain controller for a period of time that sometimes exceeds 200 milliseconds. Because the default ACK timer counts to 200 milliseconds, the TCP ACK packet occurs 200 milliseconds after the Notify Change request is received from the client. Because the client waits for a response from the server before it proceeds with the next SMB operation, the delay occurs while the server's delayed ACK timer counts to its threshold. If you perform a network trace, you notice that not every Notify Change request from the client experiences a delay.
The Notify Change request that does not experience the delay is immediately preceded by another packet which is not acknowledged. Therefore, the acknowledgement is not delayed in the domain controller's acknowledgement because the first of the conditions that is described at the beginning of this section is met. The Notify Change requests that do experience the delay have had the previous packets acknowledged; therefore, the domain controller does not respond back until the delayed ACK timer expires (the default value is 200 milliseconds) because the second of the conditions that is described in this section is triggered.
You cannot modify the thread prioritization of a domain controller; therefore, you must change the TCP delayed ACK timer value to a lower value to prevent the symptoms that are described in the "Symptoms" section of this article from occurring. After you do so, the server sends ACK values more frequently but at shorter intervals.
For more information about the
TcpDelAckTicks registry value, refer to the white paper that is located on the following Microsoft Web site:
For more information about this problem, click the following article number to view the article in the Microsoft Knowledge Base:
270926
How to troubleshoot network file copy issues in Windows 2000
On a client that is running Windows XP or Windows Server 2003, there is a new registry key named TcpAckFrequency that controls TCP ACKs before the delayed ACK timer is reached.
For more information, click the following article number to view the article in the Microsoft Knowledge Base:
328890
New registry entry for controlling the TCP Acknowledgment (ACK) behavior in Windows XP and in Windows Server 2003
For more information, click the following article number to view the article in the Microsoft Knowledge Base:
321169
Slow SMB performance when you copy files from Windows XP to a Windows 2000 domain controller