Messages in this thread | | | Subject | Re: [RFC] [TCP 1/3] tcp: Add MSG_NEW_PACKET flag to indicate preferable packet boundaries | From | Andreas Gruenbacher <> | Date | Fri, 29 Jun 2012 17:38:55 +0200 |
| |
On Fri, 2012-06-29 at 17:11 +0200, Eric Dumazet wrote: > On Fri, 2012-06-29 at 16:54 +0200, Andreas Gruenbacher wrote: > > The MSG_NEW_PACKET flag indicates to sendmsg / sendpage that the message or > > page should be put into a new packet even when there is still room left in the > > previous packet. > > > > In the tcp protocol, messages which are not sent immediately are queued. When > > more data is sent, it will be added to the last segment in that queue until > > that segment is "full" whenever possible; only then is a new segment added. > > Right now, there is no way to indicate when tcp should start a new segment. > > The new flag allows to control that. > > > > Signed-off-by: Andreas Gruenbacher <agruen@linbit.com> > > --- > > I don't understand how maintaining any message boundaries at sender can > prevent any middlebox or the receiver to coalesce frames to any > boundaries it prefers ?
The primary use case is fast Gigabit (10 or more) Ethernet connections with jumbo frames and switches that support them. There, frames will go through unchanged and you can zero-copy receive all the time.
Not sure how well the approach scales to other kinds of connections; it may work often enough to be worth it. When things get distorted between the sender and the receiver and tcp_recvbio() fails, the data can still be copied out of the socket as before.
Andreas
| |