RE: [Tsvwg] SCTP Checksum Change to the IESG
"THALER,PAT (A-Roseville,ex1)" <pat_thaler@agilent.com> Mon, 06 May 2002 18:30 UTC
Received: from optimus.ietf.org (ietf.org [132.151.1.19] (may be forged)) by ietf.org (8.9.1a/8.9.1a) with ESMTP id OAA01681 for <tsvwg-archive@odin.ietf.org>; Mon, 6 May 2002 14:30:25 -0400 (EDT)
Received: (from daemon@localhost) by optimus.ietf.org (8.9.1a/8.9.1) id OAA11166 for tsvwg-archive@odin.ietf.org; Mon, 6 May 2002 14:30:32 -0400 (EDT)
Received: from optimus.ietf.org (localhost [127.0.0.1]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id OAA09653; Mon, 6 May 2002 14:02:24 -0400 (EDT)
Received: from ietf.org (odin [132.151.1.176]) by optimus.ietf.org (8.9.1a/8.9.1) with ESMTP id OAA09618 for <tsvwg@ns.ietf.org>; Mon, 6 May 2002 14:02:21 -0400 (EDT)
Received: from msgbas1.cos.agilent.com (msgbas1x.cos.agilent.com [192.25.240.36]) by ietf.org (8.9.1a/8.9.1a) with ESMTP id OAA29962 for <tsvwg@ietf.org>; Mon, 6 May 2002 14:02:13 -0400 (EDT)
Received: from msgrel1.cos.agilent.com (msgrel1.cos.agilent.com [130.29.152.77]) by msgbas1.cos.agilent.com (Postfix) with ESMTP id 91820B23E; Mon, 6 May 2002 12:02:19 -0600 (MDT)
Received: from axcsbh2.cos.agilent.com (axcsbh2.cos.agilent.com [130.29.152.144]) by msgrel1.cos.agilent.com (Postfix) with SMTP id D6158D5; Mon, 6 May 2002 12:02:13 -0600 (MDT)
Received: from 130.29.152.144 by axcsbh2.cos.agilent.com (InterScan E-Mail VirusWall NT); Mon, 06 May 2002 12:02:13 -0600
Received: by axcsbh2.cos.agilent.com with Internet Mail Service (5.5.2653.19) id <262C4BP2>; Mon, 6 May 2002 12:02:12 -0600
Message-ID: <1BEBA5E8600DD4119A50009027AF54A00BC00E94@axcs04.cos.agilent.com>
From: "THALER,PAT (A-Roseville,ex1)" <pat_thaler@agilent.com>
To: Jonathan Stone <jonathan@dsg.stanford.edu>, Tuexen Michael <Michael.Tuexen@icn.siemens.de>, 'Scott Bradner' <sob@harvard.edu>, dotis@sanlight.net, "'rrs@cisco.com'" <rrs@cisco.com>, john.loughney@nokia.com, tsvwg@ietf.org
Cc: "THALER,PAT (A-Roseville,ex1)" <pat_thaler@agilent.com>
Subject: RE: [Tsvwg] SCTP Checksum Change to the IESG
Date: Mon, 06 May 2002 12:02:04 -0600
MIME-Version: 1.0
X-Mailer: Internet Mail Service (5.5.2653.19)
Content-Type: text/plain; charset="iso-8859-1"
Sender: tsvwg-admin@ietf.org
Errors-To: tsvwg-admin@ietf.org
X-Mailman-Version: 1.0
Precedence: bulk
List-Id: Transport Area Working Group <tsvwg.ietf.org>
X-BeenThere: tsvwg@ietf.org
Dear Jonathan, Getting data to and from a NIC generally involves going through a FIFO crossing a clock boundary and some engineers design this crossing poorly resulting in a circuit that occasionally passes the wrong data. It is certainly possible to design the circuit so that it performs well and does not exhibit this behavior. I've seen plenty of hardware that does it right. I don't think that the statistic of 1 in 10,000 internet frames having a TCP checksum error and a good Ethernet CRC indicates anything about the prevalence of this kind of NIC error. Frames pass through middle boxes such as routers where they are not covered by CRC and some portion of the errors are occurring there. I know of cases where a middle box had internal bugs that occasionally corrupted the data. Even if this kind of error is a concern, I don't see how it is helped by returning a CRC calculated by the checker. The concern in the existing draft seems to center on the checker, but the hardware calculating the CRC to send with the packet is equally likely to make an error as the checker receiving the packet. Whatever text is developed should deal with both equally. Probability of an undetected error due to an error by the CRC checker in the NIC is: Pneterr * Pnicerr * Pcrcmatch where Pneterr is the probability of an error to the packet on the network Pnicerr is the probability that the NIC makes an error in the data over which it calculates the CRC Pcrcmatch is the probability that the CRC calculated over data with errors matches the received CRC. As long as the probability of an error in the NIC CRC checker is much less than one, this is much smaller than the probability of an undetected error due to errors on the network alone which would be: Pneterr * Pcrcmatch Since undetected errors by the CRC checker will be quite rare, an audit is highly unlikely to catch the problem. The most significant problem caused by errors in CRC offload hardware would be errors in CRC generation. If the CRC generator makes an error and the retransmissions continue to use the same CRC rather than recalculating it, then the frame will continue to get rejected. The secondary problem is that errors in CRC checking will occasionally cause good frames to fail the CRC check. I can see retaining the received CRC because it allows software to do a double check that a packet which the hardware says failed CRC check really did fail. I can see making the number of bytes processed through the CRC generator and checker available to software (which I assume is what was meant by "buffer size" in the draft), because a synchronizer error normally results in processing extra bytes or dropping some bytes. If so, "buffer size" should be changed to something like "number of bytes over which the CRC was computed not including the received CRC" and should also be applied to the generator. Buffer size in hardware often has little or no relationship to frame size. I can't see any purpose served by retaining the result calculated by the CRC checker especially since that result will vary unless CRC checker implementations are needlessly constrained. Regards, Pat Thaler -----Original Message----- From: Jonathan Stone [mailto:jonathan@dsg.stanford.edu] Sent: Friday, May 03, 2002 2:02 PM To: Tuexen Michael; 'Scott Bradner'; dotis@sanlight.net; 'rrs@cisco.com'; john.loughney@nokia.com; tsvwg@ietf.org Cc: pat_thaler@agilent.com Subject: Re: [Tsvwg] SCTP Checksum Change to the IESG Dear all, Michael Tuexen and I have discussed the contentious text offline at some length. One example we addressed is a NIC with TCP checksum assist in hardware. The checksum assist in that NIC will occasionally deliver incorrect TCP checksum indications for packets smaller than the minimum Ethernet segment. I hesitate to say such bugs are commonplace, but they certainly aren't' rare: both in current, shipping server-class hardware and in the previous generation of bugs. The open-source community device drivers show the history of first enabling TCP checksum assist, then disabling, then finding workarounds or diagnostic tests which are cheaper than the alternative: deciding the checksum-assist hardware is busted, and ignoring it altogether. That is what the contentious text is saying. It is not saying *anything* about how a hardware CRC assist should compute the CRC. It *is* saying that hardware assists for SCTP must provide some additional ``audit-trail'' information on what the hardware really did. We can call that information ``CRC assist framing'': since it leaves a record of where the CRC hw took its checksum value; the length of the CRC computation; and the final result. That said, here's an attempt at some text which explains when, and where, and why, that audit information is necessary: ----- Errors in NICs and in outboard checksum acceleration have, historically, been commonplace. This document requires that hardware assists for the SCTP CRC provide more information than a single CRC-GOOD/CRC-NOT-GOOD bit. Suppose that some particular NIC (or model of NIC) will occasionally give incorrect `CRC-GOOD' status for packets that are in fact damaged. In this scenario, GOOD/NOT-GOOD implementations give the SCTP software no recourse but to ignore the CRC assist entirely, and recompute the CRC of every packet in software. This extra ``CRC-assist framing'' information gives software the option to apply a cheaper audit of the CRC assist result based on the framing, before resorting to a software CRC. Such checks are commonplace in the installed base of TCP stacks using hardware- assisted TCP checksum. Moreover, the CRC hardware assist, its associated NIC, and the NIC device-driver will in practice often be provided by a different vendor than is the SCTP stack. To ensure that the desired CRC-assist audit trail crosses the NIC-vendor/SCTP-stack-vendor boundary, this additional information is [currently] specified as a MUST. ----- That isn't quite up to snuff for an I-D, but it will be soon:) and it gets the idea across. I hope Michael Tuexen will repost (or give me permission to repost) an excerpt of our discussion. I'm hoping that together, those will resolve most of the contentiousness. An anecdote: when I gave a talk on the background data at SIGCOMM 2000 in Stockholm, it was a hardware person (not a software guy) who commented that there was a `right' way and a `wrong' way to do checksum-offload assists; and that the one-bit GOOD/NOT-GOOD result was a bad way which should be discouraged. For pretty much the reasons I give here, and of which I walked through an explicit example with Michael. (To be fair, this was in a context of presenting data showing that some 1 in 10,00 frame in the Internet pass their Ethernet CRC, but fail the TCP checksum -- often in circumstances which point squarely at bugs in NICs.) Even so, I'm surprised that this has been so contentious. --Jonathan _______________________________________________ tsvwg mailing list tsvwg@ietf.org https://www1.ietf.org/mailman/listinfo/tsvwg _______________________________________________ tsvwg mailing list tsvwg@ietf.org https://www1.ietf.org/mailman/listinfo/tsvwg
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- [Tsvwg] SCTP Checksum Change to the IESG Scott Bradner
- RE: [Tsvwg] SCTP Checksum Change to the IESG Scott Bradner
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- RE: [Tsvwg] SCTP Checksum Change to the IESG john.loughney
- Re: [Tsvwg] SCTP Checksum Change to the IESG Brian F. G. Bidulock
- RE: [Tsvwg] SCTP Checksum Change to the IESG Scott Bradner
- RE: [Tsvwg] SCTP Checksum Change to the IESG john.loughney
- RE: [Tsvwg] SCTP Checksum Change to the IESG Tuexen Michael
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- Re: [Tsvwg] SCTP Checksum Change to the IESG Brian F. G. Bidulock
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- Re: [Tsvwg] SCTP Checksum Change to the IESG Michael A. Ramalho
- Re: [Tsvwg] SCTP Checksum Change to the IESG Brian F. G. Bidulock
- RE: [Tsvwg] SCTP Checksum Change to the IESG Tuexen Michael
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- RE: [Tsvwg] SCTP Checksum Change to the IESG THALER,PAT (A-Roseville,ex1)
- RE: [Tsvwg] SCTP Checksum Change to the IESG Scott Bradner
- Re: [Tsvwg] SCTP Checksum Change to the IESG Michael A. Ramalho
- Re: [Tsvwg] SCTP Checksum Change to the IESG Scott Bradner
- RE: [Tsvwg] SCTP Checksum Change to the IESG Lloyd Wood
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- RE: [Tsvwg] SCTP Checksum Change to the IESG pat_thaler
- Re: [Tsvwg] SCTP Checksum Change to the IESG Qiaobing Xie
- RE: [Tsvwg] SCTP Checksum Change to the IESG THALER,PAT (A-Roseville,ex1)
- RE: [Tsvwg] SCTP Checksum Change to the IESG pat_thaler
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- Re: [Tsvwg] SCTP Checksum Change to the IESG Qiaobing Xie
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- Re: [Tsvwg] SCTP Checksum Change to the IESG Jonathan Stone
- Re: [Tsvwg] SCTP Checksum Change to the IESG Michael Tuexen
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- Re: [Tsvwg] SCTP Checksum Change to the IESG Brian F. G. Bidulock
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- Re: [Tsvwg] SCTP Checksum Change to the IESG Randall Stewart
- Re: [Tsvwg] SCTP Checksum Change to the IESG Brian F. G. Bidulock
- Re: [Tsvwg] SCTP Checksum Change to the IESG Brian F. G. Bidulock
- RE: [Tsvwg] SCTP Checksum Change to the IESG Douglas Otis
- RE: [Tsvwg] SCTP Checksum Change to the IESG THALER,PAT (A-Roseville,ex1)