Export (0) Print
Expand All

Optimizing Network Performance

In a BizTalk Server environment where the BizTalk Server computer(s) are separate from the SQL Server computer(s), each and every message processed by BizTalk Server requires communication over the network. This communication includes considerable traffic between the BizTalk Server computers and the BizTalk Message Box database(s), the BizTalk Management database(s), the BAM databases, and other databases. In high-load scenarios, this communication can result in considerable network traffic and can become a bottleneck, especially when network settings have not been optimized, not enough network interface cards are installed, or insufficient network bandwidth is available.

This topic provides some general recommendations for improving network performance and describes several registry entries that can be modified to optimize the network stack to mitigate the occurrence of bottlenecks on the network.

Cc558565.Important(en-US,BTS.10).gifImportant
Some of the recommendations in this topic require modifications to the Windows registry. Incorrect use of Registry Editor may cause problems requiring you to reinstall your operating system. Use Registry Editor at your own risk. For more information about how to back up, restore, and modify the registry, see the Microsoft Knowledge Base article "Description of the Microsoft Windows registry" at http://go.microsoft.com/fwlink/?LinkId=62729.

Adjusting network settings to optimal values has been shown to effectively address network bottlenecks and improve overall network performance in BizTalk Server solutions. This should be done on all computers involved in the solution, including BizTalk Server computers, SQL Server computers, and any other server computers.

Cc558565.note(en-US,BTS.10).gifNote
The most common indicator that Network IO is a bottleneck is the counter “SQL Server:Wait Statistics\Network IO waits”. When the value for Avg Wait Time in this counter is greater than zero on one or more of your SQL Server computers, then Network IO is a bottleneck.

The following recommendations can be used to increase network performance:

Add additional network cards to computers in the BizTalk Server environment

Just as adding additional hard drives can improve disk performance, adding additional network cards can improve network performance. If the network cards on the computers in your BizTalk Server environment are saturated and the card is a bottleneck, consider adding one or more additional network cards to improve performance.

Implement network segmentation

Follow the recommendations in the Subnets section of the "BizTalk Server Database Optimization" whitepaper at http://go.microsoft.com/fwlink/?LinkID=101578.

Where possible, replace hubs with switches

Switches contain logic to directly route traffic between the source and destination whereas hubs use a broadcast model to route traffic. Therefore switches are more efficient and offer improved performance.

Remove unnecessary network protocols

Windows Server computers sometimes have more network services and protocols installed than are actually required. Each additional network client, service or protocol places additional overhead on system resources.
In addition, each installed protocol generates network traffic. By removing unnecessary network clients, services and protocols, system resources are made available for other processes, excess network traffic is avoided and the number of network bindings that must be negotiated is reduced to a minimum.
To see the currently installed network clients, protocols and services, follow these steps:

  1. Click Start, point to Settings, and then click Control Panel.

  2. Double-click Network Connections to display the network connections on the computer.

  3. Right-click Local Area Connection (or the entry for your network connection), and then click Properties to display the properties dialog box for the network connection.

  4. To remove an unnecessary item, select it and click Uninstall. To disable an item, simply clear the checkbox associated with the item.

If you are unsure about the effects of uninstalling an item for the connection, then disable the item rather than uninstalling it. Disabling items allows you to determine which services, protocols and clients are actually required on a system. When it has been determined that disabling an item has no adverse affect on the server, the item can then be uninstalled.
In many cases, only the following three components are required for operation on a standard TCP/IP based network:

  • Client for Microsoft Networks

  • File and Printer Sharing for Microsoft Networks

  • Internet Protocol (TCP/IP)

Scalable Network Pack

The Scalable Network Pack (SNP) contains enhancements to support network acceleration and hardware-based offloading features present in some newer network cards. Installing the Scalable Network Pack (enabled by default in Windows Service Pack 2,) may enable performance gains on some systems, however, on some systems you may experience network related problems, such as slow network performance or the inability to use some networking protocols such as RDP or FTP.

