To support this layering, packetization layers require an extension
of the IP service interface defined in [1]:
A way to learn of changes in the value of MMS_S, the "maximum
send transport-message size", which is derived from the Path
MTU by subtracting the minimum IP header size.
Mogul & Deering [page 9]
RFC 1191 Path MTU Discovery November 1990
6.2. Storing PMTU information
In general, the IP layer should associate each PMTU value that it has
learned with a specific path. A path is identified by a source
address, a destination address and an IP type-of-service. (Some
implementations do not record the source address of paths; this is
acceptable for single-homed hosts, which have only one possible
source address.)
Note: Some paths may be further distinguished by different
security classifications. The details of such classifications
are beyond the scope of this memo.
The obvious place to store this association is as a field in the
routing table entries. A host will not have a route for every
possible destination, but it should be able to cache a per-host route
for every active destination. (This requirement is already imposed
by the need to process ICMP Redirect messages.)
When the first packet is sent to a host for which no per-host route
exists, a route is chosen either from the set of per-network routes,
or from the set of default routes. The PMTU fields in these route
entries should be initialized to be the MTU of the associated
first-hop data link, and must never be changed by the PMTU Discovery
process. (PMTU Discovery only creates or changes entries for
per-host routes). Until a Datagram Too Big message is received, the
PMTU associated with the initially-chosen route is presumed to be
accurate.
When a Datagram Too Big message is received, the ICMP layer
determines a new estimate for the Path MTU (either from a non-zero
Next-Hop MTU value in the packet, or using the method described in
section 5). If a per-host route for this path does not exist, then
one is created (almost as if a per-host ICMP Redirect is being
processed; the new route uses the same first-hop router as the
current route). If the PMTU estimate associated with the per-host
route is higher than the new estimate, then the value in the routing
entry is changed.
The packetization layers must be notified about decreases in the
PMTU. Any packetization layer instance (for example, a TCP
connection) that is actively using the path must be notified if the
PMTU estimate is decreased.
Note: even if the Datagram Too Big message contains an
Original Datagram Header that refers to a UDP packet, the TCP
layer must be notified if any of its connections use the given
Mogul & Deering [page 10]
RFC 1191 Path MTU Discovery November 1990
path.
Also, the instance that sent the datagram that elicited the Datagram
Too Big message should be notified that its datagram has been
dropped, even if the PMTU estimate has not changed, so that it may
retransmit the dropped datagram.
Note: The notification mechanism can be analogous to the
mechanism used to provide notification of an ICMP Source
Quench message. In some implementations (such as
4.2BSD-derived systems), the existing notification mechanism
is not able to identify the specific connection involved, and
so an additional mechanism is necessary.
Alternatively, an implementation can avoid the use of an
asynchronous notification mechanism for PMTU decreases by
postponing notification until the next attempt to send a
datagram larger than the PMTU estimate. In this approach,
when an attempt is made to SEND a datagram with the DF bit
set, and the datagram is larger than the PMTU estimate, the
SEND function should fail and return a suitable error
indication. This approach may be more suitable to a
connectionless packetization layer (such as one using UDP),
=6= |