|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: iSCSI CRC: A CRC-checking example
Vince & all,
I've added some statement about order (byte and bit) to the draft (you have
probably missed that piece of the mail).
I could be more graphic and less explicit as in SPI but I think that won't
help too much.
People did it for ethernet for years without too much ado.
And don't complain to me - IBM did consistent bit ordering for years
(Big-endian). IBM even sent ASCII big endian (nobody else did and we had
to recode for VT100 access).
As for what to choose - It seems that we are in an are where almost
everybody does it now in this crazy way.
I strongly suspect that this was also the reason for the way SPI does it.
They have gone all the way to acommodate
x86 byte ordering in registers - so that the revert the bytes before
calculating -and do this on a parallel bus!
360 was certainly the last bastion of regularity.
Regards,
Julo
"CAVANNA,VICENTE V (A-Roseville,ex1)" <vince_cavanna@agilent.com> on
22-08-2001 20:42:50
Please respond to "CAVANNA,VICENTE V (A-Roseville,ex1)"
<vince_cavanna@agilent.com>
To: Julian Satran/Haifa/IBM@IBMIL, "'Mark Bakke'" <mbakke@cisco.com>
cc: "CAVANNA,VICENTE V (A-Roseville,ex1)" <vince_cavanna@agilent.com>,
Pat.Thaler@d12relay01.de.ibm.com, ips@ece.cmu.edu
Subject: RE: iSCSI CRC: A CRC-checking example
Julian and Mark and others,
After I took into account the bit "reflection" and the byte order (Big
Endian on Bytes and Little Endian on bits) I did finally obtain, using
polynomial math, the (corrected) results you show in the CRC examples. The
results have also been confirmed independently by an implementor here at
Agilent.
I am the one who originally suggested to Julian that we specify the CRC
algorithm the same way as in ethernet even though for iSCSI it is not
really
important to initialize the CRC register to all 1s and to complement the
CRC
before transmission since there are other means to detect extra or missing
PDU bytes. However I had not realzied until recently that conformance with
the ethernet algorithm implies bit reflection. I had not been aware that in
ethernet the bits are sent out on the serial link with the least
significant
bit first AND that the corresponding message polynomial is formed from the
bits in the sequence that they appear on the serial link; thus the need for
bit "reflection".
Now that I understand the need for bit reflection (taken into account in
the
rocksoft parameterized CRC generator by setting the in and out reflection
flag parameters to TRUE) I am not sure I agree that we want it in iSCSI.
The
penalty for full conformity with ethernet seems too great. If people feel
strongly that we must keep the bit reflection I think that to make the
existing documentation clear and unambiguous we would need to explicitly
show the mapping of bits in the iSCSI PDU to coefficients of the message
polynomial that represents the iSCSI PDU. We would also need to show the
mapping of the CRC bits to the coefficients of its representative
polynomial.
If you don't agree I will elaborate further later this week to try to
convince you. My objective is to be able to easily and unambiguously
describe the polynomial math behind the algorithm; right now, with the bit
reflection and without the explicit mapping it is awkward.
Vince
Home Last updated: Tue Sep 04 01:03:56 2001 6315 messages in chronological order |