From 5b9c9211a3a98a8a231aaed5e82649c4749300ee Mon Sep 17 00:00:00 2001 From: Matthieu Baerts Date: Sat, 23 Jan 2021 11:19:10 +0100 Subject: [PATCH] mptcp: ADD_ADDR are now sent sooner A recent modification of the kernel changes the way ADD_ADDR are sent. See: https://github.com/multipath-tcp/mptcp_net-next/issues/139 In consequences, we have to adapt our tests to have these ADD_ADDR sent earlier, ASAP in fact. We now make sure ADD_ADDR and ADD_ADDR echo are properly sent before injecting MP_JOIN SYN and SYN+ACK or sending data. Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/144 Signed-off-by: Matthieu Baerts --- gtests/net/mptcp/add_addr/add_addr_client.pkt | 5 ++++- gtests/net/mptcp/add_addr/add_addr_server.pkt | 7 ++++++- .../fastclose/receive_fastclose_with_ack_multi_v4.pkt | 11 ++++++++--- .../fastclose/receive_fastclose_with_rst_multi_v4.pkt | 11 ++++++++--- gtests/net/mptcp/mp_join/mp_join_client_v4.pkt | 4 +++- gtests/net/mptcp/mp_join/mp_join_server_v4.pkt | 11 +++++++++-- 6 files changed, 38 insertions(+), 11 deletions(-) diff --git a/gtests/net/mptcp/add_addr/add_addr_client.pkt b/gtests/net/mptcp/add_addr/add_addr_client.pkt index b43900f0..693d6b1a 100644 --- a/gtests/net/mptcp/add_addr/add_addr_client.pkt +++ b/gtests/net/mptcp/add_addr/add_addr_client.pkt @@ -25,5 +25,8 @@ +0.0 < . 1:1(0) ack 101 win 256 +0.0 < . 1:1(0) ack 101 win 256 -+0.4 close(3) = 0 +// ADD_ADDR echo (without hmac) ++0.0 > . 101:101(0) ack 1 + ++0.0 close(3) = 0 +0.0 > . 101:101(0) ack 1 diff --git a/gtests/net/mptcp/add_addr/add_addr_server.pkt b/gtests/net/mptcp/add_addr/add_addr_server.pkt index cd08578b..bc8e9f39 100644 --- a/gtests/net/mptcp/add_addr/add_addr_server.pkt +++ b/gtests/net/mptcp/add_addr/add_addr_server.pkt @@ -16,9 +16,14 @@ +0.01 < . 1:1(0) ack 1 win 257 +0 accept(3, ..., ...) = 4 +// ADD_ADDR is sent directly (>= 5.12), not after first data (< 5.12) ++0 > . 1:1(0) ack 1 +// TODO: support injecting ADD_ADDR echo +//+0 < . 1:1(0) ack 1 win 257 + // read and ack 1 data segment +1.0 < P. 1:1001(1000) ack 1 win 450 -+0 > . 1:1(0) ack 1001 ++0 > . 1:1(0) ack 1001 +0.3 read(4, ..., 1000) = 1000 +0 close(4) = 0 diff --git a/gtests/net/mptcp/fastclose/receive_fastclose_with_ack_multi_v4.pkt b/gtests/net/mptcp/fastclose/receive_fastclose_with_ack_multi_v4.pkt index 501280f6..1bdc6980 100644 --- a/gtests/net/mptcp/fastclose/receive_fastclose_with_ack_multi_v4.pkt +++ b/gtests/net/mptcp/fastclose/receive_fastclose_with_ack_multi_v4.pkt @@ -14,11 +14,16 @@ +0.0 < . 1:1(0) ack 1 win 256 +0 accept(3, ..., ...) = 4 -+0.0 < P. 1:1001(1000) ack 1 win 450 +// add_addr ++0.0 > . 1:1(0) ack 1 +// TODO: send echo bit +// +0.0 < . 1:1(0) ack 1 win 256 + ++0.2 < P. 1:1001(1000) ack 1 win 450 +0.0 > . 1:1(0) ack 1001 -+0.2 < P. 1:1(0) ack 1 win 450 -+0.0 > . 1:1(0) ack 1001 ++0.2 < P. 1:1(0) ack 1 win 450 ++0.0 > . 1:1(0) ack 1001 // add another subflow. +0.5 < addr[caddr1] > addr[saddr1] S 0:0(0) win 65535 diff --git a/gtests/net/mptcp/fastclose/receive_fastclose_with_rst_multi_v4.pkt b/gtests/net/mptcp/fastclose/receive_fastclose_with_rst_multi_v4.pkt index ef4edbe4..d667b2fa 100644 --- a/gtests/net/mptcp/fastclose/receive_fastclose_with_rst_multi_v4.pkt +++ b/gtests/net/mptcp/fastclose/receive_fastclose_with_rst_multi_v4.pkt @@ -14,11 +14,16 @@ +0.0 < . 1:1(0) ack 1 win 256 +0 accept(3, ..., ...) = 4 -+0.0 < P. 1:1001(1000) ack 1 win 450 +// add_addr ++0.0 > . 1:1(0) ack 1 +// TODO: send echo bit +// +0.0 < . 1:1(0) ack 1 win 256 + ++0.2 < P. 1:1001(1000) ack 1 win 450 +0.0 > . 1:1(0) ack 1001 -+0.2 < P. 1:1(0) ack 1 win 450 -+0.0 > . 1:1(0) ack 1001 ++0.2 < P. 1:1(0) ack 1 win 450 ++0.0 > . 1:1(0) ack 1001 // add another subflow. +0.5 < addr[caddr1] > addr[saddr1] S 0:0(0) win 65535 diff --git a/gtests/net/mptcp/mp_join/mp_join_client_v4.pkt b/gtests/net/mptcp/mp_join/mp_join_client_v4.pkt index 0135c870..5787f4f5 100644 --- a/gtests/net/mptcp/mp_join/mp_join_client_v4.pkt +++ b/gtests/net/mptcp/mp_join/mp_join_client_v4.pkt @@ -20,11 +20,13 @@ +0.0 < . 1:1(0) ack 3 win 256 +0.0 > > addr[saddr1] S 0:0(0) ++0.0 > > addr[saddr0] . 3:3(0) ack 1 + +0.0 < S. 0:0(0) ack 1 win 65535 +0.0 > . 1:1(0) ack 1 +0.0 < . 1:1(0) ack 1 win 256 +1.0 < . 1:101(100) ack 1 win 256 -+0.0 > . 1:1(0) ack 101 ++0.0 > . 1:1(0) ack 101 +0.0 read (3, ..., 100) = 100 +0.1 close(3) = 0 +0.0 > addr[caddr0] > addr[saddr0] . 3:3(0) ack 1 diff --git a/gtests/net/mptcp/mp_join/mp_join_server_v4.pkt b/gtests/net/mptcp/mp_join/mp_join_server_v4.pkt index f2eeb502..59c37416 100644 --- a/gtests/net/mptcp/mp_join/mp_join_server_v4.pkt +++ b/gtests/net/mptcp/mp_join/mp_join_server_v4.pkt @@ -16,8 +16,15 @@ +0.0 < . 1:1(0) ack 1 win 256 +0 accept(3, ..., ...) = 4 -+1.0 < P. 1:3(2) ack 1 win 256 -+0.0 > . 1:1(0) ack 3 +// add_addr ++0.0 > . 1:1(0) ack 1 +// TODO: send echo bit +// +0.0 > . 1:1(0) ack 1 + ++0.2 < P. 1:3(2) ack 1 win 256 +// MP_CAPABLE carrying data are acked with 64-bit, safer not knowing if the +// sender will use a DSN on 64-bit or 32-bit. Later we can use the lower 32 bits ++0.0 > . 1:1(0) ack 3 // create subflow +0.0 < addr[caddr1] > addr[saddr1] S 0:0(0) win 65535