Choose conservatively when interface budgets vary
05Some interfaces have a changing effective MTU, for example when header compression occasionally needs full headers to resynchronize. A fixed receive advertisement must account for that risk.
With 20 additional-header bytes, the sender uses at most 1200 data bytes. Total 60 fixed plus 20 additional plus 1200 data is 1280, fitting either illustrated interface budget.
Key idea: For a packet-to-packet varying interface, use of its smallest effective MTU is a SHOULD, not an unconditional MUST.
Rules & examples
For a packet-to-packet varying interface, use of its smallest effective MTU is a SHOULD, not an unconditional MUST.
- RFC 6691 section 5.2 says TCP SHOULD use the smallest effective MTU of a varying interface to calculate its advertised MSS. RFC 9293 section 3.7.3 retains this recommendation as SHLD-6.
- The example IPv6 interface alternates between effective packet budgets 1500 and 1280. Choosing only 1500 would suggest MSS 1440; a full-sized no-options packet would then exceed the 1280 state.
- Choosing the smaller effective MTU 1280 gives 1220 after the 40-byte IPv6 base header and 20-byte TCP base header. That leaves room for a no-options packet in either illustrated interface state.
- Actual additional headers still reduce data per packet: with 20 extra-header bytes,1220 −20 =1200 data bytes. The advertised 1220 does not itself shrink each time options change.
- Exception outside these ordinary examples: RFC 6691 section 5.3 discusses IPv6 jumbograms. Under RFC 2675, an MSS value 65535 has special infinity semantics; it is not a universal literal 65535-byte data cap. Path MTU Discovery determines the actual limit.
The two budgets are fictional inputs, not a model of ROHC compression. This chapter teaches the recommendation and its motivation, without claiming every deviation from SHOULD is forbidden. The jumbogram rule is a boundary note, not implemented by the ordinary-packet helper.
Sources
New to this? Start hereA quick picture + helpful background
A message needs an address.
Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.
Helpful first, if these ideas are unfamiliar
These pictures are analogies to help you learn. The linked RFC explains the actual rules.
This guide explains the 2012 publication. Superseded by RFC 9293.
Related RFCs and changes
“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.
RFC 9293 obsoletes RFC 6691 and incorporates this sizing distinction. This historical guide does not replace the current TCP specification.
Read the updated RFC section ↗