If you experience network problems after installing Windows SP2, uninstalling, or disabling the SNP may resolve these issues. For more information on removing or disabling the SNP, see http://support.microsoft.com/kb/948496.

Network adapter drivers on all computers in the BizTalk Server environment should be tuned for performance

Adjust the network adapter device drivers to maximize the amount of memory available for packet buffering, both incoming and outgoing. Also maximize buffer counts, especially transmit buffers and coalesce buffers. The default values for these parameters, and whether they are even provided, vary between manufacturers and driver versions. The goal is to maximize the work done by the network adapter hardware, and to allow the greatest possible buffer space for network operations to mitigate network traffic bursts and associated congestion.

Cc558565.note(en-US,BTS.10).gifNote
Steps to tune network adapter drivers vary by manufacturer.

Follow these steps to access settings for network adapters in Windows Server 2003:

  1. Click Start, point to Settings, click Control Panel, and then double-click Network Connections.

  2. Right-click Local Area Connection (or the name of your network connection), and then click Properties.

  3. On the General tab, click Configure.

  4. Click the Advanced tab to access properties that can be configured for the network adapter.

The following properties should be configured for each network adapter in the BizTalk Server environment:

Cc558565.note(en-US,BTS.10).gifNote
You apply these settings for each physical network adapter, including the individual network adapters within a teamed set of network adapters that are configured for aggregation, load balancing, or fault tolerance. With some teaming software, you might need to apply these settings to the team also. Note that some network adapters are self-tuning and may not offer the option to configure parameters manually.

  • Power Option – Configure the network adapter driver to prevent power management functionality from turning off the network adapter to save power. This functionality may be useful for client computers but should seldom, if ever, be used on a BizTalk Server or SQL Server computer.

  • Fixed Speed/Duplex (do not use AUTO) - It is very important that the network speed, duplex, and flow control parameters are set to correspond to the settings on the switch to which they are connected. This will mitigate the occurrence of periodic “auto-synchronization” which may temporarily take connections off-line.

  • Max Coalesce Buffers - Map registers are system resources used to convert physical addresses to virtual addresses for network adapters that support bus mastering. Coalesce buffers are available to the network driver if the driver runs out of map registers. Set this value as high as possible for maximum performance. On servers with limited physical memory, this may have a negative impact as coalesce buffers consume system memory. On most systems however, the maximum setting can be applied without significantly reducing available memory.

  • Max Transmit/Send Descriptors and Send Buffers - This setting specifies how many transmit control buffers the driver allocates for use by the network interface. This directly reflects the number of outstanding packets the driver can have in its “send” queue. Set this value as high as possible for maximum performance. On servers with limited physical memory, this may have a negative impact as send buffers consume system memory. On most systems however, the maximum setting can be applied without significantly reducing available memory.

  • Max Receive Buffers - This setting specifies the amount of memory buffer used by the network interface driver when copying data to the protocol memory. It is normally set by default to a relatively low value. Set this value as high as possible for maximum performance. On servers with limited physical memory, this may have a negative impact as receive buffers consume system memory. On most systems however, the maximum setting can be applied without significantly reducing available memory.

  • All offload options ON - In almost all cases performance is improved when enabling network interface offload features. Some network adapters provide separate parameters to enable or disable offloading for send and receive traffic. Offloading tasks from the CPU to the network adapter can help lower CPU usage on the server which will improve overall system performance. The Microsoft TCP/IP transport can offload one or more of the following tasks to a network adapter that has the appropriate capabilities:

    • Checksum tasks - The TCP/IP transport can offload the calculation and validation of IP and TCP checksums for sends and receives to the network adapter, enable this option if the network adapter driver provides this capability.

    • IP security tasks - The TCP/IP transport can offload the calculation and validation of encrypted checksums for authentication headers (AH) and encapsulating security payloads (ESP) to the network adapter. The TCP/IP transport can also offload the encryption and decryption of ESP payloads to the network adapter. Enable these options if the network adapter driver provides this capability.

    • Segmentation of large TCP packets - The TCP/IP transport supports large send offload (LSO). With LSO, the TCP/IP transport can offload the segmentation of large TCP packets.

    • Stack Offload – The entire network stack can be offloaded to a network adapter that has the appropriate capabilities. Enable this option if the network adapter driver provides this capability.

  • Wake On LAN disabled (unless being used) – Configure the network adapter driver to disable wake-on lan functionality. This functionality may be useful for client computers but should seldom if ever be used on a BizTalk Server or SQL Server computer.

