Re: [tcpm] draft-eggert-tcpm-historicize-00

"Biswas, Anumita" <> Sun, 27 June 2010 18:19 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id B21AB3A6951 for <>; Sun, 27 Jun 2010 11:19:52 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.649
X-Spam-Status: No, score=-4.649 tagged_above=-999 required=5 tests=[AWL=-0.650, BAYES_50=0.001, RCVD_IN_DNSWL_MED=-4]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id QNAUw3KQP0Wz for <>; Sun, 27 Jun 2010 11:19:51 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 459B33A691B for <>; Sun, 27 Jun 2010 11:19:51 -0700 (PDT)
X-IronPort-AV: E=Sophos;i="4.53,492,1272870000"; d="scan'208";a="390644315"
Received: from ([]) by with ESMTP; 27 Jun 2010 11:19:45 -0700
Received: from ( []) by (8.13.1/8.13.1/NTAP-1.6) with ESMTP id o5RIJiPn025999; Sun, 27 Jun 2010 11:19:45 -0700 (PDT)
Received: from ([]) by with Microsoft SMTPSVC(6.0.3790.3959); Sun, 27 Jun 2010 11:19:44 -0700
X-MimeOLE: Produced By Microsoft Exchange V6.5
Content-class: urn:content-classes:message
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Date: Sun, 27 Jun 2010 11:19:44 -0700
Message-ID: <>
In-Reply-To: <>
Thread-Topic: [tcpm] draft-eggert-tcpm-historicize-00
thread-index: AcsVZZO4WFAaP+deTCaxlbWLLhKW7AAvV/Xw
From: "Biswas, Anumita" <>
To: Joe Touch <>,
X-OriginalArrivalTime: 27 Jun 2010 18:19:44.0816 (UTC) FILETIME=[518FA300:01CB1625]
Subject: Re: [tcpm] draft-eggert-tcpm-historicize-00
X-Mailman-Version: 2.1.9
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sun, 27 Jun 2010 18:19:52 -0000

Hi Joe,

> -----Original Message-----
> From: Joe Touch [] 
> Sent: Saturday, June 26, 2010 12:26 PM
> To:
> Cc:;; Biswas, Anumita
> Subject: Re: [tcpm] draft-eggert-tcpm-historicize-00
> wrote:
> >> The do not seek, nor did they find in the wild, a single 
> packet where 
> >> the CRC was valid and the TCP checksum was valid, but the 
> packet had 
> >> changed in contents.
> > 
> > Before going any further - did you really mean to write that?
> Yes. FWIW, the CRC I'm referring to above is the link CRC 
> (CRC32 for Ethernet).
> The only way a packet is accepted erroneously at a receiver, 
> but would cause an problem, would be:
> 	link check OK
> 	TCP (1s compl) checksum OK
> 	new checksum FAIL
> I.e., the only reason a new TCP checksum would be useful is 
> in this case. If either of the link or existing TCP checks 
> succeed, there's no new problem.
> Please see draft-ietf-tcpm-anumita-tcp-stronger-checksum-00, 
> e.g., in the abstract, or Sec 1. In fact, the case they're 
> considering is where real link errors occur that are not 
> detectable - not TCP/IP implementation errors or router 
> memory errors, as were the only ones seen in the wild in the 
> Sigcomm paper.
Although the draft specifically calls out link errors, the draft by no
means does not discard other sources of errors as are mentioned in those
papers and are also referenced in the draft. I think the only reason the
link errors were called out is because we *know* that is possible to
have bad cables that can have higher BER than advertised. It is very
hard to "detect" "undetectable" errors in the wild (actually by
definition itself) and that is why it is worrisome to me. Its only
possible to have a measurement like "Probability of undetected errors"
rather than "X is the number of the undetected errors" in such cases.  

I have heard only anecdotal evidence of a very large company doing very
large copies of data (about a Tera Byte) across a local network and then
finding bit corruptions in the data received on the other end - clearly
the link CRC and the TCP 1s compl summation checksum failed to catch
those errors. 
In my own company, I have seen a case where a very large block (1460
bytes - a packet size) of data was replaced and gone undetected and we
could not root cause the problem - the problem just disappeared after
showing up for a few weeks - but in this case, it is possible that the
corruption occurred before the data was sent by TCP itself. 

So to me, to hinge whether we support a new TCP CRC based checksum or
not, on practical experience in the wild, is probably not a safe
approach. Ofcourse, if we had multiple proven examples of this in the
wild, we'd feel more motivated to do this. 

Also, I am more worried about packet sizes greater than 1500 bytes -
where the Ethernet CRC checksum becomes weaker. Typical ethernet MTUs
across the internet does not exceed 1500 bytes today - so right now, the
problem scope is limited to Data Centers and other such local LANs where
the end to end PMTU is greater than 1500 bytes.

Based on comments from Richard Scheffenegger on the issue of
middleboxes, I am planning to upload a new version of the draft that
only checksums the data portion. 

I also think TCP is *the* place for a stronger checksum, so that upper
layers do not have to reinvent checksumming after rediscovering the
weaknesses of the lower layer "reliable" checksums. It also allows for
easy offloading to NICs as the TCP 16 bit checksum is offloaded today so
that software gets rid of the computational overheads of a stronger
checksum. It is much harder, almost impossible for an application layer
checksum to be offloaded off to NICs. As NIC vendors, for obvious
reasons, prefer only to offload standards based computation, and only in
case where performance matters hugely are ready to offload work like TCP
segmentation offload and receive side coalescing. 


> Joe