Hi All
I had a case where the uTasker project was not operating correctly together with a PC running Vista. Thinking that it must be due to an incompatibility with the simulator somewhere I offered to debug it (not actually using Vista myself just yet). It turned out to be due to the fact that the PC was not sending a check sum in its transmitted IP frames (sending 0x0000 in place) and so all IP frames to the uTasker simulator were being rejected.
Strangely it was not doing this to all connections - which I didn't managed to understand - but it turned out that there is a setting in Vista for the characteristics of the network adapter which allows IPV4 offload settings to not work with the check-sum of rx, tx or both direction of IP frames. This offload setting was enabled and disabling it solved the issue.
I am not entirely sure whether it was an incorrect setting for the network card or whether someone had been playing around with it but I didn't find anything similar on my XP based PC.
The reasons for this feature (including pros and cons) can be discovered at the following link:
http://en.wikipedia.org/wiki/TCP_Offload_EngineSearching the Internet for more references turned up a lot of cases of unreliability or intermittent Internet problems which were eventually tracked down to these settings - so it may be good to know about them just in case.... in fact a few cases do spring to mind which were quite similar: ARP works correctly since it is not built on IP so the ARP entry is seen, but communication just isn't possible.
Regards
Mark
Follow-up:
On a new Vista PC I had a problem but didn't see that any checksums were missing. Well, not using Ethereal on the network, but the simulator was really receiving 0x0000 in place fo the IP checksum (presumable because WinPCap is sniffing before and hardware which is adding this).
The minimum setting change can be performed by:
- System -> network connections -> NIC configuration -> Characteristics -> Configuration -> Extended -> IPV4 Checksum offload -> change from "
Rx & Tx Enabled" to "
Tx Enabled"
Additional note: there are in fact settings for different protocols too. (TCP and UDP) For example I found that NETBios was not working correctly when simulator (but stangly was to other devices on the network). Looking more closely it was evident that the UDP check-sum was being sent incorrectly (although the IP check-sum was OK). After disabling rx and tx offloading for UDP it worked correctly.