For more information about tuning network adapters for performance, see the Network Device Settings section of the "BizTalk Server Database Optimization" whitepaper at http://go.microsoft.com/fwlink/?LinkID=101578.

This section provides a description of recommended values for several registry entries that impact network performance. These registry entries can be applied manually or can be applied via the operating system optimization PowerShell script included in Windows PowerShell Scripts.

The DisablePagingExecutive value governs whether or not Windows will page the NT executive to disk. Setting this entry to a value of 1 will prevent pageable drivers and system code in the Windows NT Executive from being paged out to disk. Although this decreases the response time in systems with extremely large amounts of physical memory (RAM), it is critical that there is enough RAM installed, otherwise the server could be rendered unstable. For more information about the DisablePagingExecutive registry entry, see http://go.microsoft.com/fwlink/?LinkId=113707.

DisablePagingExecutive

Key:

HKLM:\System\CurrentControlSet\Control\Session Manager\Memory Management

Value:

DisablePagingExecutive

Data Type:

REG_DWORD

Range:

0 to 1

Default value:

0

Recommended value:

1

Value exists by default?

Yes


The IRPStackSize value specifies the number of stack locations in I/O request packets (IRPs) that are used by Windows 2000 Server, by Windows Server 2003, and by Windows XP. You may have to increase this number for certain transports, for media access control (MAC) drivers, or for file system drivers. Each stack uses 36 bytes of memory for each receive buffer. For more information about the IRPStackSize registry entry, see Microsoft Knowledge Base Article 285089, “Description of the IRPStackSize parameter in Windows 2000, in Windows XP, and in Windows Server 2003” at http://support.microsoft.com/kb/285089.

IRPStackSize

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Value:

IRPStackSize

Data Type:

REG_DWORD

Range:

11 to 50

Default value:

15

Recommended value:

32

Value exists by default?

No, needs to be added.


The SizReqBuf value specifies the size in bytes of the raw receive buffers (work items) that the Server service uses. Small work items use less memory, but large work items can improve performance. The value that works best in a particular environment depends on the configuration of that environment. For an optional value, you might try increasing the value as high as 4410 (hexadecimal); this has been shown to work well in a fairly standard Ethernet environment. However, going over setting a value over 4000 hexadecimal has been seen to cause other issues on some servers. Therefore, the default starting point for the SizeReqBuf entry should be 4000 hexadecimal (16384 decimal). By default, the value for this entry is 4356 bytes on servers with less than 512 MB of memory. On servers with more than 512 MB of memory, this value is increased to 16384 bytes (16 KB). A receive buffer that is larger can improve performance on directory queries and similar commands, but at the price of more memory per work item.

Increasing the SizReqBuf value can increase performance significantly in a high-latency environment. However, note that increasing the SizReqBuf value also increases the non-paged pool memory used by the Server service. If you increase the SizReqBuf value, monitor non-paged pool memory to make sure that the change does not adversely impact the performance of the server.

SizReqBuf

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters

Value:

SizReqBuf

Data Type:

REG_DWORD

Range:

1-65535

Default value:

16,384 (bytes) on servers with 512 MB or more or physical memory, 4,356 (bytes) on servers with less than 512 MB physical memory.

Recommended value:

17424 (bytes) on servers with 512 MB or more or physical memory, 4,356 (bytes) on servers with less than 512 MB physical memory.

Value exists by default?

No, needs to be added.

Review the following information to configure TCP/IP registry settings for optimal performance:


