Possible networking bug in Win2008R2: tcp checksums in keepalives with timestamps
I think I've found a bug in Windows 2008R2: tcp keepalive packets with timestamps have an invalid checksum. I use JDBC to connect from a Linux host to MS SQL Server 2008 on a Win2008R2 host. I execute a long-running statement that doesn't return a result set, and so Win2008 sends a tcp keepalive at 30 seconds. This keepalive is ignored by the Linux host, and after sending 9 more keepalives at one second intervals, Win2008 resets the connection. When I run the same statement against SQL Server on Win2003, it completes successfully. When I disable timestamps on the Linux machine (which induces the Win2008 host not to use timestamps), the statement also completes successfully. I captured packets on the Linux host (which gets around the checksum offloading problem), and found that when tcp timestamps are included in keepalives, the checksums are invalid. Other packets from the Win2008 host with timestamps have good checksums. Win2003 doesn't include tcp timestamps, and its keepalives are ACKed. You can see the packet dumps here: Win2008 keep-alives with tcp timestamps: bogus checksums http://pastebin.com/v6CpteJ9 Win2008 keep-alives without timestamps: valid checksums http://pastebin.com/a0zTBEJL Win2003 keep-alives without timestamps: valid checksums http://pastebin.com/KVLb3Mzh Before I realized the checksums in the keepalives were invalid, I pursued the question as a possible Linux kernel bug: http://marc.info/?t=130763385400001&r=1&w=2 I thought you might like to know. Chuck
June 13th, 2011 12:02pm

Hi, We'd like to repro this scenario internally. Can you tell us the application which runs on the Linux machine including steps? Let me know if you have more questions around this. Ketan Thakkar | Microsoft Online Community Support
Free Windows Admin Tool Kit Click here and download it now
June 24th, 2011 12:26am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics