Q. We have an intermittent problem on one of our InterMapper servers. Sometimes we lose a lot of UDP packages for some devices and see bunches of this message in the Debug log:

XSocketUDP_Win.cp: sendto errno 10035 (0) (0)

XSocketUDP_Win.cp: sendto errno 10035 (0) (0)

XSocketUDP_Win.cp: sendto errno 10035 (0) (0)

XSocketUDP_Win.cp: sendto errno 10035 (0) (0)


The problem persists for a couple of hours but then disappears. Any idea what the cause could be and if anything can be done to prevent it from happening?

A. Basically, this error from the UDP sendto operation means that the OS could not complete the sendto operation. This generally means that there is no buffer space available at the OS level to queue the send. When (if?) buffer space clears up again, the operation eventually starts to complete again.

Another user provided an update for this topic:

After reading about how the Windows TCP/IP is designed I realized that raising the AFD default buffer sizes might help solving the problem and it did! AFD is the kernel-mode driver that is used to support Windows Sockets applications and an underlying layer to Winsock. The default AFD parameters are badly optimized in Windows 2003 to serve modern applications, especially those using UDP.

Solution was setting the DefaultRecieveWindow & DefaultSendWindow to 64512. Accomplished with following registry values follows by a system reboot:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters]
"DefaultReceiveWindow"=dword:0000fc00
"DefaultSendWindow"=dword:0000fc00

Currently monitoring 1586 devices with 1% cpu average core load, ~300kbps SNMP traffic on a gig wire

NOTE: We have not fully evaluated possible repercussions of this OS change and recommend caution if it is used. It is possible that hardware limits may be exceeded using these settings improperly, causing connectivity problems. Please evaluate any changes you make carefully.