KB935458 v2 – Vista hotfix for TcpAckFrequency

Nov 10 2009 note: If you’re using Windows 7, do not try to install the hotfix – it’s for Vista only. However, you should be able to enter the registry key under Windows 7 – I did, and there weren’t any negative effects I could see although I have no idea if it’s providing any benefit (no way to test it at the moment), so feel free to leave a comment if you’ve created the key, and note whether you saw any benefit in games. Make sure you write down where you enter the registry key in case something buggers up so that you can remove the key if necessary.

If you just want the files asap, skip the rest of the read and scroll down to the end.

While browsing through the World of Warcraft Tech Support forums, I came across this thread which has something of a fix for high pings. For the technical side as to how and why this works, I suggest you read the thread. The short version is that the WoW servers apparantly wait for the client to send an “ACK” before sending the client new data. The problem is, the client does not always send that “ACK” right away, so you’re left with a period of time where both the client and server are waiting on each other. This *could* be fixed on Blizzard’s end at some point, but until then, there are a few ways of fixing this on your own.

The way to do this in Windows is basically to add a registry entry. The downside is that it changes this setting for the entire computer, and might affect other high-bandwidth programs negatively (the computer will now send a lot more ACK’s than it did before). There were well-written instructions in the thread mentioned above, so I’ll paste them here:

basically windows user type “regedit” in windows “run..” dialog to bring up registry menu then find:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip
ParametersInterfaces
There will be multiple NIC interfaces listed in there, find the one you use to connect to the internet, there will be several interfaces listed (they have long names like {7DBA6DCA-FFE8-4002-A28F-4D2B57AE8383}. Click each one, the right one will have lots of settings in it and you will see your machines IP address listed there somewhere. Right-click in the right hand pane and add a new DWORD value, name it TcpAckFrequency, then right click the entry and click Modify and assign a value of 1.

you can change it back to 2 (default) at a later stage if it affects your other TCP application performance. it tells windows how many TCP packets to wait before sending ACK. if the value is 1, windows will send ACK everytime it receives a TCP pckage. sounds straight forward to me.

The problem is that if you’re using Vista, it won’t work unless you install a certain hotfix first. I did a google search, and the only place I could find with the hotfix was http://thehotfixshare.net (which was actually mentioned in the forum). It’s a great site, and they offer the download for free, but you have to register first, and they don’t allow hotmail or yahoo email addresses (possibly others), which could leave some people out in the cold. Therefore, I’m offering the files here as well. If you feel like “giving back”, head to their site and make a donation – if it weren’t for them I wouldn’t have the files in the first place.

Keep the following in mind:

  • These hotfixes are for Vista only. Don’t try to install them on XP (you don’t need them anyway).
  • Install at your own risk. If they bork your system, are riddled with viruses that my virus scanner missed, or somehow cause you or your machine to participate in the annihilation of mankind, I’m not being held responsible. USE AT YOUR OWN RISK!
  • One is for 32-bit Vista, one is for 64-bit Vista. Install the right one. Not the wrong one, not both.
  • After you’ve finished with the hotfix, remember to add the TcpAckFrequency registry key!

Good luck!

Downloads
Vista 32-bit – Windows6.0_KB935458_v2_x86.msu.zip
Vista 64-bit – Windows6.0_KB935458_v2_x64.msu.zip

EDIT: A few people were having issues downloading the files (getting garbled text instead of the download). I downloaded the files from thehotfixshare.net and put them back up, just in case something went awry on the server. They’re now zipped.

One other note – a post at thehotfixshare.net in the x64 section noted that “this is fix for non sp1 systems only”. If you’ve installed Vista’s Service Pack 1, these may not work, although if Microsoft included it in the SP1 update (no idea if they did or not), then you might be able to use the registry key. Just make sure you write down (or print) where you change the registry so that you can reverse the change if it doesn’t work and you lose network access or something.