|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: I-D ACTION:draft-cavanna-iscsi-crc-vs-cksum-00.txt
Julian,
The memory referencing technique used to compute CRC without processing each
bit separately requires two accesses to memory, one for the data being
processed and once again for a translation against this data, an index into
a table as you have described. In the C code it looks as if there is a
single memory reference and perhaps this is your confusion. As memory runs
at a slower rate than instructions for any looping algorithm, such access
was my concern regarding your statement about Alder-32 and CRC-32 having
equivalent overhead. For any confusion that I have caused in expressing
this opinion, I am sorry.
Here is an example using a 256 byte table but should provide an
understanding why 64k tables are desired as you indicated:
unsigned char* dat_buf;
unsigned long crc_syn = 0xffffffff;
while(length--)
crc_syn = (crc_syn >> 8) ^ crc32_table[(crc_syn & 0xff) ^ *dat_buf++];
return (crc_syn ^ 0xffffffff);
Doug
> Doug,
>
>
> There is no lookup in CRC computation.
>
> A table entry (indexed by the code) is used in computation.
>
> I would appreciate if you would not spread confusion.
>
> Julo
>
>
>
> "Douglas Otis" <dotis@sanlight.net> on 04/03/2001 18:58:27
>
> Please respond to "Douglas Otis" <dotis@sanlight.net>
>
> To: ips@ece.cmu.edu
> cc:
> Subject: RE: I-D ACTION:draft-cavanna-iscsi-crc-vs-cksum-00.txt
>
>
>
>
> Julian,
>
> Errors being detected are not created by a media defect or an impulse on a
> serial line. CRC serial burst error detection will be in place on the
> serial medium so focus on burst errors seems misplaced. Also,
> CRC requires
> a relatively expensive lookup compared to an algorithm that only accesses
> data being checked. I would not be surprised the difference running 2:1
> for
> most architectures. The suggestion by John Howard sounds interesting for
> small regions of less than 512 bytes.
>
> Doug
>
> > John,
> >
> > We all due respect I disagree with both your statements:
> >
> > - CRC is not expensive in software if you are willing to spend some
> memory
> > for tables
> > and literature about how to do it is abundant.
> >
> > - Adler and Fletcher are weak and there is no theory behind your
> > distribution statements, nor any simulation results as far as I
> know. We
> > found that on very simple sequences the Hamming distance gets
> > down to 2 (or
> > lower) and the burst protection is probably not better than 16 bit.
> There
> > is even a simple formula for what sequences will get you false
> codes (see
> > bellow for a reference)
> >
> > - CRC gets you alway a 32 bit burst protection and that makes for a very
> > low probability for undetected burst and a guaranteed Hamming
> > distance of 3
> > (or higher blocks up to 2k). There seems to exist also a class of
> > CRCs that
> > are excellent for very long blocks with distances higher than 4.
> >
> > Computing the undetected error probability was never published
> > for Adler or
> > Flletcher and adding thhis to the lack of theoretical background make it
> a
> > very poor choice for a data storage platform.
> >
> >
> > If you want some theory background please read:
> >
> > http://www.haifa.il.ibm.com/satran/ips/draft-sheinwald-iSCSI-CRC-00.txt
> >
> >
> > You will find there both theoretical references and CRC implementation
> > references that include even code.
> > We are planing to update it with some newer CRCs.
> >
> > Regards,
> > Julo
> >
> >
> > John H Howard <jhh@sun.com> on 02/03/2001 15:42:25
> >
> > Please respond to John H Howard <jhh@sun.com>
> >
> > To: Douglas Otis <dotis@sanlight.net>
> > cc: IPS Reflector <ips@ece.cmu.edu>
> > Subject: Re: I-D ACTION:draft-cavanna-iscsi-crc-vs-cksum-00.txt
> >
> >
> >
> >
> >
> > CRC-32 is very expensive in software; it may require hardware assist in
> > fast networks. Is iSCSI really intended to be a hardware only protocol?
> >
> > Fletcher-32 has a serious flaw: it does not distinguish between an
> > input halfword of all ones (FFFFx) and an input halfword of all zeros
> > (0000x). Both are equal to zero under ones' complement addition.
> > [Stone, J., Greenwald, M., Partridge, C., & Hughes, J., "Performance of
> > Checksums and CRC's over Real Data", IEEE/ACM Trans. on Networking,
> > Vol., 6, No. 5, October 1988] gives several examples of situations in
> > which this is important.
> >
> > Adler-32 avoids this problem by adding 8-bit inputs into its 16-bit
> > sub-sums. It also uses a prime modulus (2**16-15) rather than ones'
> > complement's 2**16-1. Using 8 bit rather than 16 bit inputs doubles the
> > number of additions Adler-32 performs compared to Fletcher-32. A more
> > subtle problem is that the high-order bits of the sums are not uniformly
> > distributed until the block size becomes very large. I estimate that
> > this causes Adler-32 to lose one or two bits worth of resolving power.
> > Still, a 30 bit checksum is still quite strong.
> >
> > An alternative worth consideration is Fletcher-32 modified to use the
> > prime modulus 2**16-15. It's fast, doesn't have the 0000=FFFF problem,
> > detects permutations, and distributes all result bits uniformly. It
> > does confuse an input halfword of 0 with 2**16-15 (and similarly for
> > 1..14), but I think this only a minor problem because the potentially
> > confused inputs are unlikely. By definition every checksum confuses
> > many inputs. If you are going to argue from bad examples you really
> > should estimate how likely your bad examples are.
> >
> > John Howard
> > Sun Microsystems
> >
> >
> >
> >
>
>
>
>
>
Home Last updated: Tue Sep 04 01:05:27 2001 6315 messages in chronological order |