rfc-2147

TCP and UDP over IPv6 Jumbograms

D. Borman
date1997-05 streamIETF areaint wgipngwg statusPROPOSED STANDARD pages3 canonicalhttps://www.rfc-editor.org/rfc/rfc2147 doi10.17487/RFC2147
IPv6 supports datagrams larger than 65535 bytes long, often referred to as jumbograms, through use of the Jumbo Payload hop-by-hop option. The UDP protocol has a 16-bit length field that keeps it from being able to make use of jumbograms, and though TCP does not have a length field, both the MSS option and the Urgent field are constrained by 16-bits. This document describes some simple changes that can be made to allow TCP and UDP to make use of IPv6 jumbograms. [STANDARDS-TRACK]

obsoleted by

Extracted elements (16)

design-rationale §3.2

A new TCP Urgent Pointer Option was considered to fix the 16-bit Urgent Pointer limitation, but was rejected as too intrusive because applications using jumbograms are unlikely to also use Urgent Pointers. The simpler sentinel-value approach (65535 = beyond segment end) was chosen instead.

tcp, ip

design-rationale §2

The UDP length field size cannot be changed, so a zero value was chosen to signal that the field should be ignored and the pseudo-header length used instead. This works because the minimum valid UDP length is 8 (the header alone), making zero otherwise invalid.

udp, ip

interoperability-note §3.2

Although the TCP window is only 16 bits, larger windows can be used over jumbogram paths through use of the TCP Window Scale option (RFC 1323); this document does not change the Window Scale mechanism.

tcp, ip

normative-requirement §3.2 MUST

For TCP input processing, when a TCP packet is received with the URG bit set and an Urgent field of 65535, the Urgent Pointer is calculated using an offset equal to the length of the TCP data rather than the value in the Urgent field.

tcp, ip

normative-requirement §2 MUST

If a UDP packet is received with a length field of zero, the length of the UDP packet is computed from the length field in the Jumbo Payload option minus the length of all extension headers present between the IPv6 header and the UDP header.

udp, ip

normative-requirement §3.2 MUST

If the Urgent Pointer offset exceeds 65535 but is less than the TCP data length, the TCP packet MUST be split: the first piece ends before the urgent data with Urgent field set to 65535, and the second piece carries the urgent data with the Urgent field set normally.

tcp, ip

normative-requirement §2 MUST

The length used in the pseudo-header for computing the UDP checksum is always the true length of the UDP header plus data, NOT zero, even when the UDP length field is set to zero for a jumbogram.

udp, ip

normative-requirement §3.1 MUST

When an MSS value of 65535 is received, it is to be treated as infinity, and MTU discovery starting with the MTU of the outgoing interface is used to determine the actual MSS.

tcp, ip

normative-requirement §3.1 MUST

When determining what MSS value to send, if the MTU of the directly attached interface is greater than 65535, the MSS value MUST be set to 65535.

tcp, ip

normative-requirement §3.2 MUST

When sending a TCP packet with an Urgent Pointer and the offset from the Sequence Number to the Urgent Pointer is greater than 65535 and also greater than or equal to the TCP data length, the Urgent field MUST be filled with 65535 and normal TCP processing continues.

tcp, ip

normative-requirement §2 MUST

When sending a UDP packet, if and only if the length of the UDP header plus data is greater than 65,535, the length field in the UDP header MUST be set to zero to indicate that the Jumbo Payload pseudo-header length should be used instead.

udp, ip

protocol-element §2

An IPv6 packet carrying a UDP payload longer than 65535 bytes necessarily carries a Jumbo Payload option in a Hop-by-Hop Options header. The Jumbo Payload length field contains the length of the IP packet excluding the IPv6 header, and the IPv6 header length field is set to zero.

udp, ip

security-consideration §4

There are no known security issues involved in the changes defined by this document for TCP and UDP operation over IPv6 jumbograms.

security, tcp, udp, ip

wire-format §3.1

The TCP MSS option is a 16-bit field; the sentinel value 65535 is repurposed to mean 'infinity' (no MSS limit imposed by the sender) when operating over IPv6 jumbogram-capable paths with MTU > 65535.

tcp, ip

wire-format §3.2

The TCP Urgent Pointer is a 16-bit field in the TCP header; the value 65535 is used as a sentinel to indicate that the actual urgent data offset is beyond the end of the current segment, requiring the receiver to use the TCP data length as the effective offset.

tcp, ip

wire-format §2

The UDP length field is a 16-bit field that normally encodes the length of the UDP header plus data; for IPv6 jumbograms (payload > 65535 bytes), it is set to zero as a sentinel to indicate that the true length is carried in the IPv6 Jumbo Payload hop-by-hop option.

udp, ip