Michael,

On Fri, Aug 01, 2025 at 08:17:35AM +0000, Michael Tuexen wrote:
M>     When the SCTP, TCP, or UDP implementation send a packet, it does not
M>     compute the corresponding checksum but defers that. The network layer
M>     will determine whether the network interface selected for the packet
M>     has the requested capability and computes the checksum in software,
M>     if the selected network interface doesn't have the requested
M>     capability.
M>     Do this not only for packets being sent by the local SCTP, TCP,
M>     and UDP stack, but also when forwarding packets. Furthermore, when
M>     such packets are delivered to a local SCTP, TCP, or UDP stack, do not
M>     compute or validate the checksum, since such packets never have been on
M>     the wire.
M>     This allows to support checksum offloading also in the case of local
M>     virtual machines or jails.
M>     Support for epair, vtnet, and tap interfaces will be added in
M>     separate commits.

Not a request for any action, but a general comment on the topic.

Imagine we are developing an IP stack from scratch for modern computers.  Most
NICs do hardware checksumming, large fraction of installations run in
containers/VMs and communicate via virtual interfaces.  With modern reality we
would probably do not do any checksumming in the stack at all, just completely
ignore the checksum field.  It would always be obligation of the NIC driver to
care about the checksums.  The existing software checksumming code would be
just a library that drivers for legacy hardware call. Local traffic won't set
and won't check checksums neither any related flags.

-- 
Gleb Smirnoff

Reply via email to