Re: [PATCH RFC net-next 00/11] udp gso
From: David Miller <davem@davemloft.net>
Date: 2018-04-18 17:28:10
From: Sowmini Varadhan <redacted> Date: Wed, 18 Apr 2018 08:31:03 -0400
However, I share Sridhar's concerns about the very fundamental change to UDP message boundary semantics here. There is actually no such thing as a "segment" in udp, so in general this feature makes me a little uneasy. Well behaved udp applications should already be sending mtu sized datagrams. And the not-so-well-behaved ones are probably relying on IP fragmentation/reassembly to take care of datagram boundary semantics for them? As Sridhar points out, the feature is not really "negotiated" - one side unilaterally sets the option. If the receiver is a classic/POSIX UDP implementation, it will have no way of knowing that message boundaries have been re-adjusted at the sender.
There are no "semantics". What ends up on the wire is the same before the kernel/app changes as afterwards. The only difference is that instead of the application doing N - 1 sendmsg() calls with mtu sized writes, it's giving everything all at once and asking the kernel to segment. It even gives the application control over the size of the packets, which I think is completely prudent in this situation.