In Windows Server 2008 or Windows Server 2008 R2 environment, if the network environment is set to enable Delay ACK and storage is connected with iSCSI, an iScsiPrt error is output to the System Event Log when a general operation is executed

Article translations Article translations
Article ID: 981482 - View products that this article applies to.
Expand all | Collapse all

On This Page

SYMPTOMS

In Windows Server 2008 or Windows Server 2008 R2 environment, if the network environment is set to enable delay ACK and storage is connected with iSCSI, an iScsiPrt error is output to the System Event Log when a general operation, such copying files, is executed.

Error ID 20 Connection to the target was lost. The initiator will attempt to retry the connection.

Error ID 7 The initiator could not send an iSCSI PDU. Error status is given in the dump data.

Error ID 49 Target failed to respond in time to a Task Management request.

Error ID 39 Initiator sent a task management command to reset the target. Target name is given in the dump data.

Alert ID 129 The device, \Device\ScsiPort0, did not respond within the time-out period.

Information ID 34 A connection to the target was lost, but Initiator successfully reconnected to the target. Target name is given in the dump data.

CAUSE

This error occurs when a network adapter (NIC) drops a packet.

When a packet reaches a network adapter, a receive interrupt is generated by the network adapter. When a receive interrupt is generated by a network adapter, the DPC routine is placed in the queue to call the receive handler. Next, the packet is retrieved from the receive buffer at the timing of the DPC interrupt and handed to a higher layer receive handler. If a DPC with a higher priority is being executed or there is a heavy load on the system at this time, there may be a delay before the DPC process is executed making a buffer necessary. If this buffer is not big enough, then a packet is dropped.

In general, this occurs when the server processing speed is not fast enough to keep up with the packet reception rate (packets/sec). When the Initiator (receiving side) drops a packet, it will send a resend request to the Target (sending side). However, if a large number of packets are dropped at once, there may be a large discrepancy between the sequence numbers of the frames that the receiving side requests to be resent and the newest frames that the sending side has sent. When this discrepancy reaches the current receiving window size, the sending side is not able to send any more packets in advance and waits until it receives receive acknowledgement (ACK) for pending frames. After the receiving side receives the frame for which it resent a DUP ACK it does not receive any other frames, so that after waiting the 0.2 seconds of the Delay ACK, it returns the ACK. This results in a 5 frame/sec transmission/reception rate, so that a time out occurs at the Initiator or Target.

WORKAROUND

Use one of the following methods to avoid this problem.

Method 1: Increase the receiving buffer

Note: This method is a unique network adapter setting, so please ask the supplier of your network adapter for the setting procedures.

In this example, an Intel PRO/1000 PT Dual Port Server Adapter is used.
  1. Click Start button, then click Run.
  2. In Open box, type DevMgmt.msc, then click OK.
  3. Open Network Adapter, right click Intel PRO/1000 PT Dual Port Server Adapter, then click Properties.
  4. Click Summary tab.
  5. From Properties list, click Receive Buffers, then select a larger value from Value list, such as 2048.
  6. Click OK to enable the setting.

Method 2: Disable Delay ACK

Important: This section, method, or task describes how to edit the Registry. Making a mistake in the Registry can result in serious problems. Be very careful when editing the Registry. Making a backup of the Registry before editing it will allow restoring the Registry if a problem should occur. Click the Technical Support Information below for details on backing up and restoring.
322756 Backing Up and Restoring the Windows Registry
Setting the Registry value TcpAckFrequency to 1 according to the technical information below will disable Delay ACK. This will prevent the resend processing time from going to 5 frame/sec when a packet is dropped. Using this method will not prevent packets from being dropped, but even if they are dropped the resend processing delay will be improved, so that time outs will not occur.
328890 New Registry entries to control the operation of TCP ACK in Windows XP and Windows Server 2003

Method 3: Disable AutoTuningLevel to fix the window size

Disabling AutoTuningLevel by executing the technical information method below will prevent the window from expanding. As a result, there will be a great reduction in the receiving rate, making it more difficult to drop packets.

Note: This method will reduce the receiving rate and the performance of the network will also be reduced.
934430 Using Windows Vista behind a firewall device will result in a failed network connection

MORE INFORMATION

Procedure for Recreating the Problem

  1. In a system in which Delay ACK is enabled, copy or backup a large volume of files to a disk connected with iSCSI.
  2. Check for packets dropped by the network adapter with the performance counter [Network Interface\Packets Received Discarded].

Result

Any iScsiPrt errors are output to the System Event Log.

Properties

Article ID: 981482 - Last Review: May 28, 2010 - Revision: 1.0
APPLIES TO
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
Keywords: 
kbexpertiseadvanced kbprb kberrmsg kbharmony kbtshoot KB981482

Give Feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com