Efficient computation of packet CRC from partial CRCs with application to the Cells-In-Frames protocol

A Cyclic Redundancy Check (CRC) code is used by many communications protocols for packet error detection. Computation of CRC for an entire packet is easily implemented in hardware if packets are transmitted and received in contiguous form. In an ATM network, packets are fragmented into cells and, in the case of multiple virtual circuits, their transmission is overlapped, resulting in non-contiguous packets. For non-contiguous packets with a 32-bit CRC (CRC-32), as in the case of ATM Adaptation Layer 5 (AAL5), an efficient algorithm for computing the CRC for an entire packet based on combining packet fragment CRCs (e.g., cell CRCs) is developed in this paper. In this algorithm, the network hardware generates cell or partial packet CRCs and the host system software combines these CRCs into a full packet CRC. Several important properties for CRCs are described and proved, and the correctness of the algorithm developed from these properties is then also formally proved. The algorithm has direct application to the proposed Cells-In-Frames (CIF) architecture for support of ATM AAL5 services on Ethernet. When implemented in software, the algorithm is shown to be significantly faster than a table-based software computation of packet CRC-32. The algorithm is also applicable to networking devices that need to change the contents of a packet and quickly recompute the packet CRC based only on the changed portions of the packet.

[1]  Michael Gutman A method for updating a cyclic redundancy code , 1992, IEEE Trans. Commun..

[2]  David R. Irvin,et al.  Preserving the Integrity of Cyclic-Redundancy Checks when Protected Text is Internationally Altered , 1989, IBM J. Res. Dev..

[3]  Dilip V. Sarwate Computation of cyclic redundancy checks via table look-up , 1988, CACM.

[4]  Peter Steenkiste,et al.  Buffer management and flow control in the Credit Net ATM host interface , 1995, Proceedings of 20th Conference on Local Computer Networks.

[5]  William Stallings,et al.  Data and Computer Communications , 1985 .

[6]  Brian Zill,et al.  Software support for outboard buffering and checksumming , 1995, SIGCOMM '95.

[7]  René J. Glaise,et al.  Fast CRC calculation , 1993, Proceedings of 1993 IEEE International Conference on Computer Design ICCD'93.

[8]  Shu Lin,et al.  Error control coding : fundamentals and applications , 1983 .

[9]  David Clark,et al.  An analysis of TCP processing overhead , 1989 .

[10]  Peter Steenkiste A systematic approach to host interface design for high-speed networks , 1994, Computer.

[11]  Grenville J. Armitage,et al.  Using the common LAN to introduce ATM connectivity , 1993, 1993 18th Conference on Local Computer Networks.

[12]  R. C. Dixon Cells-In-Frames: a system overview , 1996 .

[13]  Subrahmanyam Dravida Error control aspects of high speed networks , 1992, [Proceedings] IEEE INFOCOM '92: The Conference on Computer Communications.

[14]  Sadiq M. Sait,et al.  Hardware design and VLSI implementation of a byte-wise CRC generator chip , 1995 .

[15]  D.C. Feldmeier,et al.  Fast software implementation of error detection codes , 1995, TNET.

[16]  C. Dalton,et al.  Afterburner (network-independent card for protocols) , 1993, IEEE Network.

[17]  Jonathan M. Smith,et al.  Hardware/Software Organization of a High-Performance ATM Host Interface , 1993, IEEE J. Sel. Areas Commun..

[18]  Aram Perez,et al.  Byte-Wise CRC Calculations , 1983, IEEE Micro.

[19]  Charles A. Zukowski,et al.  High-speed parallel CRC circuits in VLSI , 1992, IEEE Trans. Commun..