Who knew TcpDelAckTicks only worked for Winsock 1.1? RRS feed

  • Question

  • We need a Windows application to interface with a device via TCP/IP and send it ACKs with no delay. So far, setting the following registry values did the trick:

    TcpDelAckTicks = 0

    TcpAckFrequency = 1

    For precise details, refer to www . speedguide . net/articles/windows-7-vista-2008-tweaks-2574.

    But when I changed the Winsock version required from 1.1 to 2.2, this stopped working: Winsock only acked after 200 ms, regardless of these settings.

    So why, do you ask, require 2.2 if 1.1 works just fine?

    The weirdness I described above happens on Windows XP SP2. We really want to operate on Windows 7. I am aware that Windows 7 requires a further setting of EnableWsd = 0 (in the Tcpip\Parameters). However, it does not seem to matter what value we give to WSAStartup on Windows 7, Winsock always behaves as Winsock 2.2 does on Win XP: it ignores the registry settings and acks after 200 ms.

    Can anyone shed light on the amazing difference between Winsock 1 and 2, on Win XP, and why it does not exist on Windows 7? More importantly, how do I get Winsock 1 behaviour on Windows 7?

    I noticed that a few gamers have been complaining on the net that they couldn’t make these registry settings work for them. The only replies they got were to set TcpDelAckTicks, TcpAckFrequency and EnableWsd appropriately. There has to be more to it than that.

    Thursday, October 4, 2012 1:23 PM

All replies

  • I should clarify an important point: in all cases the Winsock implementation used in Winsock 2 (including Winsock2.h and linking with Ws2_32.lib).

    It is only the version requested of WSAStartup that changes. All the socket function calls are the most basic you can imagine to get a TCP link going. So it is astounding that behaviour should be any different requesting any Winsock version. Moreover, the working configuration (by working I mean conforming to the specs regarding TCP settings TcpDelAckTicks and TcpAckFrequency), is the lower version 1.1, not 2.2!

    Friday, October 5, 2012 10:32 AM