Skip to content

Align NIC offload config on FreeBSD core routers — cr1-nl1 forwards with LRO/TSO enabled on vtnet0 #355

Description

@Svaag

Context

Split out of #119 (2026-06-01 comments) so it doesn't die with that issue's stale NAT64 premise.

There is a live NIC-offload config divergence between the FreeBSD core routers:

  • cr1-nl1: FreeBSD 14.3-RELEASE-p3; active vtnet0 options include RXCSUM,TXCSUM,TSO4,TSO6,LRO,TXCSUM_IPV6.
  • cr1-de1: FreeBSD 15.0-RELEASE; /etc/rc.conf explicitly sets ifconfig_vtnet0="... -rxcsum -txcsum -tso4 -tso6 -lro".

A live A/B test on 2026-06-01 (enabling offloads on cr1-de1, retesting the slow OVH/CloudFront flows, reverting) showed no meaningful throughput change — this is not the cause of the CDN path slowness (that's tracked in #351/#138). It's a correctness/consistency cleanup:

  • LRO must not be enabled on interfaces that forward packets. It coalesces TCP segments before the stack sees them, which breaks forwarding semantics (resegmentation, reordering, PMTU transparency). cr1-nl1 is a router forwarding overlay/WireGuard traffic on vtnet0 — cr1-de1's explicit disable is the correct configuration, cr1-nl1's default-enabled state is the defect.
  • TSO/checksum offload on virtio under Xen/KVM has a history of subtle corruption bugs; the conservative router convention is to disable the lot, as cr1-de1 already does.

Action items

  1. Decide the convention: offloads disabled on all forwarding interfaces of FreeBSD core routers (recommend adopting cr1-de1's -rxcsum -txcsum -tso4 -tso6 -lro line as the standard).
  2. Apply to cr1-nl1 vtnet0 live (low-risk, revertible with ifconfig), with before/after throughput probes sourced from 2a0c:b641:b50::a so we have data rather than vibes.
  3. Check cr1-ch1 (newest FreeBSD node, Securebit/SBIX) against the same convention — it was built after the DE box and may have inherited defaults rather than the explicit disables.
  4. Persist in /etc/rc.conf on each host and mirror into the repo (configs/cr1-nl1/, configs/cr1-ch1/ headers/docs) so the convention survives reprovisioning.
  5. Note the FreeBSD version skew while in there (nl1 on 14.3, de1 on 15.0) — not this issue's scope, but worth a line in the upgrade planning.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions