Wednesday, October 29, 2008

The Internet Connection TestingTool and enabling ECN in Windows Vista

I am alway looking for ways to speed up my PC and my internet connectivity. Being on Windows Vista has made life interesting. I happened upon the online Microsoft Internet Connection Tool. (ICT)

The ICT is a nifty tool that only runs on Windows Vista, and is mostly only for home networks though, to test your network and router and tell you what networking features your router supports. One feature it tested that I haven't had time to really look into or read about that is only in Vista and 2008 is called Explicit Congestion Notification. (ECN) The ICT report suggested under the Network Congestion portion that I turn ECN on to help speed up my connectivity.

I'm not quite sure I understood it correctly as to whether it was required at both endpoints (server and workstation) aka peers, or just within the router though, but I turned it on anyways after a little research. Now I am not advocating you do the same here, your mileage may vary and your network may not support it but here is more info anyways.

I came across a document at Microsoft outlining the new networking features of Windows Vista and Windows Server 2008. It is definitely worth taking the time to read it if you are able. So here is what this article says about ECN:

"When a TCP segment is lost, TCP assumes that the segment was lost due to congestion at a router and performs congestion control, which dramatically lowers the TCP sender’s transmission rate. With Explicit Congestion Notification (ECN) support (RFC 3168) on both TCP peers and the routers in the routing infrastructure, routers experiencing congestion mark the packets as they forward them. TCP peers receiving marked packets lower their transmission rate to ease congestion and prevent segment losses. Detecting congestion before packet losses are incurred increases the overall throughput between TCP peers. Windows Server 2008 and Windows Vista support ECN, but it is disabled by default. "

Ok, makes sense. How do I turn it on?

The article describes how you can enable ECN but not entirely correctly.

You must open an elevated command prompt and type:

netsh interface tcp set global ecncapability=enabled

(rerun the command changing enabled to disabled if something happens or you experience strange behavior and you need to turn ECN off)
You can verify the command worked by typing the following in the command prompt:
netsh int tcp show global

The article left off the fact that the command must be run from an elevated command prompt. (The easiest way to open an elevated command prompt in Vista is from the start menu. Go to accessories, command prompt and right click on it and choose run as administrator from the pop up context menu. )
The image on the left shows how to select the run as administrator to elevate the command prompt.

There is also a link at the end of the article to a 2006 article by "The Cable Guy" that is a pretty good in depth explanation of how ECN works. Check it out here:
For more things you can do with the Netsh command read this article.

Now I have noticed at least one anomally after turning ECN on though. For some reason I cannont access website. I don't know if other websites have this problem. I turned off ECN and I could get there. Weird.

No comments: