[nginx-quic] Segmentation offloading

Vladimir Homutov vl at nginx.com
Tue Jul 27 06:41:55 UTC 2021

On Mon, Jul 26, 2021 at 04:08:02PM -0500, Lucas Cuminato wrote:
> Hello,
> I was testing this feature the other day but unsure if it's doing the right
> thing.
> Nginx is generating 65k UDP datagrams which are then being fragmented at
> the IP layer.
> Reading the spec, rfc9000, it looks like IP fragmentation is not allowed
> (Section 14).
> "UDP datagrams MUST NOT be fragmented at the IP layer. In IPv4
> IPv4 <https://datatracker.ietf.org/doc/html/rfc9000#ref-IPv4>], the
> Don't Fragment (DF) bit MUST be set if possible, to
> prevent fragmentation on the path."
> Also, it doesn't seem to be respecting the client's endpoint
> max_udp_payload_size.
> Can you please confirm if this is desired ?

Hi Lucas,

thank you for the feedback.

Of course, 65K datagrams is not something expected. It looks like GSO is
not working properly in your case. The expected result is that kernel
will split 65K buffer into smaller UDP datagrams of specified (segment) size,
and this segment size respects QUIC settings.

Do you see it in the wire? If yes, please share output of configure
script, debug log [1], and output of 'nginx -T'.
Are you running nginx on hardware directly or is it some virtual machine?
NIC/interface details are valuable (ethtool -k <interface>,
ip link show <interface>).

[1] http://nginx.org/en/docs/debugging_log.html

More information about the nginx-devel mailing list