RFC Errata
RFC 1122, "Requirements for Internet Hosts - Communication Layers", October 1989
Source of RFC: LegacyArea Assignment: int
Errata ID: 6381
Status: Rejected
Type: Technical
Publication Format(s) : TEXT
Reported By: Patrick Ni
Date Reported: 2021-01-07
Rejected by: Martin Duke
Date Rejected: 2021-01-08
Section 4.2.2.6 says:
Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize
It should say:
Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize
Notes:
In Section 3.3.3 Fragmentation: MMS_S = EMTU_S - <IP header size> .... Note that <IP header size> in this equation will be 20, unless the IP reserves space to insert IP options for its own purposes in addition to any options inserted by the transport layer
IPoptionsize was already subtracted once when calculating MMS_S. It is being subtracted again upon calculating Eff.snd.MSS when MMS_S is smaller than sendMSS+20. In other words, if IP options are in use, its size is subtracted twice.
--VERIFIER NOTES--
In Section 3.3.3, it says "Note that <IP header size> in this equation will be 20, unless
the IP reserves space to insert IP options for its own purposes
in addition to any options inserted by the transport layer."
4.2.2.6 defines IPoptionsize as "IPoptionsize is the size of any IP options that TCP
will pass to the IP layer with the current message."
So MMS_S incorporates IP options from the IP layer, but IPoptionsize counts options coming from TCP. The terminology is a little confusing but careful reading of the definitions indicates that the math is correct.