Skip to main content
networking

CRC (Cyclic Redundancy Check)

CRC is an error-detection code used at Layer 2 to verify frame integrity. Ethernet uses CRC-32 in the Frame Check Sequence (FCS) trailer. CRC detects burst errors up to 32 bits long with 99.99% probability. NICs that receive frames with bad CRC discard them silently – incrementing an interface error counter.

Definition

Cyclic Redundancy Check computes a fixed-size polynomial remainder over frame data. Ethernet uses CRC-32 (polynomial 0x04C11DB7) computed over the entire frame excluding the preamble and FCS itself. The sender appends the 4-byte CRC as the Frame Check Sequence. The receiver computes CRC over the received data – if the remainder is not the expected constant, the frame is dropped. CRC-32 guarantees detection of: all single-bit errors, all double-bit errors, all odd-number-of-bit errors, any burst error up to 32 bits, and 99.99997% of longer burst errors. CRC is computed in hardware by the NIC at line rate. Frames with CRC errors appear as interface rx_crc_errors in ethtool statistics – persistent CRC errors indicate physical layer problems: bad cables, failing transceivers, electromagnetic interference, or dirty fiber connectors.

Examples

  • ethtool -S eth0 | grep crc – shows CRC error count
  • Persistent CRC errors on a port = replace the cable or clean fiber connectors
  • Wireshark captures include FCS if hardware and driver support it (rare – most strip FCS)

Related Protocols

Related Terms