Multipath TCP Upstreaming
Mat Martineau (Intel) and Matthieu Baerts (Tessares)
Multipath TCP Upstreaming Mat Martineau (Intel) and Matthieu Baerts - - PowerPoint PPT Presentation
Multipath TCP Upstreaming Mat Martineau (Intel) and Matthieu Baerts (Tessares) Plan Multipath TCP Overview First Patch Set Upstreaming Roadmap Advanced Features Roadmap Conclusion and links 2 What is MPTCP? 3 Multipath
Mat Martineau (Intel) and Matthieu Baerts (Tessares)
2
3
4
Smartphone and WiFi icons by Blurred203 and Antü Plasma under CC-by-sa, others from Tango project, public domain
5
Smartphone and WiFi icons by Blurred203 and Antü Plasma under CC-by-sa, others from Tango project, public domain
6
Smartphone and WiFi icons by Blurred203 and Antü Plasma under CC-by-sa, others from Tango project, public domain
7
Smartphone and WiFi icons by Blurred203 and Antü Plasma under CC-by-sa, others from Tango project, public domain
8
Smartphone and WiFi icons by Blurred203 and Antü Plasma under CC-by-sa, others from Tango project, public domain
9
Smartphone and WiFi icons by Blurred203 and Antü Plasma under CC-by-sa, others from Tango project, public domain
○ Support failover / “walk-out” scenario. ○ More Bandwidth
○ More Bandwidth
○ Access Traffic Steering, Switching and Splitting: ATSSS
10
11
Steering best network selection OR Switching seamless handover FROM TO
and vice versa
Splitting network aggregation AND improved end-user experience
Defined in 3GPP Release 16, ATSSS is a core network function in 5G networks, playing a key role in managing data traffic between 3GPP (5G, 4G) networks and non-3GPP (Wi-Fi) networks
5G 5G 5G WiFi WiFi WiFi
○ Latest MPTCP out-of-tree Linux kernel version is v0.95 ○ Generally used as a client / server in current deployments, for millions of users
○ Built to support experiments and rapid changes but not generic enough ○ Special purpose implementation of MPTCP
12
○ Without performance regressions. No code size change if CONFIG_MPTCP=n ○ Maintainable and configurable ○ Can be used in a variety of deployments
○ Minimal features set ○ Optimisations and advanced features for later
13
14 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer
15 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer
A B C D E F Dseq=0, seq=123,“A” Dseq=1, seq=124,“B” Dseq=2, seq=456,“C” Dseq=4, seq=125,“E” Dseq=5, seq=126,“F” Dseq=3, seq=456,“D”
Smartphone icon by Blurred203 under CC-by-sa, others from Tango project, public domain
16 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer
17 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer
18 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer
19 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer
20 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer In TCP
21 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer Via TCP ACK
22 MPTCP TCP Subflow TCP Subflow Socket Layer IP Layer
○ All known implementations support it, only this version
○ Submitted to IESG for publication ○ Behavioral changes: MPTCP v0 → MPTCP v1 ○ Some parts easier to implement ○ Selected by 3GPP for 5G
23
24
25 MPTCP TCP Subflow TCP Subflow Socket Layer
IP Proto: struct proto
SKB 1 SKB 2 ... SKB 1 SKB 2 ...
TCP ULP: struct tcp_ulp_ops We start from: tcp_request_sock_ops SKB extension: struct mptcp_ext To store Data Sequence Signal (25 bytes)
socket(AF_INET(6), SOCK_STREAM, IPPROTO_MPTCP);
26
socket(AF_INET(6), SOCK_STREAM, IPPROTO_MPTCP);
○ IPPROTO_MPTCP = IPPROTO_TCP | 0x100; /* = 262 */
27
socket(AF_INET(6), SOCK_STREAM, IPPROTO_MPTCP);
○ IPPROTO_MPTCP = IPPROTO_TCP | 0x100; /* = 262 */
28
socket(AF_INET(6), SOCK_STREAM, IPPROTO_MPTCP);
○ IPPROTO_MPTCP = IPPROTO_TCP | 0x100; /* = 262 */
○ Initial implementation will not be hardened by broad use yet (syzkaller, etc.) ○
sysctl per network namespace, MPTCP disabled by default: is it enough?
29
○ TCP ULP framework has been extended to enable diag
○ Should MPTCP add to these as well?
30
○ Between multiple namespaces (veth) ○ MPTCP ⇔ MPTCP, MPTCP ⇔ TCP, TCP ⇔ MPTCP ○ Various conditions including packet loss, reordering, and variations in routing
○ Background project ongoing to add MPTCP support ○ Out-of-tree Packetdrill with MPTCP support but old and limited
31
○ Client side handles multiple interfaces (like cellular + Wi-Fi)
interface for clients
○ Advertising additional interfaces not required
32
Server
IP1
Client
IP2 IP3 NAT NAT Internet
○ Needed to carry MPTCP options that are tied to the data payload ○ Also used to remove sp (sec_path) and nf_bridge pointers from struct sk_buff ○ Suitable for data that can’t fit in sk_buff and justifies memory overhead
33
Git Stat: include/linux/skbuff.h | 11 ++ include/linux/tcp.h | 51 ++++++++++ include/net/sock.h | 6 +- include/net/tcp.h | 20 ++++ include/trace/events/sock.h | 5 +- include/uapi/linux/in.h | 2 + net/Kconfig | 1 + net/Makefile | 1 + net/ax25/af_ax25.c | 2 +- net/core/skbuff.c | 7 ++ net/decnet/af_decnet.c | 2 +- net/ipv4/inet_connection_sock.c | 2 + net/ipv4/tcp.c | 8 +- net/ipv4/tcp_input.c | 29 +++++- net/ipv4/tcp_ipv4.c | 4 +- net/ipv4/tcp_minisocks.c | 6 ++ net/ipv4/tcp_output.c | 62 +++++++++++- net/ipv4/tcp_ulp.c | 12 +++ 34
35
ACKs
36
37
Which path to create/remove? Which address to announce?
38
? ?
Smartphone and WiFi icons by Blurred203 and Antü Plasma under CC-by-sa, others from Tango project, public domain
addresses for each MPTCP connection
local interface updates and request subflow changes
39
On which available path packets will be sent? Reinject packets in another path?
40
A A ? ?
Smartphone and WiFi icons by Blurred203 and Antü Plasma under CC-by-sa, others from Tango project, public domain
41
their userspace
protocol number passed to socket()
42
○ While not disrupting TCP’s optimizations!
○ Example: changing scheduler behavior for reinjection of data on different subflows
43
○ Allows the session to continue by adding a subflow with MP_JOIN
44
45
○ TLS records could be split across subflows ○ MPTCP DSS mappings are specific to TCP sequence numbers
socket type
46
47
48
This project is open to everybody.
49
50
Used with Christoph Paasch’s permission
Relations between structures
51
From: https://netdevconf.org/1.2/papers/netdevconf-TLS.pdf
Coupled receive windows across TCP subflows
52
Used with Sébastien Barré’s permission
Hybrid access network use-case (BBF TR-348 by Tessares - SwissCom - OVH)
53
Telco Cloud
DSL CPE 4G CPE
TCP TCP MPTCP
copper (long line)
4G/LTE
network
fiber
xDSL
network MPTCP
cloud native HAG multi- platform Agent
available capacity
needed, for 4G/LTE connectivity
Images from Tessares
54
Data sequence numbers and mappings
55
A B C
Smartphone icon by Blurred203 under CC-by-sa, others from Tango project, public domain
Data sequence numbers and mappings
56
A B C D E F
Smartphone icon by Blurred203 under CC-by-sa, others from Tango project, public domain
Data sequence numbers and mappings
57
A B C D E F
Smartphone icon by Blurred203 under CC-by-sa, others from Tango project, public domain
Data sequence numbers and mappings
58
A B C D E F
Dseq=0, seq=123,“A” Dseq=1, seq=124,“B” Dseq=2, seq=456,“C” Dseq=4, seq=125,“E” Dseq=5, seq=126,“F” Dseq=3, seq=456,“D”
Smartphone icon by Blurred203 under CC-by-sa, others from Tango project, public domain
Data sequence numbers and mappings
mptcp_sock tcp_sock Socket Layer IP Layer
App sends data
59
Data sequence numbers and mappings
mptcp_sock tcp_sock Socket Layer IP Layer 60
Select the TCP subflow
Data sequence numbers and mappings
mptcp_sock tcp_sock Socket Layer IP Layer
TCP header: What DSS to set?
61
Sending of ACKs to signal options, e.g. REMOVE_ADDR in a TCP ACK
mptcp_sock tcp_sock tcp_sock Socket Layer IP Layer Subflow ops Subflow ops 62
Notification: one iface is down
Sending of ACKs to signal options, e.g. REMOVE_ADDR in a TCP ACK
mptcp_sock tcp_sock tcp_sock Socket Layer IP Layer Subflow ops Subflow ops 63
Select the subflow
Sending of ACKs to signal options, e.g. REMOVE_ADDR in a TCP ACK
mptcp_sock tcp_sock tcp_sock Socket Layer IP Layer Subflow ops Subflow ops 64
Sending a ACK not from TCP stack
Reception of ACKs with signaling options, e.g. REMOVE_ADDR in a TCP ACK
mptcp_sock tcp_sock tcp_sock Socket Layer IP Layer Subflow ops Subflow ops 65
TCP ACK received
Reception of ACKs with signaling options, e.g. REMOVE_ADDR in a TCP ACK
mptcp_sock tcp_sock tcp_sock Socket Layer IP Layer Subflow ops Subflow ops 66
TCP ACK is not dropped
Reception of ACKs with signaling options, e.g. REMOVE_ADDR in a TCP ACK
mptcp_sock tcp_sock tcp_sock Socket Layer IP Layer Subflow ops Subflow ops 67
Signaling with MPTCP:
68
SYN SYN ALL ACK followed by RST ACK ACK