z/OS Communications Server: IPv6 Network and Application Design Guide
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Options for path MTU discovery

z/OS Communications Server: IPv6 Network and Application Design Guide
SC27-3663-00

Use the following options for path MTU discovery:

IPV6_USE_MIN_MTU (used with TCP, UDP and RAW applications)
For IPv6, only the endpoint nodes can fragment a packet. Path MTU discovery determines the largest packet that can be sent to a destination without requiring fragmentation by an intermediate node (because that is not supported). In some cases, an application might want to avoid path MTU discovery. All nodes in an IPv6 network are required to support a minimum MTU of 1280 bytes. When an application enables this option, path MTU discovery is bypassed. If a direct route to the destination is not available, the minimum MTU size (1280 bytes) is used to send packets that otherwise might require fragmentation. If a direct route is available, the link's MTU size is used, because path MTU discovery is not needed when there are no intermediate nodes in the path.

For unicast destinations, this option is disabled by default, which avoids sending packets with the minimum MTU size. Instead, path MTU discovery information is used.

For multicast destinations, this option is enabled by default, which prevents path MTU discovery information from being used. If a direct route is not available, packets are sent with the minimum MTU size. If a direct route is available, packets are sent by using the MTU of the link because no intermediate nodes are in the path.

This option can be enabled or disabled for the following cases:

  • A socket with a setsockopt()
  • A single send operation with ancillary data on the sendmsg()

A value of -1 passed on the set socket option causes the default values for unicast and multicast destinations to be used.

A value of 0 disables this option for both unicast and multicast destinations. Path MTU discovery information is used to send packets greater than the minimum MTU size.

A value of 1 enables this option for unicast and multicast destinations. All packets are sent without using path MTU discovery information, using the minimum MTU size, unless a direct route is available to the destination.

A getsockopt() with this option returns the value set by a setsockopt(). If a setsockopt() has not been done, the default value of -1 (disabled for unicast, enabled for multicast) is returned.

IPV6_DONTFRAG (used with UDP and RAW applications)
The IPV6_DONTFRAG option enables the application to indicate that the packet should not be fragmented by the local z/OS® host.

This option is useful for applications that want to discover the actual path MTU.

Guideline: When using the IPV6_DONTFRAG socket option, use the IPV6_RECVPATHMTU socket option also. Otherwise, packets are silently discarded without any notification to the application.

This option can be enabled or disabled for the following cases:

  • A socket with a setsockopt()
  • A single send operation with ancillary data on the sendmsg()

A value of 1 enables this option for unicast and multicast destinations.

A getsockopt() with this option returns the value set by a setsockopt(). If a setsockopt() has not been performed, then getsockopt() returns a value of 0.

If IPV6_DONTFRAG is specified along with IPV6_USE_MIN_MTU, the IPV6_DONTFRAG setting is ignored, resulting in selection of the minimum architected IPv6 MTU size (1280 bytes).

IPV6_RECVPATHMTU (used with UDP and RAW applications)
The IPV6_RECVPATHMTU option enables the application to receive notifications about changes to the path MTU. This option notifies the application about all path MTU changes for all destinations, not only the changes that this socket initiates.

When the IPV6_RECVPATHMTU socket option is enabled, the path MTU is returned as ancillary data on the recvmsg() API (for an empty message) whenever the path MTU changes. The path MTU can change if the application sends a packet with the IPV6_DONTFRAG option and the packet is larger than the current path MTU. The path MTU can also change if the stack receives a corresponding ICMPv6 packet too big error. The ancillary data that is returned has level IPPROTO_IPV6 and name IPV6_PATHMTU. For more information about ancillary data, see Using ancillary data on sendmsg() and recvmsg().

This option can be enabled or disabled for a socket with a setsockopt().

A value of 1 enables this option.

A getsockopt() with this option returns the value set by a setsockopt(). If a setsockopt() has not been performed, then getsockopt() returns a value of 0.

IPV6_PATHMTU (used with UDP and RAW applications)
The IPV6_PATHMTU option enables the application to retrieve the current path MTU to a given destination for which it has done a connect().

This option is useful for applications also using IPV6_RECVPATHMTU that want to pick a good starting value.

This option is valid only on a getsockopt(). It returns the MTU that the stack uses on this connected socket.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014