Skip to content

Commit

Permalink
mptcp: mpc: fallback if only MPTCP was dropped
Browse files Browse the repository at this point in the history
After 3 failed attempts, there is a fallback to TCP. If this "plain" TCP
connection was a success, it likely means that MPTCP is blocked. The
next connections now directly falls back to TCP.

Link: multipath-tcp/mptcp_net-next#57
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
  • Loading branch information
matttbe committed Sep 1, 2024
1 parent f736ff0 commit 7d345dd
Showing 1 changed file with 24 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,27 @@
+0.0 getsockopt(3, SOL_TCP, TCP_IS_MPTCP, [0], [4]) = 0
+0.01 `test $(nstat -zjs | jq '.kernel.MPTcpExtMPCapableSYNTXDrop') -eq 1`
+0.01 `test $(nstat -zjs | jq '.kernel.MPTcpExtBlackhole') -eq 1`

+0.01 close(3) = 0
+0 > F. 1:1(0) ack 1 <nop, nop, TS val 100 ecr 700>
+0.01 < F. 1:1(0) ack 2 win 92 <nop, nop, TS val 700 ecr 100>
+0 > . 2:2(0) ack 2 <nop, nop, TS val 100 ecr 700>


// Establish a new MPTCP connection and verify that there is directly a fallback to TCP.
+0.02 socket(..., SOCK_STREAM, IPPROTO_MPTCP) = 4
+0.0 setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
+0.0 getsockopt(4, SOL_TCP, TCP_IS_MPTCP, [1], [4]) = 0
+0.0 fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
+0.0 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
+0.0 connect(4, ..., ...) = -1 EINPROGRESS (Operation now in progress)

+0.0 > S 0:0(0) <mss 1460, sackOK, TS val 100 ecr 0, nop, wscale 8>
+0.01 < S. 0:0(0) ack 1 win 65535 <mss 1460, sackOK, TS val 700 ecr 100, nop, wscale 8>
+0.0 > . 1:1(0) ack 1 <nop, nop, TS val 100 ecr 700>

+0.200 getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0

// Check for fallback
+0.0 getsockopt(4, SOL_TCP, TCP_IS_MPTCP, [0], [4]) = 0
+0.01 `test $(nstat -zjs | jq '.kernel.MPTcpExtMPCapableSYNTXDisabled') -eq 1`

0 comments on commit 7d345dd

Please sign in to comment.