|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: iSCSI: Nailing down CRC-32CIt is a typo - the text reads now 3b 00111011 - Julo Venkat Rangan <venkat@rhapsodynetworks.com> on 09-05-2001 06:30:43 Please respond to Venkat Rangan <venkat@rhapsodynetworks.com> To: Julian Satran/Haifa/IBM@IBMIL, ips@ece.cmu.edu cc: Subject: RE: iSCSI: Nailing down CRC-32C Julian, Is this example correct? How do we get the final "+1" is the last bit is '0'? > The generator polynomials for those digests are given in hex-notation, > for example 3a stands for 0011 1010 - the polynomial x**5+X**4+x**3+x+1. Venkat Rangan Rhapsody Networks Inc. http://www.rhapsodynetworks.com -----Original Message----- From: julian_satran@il.ibm.com [mailto:julian_satran@il.ibm.com] Sent: Saturday, May 05, 2001 9:21 AM To: ips@ece.cmu.edu Subject: Re: iSCSI: Nailing down CRC-32C The CRC part of the appendix (for 07) reads: The following table lists cyclic integrity checksums that can be negotiated for the digests and MUST be implemented by every iSCSI initiator and target. Note that these digest options have only error detection significance. +---------------------------------------------+ | Name | Description | +---------------------------------------------+ | crc-32C | 32 bit CRC | 11EDC6F41 | +---------------------------------------------+ | none | no digest | +---------------------------------------------+ The generator polynomials for those digests are given in hex-notation, for example 3a stands for 0011 1010 - the polynomial x**5+X**4+x**3+x+1. The generator polynomial selected is evaluated in [Castagnioli93]. When using the CRC the CRC register must be initialized to all 1s (0xFFFFFFFF) and the CRC bits must be complemented before transmission. Padding bytes, when presents in a segment covered by a CRC, have to be set to 0 and are included in the CRC. Regards, Julo Mark Bakke <mbakke@cisco.com> on 05-05-2001 00:13:09 Please respond to Mark Bakke <mbakke@cisco.com> To: IPS <ips@ece.cmu.edu> cc: Subject: iSCSI: Nailing down CRC-32C At the interim meeting, it was stated that iSCSI has selected the CRC-32C polynomial as its required iSCSI-level header and data CRC. Now that we have it, it's time to move on and make sure we can implement it. In the interest of interoperability, we need to not only specify the polynomial, but also the initial values, bit and byte ordering, etc. "A Painless Guide to CRC Error Detection Algorithms" (http://www.ross.net/crc/crcpaper.html) specifies a method to unambiguously characterize these parameters (sections 15 and 16). Has anyone taken a shot at defining these yet? Otherwise, here is what it might look like: Name : "CRC-32C" Width : 32 Poly : 1EDC6F41 (note that the leading "1" is implied) Init : FFFFFFFF RefIn : True RefOut : True XorOut : FFFFFFFF Check : ? I haven't attempted to create check data based on these yet. As soon as the other parameters are nailed down, we need to do this. Anyway, I am not a CRC expert, and can't make any statement about the above values being the "best" way to do this, but instead just copied them (except the polynomial itself) from the Ethernet CRC, since that is likely the easiest for everyone implementing hardware to deal with. If someone else is already doing this, let me know; I just wanted to start this thread so we can get closure. Regards, Mark -- Mark A. Bakke Cisco Systems mbakke@cisco.com 763.398.1054
Home Last updated: Tue Sep 04 01:04:45 2001 6315 messages in chronological order |