Computer Software > Windows

the horrible nagle algorithm needs to die


Nagle algorithm which I think was something invented to aid asynchronous connections has long been something I havent liked.  Basically it prevents acknowledgement of every downloaded packet but instead is every other packet, this is to save upload bandwidth which is great for cable isp's and anyone who struggles with upload bandwidth.  The flipside is it hurts performance on things shifting small amount of data.

Since windows 8, microsoft no longer allow the setting to be toggled unless one has paid handsomly for either a server OS or the enterprise version. (I am not even sure the enterprise version can toggle it, as planning to test on my spare laptop).

Also a hotfix on windows 7 stopped the registry key that controls it from working as well.

It can be toggled freely on FreeBSD and MAC OS.

On linux it cannot be toggled however linux automatically disables it for small packets and enables it for large packets which is a very clever solution.

Interestingly tho there is a side affect of using hit man pro alert a security product.

This product loads a network driver which intercepts all traffic on the system, now this driver has caused me some issues, so I am not entirely a fan of it but it does inject NO_DELAY on all traffic meaning it disables nagle on windows.  The affect on things like ftp and ssh command line is very nice, but it can also be felt on web browsing.  Really baffling that this tech remains the default and microsoft wont allow it to be disabled. :(

Quite agree. The use cases for the Nagle Algorithm are specialised and it really does need to be possible to disable it. I didn't know about Microsoft’s behaviour in this respect.

I have confirmed one needs to use a windows server OS urrrgh.

On enterprise the same read only error pops up, I dug around some more and on serverfault someone posted a solution which involves creating a new net-transport, indeed get-nettransport shows only the default Internet transport to exist.  However when trying to create InternetCustom I got the server only response.  Running a server OS on a desktop to get the tweaks isnt really viable as various consumer software will refuse to run on server machines as a way to prevent business using cheaper consumer licenses.

So anyone wanting disabled nagle the way to get it to work is to use some kind of tunneling/proxy software and have that use the NO_DELAY flag as that flag is honoured.  I have decided because of all this to keep using hitman pro's network module so I get better network responsiveness.


[0] Message Index

Go to full version