target = "https://www.rfc-editor.org/rfc/rfc9000#section-14" # 14. Datagram Size # # A UDP datagram can include one or more QUIC packets. The datagram # size refers to the total UDP payload size of a single UDP datagram # carrying QUIC packets. The datagram size includes one or more QUIC # packet headers and protected payloads, but not the UDP or IP headers. # # The maximum datagram size is defined as the largest size of UDP # payload that can be sent across a network path using a single UDP # datagram. QUIC MUST NOT be used if the network path cannot support a # maximum datagram size of at least 1200 bytes. # # QUIC assumes a minimum IP packet size of at least 1280 bytes. This # is the IPv6 minimum size [IPv6] and is also supported by most modern # IPv4 networks. Assuming the minimum IP header size of 40 bytes for # IPv6 and 20 bytes for IPv4 and a UDP header size of 8 bytes, this # results in a maximum datagram size of 1232 bytes for IPv6 and 1252 # bytes for IPv4. Thus, modern IPv4 and all IPv6 network paths are # expected to be able to support QUIC. # # | Note: This requirement to support a UDP payload of 1200 bytes # | limits the space available for IPv6 extension headers to 32 # | bytes or IPv4 options to 52 bytes if the path only supports the # | IPv6 minimum MTU of 1280 bytes. This affects Initial packets # | and path validation. # # Any maximum datagram size larger than 1200 bytes can be discovered # using Path Maximum Transmission Unit Discovery (PMTUD) (see # Section 14.2.1) or Datagram Packetization Layer PMTU Discovery # (DPLPMTUD) (see Section 14.3). # # Enforcement of the max_udp_payload_size transport parameter # (Section 18.2) might act as an additional limit on the maximum # datagram size. A sender can avoid exceeding this limit, once the # value is known. However, prior to learning the value of the # transport parameter, endpoints risk datagrams being lost if they send # datagrams larger than the smallest allowed maximum datagram size of # 1200 bytes. # # UDP datagrams MUST NOT be fragmented at the IP layer. In IPv4 # [IPv4], the Don't Fragment (DF) bit MUST be set if possible, to # prevent fragmentation on the path. # # QUIC sometimes requires datagrams to be no smaller than a certain # size; see Section 8.1 as an example. However, the size of a datagram # is not authenticated. That is, if an endpoint receives a datagram of # a certain size, it cannot know that the sender sent the datagram at # the same size. Therefore, an endpoint MUST NOT close a connection # when it receives a datagram that does not meet size constraints; the # endpoint MAY discard such datagrams. [[spec]] level = "MUST" quote = ''' QUIC MUST NOT be used if the network path cannot support a maximum datagram size of at least 1200 bytes. ''' [[spec]] level = "MUST" quote = ''' UDP datagrams MUST NOT be fragmented at the IP layer. ''' [[spec]] level = "MUST" quote = ''' In IPv4 [IPv4], the Don't Fragment (DF) bit MUST be set if possible, to prevent fragmentation on the path. ''' [[spec]] level = "MUST" quote = ''' Therefore, an endpoint MUST NOT close a connection when it receives a datagram that does not meet size constraints; the endpoint MAY discard such datagrams. '''