Menu

Speed up your Internet with TCP/IP "tweaking", fact or fiction?




With tons of advertisements out there promising better Internet connection performance by "tweaking TCP/IP" its hard to know what is real and what isn't. In this article, I will briefly discuss some methods of changing the core settings in the TCP/IP protocol stack and what if any benefit that you will get from doing so.

First off TCP/IP means anything and everything related to the two protocols (TCP Transmission Control Protocol) and IP (Internet Protocol). Per RFC 1180 (A TCP/IP Tutorial) "It can include other protocols, applications, and even the network medium. A sample of these protocols are: UDP, ARP, and ICMP.  A sample of these applications are: TELNET, FTP, and rcp.  A more accurate term is "internet technology".  A network that uses internet technology is called an "internet"." So this is the protocol stack that makes communications over the Internet possible. That being said it would make sense that being able to "tweak" such a stack for your specific connection and the newer technologies would speed up your connection right?
Let's take a look at some of the common parameters of the TCP/IP stack that some claim can make a difference:

Receive Window Size: The receive window size is the amount of data in kilobits that is received before an acknowledgment (ACK) must be sent back to the other side of the TCP connection to verify that the data was sent successfully. If the sender doesn't receive an acknowledgment in the designated interval the data must be retransmitted. This is one of the reasons that TCP is considered a connection based reliable protocol.


  • The default receive window size in Windows 9X and Windows NT is 8K and the default in ME, 2000 and XP is 16K. If you have a broadband connection you could change this setting somewhere between 32K to 64K and clock your results. It could increase the speed of your broadband connection slightly when a lot of data is being transferred because it wouldn't have to send so many acknowledgments. The problem that you might run across in doing so is that if an ACK doesn't get received by the sender for some reason you have that much more data that will need to be retransmitted. Therefore if you're connection experiences a lot of latency already chances are this will cause you more problems than it will help due to the amount of transmission errors and data retransmission that is already chewing up your current bandwidth. In some cases, you can level this problem out by enabling Selective Acknowledgements or SACK. With SACK enabled the receiver can confirm the reception of certain specific non-contiguous packets in a data stream and force the sender to only resend the dropped packets instead of the entire stream of data since the last good ACK was received.
  • What does this mean to you? Well if you're running a dialup connection forget it, 16K would be the max receive window size you would want to do to and chances are you already have such network latency and so many retransmission errors that it would likely slow you down even more. Some people running satellite fed Internet connections with high latency transmissions due to small upload bandwidth most likely won't benefit either. If you do have a high bandwidth, low latency DSL or Cable connection you might try to adjust the settings listed above to see if you get any difference but I wouldn't expect your speed to increase significantly if any. 

  • NOTE: If you're not an experienced user it is never a good idea to manually edit your registry. Always perform a backup prior to any edit.

  • In Windows XP and Windows 2000 go to the start menu and click on run and type in "regedit" at the prompt, then press ok.

  • In the registry editor click on the + next to HKEY_LOCAL_MACHINE to expand.
  • Then click the + next to SYSTEM and then click the + next to CurrentControlSet to expand these.
  • Then click the + next to Services to expand a long list, you will be looking for Tcpip, when you find it click the + next to it.

  • Now click on the word Parameters and you will see a list of settings appear to the right.

  • With the word Parameters still highlight click Edit from the top menu, click New from the drop down menu, and click DWORD value from the side menu. A new setting will appear at the bottom of the list on the right with the name "New Value #1" in the field, change this value to "GlobalMaxTcpWindowSize".

  • Now, double-click on the Parameter GlobalMaxTcpWindowSize and it will pop up an edit window, change the value to 00007FFF for 32K or 0000FFFF for 64K and press ok. If you changed it to 64K you should see the Parameter below after clicking ok.

  • You should benchmark your speed before changing the setting and then benchmark the speed again trying each of these settings. If you have any problems or it just doesn't benefit you this new DWORD value that you added can simply be deleted.

No comments:

Post a Comment