Page MenuHomeFreeBSD

IPv6: Ignore PTB packets with an MTU < 1280
ClosedPublic

Authored by vangyzen on Aug 8 2025, 10:10 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Oct 19, 5:00 PM
Unknown Object (File)
Sun, Oct 12, 11:31 PM
Unknown Object (File)
Sun, Oct 12, 11:31 PM
Unknown Object (File)
Sun, Oct 12, 11:31 PM
Unknown Object (File)
Sun, Oct 12, 11:31 PM
Unknown Object (File)
Sun, Oct 12, 12:04 PM
Unknown Object (File)
Thu, Oct 9, 8:53 PM
Unknown Object (File)
Wed, Oct 8, 9:02 PM

Details

Summary

RFC 2460 section 5 paragraph 7 allowed a Packet Too Big message
to report a Next-Hop MTU less than 1280 in support of 6-to-4 routers.
A node receiving such a message was required to add a Fragment
Header to outgoing packets, even though they were not fragmented.

Almost 20 years later, RFC 8200 was published. It obsoletes RFC 2460
and removes that paragraph. UNH IOL Intact was updated to test for
compliance with the new standard.

Test Plan

Test cases v6LC_4_1_06a and 06b failed before this change, saying:

DUT processed PTB and sent a fragmented echo reply

Remove code supporting that obsolete paragraph. Those two test cases
now pass:

DUT did not process PTB and sent un-fragmented echo reply

All PMTU test cases pass except v6LC_4_1_08. It fails because we
ignore the MTU in RAs.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

I've only quickly scrolled through but I believe this is correct; There's further cleanup in there (as a result) which I would probably have preferred to come separately but it's fine this way too.

I agree with bz: I would have preferred one functional change and a follow-up change cleaning up things without a functional change.

sys/netinet6/icmp6.c
1134

Right now validated is not used, but I have a change in mind which would use it. But I can bring this back (as a boolean), when I actually need it.

sys/netinet6/ip6_output.c
1553–1554

The same is true for SCTP.

  • SCTP handles PMTU changes, too

Thanks for the feedback about cleanup. In hindsight, yes, the cleanup did go a little farther than I intended. I could split it into two commits, but I'd have to re-test, twice. I'll try to be more restrained next time. It was just so satisfying.

This revision is now accepted and ready to land.Aug 9 2025, 7:21 PM