ietf
[Top] [All Lists]

RE: TCP Checksum Interoperability

2002-04-05 13:53:33
I'm cross-posting this thread to tcp-impl(_at_)grc(_dot_)nasa(_dot_)gov for 
archival
purposes, we'll see if any further replies to the ietf list get posted at
tcp-impl(_at_)grc(_dot_)nasa(_dot_)gov too (for instructions to join tcp-impl, 
see below). My
rationale here is just to try and keep tcp-impl as a good source of material
on tcp/ip implementation issues. It seems you can't post to
'tcp-impl(_at_)egroups(_dot_)com' (see also below for discussion on this group).

Sorry, Chris, forgot to copy you on this.

Aloha

Mike Smith
CTO, iReady

To: ietf(_at_)IETF(_dot_)ORG
Subject: Re: TCP Checksum Interoperability
From: Rob Austein <sra+ietf(_at_)hactrn(_dot_)net>
Date: Fri, 05 Apr 2002 14:29:44 -0500
In-Reply-To: <F86F34FDF1F9D411B7A40008C74C27B853776C(_at_)baltimore(_dot_)com>
References: <F86F34FDF1F9D411B7A40008C74C27B853776C(_at_)baltimore(_dot_)com>
Reply-To: ietf(_at_)IETF(_dot_)ORG
Sender: owner-ietf(_at_)IETF(_dot_)ORG
User-Agent: Wanderlust/2.4.1 (Stand By Me) SEMI/1.13.7 (Awazu) FLIM/1.13.2
(Kasanui) Emacs/20.7 (i386--freebsd) MULE/4.0 (HANANOEN)

----------------------------------------------------------------------------
----

The last time this came up for a TCP implementation I used to
maintain, our interpretation of Robustness Principle applied to this
problem dictated that we shouldn't send segments with checksum fields
set to all ones (that is, we shouldn't send ~(+0)), but that we had to
accept either ~(+0) or ~(-0) in received segments.

Strictly speaking, either zero state is completely legal, but one is
(apparently) more surprising to most implementors than the other, due
to the implementation techniques that suggest themselves on most
modern processors.



-----Original Message-----
From: Michael Smith
Sent: Friday, April 05, 2002 10:39 AM
To: 'tcp-impl(_at_)egroups(_dot_)com'
Cc: Michael Smith
Subject: RE: TCP Checksum Interoperability


Lloyd: your comment is interesting.

I know there hasn't been much activity on tcp-impl, but it's still there.
Allison sent an email a while back encouraging it's use, but I can't find
that just now.

To subscribe (or unsubscribe) to the tcp-impl mailing list, send mail to
majordomo(_at_)grc(_dot_)nasa(_dot_)gov with one of the following in the body 
of the message.


subscribe tcp-impl

unsubscribe tcp-impl

There's also http://groups.yahoo.com/group/tcp-impl/ but activity there
stopped about July 2001. I never understood how the two mailing lists
related, but I posted your mail (below) to both, I hope you don't mind.

Aloha

Mike Smith
CTO, iReady

-----Original Message-----
From: Lloyd Wood [mailto:l(_dot_)wood(_at_)eim(_dot_)surrey(_dot_)ac(_dot_)uk]
Sent: Friday, April 05, 2002 4:43 AM
To: Chris Trobridge
Cc: ietf(_at_)ietf(_dot_)org
Subject: Re: TCP Checksum Interoperability


See sections 3-5 of RFC1624 for discussion of the one's complement
problem for the IP header checksum. I presume similar applies for TCP,
although I don't know offhand if it's written down anywhere.

L.


On Fri, 5 Apr 2002, Chris Trobridge wrote:

I writing to this list because the TCP workgroup was shutdown a while ago.

We have a compatibility problem between two third party implementations of
the TCP checksum.

The problem concerns the representation of zero, which has two 1-s
complement representations (0000 and ffff).

We don't have source to either stack but I managed to deduce the problem
from looking at a packet trace.  The receiver drops all datagrams
containing
a TCP with a TCP checksum of ffff.

The receiver appears to be following the checksum procedure in the RFC
literally - ie zero checksum, recalculate and check that the result is the
complement of what the sender sent.  The problem is that the sender and
receiver don't agree about zero and hence the datagram is dropped
silently.

My view is that the receiver is in error; it should be checking the
special
case of 0.

All the receiver code I have seen doesn't work this way.  The normal
approach is to calculate the1-s complement sum with checksum in place and
check that this is zero.  The methods I konw always return just one
representation for zero, hence there is no special case.

Any thoughts?

Thanks,
Chris



stupid autoappended signatures below.



----------------------------------------------------------------------------
-------------------------------------
The information contained in this message is confidential and is intended
for the addressee(s) only.  If you have received this message in error or
there are any problems please notify the originator immediately.  The
unauthorized use, disclosure, copying or alteration of this message is
strictly forbidden. Baltimore Technologies plc will not be liable for
direct,
special, indirect or consequential damages arising from alteration of the
contents of this message by a third party or as a result of any virus
being
passed on.

In addition, certain Marketing collateral may be added from time to time
to
promote Baltimore Technologies products, services, Global e-Security or
appearance at trade shows and conferences.

This footnote confirms that this email message has been swept by
Baltimore MIMEsweeper for Content Security threats, including
computer viruses.



<L(_dot_)Wood(_at_)surrey(_dot_)ac(_dot_)uk>PGP<http://www.ee.surrey.ac.uk/Personal/L.Wood/>


-
This message was passed through 
ietf_censored(_at_)carmen(_dot_)ipv6(_dot_)cselt(_dot_)it, which
is a sublist of ietf(_at_)ietf(_dot_)org(_dot_) Not all messages are passed.
Decisions on what to pass are made solely by Raffaele D'Albenzio.