RFC Errata
RFC 9171, "Bundle Protocol Version 7", January 2022
Note: This RFC has been updated by RFC 9713, RFC 9758
Source of RFC: dtn (int)See Also: RFC 9171 w/ inline errata
Errata ID: 8043
Status: Verified
Type: Technical
Publication Format(s) : TEXT, PDF, HTML
Reported By: John Huff
Date Reported: 2024-07-22
Verifier Name: Erik Kline
Date Verified: 2025-08-11
Section 4.3.1 says:
CRC: A CRC SHALL be present in the primary block unless the bundle
includes a BPSec Block Integrity Block [BPSEC] whose target is the
primary block, in which case a CRC MAY be present in the primary
block. The length and nature of the CRC SHALL be as indicated by
the CRC type. The CRC SHALL be computed over the concatenation of
all bytes (including CBOR "break" characters) of the primary block
including the CRC field itself, which, for this purpose, SHALL be
temporarily populated with all bytes set to zero.
It should say:
CRC: A CRC SHALL be present in the primary block unless the bundle
includes a BPSec Block Integrity Block [BPSEC] whose target is the
primary block, in which case a CRC MAY be present in the primary
block. The length and nature of the CRC SHALL be as indicated by
the CRC type. The CRC SHALL be computed over the concatenation of
all bytes (including CBOR "break" characters) of the primary block
including the CRC field itself, which, for this purpose, SHALL be
temporarily populated with all value bytes set to zero. The
initial byte of the CBOR encoded CRC field SHALL remain unchanged.
Notes:
There was some confusion about the wording of "temporarily populated with all bytes set to zero" when talking about the CRC field in the CBOR encoded primary block. An implementer thought this might mean to also zeroize the intial byte(s) of the CBOR encoded byte string that represents the CRC field. This correction makes it clear that only the bytes that represent the value of the CRC field should be zeroized when calculating the CRC.
My correction uses "initial byte" because the current CRC types will only ever have a single intial byte when encoding the CRC value as a CBOR byte string. However, technically CBOR byte strings can byte more than 1 initial byte so it may be better to use "initial byte(s)".
--- see also ---
* https://mailarchive.ietf.org/arch/msg/dtn/3JAFDy9xJXIZNOItbnoqXkjlons/
