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.

You can use the pmtu command to view or delete PMTU entries. The following is an example of the pmtu command:
# 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.