Running Redhat Linux 6.2 on a Compaq Deskpro with 3Com NIC.
Ping a Cisco (or other device that can reply to ICMP).
If you send: ping 220.127.116.11 -s 100
If you send: ping 18.104.22.168 -s 101
It fails. Some protocol tracing reveals that the Linux box is incorrectly
computing the ICMP packet checksum, and the Cisco is dropping the packet.
This actually happens with all ICMP packets with an ODD SIZE PAYLOAD.
I wasn't able to reproduce this on RH6.0, RH6.2 or RH7.0. Are you sure your Cisco isn't
misbehaving? For example, could there be some kind of 'drop too big pings' issue there?
FWIW, using kernel-2.2.16-3 (and up) here.
Nope. I used a Sniffer(TM) device set up for Ethernet to snoop on the frames
coming out of my linux box. Each ICMP packet that was captured was reported as
having a correct TCP header checksum, but each packet with odd sized payload
was being flagged as having an incorrect ICMP checksum by the Sniffer, and was
being dropped by the Cisco. I attached the linux box to other devices where I
can force it to ignore checksum vlaues, and all sizes worked o.k. I also tried
it for a range of sizes, from 64-10001 bytes. All odd sizes were computed
wrong. I'm looking to blame drivers for my ethernet hardware, but I'm going to
look through the ping checksum routine as well.
I'm running Red Hat (Hedwig) 2.2.5-15 Kernel
There was an odd-byte checksum problem fixed in ping. The ping in
fixes the odd-byte checksum problem (and several things).