Re: [TERNLI] Forwarding corrupt packets

Joe Touch <touch@ISI.EDU> Fri, 01 September 2006 14:07 UTC

Received: from [] ( by with esmtp (Exim 4.43) id 1GJ9fu-0007bo-CL; Fri, 01 Sep 2006 10:07:14 -0400
Received: from [] ( by with esmtp (Exim 4.43) id 1GJ9fu-0007bj-4s for; Fri, 01 Sep 2006 10:07:14 -0400
Received: from ([]) by with esmtp (Exim 4.43) id 1GJ9fs-0006x3-Q6 for; Fri, 01 Sep 2006 10:07:14 -0400
Received: from [] ( []) by (8.13.8/8.13.6) with ESMTP id k81E6puO008530; Fri, 1 Sep 2006 07:06:51 -0700 (PDT)
Message-ID: <>
Date: Fri, 01 Sep 2006 07:06:44 -0700
From: Joe Touch <touch@ISI.EDU>
User-Agent: Thunderbird (Windows/20060719)
MIME-Version: 1.0
To: Michael Welzl <>
Subject: Re: [TERNLI] Forwarding corrupt packets
References: <>
In-Reply-To: <>
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig7BDC9AB1A9789789F26B9258"
X-ISI-4-43-8-MailScanner: Found to be clean
X-Spam-Score: 0.0 (/)
X-Scan-Signature: 4b800b1eab964a31702fa68f1ff0e955
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: Transport-Enhancing Refinements to the Network Layer Interface <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>

Michael Welzl wrote:
> Hi all,
> Here's an idea for a potentially useful message that
> could be exchanged between end systems and the inner
> network:
>>From transport end point to network:
> "Corruption Acceptable (CA)" (meaning that it would be
> preferrable to forward packets that are corrupt rather
> than drop them)
>>From network to transport end point: "Corruption
> Forwarding supported (CF)"
> Purpose: help the end system decide whether to use
> UDP-Lite, or partial checksums in DCCP, or the
> Data Checksum option in DCCP.

Why does the _network_ need to know about these? The network doesn't
check (or shouldn't check) transport checksums.

The only reason the network would think a packet is corrupt:

1) bad net checksum (e.g., IPv4)

2) bad link checksum

In both cases, the destination address is not trusted anymore, so you're
potentially sending the corrupt packet to the wrong _place_. If you
can't send it the right place, then why are you sending it?

This isn't a new issue; it's one of the reasons for the partial checksum
in lite/DCCP - but also why it should be only over the _data_ portion.

In those conditions, you might end up with one e2e-pair causing a
separate endpoint to throttle-back thinking its packets are corrupted.
That cross-contamination seems like a sufficient reason not to do this.

IMO, partial transport checksums are useful only where the header
checksum is still valid; otherwise, there's no point in interpreting the
header at all.