diff --git a/README.adoc b/README.adoc index 56f4498..33d72b2 100644 --- a/README.adoc +++ b/README.adoc @@ -452,6 +452,8 @@ If AnnNet is allocated a dedicated IANA-registered Protocol/Next Header, it will .. Likewise for checksumming; while most NICs will automatically handle the standard CRC32 https://en.wikipedia.org/wiki/Frame_check_sequence[Frame Check Sequence^] at the end of the entire frame (AnnNet Link is still Ethernet II), if you require checksumming within your application for *payloads* it must be accounted for by your application. If you are using hardware that doesn't automatically append/strip the FCS, your application must also account for that as well. +... Per https://standards.ieee.org/ieee/802.3/10422/[IEEE 802.3-2022^] (and previous revisions) and e.g. https://datatracker.ietf.org/doc/html/rfc894[RFC 894^], the *ethernet frame* (layer 2 packet) needs to be padded to 46 bytes if less than 46 bytes, but just like the FCS, *this is almost always handed directly in the NIC*. If you are using hardware that doesn't automatically append/strip the ethernet frame padding, your application must account for that also. + .. For AnnNet Broadcast over IPv4, ensure that you are including the 16-bit https://en.wikipedia.org/wiki/Internet_checksum["Internet checksum"^] of the header (see RFCs https://datatracker.ietf.org/doc/html/rfc1071[1071^], https://datatracker.ietf.org/doc/html/rfc1141[1141^], and https://datatracker.ietf.org/doc/html/rfc1624[1624^]). + Most kernels can/will automatically insert this (e.g. on Linux, with `IPPROTO_RAW`/raw sockets with the `IP_HDRINCL` option, see https://man7.org/linux/man-pages/man7/raw.7.html[`raw(7)`^]), but if your implementation doesn't/can't use such a mechanism then you must do so yourself. + IPv6 does not require a header checksum. diff --git a/README.html b/README.html index 4a140c6..585e039 100644 --- a/README.html +++ b/README.html @@ -559,7 +559,7 @@ pre.rouge .gs {
Brent Saner
bts@square-r00t.net
-Last rendered 2025-09-03 01:37:56 -0400 +Last rendered 2025-09-03 10:50:06 -0400
Table of Contents
@@ -2275,6 +2275,13 @@ Its source must be the MAC/PHYS address of the network interface it is
  1. Likewise for checksumming; while most NICs will automatically handle the standard CRC32 Frame Check Sequence at the end of the entire frame (AnnNet Link is still Ethernet II), if you require checksumming within your application for payloads it must be accounted for by your application. If you are using hardware that doesn’t automatically append/strip the FCS, your application must also account for that as well.

    +
    +
      +
    1. +

      Per IEEE 802.3-2022 (and previous revisions) and e.g. RFC 894, the ethernet frame (layer 2 packet) needs to be padded to 46 bytes if less than 46 bytes, but just like the FCS, this is almost always handed directly in the NIC. If you are using hardware that doesn’t automatically append/strip the ethernet frame padding, your application must account for that also.

      +
    2. +
    +
  2. For AnnNet Broadcast over IPv4, ensure that you are including the 16-bit "Internet checksum" of the header (see RFCs 1071, 1141, and 1624).
    @@ -3163,7 +3170,7 @@ and the