The DefaultTTL value specifies the default time-to-live (TTL) value set in the header of outgoing IP packets. The TTL determines the maximum amount of time that an IP packet may live in the network without reaching its destination. It is effectively a limit on the number of links on which an IP packet is allowed to travel before being discarded.

DefaultTTL

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

DefaultTTL

Data Type:

REG_DWORD

Range:

1 to 255 (seconds)

Default value:

128

Recommended value:

64

Value exists by default?

No, needs to be added


The EnablePMTUDiscovery value governs whether TCP will attempt to discover the Maximum Transmission Unit (MTU), or largest packet size for the entire path to a remote host. By discovering the Path MTU (PMTU) and limiting TCP segments to this size, TCP can eliminate packet fragmentation at routers along the path that connect networks with different MTUs. Fragmentation adversely affects TCP throughput and causes network congestion. Setting this parameter to 0 (or off) causes an MTU of 576 bytes to be used for all connections to destinations other than the local subnet.

Cc558565.Important(en-US,BTS.10).gifImportant
This entry should not be set to a value of 1 if the server is directly exposed to potential attackers.

EnablePMTUDiscovery

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

EnablePMTUDiscovery

Data Type:

REG_DWORD

Range:

0 to 1

Default value:

1

Recommended value:

1

Value exists by default?

No, needs to be added.


The EnablePMTUBHDetect value governs whether TCP tries to detect black hole routers during the Path MTU (maximum transmission unit) discovery process. Enabling black hole detection increases the maximum number of times TCP retransmits a given segment. If the value of this entry is 1, TCP recognizes when it has transmitted the same segment several times without receiving an acknowledgement. It reduces the maximum segment size (MSS) to 536 bytes, and it sets the Don't-Fragment bit. If, as a result, receipt of the segment is acknowledged, TCP continues this practice in all subsequent transmissions on the connection.

EnablePMTUBHDetect

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

EnablePMTUBHDetect

Data Type:

REG_DWORD

Range:

0 to 1

Default value:

0

Recommended value:

1

Value exists by default?

No, needs to be added.


The TcpMaxDupAcks value determines the number of duplicate ACKs that must be received for the same sequence number of sent data before fast retransmit is triggered to resend the segment that has been dropped in transit. If you set the value of this entry to 1, then the system retransmits a segment when it receives an ACK for a segment with a sequence number that is less than the number of the segment currently being sent.
When data arrives with a sequence number that is greater than expected, the receiver assumes that data with the expected number was dropped, and it immediately sends an ACK with the ACK number set to the expected sequence number. The receiver sends ACKs set to the same missing number each time it receives a TCP segment that has a sequence number greater than expected. The sender recognizes the duplicate ACKs and sends the missing segment. The recommended value of 2 is also the default value but Windows Server 2003 does not add this entry to the registry, so it should be added.

TcpMaxDupAcks

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

TcpMaxDupAcks

Data Type:

REG_DWORD

Range:

1 to 3

Default value:

2

Recommended value:

2

Value exists by default?

No, needs to be added.


The Tcp1323Opts value governs whether TCP uses the timestamping and window scaling features described in RFC 1323, TCP Extensions for High Performance. Window scaling permits TCP to negotiate a scaling factor for the TCP receive window size, allowing for a very large TCP receive window of up to 1 GB. The TCP receive window is the amount of data that the sending host can send at one time on a connection. Timestamps help TCP measure round trip time (RTT) accurately in order to adjust retransmission timeouts. The Timestamps option provides two timestamp fields of 4 bytes each in the TCP header, one to record the time the initial transmission is sent and one to record the time on the remote host. This entry is a 2-bit bitmask. The lower bit determines whether scaling is enabled; the higher bit determines whether timestamps are enabled.

Tcp1323Opts

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

Tcp1323Opts

Data Type:

REG_DWORD

Range:

0 to 3

Default value:

3

Recommended value:

1 (also consider setting to a value of 3 if high packet loss / retransmits are occurring).

Value exists by default?

No, needs to be added.


