Subject: [dtn] FW: Bundle Protocol v7 choice of CRC

From: "Burleigh, Scott C (312B)" <[email-masked]>
Date: Mon, 21 May 2018 16:03:06 +0000

My apologies to everyone: I completely forgot to bring this up at the IETF 101 meeting, but now that the current bpbis I-D is about to expire I'd like to ask for your opinions before I refresh the draft.  Any thoughts on these choices for our standard CRC types?

Scott

-----Original Message-----
From: Tsao, Philip C (332C) 
Sent: Tuesday, February 27, 2018 9:11 PM
To: Burleigh, Scott C (312B) <[email-masked]>
Subject: Bundle Protocol v7 choice of CRC

Hi Scott,
I haven't really poked my head in bundle protocol related matters for a while but I noticed something and if I may be so bold as to make a suggestion...

The Bundle Protocol v7 draft from November 2017 appears to specify X-25 CRC16 for CRC type "1" and the PKZIP CRC32 for type "2". I would recommend the Castiglione CRC32C for type "2" instead of the PKZIP polynomial because CRC32C is able to detect a wider range of errors and can be computed with the same or less effort. Newer ARM and Intel processors have hardware specifically for the computation of CRC32C.

My opinions aren't as strong for the choice of CRC16 but the Kazakov polynomial looks like ansco improvement. Koopman argues that CRC32sub8 has the same resource requirements (runtime and memory) as CRC16 with improved error detection capability.

http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=915680

http://users.ece.cmu.edu/~koopman/networks/dsn02/dsn02_koopman.pdf

https://users.ece.cmu.edu/~koopman/roses/dsn04/koopman04_crc_poly_embedded.pdf

http://users.ece.cmu.edu/~koopman/pubs/ray06_crcalgorithms.pdf

http://users.ece.cmu.edu/~koopman/pubs/koopman14_crc_faa_conference_presentation.pdf

https://www.sciencedirect.com/science/article/pii/S002001901100319X

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0801g/awi1476352818103.html

---

From: Rick Taylor <[email-masked]>
Date: Tue, 22 May 2018 06:02:23 +0000

Hi All,

My thoughts on CRC's:  I think a pragmatic choice between a CRC with good coverage, and a CRC that is in common use is the right way to go.

Every time I have to implement a protocol with a CRC I dread finding it uses some polynomial not supported by a common implementation, and that I have to go implement my own CRC functions (with all the risk of error involved)

So, Castiglione CRC32 gets my +1 (as I know it's common/popular)

Rick

> From: dtn [mailto:[email-masked]] On Behalf Of Burleigh, Scott C
> (312B)
> Sent: 21 May 2018 17:03
> To: [email-masked]
> Subject: [dtn] FW: Bundle Protocol v7 choice of CRC
> 
> My apologies to everyone: I completely forgot to bring this up at the IETF 101
> meeting, but now that the current bpbis I-D is about to expire I'd like to ask
> for your opinions before I refresh the draft.  Any thoughts on these choices
> for our standard CRC types?
> 
> Scott
> 
> I haven't really poked my head in bundle protocol related matters for a while
> but I noticed something and if I may be so bold as to make a suggestion...
> 
> The Bundle Protocol v7 draft from November 2017 appears to specify X-25
> CRC16 for CRC type "1" and the PKZIP CRC32 for type "2". I would
> recommend the Castiglione CRC32C for type "2" instead of the PKZIP
> polynomial because CRC32C is able to detect a wider range of errors and can
> be computed with the same or less effort. Newer ARM and Intel processors
> have hardware specifically for the computation of CRC32C.
> 
> My opinions aren't as strong for the choice of CRC16 but the Kazakov
> polynomial looks like ansco improvement. Koopman argues that CRC32sub8
> has the same resource requirements (runtime and memory) as CRC16 with
> improved error detection capability.
> 
> _______________________________________________
> dtn mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/dtn