Subject: RE: CRCs, Checksums and Error Detection

From: Marie-Jose Montpetit <[email-masked]>
Date: Fri, 10 Mar 2000 05:41:25 -0800

After the "stronger" in the last sentence maybe you want to add:

"...stronger to survive cluster of errors that can happen in many
subnetworks."

> -----Original Message-----
> From:	Phil Karn [SMTP:[email-masked]]
> Sent:	Thursday, March 09, 2000 11:29 PM
> To:	[email-masked]
> Subject:	CRCs, Checksums and Error Detection
> 
> 
> I just added this section in the "Reliability and Error Control" section.
> I will keep editing the LINK document, adding new text and comments as
> I get them, until tomorrow when I will send a snapshot to the ID editor
> with enough time to make the deadline... --Phil
> 
> The TCP, UDP and IP protocols all use a simple 16-bit 1's complement
> checksum algorithm to detect corrupted packets. The IP checksum
> protects only the IP header, while the TCP and UDP checksums protect
> both the TCP/UDP header and any user data. In TCP the checksum is
> mandatory while it is optional in UDP.
> 
> These checksums are not very strong from a coding theory standpoint.
> But they are easy to compute in software, and various proposals to
> replace them with stronger checksums have failed. Experience has shown
> that nearly all subnetworks that carry the Internet protocols have a
> very low undetected error rate, so the existing Internet checksums are
> rarely called upon to catch an error. Most of the errors caught by the
> Internet checksum are generally the result of hardware or software
> failure than of a subnetwork transmission error. This lowers the
> motivation to overcome the performance and especially the backward
> compatibility problems of a new, stronger Internet checksum.
> 
> The typical IP subnetwork implements an internal error detection code that
> discards packets failing this check instead of delivering them to
> the IP layer. A 16-bit cyclic redundancy check (CRC) is usually the
> minimum, and this is known to be considerably stronger than the 16-bit
> standard Internet checksum. The Point-to-Point Protocol (PPP) uses a
> 16-bit CRC, often in conjunction with the V.42bis error control
> provided in a typical dialup modem. 802.3/Ethernet uses a 32-bit CRC
> that is considerably stronger, and many subnetworks (notably dialup
> modem, mobile radio and satellite) also incorporate forward error
> correction, often in hardware.
> 
> Any new subnetwork designed to carry IP should therefore provide error
> detection at least as strong as a 16-bit CRC and preferably stronger.
> Note that while this will achieve a very low undetected packet error
> rate, this will not (and need not) achieve a very low packet loss rate
> as the Internet protocols are better suited to dealing with lost
> packets than with corrupted packets.