The SackOpts value governs whether the Selective Acknowledgment (SACK) feature of Windows Server 2003 TCP/IP is enabled. SACK is an optimizing feature based upon RFC 2018, TCP Selective Acknowledgement Options. SACK permits receipt acknowledgement of individual blocks of data in a continuous sequence, rather than just the last sequence number. When SACK is enabled, the recipient can tell the sender that one or more data blocks are missing from the middle of a sequence, and the sender can retransmit only the missing data.

SackOpts

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

SackOpts

Data Type:

REG_DWORD

Range:

0 to 1

Default value:

1

Recommended value:

1

Value exists by default?

No, needs to be added.


The MaxFreeTcbs value determines the number of TCP control blocks (TCBs) the system creates to support active connections. Because each connection requires a control block, this value determines how many active connections TCP can support simultaneously. If all control blocks are used and more connection requests arrive, TCP can prematurely release connections in the TIME_WAIT state in order to free a control block for a new connection.

Cc558565.note(en-US,BTS.10).gifNote
If the value for this entry is increased, then the value for the MaxHashTableSize value should also be increased.

MaxFreeTcbs

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

MaxFreeTcbs

Data Type:

REG_DWORD

Range:

0 to 4294967295

Default value:

Varies with the system and amount of physical memory on the computer. For more information, see “Appendix A: TCP/IP Configuration Parameters” at http://go.microsoft.com/fwlink/?LinkId=113716

Recommended value:

65535

Value exists by default?

No, needs to be added.


The MaxHashTableSize value controls how fast the system can find a TCB and should be increased if the MaxFreeTcbs value is increased from its default value.

Cc558565.note(en-US,BTS.10).gifNote
This value should be set to a power of 2 (for example, 512, 1024, 2048, and so on.) If this value is not a power of 2, the system configures the hash table to the next power of 2 value (for example, a setting of 513 is rounded up to 1024).

MaxHashTableSize

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

MaxHashTableSize

Data Type:

REG_DWORD

Range:

64 to 65536

Default value:

512

Recommended value:

65536

Value exists by default?

No, needs to be added.


The MaxUserPort value controls the maximum port number used when an application requests any available user port from the system. Normally, short-lived ports are allocated in the range from 1024 through 5000. Setting this parameter to a value outside of the valid range causes the nearest valid value to be used (5000 or 65534).

MaxUserPort

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

MaxUserPort

Data Type:

REG_DWORD

Range:

5000 to 65534

Default value:

5000

Recommended value:

65534

Value exists by default?

No, needs to be added.


The TcpTimedWaitDelay value determines the length of time that a connection stays in the TIME_WAIT state when being closed. While a connection is in the TIME_WAIT state, the socket pair cannot be reused. This is also known as the 2MSL state because the value should be twice the maximum segment lifetime on the network. For more information, see Internet RFC 793 at http://go.microsoft.com/fwlink/?LinkId=113719.

TcpTimedWaitDelay

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

TcpTimedWaitDelay

Data Type:

REG_DWORD

Range:

30 to 300

Default value:

240

Recommended value:

30

Value exists by default?

No, needs to be added.


The GlobalMaxTcpWindowSize value specifies the maximum size of the TCP receive window. The receive window specifies the number of bytes that a sender can transmit without receiving an acknowledgment. In general, larger receive windows improve performance over high-latency, high-bandwidth networks. For greatest efficiency, the receive window should be an even multiple of the TCP Maximum Segment Size.
The TCP/IP stack of Windows Server 2003 was designed to tune itself in most environments. Instead of using a fixed size for the receive window, TCP negotiates for and adjusts to an even increment of the maximum segment size. Matching the receive window to even increments of the maximum segment size increases the percentage of full-sized TCP segments used during bulk data transmission.

Cc558565.note(en-US,BTS.10).gifNote
Setting this entry to a value greater than 64 KB can only be achieved when connecting to other systems that support window scaling as described in Internet RFC 1323. For more information about RFC 1323, see http://go.microsoft.com/fwlink/?LinkId=84406.

GlobalMaxTcpWindowSize

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

