Re: TCP Checksum Interoperability

Lloyd Wood <l.wood@eim.surrey.ac.uk> Fri, 05 April 2002 22:13 UTC

Date: Fri, 5 Apr 2002 23:13:47 +0100 (BST)
From: Lloyd Wood <l.wood@eim.surrey.ac.uk>
X-X-Sender: eep1lw@phaestos.ee.surrey.ac.uk
Reply-To: Lloyd Wood <L.Wood@eim.surrey.ac.uk>
To: Rob Austein <sra+ietf@hactrn.net>
Cc: tcp-impl@grc.nasa.gov, <ietf@ietf.org>
Subject: Re: TCP Checksum Interoperability
In-Reply-To: <20020405213024.EE5C51CA1@thrintun.hactrn.net>
Message-ID: <Pine.SOL.4.43.0204052248210.5049-100000@phaestos.ee.surrey.ac.uk>
Organization: speaking for none
X-url: http://www.ee.surrey.ac.uk/Personal/L.Wood/
X-no-archive: yes
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Scanner: exiscan *16tbxu-0007fd-00*yjmz8Ri2Sbs* (SECM, UniS)
Sender: owner-tcp-impl@grc.nasa.gov
Precedence: bulk
Status: RO
Content-Length: 1878
Lines: 50

On Fri, 5 Apr 2002, Rob Austein wrote:

> --------At Fri, 05 Apr 2002 12:05:33 -0800, Joe Touch wrote:
> >
> > See my other post on this, as per RFC1624 section 3, only one state
> > (0x0000) is legal as the complement of the checksum of non-zero data.
> > TCP checksummed data must contain at least one nonzero word (the one
> > with the TCP header length, which must be >=20).
>
> RFC 1624 is (a) Informational,

It was written before BCP came into being with RFC1818. More accurate
to say that it's not standards-track... I imagine any update
today would be BCP.

> and (b) wrong on this point.  RFC 793
> just says that it's a one's complement sum and does not dictate the
> specific method by which it must be calculated.
>
> The implementation is
> free to subtract zero from the sum at any point in the calculation to
> prevent overflow (even if the particular value of zero chosen would
> happen to look like a very large number when considered as an unsigned
> value).  An implementation whose native word size is larger than 16
> bits is also free to first perform the summation then fold the results
> down to 16 bits by applying mod 0xFFFF.
>
> And yes, once upon a time, people wrote checksum code that worked this
> way, at least on PDP-10s at MIT.
>
> The point is not that I'd advise anyone to use these techniques in new
> code, just that they're completely legal given what the standard
> actually says, and that the robustness principle therefore suggests
> that we should accept the checksums they generate.

and RFC791 claims ttl is in seconds, ergo I don't have to decrement
ttl because I know my traffic is on paths less than a second
long.

Cool reasoning.

L.

> > The receiver is entirely justified in considering 0xffff as an error.
>
> I disagree, for the reasons given above.

<L.Wood@surrey.ac.uk>PGP<http://www.ee.surrey.ac.uk/Personal/L.Wood/>