Re: [2.0.x/2.1.x] Lots of ICMP error msgs

Andreas Kleen (ak@muc.de)
Tue, 30 Sep 1997 18:15:22 +0200


>
> Letting the chips fall where they may, I quote Andi Kleen:
> >I have seen them with broken Modems (especially ELSAs who got too hot)
> >or terminal servers (Ascend MAX). Strictly speaking it's against the RFC
> >anyways to log checksum errors. It's only enabled in 2.1. to catch bugs,
> >that it is enabled in the 2.0.x masquerading code is a bug IMHO. There are
> >many legitimate reasons why a packet might get corrupted.
>
> Oh, like the kernel mis-sequencing a packet. I know it's doing it, but I
> haven't had time to collect enough data to really prove it beyond the
> hardware (Intel has been known to report data incorrectly, but ...)

If you get a usable tcpdump log send it to netdev@nuclecu.unam.mx

>
> I have data to indicate the kernel getting or assembling the headers and
> data segments exactly TWO frames out of sequence. That has explained every
> csum (TCP csum) failure I have captured. I suspect it may be a wild race
> condition -- an interrupt at an odd time (those are kinda hard to localize.)

What do you mean with 'headers' and 'data segments' here? A bug in the IP-level
fragmentation or in the TCP reassembly algorithms? This probabality is very
low for both things: ICMP messages are never fragmented, so a fragment
reassembly bug can't cause this (in theory a very buggy, non rfc compliant
implementation could send fragmented ICMPs, but that's unlikely). TCP
packets are usually not fragmented neither, unless you're dealing with a
buggy implementation that doesn't do path mtu discovery properly (possible,
but unlikely). When the TCP segment reassembly has a bug it'll never
cause bad checksum messages, because TCP packets with a wrong checksum
are thrown away early and the reassembly algorithm never sees them. If there
really is a bug there it could be only catched by additional checksums
at the application level, but I know of no protocol who does this.

-Andi