* Re: [MPTCP] [RFC PATCH 00/16] MPTCP architecture proposal for discussion
@ 2018-03-28 23:49 Rao Shoaib
0 siblings, 0 replies; 2+ messages in thread
From: Rao Shoaib @ 2018-03-28 23:49 UTC (permalink / raw)
To: mptcp
[-- Attachment #1: Type: text/plain, Size: 5742 bytes --]
I have had a very cursory look at the implementation and I do not see
how it eliminates the MPTCP code that is intruding TCP code, that is the
main concern of Netdev folks right ?. It also mucks with skb, something
which upstream may or may not agree with. It has also not eliminated
function pointers in the MPTCP code. The patch at best is incomplete as
it does not handle JOIN. I really do not see this any difference than
what RDS does and RDS have different reasons. Can you explain in
technical terms why this is a better approach and what can be done with
this approach that is not possible with the current implementation or
why this approach needs to be adopted know considering we already have a
working implementation. Please do not mention setting options or
exposing flows as fd's.
We need a discussion on the benefits of this approach, but first it
needs to be complete and tested.
Shoaib
On 03/28/2018 04:18 PM, Mat Martineau wrote:
> Hello everyone,
>
> Peter and I have been working on this patch set to show how how MPTCP
> can fit in to the Linux networking stack while using these design ideas:
>
> * Applications opt-in to MPTCP using IPPROTO_MPTCP, regular TCP sockets
> are still the default. A socket created with
> socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP) will attempt to form a
> MPTCP connection. IPPROTO_MPTCP == 99 as a placeholder.
>
> * Subflows exist within the kernel as separate sockets, owned by a
> MPTCP connection-level socket that is visible to userspace.
>
> * Adds an optional area to struct sk_buff to store MPTCP metadata
> without increasing the size of normal sk_buffs.
>
> * Adds the CONFIG_MPTCP option to Kconfig.
>
>
> The following patches can form an MPTCP connection with the
> multipath-tcp.org kernel (tested with v0.94), and send DSS mappings that
> are accepted for the initial data packet. It is an early implementation,
> and I don't represent it as being upstreamable as-is or being everyone's
> idea of what an eventual upstream implementation will necessarily look
> like. It has significant limitations:
>
> * Only one subflow is supported, no joins, and only ipv4.
>
> * Does not support DSS checksums. Checksums must be disabled on the
> remote stack (for multipath-tcp.org, 'sudo sysctl -w
> net.mptcp.mptcp_checksum=0')
>
> * Lots of debug statements (although they use dynamic debug and are
> disabled by default) and TODOs.
>
> * The connection falls back to TCP after the first data packet because
> there's no MPTCP option on the ack after the handshake completes and
> the first data is exchanged.
>
> * It's only been tested sending small amounts of data, and will reject
> system calls attempting to write more data than can fit in one
> mapping.
>
> I should have an additional patch soon that handles the receive path
> (getting the MPTCP option up to the connection level socket to parse and
> handle mappings) and adds the MPTCP option to ACK packets.
>
>
> Hopefully there are are some interesting concepts to discuss, and this
> code helps us assess how workable the above design principles
> are. Thanks in advance for your feedback on the benefits or drawbacks of
> this code, how it might be improved, or how other approaches might
> compare.
>
>
> The patch set applies to net-next (as of commit 5d22d47b9ed96e on
> 2018-03-27). I have also pushed it to:
>
> https://git.kernel.org/pub/scm/linux/kernel/git/martineau/linux.git
> (mptcp-proposal branch)
>
> Mat Martineau (6):
> tcp: Add MPTCP option number
> tcp: Define IPPROTO_MPTCP
> skbuff: Add shared control buffer
> tcp: Export low-level TCP functions
> mptcp: More efficient byte order handling
> mptcp: Write MPTCP DSS headers to outgoing data packets
>
> Peter Krystad (10):
> mptcp: Add MPTCP socket stubs
> mptcp: Handle MPTCP TCP options
> tcp: Add IPPROTO_SUBFLOW
> tcp: expose tcp routines and structs for MPTCP
> mptcp: Create SUBFLOW socket for outgoing connections
> mptcp: Create SUBFLOW socket for incoming connections
> mptcp: Add key generation and token tree
> mptcp: Add getname() socket operation
> mptcp: Add shutdown() socket operation
> mptcp: Implement setsockopt()/getsockopt()
>
> include/linux/skbuff.h | 24 +-
> include/linux/tcp.h | 14 +
> include/net/inet_common.h | 3 +
> include/net/mptcp.h | 177 ++++++++++++
> include/net/tcp.h | 8 +
> include/uapi/linux/in.h | 4 +
> net/Kconfig | 1 +
> net/Makefile | 1 +
> net/core/skbuff.c | 53 +++-
> net/ipv4/af_inet.c | 2 +-
> net/ipv4/tcp.c | 12 +-
> net/ipv4/tcp_input.c | 15 ++
> net/ipv4/tcp_ipv4.c | 4 +-
> net/ipv4/tcp_output.c | 184 ++++++++++++-
> net/mptcp/Kconfig | 10 +
> net/mptcp/Makefile | 3 +
> net/mptcp/crypto.c | 209 ++++++++++++++
> net/mptcp/options.c | 177 ++++++++++++
> net/mptcp/protocol.c | 673 ++++++++++++++++++++++++++++++++++++++++++++++
> net/mptcp/subflow.c | 351 ++++++++++++++++++++++++
> net/mptcp/token.c | 222 +++++++++++++++
> 21 files changed, 2121 insertions(+), 26 deletions(-)
> create mode 100644 include/net/mptcp.h
> create mode 100644 net/mptcp/Kconfig
> create mode 100644 net/mptcp/Makefile
> create mode 100644 net/mptcp/crypto.c
> create mode 100644 net/mptcp/options.c
> create mode 100644 net/mptcp/protocol.c
> create mode 100644 net/mptcp/subflow.c
> create mode 100644 net/mptcp/token.c
>
^ permalink raw reply [flat|nested] 2+ messages in thread
* [MPTCP] [RFC PATCH 00/16] MPTCP architecture proposal for discussion
@ 2018-03-28 23:18 Mat Martineau
0 siblings, 0 replies; 2+ messages in thread
From: Mat Martineau @ 2018-03-28 23:18 UTC (permalink / raw)
To: mptcp
[-- Attachment #1: Type: text/plain, Size: 4505 bytes --]
Hello everyone,
Peter and I have been working on this patch set to show how how MPTCP
can fit in to the Linux networking stack while using these design ideas:
* Applications opt-in to MPTCP using IPPROTO_MPTCP, regular TCP sockets
are still the default. A socket created with
socket(AF_INET, SOCK_STREAM, IPPROTO_MPTCP) will attempt to form a
MPTCP connection. IPPROTO_MPTCP == 99 as a placeholder.
* Subflows exist within the kernel as separate sockets, owned by a
MPTCP connection-level socket that is visible to userspace.
* Adds an optional area to struct sk_buff to store MPTCP metadata
without increasing the size of normal sk_buffs.
* Adds the CONFIG_MPTCP option to Kconfig.
The following patches can form an MPTCP connection with the
multipath-tcp.org kernel (tested with v0.94), and send DSS mappings that
are accepted for the initial data packet. It is an early implementation,
and I don't represent it as being upstreamable as-is or being everyone's
idea of what an eventual upstream implementation will necessarily look
like. It has significant limitations:
* Only one subflow is supported, no joins, and only ipv4.
* Does not support DSS checksums. Checksums must be disabled on the
remote stack (for multipath-tcp.org, 'sudo sysctl -w
net.mptcp.mptcp_checksum=0')
* Lots of debug statements (although they use dynamic debug and are
disabled by default) and TODOs.
* The connection falls back to TCP after the first data packet because
there's no MPTCP option on the ack after the handshake completes and
the first data is exchanged.
* It's only been tested sending small amounts of data, and will reject
system calls attempting to write more data than can fit in one
mapping.
I should have an additional patch soon that handles the receive path
(getting the MPTCP option up to the connection level socket to parse and
handle mappings) and adds the MPTCP option to ACK packets.
Hopefully there are are some interesting concepts to discuss, and this
code helps us assess how workable the above design principles
are. Thanks in advance for your feedback on the benefits or drawbacks of
this code, how it might be improved, or how other approaches might
compare.
The patch set applies to net-next (as of commit 5d22d47b9ed96e on
2018-03-27). I have also pushed it to:
https://git.kernel.org/pub/scm/linux/kernel/git/martineau/linux.git
(mptcp-proposal branch)
Mat Martineau (6):
tcp: Add MPTCP option number
tcp: Define IPPROTO_MPTCP
skbuff: Add shared control buffer
tcp: Export low-level TCP functions
mptcp: More efficient byte order handling
mptcp: Write MPTCP DSS headers to outgoing data packets
Peter Krystad (10):
mptcp: Add MPTCP socket stubs
mptcp: Handle MPTCP TCP options
tcp: Add IPPROTO_SUBFLOW
tcp: expose tcp routines and structs for MPTCP
mptcp: Create SUBFLOW socket for outgoing connections
mptcp: Create SUBFLOW socket for incoming connections
mptcp: Add key generation and token tree
mptcp: Add getname() socket operation
mptcp: Add shutdown() socket operation
mptcp: Implement setsockopt()/getsockopt()
include/linux/skbuff.h | 24 +-
include/linux/tcp.h | 14 +
include/net/inet_common.h | 3 +
include/net/mptcp.h | 177 ++++++++++++
include/net/tcp.h | 8 +
include/uapi/linux/in.h | 4 +
net/Kconfig | 1 +
net/Makefile | 1 +
net/core/skbuff.c | 53 +++-
net/ipv4/af_inet.c | 2 +-
net/ipv4/tcp.c | 12 +-
net/ipv4/tcp_input.c | 15 ++
net/ipv4/tcp_ipv4.c | 4 +-
net/ipv4/tcp_output.c | 184 ++++++++++++-
net/mptcp/Kconfig | 10 +
net/mptcp/Makefile | 3 +
net/mptcp/crypto.c | 209 ++++++++++++++
net/mptcp/options.c | 177 ++++++++++++
net/mptcp/protocol.c | 673 ++++++++++++++++++++++++++++++++++++++++++++++
net/mptcp/subflow.c | 351 ++++++++++++++++++++++++
net/mptcp/token.c | 222 +++++++++++++++
21 files changed, 2121 insertions(+), 26 deletions(-)
create mode 100644 include/net/mptcp.h
create mode 100644 net/mptcp/Kconfig
create mode 100644 net/mptcp/Makefile
create mode 100644 net/mptcp/crypto.c
create mode 100644 net/mptcp/options.c
create mode 100644 net/mptcp/protocol.c
create mode 100644 net/mptcp/subflow.c
create mode 100644 net/mptcp/token.c
--
2.16.3
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-03-28 23:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-28 23:49 [MPTCP] [RFC PATCH 00/16] MPTCP architecture proposal for discussion Rao Shoaib
-- strict thread matches above, loose matches on Subject: below --
2018-03-28 23:18 Mat Martineau
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.