TCP path MTU discovery
The TCP path MTU discovery protocol option is enabled by default in AIX®. This option allows the protocol stack to determine the minimum MTU size on any network that is currently in the path between two hosts, and is controlled by the tcp_pmtu_discover=1 network option.
The implementation of TCP Path MTU discovery uses TCP packets of the connection itself rather than ICMP ECHO messages. The TCP/IP kernel extension maintains a table called the PMTU table to store related PMTU discovery information. Entries for each destination are created in the PMTU table when the TCP connections are established to that destination. The PMTU value is the outgoing interface MTU value.
TCP packets are sent with the Don't Fragment, or DF, bit set in the IP header. If a TCP packet reaches a network router that has a MTU value that is smaller than the size of the TCP packet, the router sends back an ICMP error message indicating that the message cannot be forwarded because it cannot be fragmented. If the router sending the error message complies with RFC 1191, the network's MTU value is contained in the ICMP error message. Otherwise, for the TCP packet to be retransmitted, a smaller value for the MTU size must be assigned from a table of well-known MTU values within the AIX TCP/IP kernel extension. The PMTU value for the destination is then updated in the PMTU table with the new smaller MTU size and the TCP packet is retransmitted. Any subsequent TCP connections to that destination use the updated PMTU value.
# pmtu display
dst gw If pmtu refcnt redisc_t exp
-------------------------------------------------------------------------
10.10.1.3 10.10.1.5 en1 1500 2 9 0
10.10.2.5 10.10.2.33 en0 1500 1 0 0
Unused PMTU entries, which are refcnt
entries
with a value of 0, are deleted to prevent the PMTU table from getting
too large. The unused entries are deleted pmtu_expire minutes
after the refcnt
value equals 0. The pmtu_expire network
option has a default value of 10 minutes. To prevent PMTU entries
from expiring, you can set the pmtu_expire value
to 0.
Route cloning is unnecessary with this implementation of TCP path MTU discovery, which means the routing table is smaller and more manageable.