An increasing number of small to medium-sized businesses are adopting broadband Internet access in the form of cable modem and digital subscriber line (DSL) services. These technologies provide high-speed downstream transfer, averaging 1 to 1.5 Mbps (upstream bandwidth is usually throttled back to 128 or 256 Kbps by the provider).
Despite some disadvantages, such as the lack of guaranteed uptime and guaranteed bandwidth, broadband is an attractive solution to businesses on a tight budget. The cost is very low, compared to high-speed access through dedicated leased lines (T-carrier). A typical I.544 T-1 line costs between $300 to more than $1,000 per month, depending on your location. Residential cable and DSL access is available for under $40 per month in many areas, with "business class" broadband service available for about $80 per month in some areas.
Unfortunately, many users are not getting the most out of their broadband connections because Windows operating systems are typically optimized for a LAN and not broadband connectivity. While default configuration settings assume an Ethernet connection, there are registry edits, software patches, and other solutions you can apply to optimize your Windows 2000 or XP computer for better broadband performance.
Success may vary
Although you may be able to achieve significant improvements in performance by applying the tweaks in this article, performance is also dependent on what you’re actually getting from your broadband provider. If the problem is at the other end of the connection, these suggestions may not help.
Do you need to tweak?
How do you know whether your computer is already optimized for broadband? You could go through the registry and configuration settings we discuss here, and manually determine whether they’re set correctly.
There are also Web tools available to test your computer, such as the Tweak Tester at DSLReports.com. Simply click a button, and a test file will be downloaded and your system’s performance analyzed. The results page will provide information and make recommendations.
The site also includes a speed test if you want to check the actual download and upload speeds you’re getting.
Editing the registry
There are a number of registry edits you can make to optimize your TCP/IP stack’s behavior to get better performance from broadband connections. Remember that editing the registry is serious business; if you do it incorrectly, you can render your system unbootable. Always take great care when using the Registry Editor, and back up the registry before making any changes.
Understanding the registry in XP
For instructions on how to back up, edit, and restore the registry in XP, see the Microsoft KB article 322756.
Understanding the effect of the TCP Receive Window size (RWIN)
The TCP Receive Window allows the computer to keep receiving packets without waiting for the protocol to send an acknowledgement message (ACK) after the receipt of each packet. The size of the window determines how many packets can be received before an ACK must be sent. If the window is too small, there will be delays caused by the protocol waiting until the ACKs get back to the sending computer.
Many DSL and cable information resources tell you to increase the size of the Receive window for better performance. In previous versions of Windows, the Receive window had a static setting in the following registry key, with the size determined by the value in the registry key DefaultRcvWindow (in Windows 9x) or TCPWindowSize (in NT):
In Windows XP, this setting is dynamic and is based on other registry settings, including the Maximum Segment Size (MSS) and Maximum Transmission Unit (MTU). Optimally, the window should be an even multiple of the MSS.
Like Windows 2000, XP can take advantage of the TCP extensions referenced in RFC 1323, including window scaling. This allows for large TCP receive windows (over 65,000 bytes). Support for the extensions is enabled in the registry by creating a new DWORD value under the key identified above, called Tcp1323Opts, and setting its value to 1 (for window sizing) or 3 (for window scaling). Scaling helps especially if your connection has a lot of latency (over 250 ms).
You can then set the window size by editing the GlobalMaxTcpWindowSize DWORD value under the same key to 256960 (generally best for broadband connections). The settings here will override the setting in TcpWindowSize under the same key. Figure A shows how to navigate to the proper registry key.
|Most registry tweaks that improve broadband performance are under the \Tcpip\Parameters key.|
The optimal window size depends on the operating system you’re using and the latency (amount of time required for a packet to travel between two points and back) of your connection. You can determine latency using PING or TRACERT, as shown in Figure B.
|TRACERT is one tool you can use to determine your connection's latency.|
Under 100 ms generally qualifies as low latency, 100-200 ms as medium latency, and more than 200 ms as high latency. The higher the latency, the larger the window should be.
Modifying other TCP/IP parameters
The TCP window size is one of the most important settings for optimizing your DSL or cable connection. In addition, the following registry settings (all under the …\Tcpip\Parameters key) are generally recommended for best broadband performance:
- Ensure the value SackOpts is set to 1. This enables Selective Acknowledgement support, which is needed when large window sizes are used. This should be on by default.
- Set the value DefaultTTL (the time to live in seconds and the number of hops before a packet is considered to be lost and transmitted again) to 80 in hexadecimal or 128 in decimal. This does not increase speed but can prevent packets from being lost due to excessive hops required to reach a destination.
- Set the value TcpMaxDupAcks (number of duplicate acknowledgement messages that trigger fast retransmit) to 2.
- Ensure the value EnablePMTUDiscovery is set to 1. This allows TCP to try to discover the MTU (maximum transmission unit) automatically.
- Ensure the value PMTUBHDetect is set to 0. This disables detection of “black hole” routers, but it also decreases the maximum number of times a particular segment will be transmitted again.
Modifying the PPPoE MTU size
Some ISPs may require that the MTU size for Point-to-Point Protocol over Ethernet (PPPoE) connections be less than the maximum of 1,480 bytes, which is also the default setting. You can do this by adding three registry values under the following key:
The new values to be added are all REG_DWORD type, as follows:
- ProtocolType (set value to 0x00000800)
- PPPProtocolType (set to 0x00000021)
- ProtocolMTU (set to the appropriate MTU size in decimal)
Reboot so the changes will take effect.
Microsoft specs for MTU size
Microsoft specifies that the MTU size should not be set to anything less than 1400.
Applying software patches
If you prefer not to venture into the registry yourself, you can take advantage of the talents of programmers who have created software patches to make many of the registry changes discussed in the previous section. The sguide_tweak_2k.zip patch is available free from Speedguide.net and optimizes several registry settings for broadband performance.
If your ISP uses PPPoE for your DSL connection, you may be able to increase performance by applying the sguide_default_2k.zip patch, also available on the Speedguide.net Web site. Both of these patches can be downloaded here.
Manual vs. software-driven registry editing
Although it is easier and may seem safer to use software patches to change your registry settings, it can be difficult to determine exactly what modifications have been made. Editing the registry manually gives you more granular control and allows you to learn more about what does and doesn’t work to improve performance with your particular configuration.
Other factors that may affect performance
Several other factors can affect the performance of your broadband connection. Some of these can be addressed by changing your configuration, while others are limitations of the ISP, the TCP/IP protocols, or the media, and there’s little you can do about them.
Use of the ISP’s Web proxy servers
If your ISP uses a Web proxy server to cache content, the intent is to speed up access to commonly viewed Web pages. However, in some cases, using the Web proxy can actually lower your Web performance because of congestion. You’ll want to try it both ways to see which works best for you. If you get better performance by not using the proxy, leave it disabled.
To disable use of the proxy on your XP computer, follow these steps:
- Access Internet Options, either from the Tools menu of Internet Explorer or via the Control Panel.
- On the Connections tab, click the LAN Settings button.
- Uncheck all check boxes, as shown in Figure C.
|Uncheck the check boxes in IE’s LAN Settings to disable use of a proxy server.|
Downstream speeds affected by upstream limits
Most broadband ISPs throttle the upstream bandwidth so that it is far slower than the downstream. This is done because most consumers will download far more than they upload. Upstream speeds may also be throttled to prevent users from running servers.
Even the download speed can be affected by this upstream limitation, because when you overload the upstream bandwidth, your downstream speed may decrease.
This is a known problem with TCP/IP on asymmetric networks (those in which the up and down bandwidths are different). This is because of the connection-oriented nature of TCP and its use of Acknowledgement messages. For more information about how this works, see "RFC 3449 TCP Performance Implications of Network Path Asymmetry."
If you’ve performed all the registry edits and configuration changes recommended, and your broadband connection still isn’t fast enough, you might consider another option: aggregating bandwidth. For much less than the cost of a T-1 line, you can purchase multiple DSL lines, multiple cable connections, or even a combination of the two, and—using the proper third-party software—combine the bandwidth for a super fast connection.
One such product is RainFinity’s RainConnect, which is deployed in front of your firewall (there are versions designed to work with Check Point and Microsoft’s ISA Server). RainConnect provides load balancing across the multiple links by distributing traffic among all the ISP connections. Although the initial cost of the software is high, it can quickly pay for itself in the savings gained by the price difference between a dedicated leased line and two or more broadband connections.
Not available in all areas
You should be aware that the optimization settings discussed in this article may not work with all ISPs’ connections. If the settings don’t improve performance or if they cause connection problems, change the settings back to their default values. Speedguide.net offers a handy program, sguide_default_2k.zip, to restore TCP/IP parameters settings to the defaults.
Debra Littlejohn Shinder, MCSE, MVP is a technology consultant, trainer, and writer who has authored a number of books on computer operating systems, networking, and security. Deb is a tech editor, developmental editor, and contributor to over 20 additional books on subjects such as the Windows 2000 and Windows 2003 MCSE exams, CompTIA Security+ exam, and TruSecure's ICSA certification.