GlobalMaxTcpWindowSize

Data Type:

REG_DWORD

Range:

0 to 1073741823

Default value:

This value does not exist by default

Recommended value:

65535

Value exists by default?

No, needs to be added.


The NumTcbTablePartitions value controls the number of TCB table partitions. The TCB table can be portioned to improve scalability on multi-processor systems by reducing contention on the TCB table. This value should not be modified without a careful performance study. A suggested maximum value is (number of CPUs) * 4 (not counting hyper-threaded CPUs).

NumTcbTablePartitions

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

NumTcbTablePartitions

Data Type:

REG_DWORD

Range:

1 to 65535

Default value:

4

Recommended value:

Number of physical CPUs or physical CPU cores * 4 (not counting hyper-threaded CPUs)

Value exists by default?

No, needs to be added.


The TcpAckFrequency value specifies the number of ACKs that will be outstanding before the delayed ACK timer is ignored. The TcpAckFrequency value can only be set after installing Hotfix 815230, described in Microsoft Knowledge Base article 815230, “Changing the TcpAckFrequency value to 1 does not have any effect” at http://support.microsoft.com/kb/815230.

Cc558565.Caution(en-US,BTS.10).gifCaution
Do not change the value of this entry before carefully studying the effect of different values in a test environment.

TcpAckFrequency

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

TcpAckFrequency

Data Type:

REG_DWORD

Range:

0 to 255

Default value:

2

Recommended value:

  • 5 for 100 MB networks

  • 13 MB for 1 GB networks

Value exists by default?

No, needs to be added.


The SynAttackProtect value specifies whether the SYN flooding attack protection feature of TCP/IP is enabled. The SYN flooding attack protection feature of TCP detects symptoms of denial-of-service (DOS) attacks (also known as SYN flooding), and it responds by reducing the time that the server spends on connection requests that it cannot acknowledge. For more information about the SynAttackProtect registry entry, see the “Disable Windows Server 2003 Service Pack 1 and Service Pack 2 denial of service checking” section of Optimizing Operating System Performance.

SynAttackProtect

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

SynAttackProtect

Data Type:

REG_DWORD

Range:

0 to 1

Default value:

1 for Windows Server 2003 SP1 and later, 0 otherwise

Recommended value:

0 (Only set this on systems with Web exposure if other hardware or software is providing denial of service (DOS) attack protection)

Value exists by default?

No, needs to be added.


The MTU value specifies the size of the maximum transmission unit (MTU) that TCP/IP uses for the network interface. The value of this entry takes precedence over the MTU that the network adapter detects dynamically. For more information about the MTU value, see “Appendix A: TCP/IP Configuration Parameters” at http://go.microsoft.com/fwlink/?LinkId=113716.

MTU

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\interfaceGUID

Value:

MTU

Data Type:

REG_DWORD

Range:

88 to the dynamically determined MTU (in bytes)

Default value:

4294967295

Recommended value:

Determine the optimal MTU value as described in the Find the Optimal MTU below, under “Applying registry settings with the network optimization Windows PowerShell script”

Value exists by default?

No, needs to be added.


The ForwardBufferMemory value specifies the size of the buffer that IP allocates for storing packet data in the router packet queue. Because packet queue data buffers are 256 bytes long, the value of this entry must be a multiple of 256.

ForwardBufferMemory

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

ForwardBufferMemory

Data Type:

REG_DWORD

Range:

