mptcp.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [MPTCP] [RFC PATCH mptcp-next 0/9] initial SOL_SOCKET support
@ 2021-03-17 16:38 Florian Westphal
  2021-03-17 16:38 ` [MPTCP] [PATCH mptcp-next 1/9] mptcp: add skeleton to sync msk socket options to subflows Florian Westphal
                   ` (4 more replies)
  0 siblings, 5 replies; 16+ messages in thread
From: Florian Westphal @ 2021-03-17 16:38 UTC (permalink / raw)
  To: mptcp

[-- Attachment #1: Type: text/plain, Size: 2256 bytes --]

This patch set improves support for several SOL_SOCKET tuneables.

First patch adds skeleton synchronization functions to copy mptcp socket
settings to a subflow socket.

For the incoming connection case a work queue based synchronization
point is added.

A sequence number tells which subflows are out-of-sync and need
updating.

setsockopt SOL_SOCKET gets extended to handle several
tuneables.

Some of these get copied to all subflows:
- keepalive
- packet mark (influences routing decision)
- SO_LINGER

Others are only set on the initial socket, e.g.
BINDTODEVICE.

Some of these are debateable, for instance SO_INCOMING_CPU.

Last two patches add support for two TCP sockopts, TCP_CONGESTION
and TCP_INFO.

The former is only set for the initial subflow, since that is what
userspace program knows about (bind/connect address).

It seems better to allow mptcpd/iproute2 to augment subflows
with TCPcc info instead.

TCP_INFO is another item open for debate.
The patch here will take the TCP info from the subflow that was
last used to send data.

This may not be what is expected, however.
Since the struct format is fixed, there are not many alternatives:
1. - always fail with -EOPNOTSUPP
2. - try to artificially synthesize TCP_INFO record based on mptcp
level sequence numbers, etc.
3. - always follow the initial subflow only.

Comments welcome.

Furthermore, support for various SO_TIMESTAMP* settings will need
cmsg support in mptcp to be useful.  Let me know if anyone is already
looking at that.

Florian Westphal (9):
  mptcp: add skeleton to sync msk socket options to subflows
  mptcp: setsockopt: handle SO_KEEPALIVE and SO_PRIORITY
  mptcp: setsockopt: handle receive/send buffer and device bind
  mptcp: setsockopt: support SO_LINGER
  mptcp: setsockopt: add SO_MARK support
  mptcp: setsockopt: add SO_INCOMING_CPU
  mptcp: setsockopt: SO_DEBUG and no-op options
  mptcp: sockopt: add TCP_CONGESTION
  mptcp: sockopt: handle TCP_INFO

 net/mptcp/protocol.c |  31 +++-
 net/mptcp/protocol.h |  12 ++
 net/mptcp/sockopt.c  | 431 +++++++++++++++++++++++++++++++++++++++++++
 net/mptcp/subflow.c  |   1 +
 4 files changed, 472 insertions(+), 3 deletions(-)

-- 
2.26.2

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-03-19 14:36 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-17 16:38 [MPTCP] [RFC PATCH mptcp-next 0/9] initial SOL_SOCKET support Florian Westphal
2021-03-17 16:38 ` [MPTCP] [PATCH mptcp-next 1/9] mptcp: add skeleton to sync msk socket options to subflows Florian Westphal
2021-03-19 11:33   ` [MPTCP] " Paolo Abeni
2021-03-19 12:34     ` Florian Westphal
2021-03-19 14:36       ` Paolo Abeni
2021-03-17 16:38 ` [MPTCP] [PATCH mptcp-next 2/9] mptcp: setsockopt: handle SO_KEEPALIVE and SO_PRIORITY Florian Westphal
2021-03-19 11:43   ` [MPTCP] " Paolo Abeni
2021-03-19 12:35     ` Florian Westphal
2021-03-17 16:38 ` [MPTCP] [PATCH mptcp-next 3/9] mptcp: setsockopt: handle receive/send buffer and device bind Florian Westphal
2021-03-19 11:44   ` [MPTCP] " Paolo Abeni
2021-03-19 12:37     ` Florian Westphal
2021-03-17 16:38 ` [MPTCP] [PATCH mptcp-next 8/9] mptcp: sockopt: add TCP_CONGESTION Florian Westphal
2021-03-19 11:54   ` [MPTCP] " Paolo Abeni
2021-03-19 12:19   ` Paolo Abeni
2021-03-17 16:38 ` [MPTCP] [PATCH mptcp-next 9/9] mptcp: sockopt: handle TCP_INFO Florian Westphal
2021-03-19 12:00   ` [MPTCP] " Paolo Abeni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).