[e2e] Ethernet CRC

dfriedman at hns.com dfriedman at hns.com
Fri Nov 2 09:08:43 PST 2001


One of the justifications I've heard for there being no checksum in the
IPv6 header is the presence of link-layer error detection.  Thinking about
this, I've developed a question regarding cyclic redundancy checks (CRCs)
and Ethernet--please tell me if I should redirect my question to another
venue (and please suggest which one).

A CRC is specified by a generator polynomial which corresponds to an (n,k)
cyclic code, where k is the number of "information" bits and n is the
length of the resulting codeword. In practice, fewer than k bits might be
protected by a CRC, but this is OK since the resulting construct of at most
k information bits and the CRC represents a code with error detecting
capabilities at least as good as those of the original (n,k) code.

But, what if try the same CRC on some much larger number of bits, K>k?
The original (n,k) code would then be lengthened to an (N,K) code where N
= n + (K-k).  However, this code wouldn't necessarily be cyclic, and so it
wouldn't necessarily have all the great error-detecting capabilities of the
original (n,k) code.

I particularly wonder about the CRC for Ethernet-- (n,k) for the CRC used
in Ethernet is (1023,991) [according to Table 5.6.5 of "Applied Coding and
Information Theory for Engineers" by Richard B. Wells].  That is, it seems
the CRC in Ethernet is designed to protect at most 991 bits--much less than
the 1514  *bytes* of a maximal length Ethernet frame.

What am I missing here?  (I'm not claiming at all that IPv6 without a
checksum doesn't work, I'd just like to understand the Ethernet CRC.)

Many thanks,
--daniel







More information about the end2end-interest mailing list