|
| 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