0 to 4294967295 (bytes, in 256 byte increments

Default value:

74240

Recommended value:

Set to a value 100 * the optimal MTU value as described in the Find the Optimal MTU below, under “Applying registry settings with the network optimization Windows PowerShell script”

Value exists by default?

No, needs to be added.


The MaxForwardBufferMemory value limits the total amount of memory that IP can allocate to store packet data in the router packet queue

MaxForwardBufferMemory

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

MaxForwardBufferMemory

Data Type:

REG_DWORD

Range:

Dynamically determined MTU to 4294967295 (in bytes)

Default value:

2097152 (bytes)

Recommended value:

Set to a value 100 * the optimal MTU value as described in Find the Optimal MTU below, under “Applying registry settings with the network optimization Windows PowerShell script”. This value must be greater than or equal to the value specified for ForwardBufferMemory.

Value exists by default?

No, needs to be added.


The NumForwardPackets value determines the number of IP packet headers that are allocated for the router packet queue. When all headers are in use, the system attempts to allocate more, up to the value configured for MaxNumForwardPackets. This value should be at least as large as the ForwardBufferMemory value divided by the maximum IP data size of the networks that are connected to the router. It should be no larger than the ForwardBufferMemory value divided by 256 because at least 256 bytes of forward buffer memory is used for each packet. The optimal number of forward packets for a given ForwardBufferMemory size depends on the type of traffic that is carried on the network and is somewhere between these two values. This parameter is ignored and no headers are allocated if routing is not enabled.

NumForwardPackets

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

NumForwardPackets

Data Type:

REG_DWORD

Range:

1 to 4294967295

Default value:

50

Recommended value:

Set to 1/256 of the value specified for ForwardBufferMemory

Value exists by default?

No, needs to be added.


The MaxNumForwardPackets value limits the total number of IP packet headers that can be allocated for the router packet queue. This value must be greater than or equal to the value of the NumForwardPackets entry.

MaxNumForwardPackets

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

MaxNumForwardPackets

Data Type:

REG_DWORD

Range:

1 to 4294967295

Default value:

4294967295

Recommended value:

Set to 1/256 of the value specified for ForwardBufferMemory

Value exists by default?

No, needs to be added.


The TcpWindowSize value specifies the maximum size of the TCP receive window. The receive window specifies the number of bytes that a sender can transmit without receiving an acknowledgment. In general, larger receive windows improve performance over high-latency, high-bandwidth networks. For greatest efficiency, the receive window should be an even multiple of the TCP Maximum Segment Size.
The TCP/IP stack of Windows Server 2003 was designed to tune itself in most environments. Instead of using a fixed size for the receive window, TCP negotiates for and adjusts to an even increment of the maximum segment size (MSS). For more information about MSS, see http://go.microsoft.com/fwlink/?LinkId=113755. Matching the receive window to even increments of the MSS increases the percentage of full-sized TCP segments used during bulk data transmission.

Cc558565.note(en-US,BTS.10).gifNote
Setting this entry to a value greater than 64 KB can only be achieved when connecting to other systems that support window scaling as described in Internet RFC 1323. For more information about RFC 1323, see http://go.microsoft.com/fwlink/?LinkId=84406

TcpWindowSize

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

Value:

TcpWindowSize

Data Type:

REG_DWORD

Range:

0 to 4294967295 ( bytes, in 256-byte increments )

Default value:

The smaller of the following values:

  • 65535

  • The value of the GlobalMaxTcpWindowSize registry entry. For more information, see “Appendix A: TCP/IP Configuration Parameters” at http://go.microsoft.com/fwlink/?LinkId=113716

  • 16384 rounded up to an even multiple of the TCP Maximum Segment Size (MSS)

Recommended value:

Value closest to 64420 that is a multiple of the MSS value.

Value exists by default?

No, needs to be added.


The EnableDynamicBacklog value is a global switch that enables AFD.SYS functionality to withstand large numbers of SYN_RCVD connections efficiently. For more information, see "Internet Server Unavailable Because of Malicious SYN Attacks," at http://support.microsoft.com/kb/142641.

EnableDynamicBacklog

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters

Value:

EnableDynamicBacklog

Data Type:

REG_DWORD

Range:

0 to 1

Default value:

0

Recommended value:

1

Value exists by default?

No, needs to be added.


The MinimumDynamicBacklog value spcifies the minimum number of free connections allowed on a listening endpoint. If the number of free connections drops below this value, a thread is queued to create additional free connections.

MinimumDynamicBacklog

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters

Value:

MinimumDynamicBacklog

Data Type:

REG_DWORD

Range:

0 to 4294967295

Default value:

This value does not exist by default

Recommended value:

200

Value exists by default?

No, needs to be added.


The MaximumDynamicBacklog value controls the maximum number of "quasi-free" connections allowed on a listening endpoint. "Quasi-free" connections include the number of free connections plus those connections in a half- connected (SYN_RECEIVED) state. No attempt is made to create additional free connections if doing so would exceed this value.
To take advantage of the changes to Afd.sys, Windows Sockets applications must specifically request a backlog greater than the value configured for MinimumDynamicBacklog when they issue a listen() call. Microsoft applications, such as Internet Information Services (IIS), which has a default backlog of 25, are configurable.

MaximumDynamicBacklog

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters

Value:

MaximumDynamicBacklog

Data Type:

REG_DWORD

Range:

0 to 4294967295

Default value:

This value does not exist by default

Recommended value:

20000

Value exists by default?

No, needs to be added.


The DynamicBacklogGrowthDelta value controls the number of free connections to create when additional connections are necessary. Be careful with this value, as a very large value could lead to explosive free connection allocations.

DynamicBacklogGrowthDelta

Key:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters

Value:

DynamicBacklogGrowthDelta

Data Type:

REG_DWORD

Range:

0 to 4294967295

Default value:

This value does not exist by default

Recommended value:

100

Value exists by default?

No, needs to be added.

This topic includes a Windows PowerShell script that can be run on each computer in the BizTalk Server environment to apply registry settings that will optimize networking performance, by using the recommended values discussed in this topic. To run this script follow these steps:

  1. Find the optimal MTU - Before running the network optimization PowerShell script, the “Maximum Common MTU” for all computers in the solution must be determined. This means that if 1500 works as an MTU value on all but one computer, either the value of that less capable computer must be used everywhere, or the NIC on the less capable computer needs to be replaced with one as capable as the others. To find the optimal MTU size that can be used on a particular network, do the following:

    1. On each computer that is part of the solution, open a PowerShell window or CMD.exe window and ping that computer’s default gateway with the following command:

      PING –f –l <MTU Size> <interface default gateway address>
      
      Cc558565.note(en-US,BTS.10).gifNote
      If you don’t know the default gateway IP address, run “IPCONFIG” from a command prompt to display the address.

      If this command returns the message “Packet needs to be fragmented but DF set,” then the specified MTU value is too high and a lower value must be used.

    2. Determine the highest MTU value that will work on all computers in the BizTalk Server environment, this value will be passed as an argument to the network optimization PowerShell script.

  2. Install Windows PowerShell – Windows PowerShell can be downloaded from http://go.microsoft.com/fwlink/?LinkId=77521. PowerShell must be installed in order to run the network optimization script.

  3. Run the network optimization script

    1. Copy the script from the “Optimizing network performance registry settings” section of Windows PowerShell Scripts into notepad and save as Set-NetworkRegSettings.ps1.

    2. Launch PowerShell and change directories to the folder that contains the saved script.

    3. Run the script with the following command:

      .\Set-NetworkRegSettings.ps1 1400
      
      Cc558565.note(en-US,BTS.10).gifNote
      In this example an “optimal MTU” size of 1400 is passed as an argument to the script but the “optimal MTU” value may be different in your environment.

      Cc558565.note(en-US,BTS.10).gifNote
      If the script does not run, or opens in Notepad instead of running, ensure the PowerShell execution policy permits running PowerShell scripts. To determine the current PowerShell execution policy run the Get-ExecutionPolicy PowerShell command. To change the current PowerShell execution policy run the Set-ExecutionPolicy PowerShell command.

    The network optimizations PowerShell script generates a log file named “COMPUTERNAME-NetworkRegSettings.log” in the directory from which the script was run. This log file details which values were changed and lists the original value as well as the new value. For simplicity sake, and so that all logs are accessible from the same place, it is recommended that this script is placed in a networked file share and that the script is run from that file share on all computers in the BizTalk Server environment.

Show:
© 2014 Microsoft