Skip to content

Commit b96e6ba

Browse files
authored
Merge pull request multipath-tcp#156 from matttbe/mptcp-fallback-x-mpc
mptcp: fallback to TCP after 3 MPC drop + cache
2 parents efc6d05 + 7d345dd commit b96e6ba

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
--tolerance_usecs=100000
2+
`../common/defaults.sh`
3+
4+
0.0 socket(..., SOCK_STREAM, IPPROTO_MPTCP) = 3
5+
+0.0 setsockopt(3, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
6+
+0.0 getsockopt(3, SOL_TCP, TCP_IS_MPTCP, [1], [4]) = 0
7+
+0.0 fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
8+
+0.0 fcntl(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
9+
10+
// Establish connection and verify that there is a fallback to TCP.
11+
12+
+0 `nstat -n`
13+
+0.0 connect(3, ..., ...) = -1 EINPROGRESS (Operation now in progress)
14+
+0.0 > S 0:0(0) <mss 1460, sackOK, TS val 100 ecr 0, nop, wscale 8, mpcapable v1 flags[flag_h] nokey>
15+
+1.0 > S 0:0(0) <mss 1460, sackOK, TS val 100 ecr 0, nop, wscale 8, mpcapable v1 flags[flag_h] nokey>
16+
+1.0 > S 0:0(0) <mss 1460, sackOK, TS val 100 ecr 0, nop, wscale 8, mpcapable v1 flags[flag_h] nokey>
17+
18+
+1.0 > S 0:0(0) <mss 1460, sackOK, TS val 100 ecr 0, nop, wscale 8>
19+
+0.01 < S. 0:0(0) ack 1 win 65535 <mss 1460, sackOK, TS val 700 ecr 100, nop, wscale 8>
20+
+0.0 > . 1:1(0) ack 1 <nop, nop, TS val 100 ecr 700>
21+
22+
+0.200 getsockopt(3, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
23+
24+
// Check for fallback
25+
+0.0 getsockopt(3, SOL_TCP, TCP_IS_MPTCP, [0], [4]) = 0
26+
+0.01 `test $(nstat -zjs | jq '.kernel.MPTcpExtMPCapableSYNTXDrop') -eq 1`
27+
+0.01 `test $(nstat -zjs | jq '.kernel.MPTcpExtBlackhole') -eq 1`
28+
29+
+0.01 close(3) = 0
30+
+0 > F. 1:1(0) ack 1 <nop, nop, TS val 100 ecr 700>
31+
+0.01 < F. 1:1(0) ack 2 win 92 <nop, nop, TS val 700 ecr 100>
32+
+0 > . 2:2(0) ack 2 <nop, nop, TS val 100 ecr 700>
33+
34+
35+
// Establish a new MPTCP connection and verify that there is directly a fallback to TCP.
36+
+0.02 socket(..., SOCK_STREAM, IPPROTO_MPTCP) = 4
37+
+0.0 setsockopt(4, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
38+
+0.0 getsockopt(4, SOL_TCP, TCP_IS_MPTCP, [1], [4]) = 0
39+
+0.0 fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
40+
+0.0 fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
41+
+0.0 connect(4, ..., ...) = -1 EINPROGRESS (Operation now in progress)
42+
43+
+0.0 > S 0:0(0) <mss 1460, sackOK, TS val 100 ecr 0, nop, wscale 8>
44+
+0.01 < S. 0:0(0) ack 1 win 65535 <mss 1460, sackOK, TS val 700 ecr 100, nop, wscale 8>
45+
+0.0 > . 1:1(0) ack 1 <nop, nop, TS val 100 ecr 700>
46+
47+
+0.200 getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
48+
49+
// Check for fallback
50+
+0.0 getsockopt(4, SOL_TCP, TCP_IS_MPTCP, [0], [4]) = 0
51+
+0.01 `test $(nstat -zjs | jq '.kernel.MPTcpExtMPCapableSYNTXDisabled') -eq 1`

0 commit comments

Comments
 (0)