Cell Relay Archive

Cell Relay Retreat>List Archive>month:1997-Jul> msg00107



[Date Prev][Date Next][Thread Prev][Thread Next]  
  [Date Index][Thread Index][Author Index][Subject Index]

Re: AAL5 CRC computation, where/how done?

  • From: "D. Mark Durrett" <mark_durrett@netedge.com>
  • Date: Wed, 23 Jul 1997 12:27:36 -0400

Hello Ken,

Your number 2 guess is closest.

The CRC calculation is usually done on the fly as a packet is being
reassembled.  This is performed byte-wise one cell at a time, and 
an intermediate value is stored in memory until the next cell belonging
to that PDU arrives.  When that cell arrives, the earlier intermediate
result is retrieved from memory (the lookup is based on the VC), loaded
into the CRC circuitry as a seed, and the current cell's bytes are run
throught the circuitry.  At the end of that cell, the new intermediate
value is stored back into memory.  Of course, this carries on until the
end of packet is reached, at which time the result is compared with the
CRC value appended to the PDU.

This entire operation is usually performed by the Segmentataion and 
Reassembly (SAR) chip on the adapter card.  This is one of many
operations which the Reassembly circuitry must perform on the fly. All 
such operations are based on a packet descriptor which is temporarily 
stored in the SAR's memory.  This descriptor is fetched each time a cell
with a VCI/VPI matching that descriptor arrives.   The descriptor
contains fields for such things as:
1. pointer to the start of a memory buffer (where the packet should be 
   placed in memory)
2. pointer to the location where the last byte of the previous cell was
   written (assuming one has already been received)
3. intermediate value of CRC.
4. maximum acceptable length of the PDU
5. reassembly timeout value
6. AAL type (if the SAR supports more than just AAL5)

I hope this helps you to understand the function better.

Cheers!

Mark

Ken Christensen wrote:
> 
> Can anyone tell me where and how the AAL5 packet (EPDU) CRC32 is
> computed in an ATM adapter?  Every AAL5 packet has a CRC32 appended to
> it before segmentation into cells.  On the receive side, after
> reassembly of the packet the CRC32 is checked before passing the packet
> "up".  I can see several ways to compute AAL5 packet CRCs...
> 
> 1) Have a separate AAL5 packet CRC circuit per each VC.  Yuck, lots of
> redundant hardware.
> 
> 2) Have a single CRC circuit and "context swap" the CRC circuit shift
> register value for each cell of a diffent VC.  Rather complex?
> 
> 3) Assemble the packet on the adapter and then compute the CRC when
> transfering to host memory.  OK, but this means lots of VC buffers on
> the ATM adapter are needed.
> 
> 4) Compute the CRC32 in software on the host.  Yuck.  This burns lots of
> host CPU cycles.
> 
> So, which one of the above is implemented in "typical" ATM adapters?
> Or, if none of the above... what is it?
> 
> Thanks!!!
> 
> ---
> Ken Christensen
> http://www.csee.usf.edu/~christen

-- 
**********************************************************************
	D. Mark Durrett		Phone:  919-991-9036
	NetEdge Systems Inc.    FAX:	919-991-9060
	P.O. Box 14993		e-mail: Mark_Durrett@NetEdge.com
	R.T.P, NC  27709	web:	http://www.netedge.com
**********************************************************************