* [PATCH RESEND mptcp-next v2 01/12] mptcp: add the mibs for MP_FASTCLOSE
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 02/12] selftests: mptcp: add the MP_FASTCLOSE mibs check Geliang Tang
` (11 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added two more mibs for MP_FASTCLOSE, MPTCP_MIB_MPFASTCLOSETX
for the MP_FASTCLOSE sending and MPTCP_MIB_MPFASTCLOSERX for receiving.
Also added a debug log for MP_FASTCLOSE receiving, printed out the recv_key
of MP_FASTCLOSE in mptcp_parse_option to show that MP_RST is received.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/mib.c | 2 ++
net/mptcp/mib.h | 2 ++
net/mptcp/options.c | 3 +++
3 files changed, 7 insertions(+)
diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index 7cef7409e300..684643f8af53 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -49,6 +49,8 @@ static const struct snmp_mib mptcp_snmp_list[] = {
SNMP_MIB_ITEM("MPPrioRx", MPTCP_MIB_MPPRIORX),
SNMP_MIB_ITEM("MPFailTx", MPTCP_MIB_MPFAILTX),
SNMP_MIB_ITEM("MPFailRx", MPTCP_MIB_MPFAILRX),
+ SNMP_MIB_ITEM("MPFastcloseTx", MPTCP_MIB_MPFASTCLOSETX),
+ SNMP_MIB_ITEM("MPFastcloseRx", MPTCP_MIB_MPFASTCLOSERX),
SNMP_MIB_ITEM("RcvPruned", MPTCP_MIB_RCVPRUNED),
SNMP_MIB_ITEM("SubflowStale", MPTCP_MIB_SUBFLOWSTALE),
SNMP_MIB_ITEM("SubflowRecover", MPTCP_MIB_SUBFLOWRECOVER),
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 785cf751e5c0..93dd5176fd5e 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -42,6 +42,8 @@ enum linux_mptcp_mib_field {
MPTCP_MIB_MPPRIORX, /* Received a MP_PRIO */
MPTCP_MIB_MPFAILTX, /* Transmit a MP_FAIL */
MPTCP_MIB_MPFAILRX, /* Received a MP_FAIL */
+ MPTCP_MIB_MPFASTCLOSETX, /* Transmit a MP_FASTCLOSE */
+ MPTCP_MIB_MPFASTCLOSERX, /* Received a MP_FASTCLOSE */
MPTCP_MIB_RCVPRUNED, /* Incoming packet dropped due to memory limit */
MPTCP_MIB_SUBFLOWSTALE, /* Subflows entered 'stale' status */
MPTCP_MIB_SUBFLOWRECOVER, /* Subflows returned to active status after being stale */
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 0401b22128c4..e775d75807fd 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -323,6 +323,7 @@ static void mptcp_parse_option(const struct sk_buff *skb,
mp_opt->rcvr_key = get_unaligned_be64(ptr);
ptr += 8;
mp_opt->suboptions |= OPTION_MPTCP_FASTCLOSE;
+ pr_debug("MP_FASTCLOSE: recv_key=%llu", mp_opt->rcvr_key);
break;
case MPTCPOPT_RST:
@@ -832,6 +833,7 @@ bool mptcp_established_options(struct sock *sk, struct sk_buff *skb,
mptcp_established_options_mp_fail(sk, &opt_size, remaining, opts)) {
*size += opt_size;
remaining -= opt_size;
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFASTCLOSETX);
}
/* MP_RST can be used with MP_FASTCLOSE and MP_FAIL if there is room */
if (mptcp_established_options_rst(sk, skb, &opt_size, remaining, opts)) {
@@ -1124,6 +1126,7 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
msk->local_key == mp_opt.rcvr_key) {
WRITE_ONCE(msk->rcv_fastclose, true);
mptcp_schedule_work((struct sock *)msk);
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFASTCLOSERX);
}
if ((mp_opt.suboptions & OPTION_MPTCP_ADD_ADDR) &&
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 02/12] selftests: mptcp: add the MP_FASTCLOSE mibs check
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 01/12] mptcp: add the mibs for MP_FASTCLOSE Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 03/12] mptcp: add the mibs for MP_RST Geliang Tang
` (10 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added a new function chk_fclose_nr() to check the numbers
of the MP_FASTCLOSE sending and receiving mibs.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 32 +++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 8e6a5292175a..8f81ec0b7552 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -904,6 +904,38 @@ chk_infi_nr()
[ "${dump_stats}" = 1 ] && dump_stats
}
+chk_fclose_nr()
+{
+ local fclose_tx=$1
+ local fclose_rx=$2
+ local count
+ local dump_stats
+
+ printf "%-${nr_blank}s %s" " " "ctx"
+ count=`ip netns exec $ns2 nstat -as | grep MPTcpExtMPFastcloseTx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$fclose_tx" ]; then
+ echo "[fail] got $count MP_FASTCLOSE[s] TX expected $fclose_tx"
+ ret=1
+ dump_stats=1
+ else
+ echo -n "[ ok ]"
+ fi
+
+ echo -n " - fclzrx"
+ count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPFastcloseRx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$fclose_rx" ]; then
+ echo "[fail] got $count MP_FASTCLOSE[s] RX expected $fclose_rx"
+ ret=1
+ dump_stats=1
+ else
+ echo "[ ok ]"
+ fi
+
+ [ "${dump_stats}" = 1 ] && dump_stats
+}
+
chk_join_nr()
{
local msg="$1"
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 03/12] mptcp: add the mibs for MP_RST
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 01/12] mptcp: add the mibs for MP_FASTCLOSE Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 02/12] selftests: mptcp: add the MP_FASTCLOSE mibs check Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 04/12] selftests: mptcp: add the MP_RST mibs check Geliang Tang
` (9 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added two more mibs for MP_RST, MPTCP_MIB_MPRSTTX for
the MP_RST sending and MPTCP_MIB_MPRSTRX for the MP_RST receiving.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/mib.c | 2 ++
net/mptcp/mib.h | 2 ++
net/mptcp/options.c | 2 ++
3 files changed, 6 insertions(+)
diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index 684643f8af53..d93a8c9996fd 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -51,6 +51,8 @@ static const struct snmp_mib mptcp_snmp_list[] = {
SNMP_MIB_ITEM("MPFailRx", MPTCP_MIB_MPFAILRX),
SNMP_MIB_ITEM("MPFastcloseTx", MPTCP_MIB_MPFASTCLOSETX),
SNMP_MIB_ITEM("MPFastcloseRx", MPTCP_MIB_MPFASTCLOSERX),
+ SNMP_MIB_ITEM("MPRstTx", MPTCP_MIB_MPRSTTX),
+ SNMP_MIB_ITEM("MPRstRx", MPTCP_MIB_MPRSTRX),
SNMP_MIB_ITEM("RcvPruned", MPTCP_MIB_RCVPRUNED),
SNMP_MIB_ITEM("SubflowStale", MPTCP_MIB_SUBFLOWSTALE),
SNMP_MIB_ITEM("SubflowRecover", MPTCP_MIB_SUBFLOWRECOVER),
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 93dd5176fd5e..529d07af9e14 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -44,6 +44,8 @@ enum linux_mptcp_mib_field {
MPTCP_MIB_MPFAILRX, /* Received a MP_FAIL */
MPTCP_MIB_MPFASTCLOSETX, /* Transmit a MP_FASTCLOSE */
MPTCP_MIB_MPFASTCLOSERX, /* Received a MP_FASTCLOSE */
+ MPTCP_MIB_MPRSTTX, /* Transmit a MP_RST */
+ MPTCP_MIB_MPRSTRX, /* Received a MP_RST */
MPTCP_MIB_RCVPRUNED, /* Incoming packet dropped due to memory limit */
MPTCP_MIB_SUBFLOWSTALE, /* Subflows entered 'stale' status */
MPTCP_MIB_SUBFLOWRECOVER, /* Subflows returned to active status after being stale */
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index e775d75807fd..88f4ebbd6515 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -839,6 +839,7 @@ bool mptcp_established_options(struct sock *sk, struct sk_buff *skb,
if (mptcp_established_options_rst(sk, skb, &opt_size, remaining, opts)) {
*size += opt_size;
remaining -= opt_size;
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPRSTTX);
}
return true;
}
@@ -1161,6 +1162,7 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
subflow->reset_seen = 1;
subflow->reset_reason = mp_opt.reset_reason;
subflow->reset_transient = mp_opt.reset_transient;
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPRSTRX);
}
if (!(mp_opt.suboptions & OPTION_MPTCP_DSS))
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 04/12] selftests: mptcp: add the MP_RST mibs check
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (2 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 03/12] mptcp: add the mibs for MP_RST Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 05/12] selftests: mptcp: add extra_args in do_transfer Geliang Tang
` (8 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added a new function chk_rst_nr() to check the numbers
of the MP_RST sending and receiving mibs.
Showed in the output whether the inverted namespaces check order is used.
Since if we pass -Cz to mptcp_join.sh, the MP_RST information is showed
twice.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 45 +++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 8f81ec0b7552..ed4b35652ab5 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -872,6 +872,50 @@ chk_fail_nr()
[ "${dump_stats}" = 1 ] && dump_stats
}
+chk_rst_nr()
+{
+ local rst_tx=$1
+ local rst_rx=$2
+ local ns_invert=${3:-""}
+ local count
+ local dump_stats
+ local ns_tx=$ns1
+ local ns_rx=$ns2
+ local extra_msg=""
+
+ if [[ $ns_invert = "invert" ]]; then
+ ns_tx=$ns2
+ ns_rx=$ns1
+ extra_msg=" invert"
+ fi
+
+ printf "%-${nr_blank}s %s" " " "rtx"
+ count=`ip netns exec $ns_tx nstat -as | grep MPTcpExtMPRstTx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$rst_tx" ]; then
+ echo "[fail] got $count MP_RST[s] TX expected $rst_tx"
+ ret=1
+ dump_stats=1
+ else
+ echo -n "[ ok ]"
+ fi
+
+ echo -n " - rstrx "
+ count=`ip netns exec $ns_rx nstat -as | grep MPTcpExtMPRstRx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$rst_rx" ]; then
+ echo "[fail] got $count MP_RST[s] RX expected $rst_rx"
+ ret=1
+ dump_stats=1
+ else
+ echo -n "[ ok ]"
+ fi
+
+ [ "${dump_stats}" = 1 ] && dump_stats
+
+ echo "$extra_msg"
+}
+
chk_infi_nr()
{
local mp_infi_nr_tx=$1
@@ -990,6 +1034,7 @@ chk_join_nr()
if [ $checksum -eq 1 ]; then
chk_csum_nr
chk_fail_nr 0 0
+ chk_rst_nr 0 0
chk_infi_nr 0 0
fi
}
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 05/12] selftests: mptcp: add extra_args in do_transfer
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (3 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 04/12] selftests: mptcp: add the MP_RST mibs check Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 06/12] selftests: mptcp: reuse linkfail to make given size files Geliang Tang
` (7 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
Instead of using a global variable mptcp_connect, this patch added
a new local variable extra_args in do_transfer() to store the extra
argments passing to the mptcp_connect commands.
This patch also renamed the speed level 'least' to 'speed_*'. This
more flexible way can avoid the need to add new speed levels in the
future.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 30 +++++++++----------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index ed4b35652ab5..c06e9e9a0a3f 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -12,7 +12,6 @@ cout=""
ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
-mptcp_connect=""
capture=0
checksum=0
ip_mptcp=0
@@ -524,12 +523,13 @@ do_transfer()
NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \
nstat -n
+ local extra_args
if [ $speed = "fast" ]; then
- mptcp_connect="./mptcp_connect -j"
+ extra_args="-j"
elif [ $speed = "slow" ]; then
- mptcp_connect="./mptcp_connect -r 50"
- elif [ $speed = "least" ]; then
- mptcp_connect="./mptcp_connect -r 10"
+ extra_args="-r 50"
+ elif [[ $speed = "speed_"* ]]; then
+ extra_args="-r ${speed:6}"
fi
local local_addr
@@ -542,13 +542,13 @@ do_transfer()
if [ "$test_link_fail" -eq 2 ];then
timeout ${timeout_test} \
ip netns exec ${listener_ns} \
- $mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
- ${local_addr} < "$sinfail" > "$sout" &
+ ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
+ $extra_args ${local_addr} < "$sinfail" > "$sout" &
else
timeout ${timeout_test} \
ip netns exec ${listener_ns} \
- $mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
- ${local_addr} < "$sin" > "$sout" &
+ ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
+ $extra_args ${local_addr} < "$sin" > "$sout" &
fi
spid=$!
@@ -557,15 +557,15 @@ do_transfer()
if [ "$test_link_fail" -eq 0 ];then
timeout ${timeout_test} \
ip netns exec ${connector_ns} \
- $mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
- $connect_addr < "$cin" > "$cout" &
+ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
+ $extra_args $connect_addr < "$cin" > "$cout" &
else
( cat "$cinfail" ; sleep 2; link_failure $listener_ns ; cat "$cinfail" ) | \
tee "$cinsent" | \
timeout ${timeout_test} \
ip netns exec ${connector_ns} \
- $mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
- $connect_addr > "$cout" &
+ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
+ $extra_args $connect_addr > "$cout" &
fi
cpid=$!
@@ -1620,7 +1620,7 @@ add_addr_timeout_tests()
pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
pm_nl_set_limits $ns2 2 2
- run_tests $ns1 $ns2 10.0.1.1 0 0 0 least
+ run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10
chk_join_nr "signal addresses, ADD_ADDR timeout" 2 2 2
chk_add_nr 8 0
@@ -1630,7 +1630,7 @@ add_addr_timeout_tests()
pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
pm_nl_set_limits $ns2 2 2
- run_tests $ns1 $ns2 10.0.1.1 0 0 0 least
+ run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10
chk_join_nr "invalid address, ADD_ADDR timeout" 1 1 1
chk_add_nr 8 0
}
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 06/12] selftests: mptcp: reuse linkfail to make given size files
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (4 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 05/12] selftests: mptcp: add extra_args in do_transfer Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 07/12] selftests: mptcp: add fastclose testcase Geliang Tang
` (6 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch reused the test_linkfail values above 2 to make test files with
the given sizes (KB) for both the client side and the server side. It's
useful for the test cases using different file sizes.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 32 ++++++++++++++++---
1 file changed, 27 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index c06e9e9a0a3f..9d2076021df2 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -539,7 +539,7 @@ do_transfer()
local_addr="0.0.0.0"
fi
- if [ "$test_link_fail" -eq 2 ];then
+ if [ "$test_link_fail" -gt 1 ];then
timeout ${timeout_test} \
ip netns exec ${listener_ns} \
./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
@@ -559,13 +559,19 @@ do_transfer()
ip netns exec ${connector_ns} \
./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
$extra_args $connect_addr < "$cin" > "$cout" &
- else
+ elif [ "$test_link_fail" -eq 1 ] || [ "$test_link_fail" -eq 2 ];then
( cat "$cinfail" ; sleep 2; link_failure $listener_ns ; cat "$cinfail" ) | \
tee "$cinsent" | \
timeout ${timeout_test} \
ip netns exec ${connector_ns} \
./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
$extra_args $connect_addr > "$cout" &
+ else
+ cat "$cinfail" | tee "$cinsent" | \
+ timeout ${timeout_test} \
+ ip netns exec ${connector_ns} \
+ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
+ $extra_args $connect_addr > "$cout" &
fi
cpid=$!
@@ -725,7 +731,7 @@ do_transfer()
return 1
fi
- if [ "$test_link_fail" -eq 2 ];then
+ if [ "$test_link_fail" -gt 1 ];then
check_transfer $sinfail $cout "file received by client"
else
check_transfer $sin $cout "file received by client"
@@ -770,9 +776,18 @@ run_tests()
speed="${7:-fast}"
sflags="${8:-""}"
+ # The values above 2 are reused to make test files
+ # with the given sizes (KB)
+ if [ "$test_linkfail" -gt 2 ]; then
+ size=$test_linkfail
+
+ if [ -z "$cinfail" ]; then
+ cinfail=$(mktemp)
+ fi
+ make_file "$cinfail" "client" $size
# create the input file for the failure test when
# the first failure test run
- if [ "$test_linkfail" -ne 0 -a -z "$cinfail" ]; then
+ elif [ "$test_linkfail" -ne 0 -a -z "$cinfail" ]; then
# the client file must be considerably larger
# of the maximum expected cwin value, or the
# link utilization will be not predicable
@@ -785,7 +800,14 @@ run_tests()
make_file "$cinfail" "client" $size
fi
- if [ "$test_linkfail" -eq 2 -a -z "$sinfail" ]; then
+ if [ "$test_linkfail" -gt 2 ]; then
+ size=$test_linkfail
+
+ if [ -z "$sinfail" ]; then
+ sinfail=$(mktemp)
+ fi
+ make_file "$sinfail" "server" $size
+ elif [ "$test_linkfail" -eq 2 -a -z "$sinfail" ]; then
size=$((RANDOM%16))
size=$((size+1))
size=$((size*2048))
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 07/12] selftests: mptcp: add fastclose testcase
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (5 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 06/12] selftests: mptcp: reuse linkfail to make given size files Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 08/12] Squash to "mptcp: infinite mapping receiving" Geliang Tang
` (5 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added the self test for MP_FASTCLOSE. Reused the argment
addr_nr_ns2 of do_transfer() to pass the extra argments '-I 2' to
mptcp_connect commands. Then mptcp_connect disconnected the
connections to trigger the MP_FASTCLOSE sending and receiving. Used
chk_fclose_nr to check the MP_FASTCLOSE mibs and used chk_rst_nr to
check the MP_RST mibs. This test used the test_linkfail value to make
1024KB test files.
The output looks like this:
Created /tmp/tmp.XB8sfv1hJ0 (size 1024 KB) containing data sent by client
Created /tmp/tmp.RtTDbzqrXI (size 1024 KB) containing data sent by server
001 fastclose test syn[ ok ] - synack[ ok ] - ack[ ok ]
ctx[ ok ] - fclzrx[ ok ]
rtx[ ok ] - rstrx [ ok ] invert
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 22 ++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 9d2076021df2..1b8b531c8a87 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -532,6 +532,12 @@ do_transfer()
extra_args="-r ${speed:6}"
fi
+ if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then
+ # disconnect
+ extra_args="$extra_args -I ${addr_nr_ns2:10}"
+ addr_nr_ns2=0
+ fi
+
local local_addr
if is_v6 "${connect_addr}"; then
local_addr="::"
@@ -2409,6 +2415,15 @@ implicit_tests()
wait
}
+fastclose_tests()
+{
+ reset
+ run_tests $ns1 $ns2 10.0.1.1 1024 0 fastclose_2
+ chk_join_nr "fastclose test" 0 0 0
+ chk_fclose_nr 1 1
+ chk_rst_nr 1 1 invert
+}
+
all_tests()
{
subflows_tests
@@ -2428,6 +2443,7 @@ all_tests()
fullmesh_tests
userspace_tests
implicit_tests
+ fastclose_tests
}
# [$1: error message]
@@ -2456,6 +2472,7 @@ usage()
echo " -m fullmesh_tests"
echo " -u userspace_tests"
echo " -I implicit_tests"
+ echo " -z fastclose_tests"
echo " -c capture pcap files"
echo " -C enable data checksum"
echo " -i use ip mptcp"
@@ -2487,7 +2504,7 @@ if [ $do_all_tests -eq 1 ]; then
exit $ret
fi
-while getopts 'fesltra64bpkdmuchCSiI' opt; do
+while getopts 'fesltra64bpkdmuchzCSiI' opt; do
case $opt in
f)
subflows_tests
@@ -2537,6 +2554,9 @@ while getopts 'fesltra64bpkdmuchCSiI' opt; do
u)
userspace_tests
;;
+ z)
+ fastclose_tests
+ ;;
c)
;;
C)
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 08/12] Squash to "mptcp: infinite mapping receiving"
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (6 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 07/12] selftests: mptcp: add fastclose testcase Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 09/12] Squash to "selftests: mptcp: add infinite map mibs check" Geliang Tang
` (4 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
Print out the infinite map received info.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/subflow.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index c05c19f92532..30ffb00661bb 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -1006,6 +1006,7 @@ static enum mapping_status get_mapping_status(struct sock *ssk,
data_len = mpext->data_len;
if (data_len == 0) {
+ pr_debug("infinite mapping received");
MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_INFINITEMAPRX);
subflow->map_data_len = 0;
return MAPPING_INVALID;
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 09/12] Squash to "selftests: mptcp: add infinite map mibs check"
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (7 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 08/12] Squash to "mptcp: infinite mapping receiving" Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 10/12] selftests: mptcp: add more arguments for chk_join_nr Geliang Tang
` (3 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
Rename mp_infi_nr_tx, mp_infi_nr_rx and irx.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 1b8b531c8a87..dfb87794056f 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -946,27 +946,27 @@ chk_rst_nr()
chk_infi_nr()
{
- local mp_infi_nr_tx=$1
- local mp_infi_nr_rx=$2
+ local infi_tx=$1
+ local infi_rx=$2
local count
local dump_stats
printf "%-${nr_blank}s %s" " " "itx"
count=`ip netns exec $ns2 nstat -as | grep InfiniteMapTx | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != "$mp_infi_nr_tx" ]; then
- echo "[fail] got $count infinite map[s] TX expected $mp_infi_nr_tx"
+ if [ "$count" != "$infi_tx" ]; then
+ echo "[fail] got $count infinite map[s] TX expected $infi_tx"
ret=1
dump_stats=1
else
echo -n "[ ok ]"
fi
- echo -n " - irx "
+ echo -n " - infirx"
count=`ip netns exec $ns1 nstat -as | grep InfiniteMapRx | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != "$mp_infi_nr_rx" ]; then
- echo "[fail] got $count infinite map[s] RX expected $mp_infi_nr_rx"
+ if [ "$count" != "$infi_rx" ]; then
+ echo "[fail] got $count infinite map[s] RX expected $infi_rx"
ret=1
dump_stats=1
else
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 10/12] selftests: mptcp: add more arguments for chk_join_nr
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (8 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 09/12] Squash to "selftests: mptcp: add infinite map mibs check" Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 11/12] selftests: mptcp: add the MP_FAIL testcases Geliang Tang
` (2 subsequent siblings)
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added five more arguments for chk_join_nr(). The default
values of them are all zero.
The first two, csum_ns1 and csum_ns1, are passed to chk_csum_nr(), to
check the mib counters of the checksum errors in ns1 and ns2. A '+'
can be added into this two arguments to represent that multiple
checksum errors are allowed when doing this check. For example,
chk_csum_nr "" +2 +2
indicates that two or more checksum errors are allowed in both ns1 and
ns2.
The remaining three, fail_nr, rst_nr and infi_nr, are passed to
chk_fail_nr(), chk_rst_nr() and chk_infi_nr() respectively, to check
the sending and receiving mib counters of MP_FAIL, MP_RST and the
infinite map.
Also did some cleanups in chk_fail_nr(), renamed two local variables
and updated the output message.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 50 +++++++++++++------
1 file changed, 35 insertions(+), 15 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index dfb87794056f..f33822b28058 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -837,8 +837,21 @@ dump_stats()
chk_csum_nr()
{
local msg=${1:-""}
+ local csum_ns1=${2:-0}
+ local csum_ns2=${3:-0}
local count
local dump_stats
+ local allow_multi_errors_ns1=0
+ local allow_multi_errors_ns2=0
+
+ if [[ "${csum_ns1}" = "+"* ]]; then
+ allow_multi_errors_ns1=1
+ csum_ns1=${csum_ns1:1}
+ fi
+ if [[ "${csum_ns2}" = "+"* ]]; then
+ allow_multi_errors_ns2=1
+ csum_ns2=${csum_ns2:1}
+ fi
if [ ! -z "$msg" ]; then
printf "%03u" "$TEST_COUNT"
@@ -848,8 +861,9 @@ chk_csum_nr()
printf " %-36s %s" "$msg" "sum"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != 0 ]; then
- echo "[fail] got $count data checksum error[s] expected 0"
+ if [ "$count" != $csum_ns1 -a $allow_multi_errors_ns1 -eq 0 ] ||
+ [ "$count" -lt $csum_ns1 -a $allow_multi_errors_ns1 -eq 1 ]; then
+ echo "[fail] got $count data checksum error[s] expected $csum_ns1"
ret=1
dump_stats=1
else
@@ -858,8 +872,9 @@ chk_csum_nr()
echo -n " - csum "
count=`ip netns exec $ns2 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != 0 ]; then
- echo "[fail] got $count data checksum error[s] expected 0"
+ if [ "$count" != $csum_ns2 -a $allow_multi_errors_ns2 -eq 0 ] ||
+ [ "$count" -lt $csum_ns2 -a $allow_multi_errors_ns2 -eq 1 ]; then
+ echo "[fail] got $count data checksum error[s] expected $csum_ns2"
ret=1
dump_stats=1
else
@@ -870,27 +885,27 @@ chk_csum_nr()
chk_fail_nr()
{
- local mp_fail_nr_tx=$1
- local mp_fail_nr_rx=$2
+ local fail_tx=$1
+ local fail_rx=$2
local count
local dump_stats
printf "%-${nr_blank}s %s" " " "ftx"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPFailTx | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != "$mp_fail_nr_tx" ]; then
- echo "[fail] got $count MP_FAIL[s] TX expected $mp_fail_nr_tx"
+ if [ "$count" != "$fail_tx" ]; then
+ echo "[fail] got $count MP_FAIL[s] TX expected $fail_tx"
ret=1
dump_stats=1
else
echo -n "[ ok ]"
fi
- echo -n " - frx "
+ echo -n " - failrx"
count=`ip netns exec $ns2 nstat -as | grep MPTcpExtMPFailRx | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != "$mp_fail_nr_rx" ]; then
- echo "[fail] got $count MP_FAIL[s] RX expected $mp_fail_nr_rx"
+ if [ "$count" != "$fail_rx" ]; then
+ echo "[fail] got $count MP_FAIL[s] RX expected $fail_rx"
ret=1
dump_stats=1
else
@@ -1014,6 +1029,11 @@ chk_join_nr()
local syn_nr=$2
local syn_ack_nr=$3
local ack_nr=$4
+ local csum_ns1=${5:-0}
+ local csum_ns2=${6:-0}
+ local fail_nr=${7:-0}
+ local rst_nr=${8:-0}
+ local infi_nr=${9:-0}
local count
local dump_stats
local with_cookie
@@ -1060,10 +1080,10 @@ chk_join_nr()
fi
[ "${dump_stats}" = 1 ] && dump_stats
if [ $checksum -eq 1 ]; then
- chk_csum_nr
- chk_fail_nr 0 0
- chk_rst_nr 0 0
- chk_infi_nr 0 0
+ chk_csum_nr "" $csum_ns1 $csum_ns2
+ chk_fail_nr $fail_nr $fail_nr
+ chk_rst_nr $rst_nr $rst_nr
+ chk_infi_nr $infi_nr $infi_nr
fi
}
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 11/12] selftests: mptcp: add the MP_FAIL testcases
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (9 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 10/12] selftests: mptcp: add more arguments for chk_join_nr Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 12/12] selftests: mptcp: update output info of chk_rm_nr Geliang Tang
2022-02-23 21:01 ` [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Matthieu Baerts
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Davide Caratti, Matthieu Baerts, Mat Martineau
Added the test cases for MP_FAIL, the multiple subflows test for the
MP_RST case and the single subflow one for the infinite mapping case.
The former used the test_linkfail value to make 1024KB test files,
and the latter 128KB.
Added a new function reset_with_fail(), in it use 'iptables' and 'tc
action pedit' rules to produce the bit flips to trigger the checksum
failures. Added a new function pedit_action_pkts() to get the numbers
of the packets edited by the tc pedit actions.
Added a new global variable validate_checksum to enable checksums for
the MP_FAIL tests without passing the '-C' argument.
Also added the needed kernel configures in the selftests config file.
Suggested-by: Davide Caratti <dcaratti@redhat.com>
Co-developed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/config | 8 ++
.../testing/selftests/net/mptcp/mptcp_join.sh | 98 ++++++++++++++++++-
2 files changed, 104 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/config b/tools/testing/selftests/net/mptcp/config
index d36b7da5082a..38021a0dd527 100644
--- a/tools/testing/selftests/net/mptcp/config
+++ b/tools/testing/selftests/net/mptcp/config
@@ -12,6 +12,9 @@ CONFIG_NF_TABLES=m
CONFIG_NFT_COMPAT=m
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NF_TABLES_INET=y
CONFIG_NFT_TPROXY=m
CONFIG_NFT_SOCKET=m
@@ -19,3 +22,8 @@ CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_SCH_INGRESS=m
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index f33822b28058..6fb883971d46 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -16,6 +16,7 @@ capture=0
checksum=0
ip_mptcp=0
check_invert=0
+validate_checksum=0
do_all_tests=1
init=0
@@ -62,6 +63,7 @@ init_partial()
done
check_invert=0
+ validate_checksum=$checksum
# ns1 ns2
# ns1eth1 ns2eth1
@@ -207,6 +209,58 @@ reset_with_allow_join_id0()
ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns2_enable
}
+# Modify TCP payload without corrupting the TCP packet
+#
+# This rule inverts a 8-bit word at byte offset 148 for the 2nd TCP ACK packets
+# carrying enough data.
+# Once it is done, the TCP Checksum field is updated so the packet is still
+# considered as valid at the TCP level.
+# Because the MPTCP checksum, covering the TCP options and data, has not been
+# updated, the modification will be detected and an MP_FAIL will be emitted:
+# what we want to validate here without corrupting "random" MPTCP options.
+#
+# To avoid having tc producing this pr_info() message for each TCP ACK packets
+# not carrying enough data:
+#
+# tc action pedit offset 162 out of bounds
+#
+# Netfilter is used to mark packets with enough data.
+reset_with_fail()
+{
+ reset
+
+ ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=1
+ ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=1
+
+ check_invert=1
+ validate_checksum=1
+ local i="$1"
+ local ip="${2:-4}"
+ local tables
+
+ tables="iptables"
+ if [ $ip -eq 6 ]; then
+ tables="ip6tables"
+ fi
+
+ ip netns exec $ns2 $tables \
+ -t mangle \
+ -A OUTPUT \
+ -o ns2eth$i \
+ -p tcp \
+ -m length --length 150:9999 \
+ -m statistic --mode nth --packet 1 --every 99999 \
+ -j MARK --set-mark 42 || exit 1
+
+ tc -n $ns2 qdisc add dev ns2eth$i clsact || exit 1
+ tc -n $ns2 filter add dev ns2eth$i egress \
+ protocol ip prio 1000 \
+ handle 42 fw \
+ action pedit munge offset 148 u8 invert \
+ pipe csum tcp \
+ index 100 || exit 1
+}
+
print_file_err()
{
ls -l "$1" 1>&2
@@ -1079,7 +1133,7 @@ chk_join_nr()
echo "[ ok ]"
fi
[ "${dump_stats}" = 1 ] && dump_stats
- if [ $checksum -eq 1 ]; then
+ if [ $validate_checksum -eq 1 ]; then
chk_csum_nr "" $csum_ns1 $csum_ns2
chk_fail_nr $fail_nr $fail_nr
chk_rst_nr $rst_nr $rst_nr
@@ -2444,6 +2498,41 @@ fastclose_tests()
chk_rst_nr 1 1 invert
}
+pedit_action_pkts()
+{
+ tc -n $ns2 -j -s action show action pedit index 100 | \
+ sed 's/.*"packets":\([0-9]\+\),.*/\1/'
+}
+
+fail_tests()
+{
+ # multiple subflows
+ reset_with_fail 2
+ tc -n $ns2 qdisc add dev ns2eth1 root netem rate 20mbit delay 1
+ pm_nl_set_limits $ns1 0 1
+ pm_nl_set_limits $ns2 0 1
+ pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow
+ run_tests $ns1 $ns2 10.0.1.1 1024
+ chk_join_nr "MP_FAIL MP_RST: $(pedit_action_pkts) corrupted pkts" 1 1 1 \
+ +1 +0 \
+ 1 \
+ 1
+
+ # single subflow
+ reset_with_fail 1
+ run_tests $ns1 $ns2 10.0.1.1 128
+ # syn_nr syn_ack_nr ack_nr
+ # csum_ns1 csum_ns2
+ # fail_nr
+ # rst_nr
+ # infi_nr
+ chk_join_nr "Infinite map: $(pedit_action_pkts) corrupted pkts" 0 0 0 \
+ +1 +0 \
+ 1 \
+ 0 \
+ 1
+}
+
all_tests()
{
subflows_tests
@@ -2464,6 +2553,7 @@ all_tests()
userspace_tests
implicit_tests
fastclose_tests
+ fail_tests
}
# [$1: error message]
@@ -2493,6 +2583,7 @@ usage()
echo " -u userspace_tests"
echo " -I implicit_tests"
echo " -z fastclose_tests"
+ echo " -F fail_tests"
echo " -c capture pcap files"
echo " -C enable data checksum"
echo " -i use ip mptcp"
@@ -2524,7 +2615,7 @@ if [ $do_all_tests -eq 1 ]; then
exit $ret
fi
-while getopts 'fesltra64bpkdmuchzCSiI' opt; do
+while getopts 'fesltra64bpkdmuchzCSFiI' opt; do
case $opt in
f)
subflows_tests
@@ -2577,6 +2668,9 @@ while getopts 'fesltra64bpkdmuchzCSiI' opt; do
z)
fastclose_tests
;;
+ F)
+ fail_tests
+ ;;
c)
;;
C)
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH RESEND mptcp-next v2 12/12] selftests: mptcp: update output info of chk_rm_nr
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (10 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 11/12] selftests: mptcp: add the MP_FAIL testcases Geliang Tang
@ 2022-02-20 2:59 ` Geliang Tang
2022-02-23 21:01 ` [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Matthieu Baerts
12 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-20 2:59 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch updated the output info of chk_rm_nr. Renamed 'sf' to 'rmsf',
which means 'remove subflow'. Added the display of whether the inverted
namespaces has been used to check the mib counters.
The new output looks like this:
002 remove multiple subflows syn[ ok ] - synack[ ok ] - ack[ ok ]
rm [ ok ] - rmsf [ ok ]
003 remove single address syn[ ok ] - synack[ ok ] - ack[ ok ]
add[ ok ] - echo [ ok ]
rm [ ok ] - rmsf [ ok ] invert
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 6fb883971d46..3655911667e0 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -1312,15 +1312,14 @@ chk_rm_nr()
local invert=${3:-""}
local count
local dump_stats
- local addr_ns
- local subflow_ns
+ local addr_ns=$ns1
+ local subflow_ns=$ns2
+ local extra_msg=""
- if [ -z $invert ]; then
- addr_ns=$ns1
- subflow_ns=$ns2
- elif [ $invert = "invert" ]; then
+ if [[ $invert = "invert" ]]; then
addr_ns=$ns2
subflow_ns=$ns1
+ extra_msg=" invert"
fi
printf "%-${nr_blank}s %s" " " "rm "
@@ -1334,7 +1333,7 @@ chk_rm_nr()
echo -n "[ ok ]"
fi
- echo -n " - sf "
+ echo -n " - rmsf "
count=`ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$rm_subflow_nr" ]; then
@@ -1342,10 +1341,12 @@ chk_rm_nr()
ret=1
dump_stats=1
else
- echo "[ ok ]"
+ echo -n "[ ok ]"
fi
[ "${dump_stats}" = 1 ] && dump_stats
+
+ echo "$extra_msg"
}
chk_prio_nr()
--
2.34.1
^ permalink raw reply related [flat|nested] 17+ messages in thread* Re: [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases
2022-02-20 2:59 [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Geliang Tang
` (11 preceding siblings ...)
2022-02-20 2:59 ` [PATCH RESEND mptcp-next v2 12/12] selftests: mptcp: update output info of chk_rm_nr Geliang Tang
@ 2022-02-23 21:01 ` Matthieu Baerts
2022-02-23 22:56 ` Geliang Tang
12 siblings, 1 reply; 17+ messages in thread
From: Matthieu Baerts @ 2022-02-23 21:01 UTC (permalink / raw)
To: Geliang Tang, mptcp
Hi Geliang, Mat,
On 20/02/2022 03:59, Geliang Tang wrote:
> v2:
> - keep the order of the applied patches. Drop the revert patches in v1.
>
> v1:
> Resend all my queued patches in the patchwork. The sequence of 4 applied
> patches is adjusted and rebased. No code modified.
>
> Geliang Tang (12):
> mptcp: add the mibs for MP_FASTCLOSE
> selftests: mptcp: add the MP_FASTCLOSE mibs check
> mptcp: add the mibs for MP_RST
> selftests: mptcp: add the MP_RST mibs check
> selftests: mptcp: add extra_args in do_transfer
> selftests: mptcp: reuse linkfail to make given size files
> selftests: mptcp: add fastclose testcase
> Squash to "mptcp: infinite mapping receiving"
> Squash to "selftests: mptcp: add infinite map mibs check"
> selftests: mptcp: add more arguments for chk_join_nr
> selftests: mptcp: add the MP_FAIL testcases
> selftests: mptcp: update output info of chk_rm_nr
Thank you for this patches and the reviews!
Now applied in our tree (feat. for net-next):
* Before the "infinite mapping support" series:
- ca9cbbff446b: mptcp: add the mibs for MP_FASTCLOSE
- e9d3d6700269: selftests: mptcp: add the MP_FASTCLOSE mibs check
- 7b6ed57c70dc: mptcp: add the mibs for MP_RST
- b1dd7c48a10f: selftests: mptcp: add the MP_RST mibs check
- 481e87d3e23b: selftests: mptcp: add extra_args in do_transfer
- 6609f1c808dd: selftests: mptcp: reuse linkfail to make given size files
- 28ac700c6369: selftests: mptcp: add fastclose testcase
- bd4f93690fa6: conflict in t/selftests-mptcp-add-infinite-map-mibs-check
- 4e668db2d842: conflict in
t/selftests-mptcp-Add-tests-for-userspace-PM-type
- 519eb3313dc7: conflict in
t/selftests-mptcp-adjust-output-alignment-for-more-tests
- 5b26053898fa: conflict in
t/selftests-mptcp-add-implicit-endpoint-test-case
- Results: d7649a6f4e25..dd86303a6117
* In the "infinite mapping support" series:
- a901b62afb52: "squashed" patch 08/12 in "mptcp: infinite mapping
receiving"
- ed1ec3a2223c: "squashed" (with conflicts) patch 09/12 in "selftests:
mptcp: add infinite map mibs check"
- Results: dd86303a6117..2198a66cca7d
* After the "infinite mapping support" series:
- 0954244ea41e: selftests: mptcp: add more arguments for chk_join_nr
- 0c0217635548: selftests: mptcp: add the MP_FAIL testcases
- f2b1c0bab9a7: selftests: mptcp: update output info of chk_rm_nr
- 66fe2565137c: conflict in
t/selftests-mptcp-Add-tests-for-userspace-PM-type
- 725730b4cb61: conflict in t/mptcp-more-careful-RM_ADDR-generation
- ea63fb2b5f25: conflict in
t/selftests-mptcp-add-implicit-endpoint-test-case
- Results: 2198a66cca7d..5d3058e05cc9
* Extra fix:
- 649d88fdc3c5: tg: fix wrong conflict resolution
- 4ec880a22963: conflict in
t/selftests-mptcp-add-more-arguments-for-chk_join_nr
- Results: 5d3058e05cc9..067a741aa5fb
Hopefully everything has been applied as expected! Do not hesitate to
double-check!
Builds and tests are now in progress:
https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20220223T205717
https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export
Cheers,
Matt
--
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases
2022-02-23 21:01 ` [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases Matthieu Baerts
@ 2022-02-23 22:56 ` Geliang Tang
2022-02-24 13:36 ` Matthieu Baerts
0 siblings, 1 reply; 17+ messages in thread
From: Geliang Tang @ 2022-02-23 22:56 UTC (permalink / raw)
To: Matthieu Baerts, Mat Martineau; +Cc: mptcp
On Wed, Feb 23, 2022 at 10:01:27PM +0100, Matthieu Baerts wrote:
> Hi Geliang, Mat,
>
> On 20/02/2022 03:59, Geliang Tang wrote:
> > v2:
> > - keep the order of the applied patches. Drop the revert patches in v1.
> >
> > v1:
> > Resend all my queued patches in the patchwork. The sequence of 4 applied
> > patches is adjusted and rebased. No code modified.
> >
> > Geliang Tang (12):
> > mptcp: add the mibs for MP_FASTCLOSE
> > selftests: mptcp: add the MP_FASTCLOSE mibs check
> > mptcp: add the mibs for MP_RST
> > selftests: mptcp: add the MP_RST mibs check
> > selftests: mptcp: add extra_args in do_transfer
> > selftests: mptcp: reuse linkfail to make given size files
> > selftests: mptcp: add fastclose testcase
> > Squash to "mptcp: infinite mapping receiving"
> > Squash to "selftests: mptcp: add infinite map mibs check"
> > selftests: mptcp: add more arguments for chk_join_nr
> > selftests: mptcp: add the MP_FAIL testcases
> > selftests: mptcp: update output info of chk_rm_nr
>
> Thank you for this patches and the reviews!
>
> Now applied in our tree (feat. for net-next):
>
> * Before the "infinite mapping support" series:
>
> - ca9cbbff446b: mptcp: add the mibs for MP_FASTCLOSE
> - e9d3d6700269: selftests: mptcp: add the MP_FASTCLOSE mibs check
> - 7b6ed57c70dc: mptcp: add the mibs for MP_RST
> - b1dd7c48a10f: selftests: mptcp: add the MP_RST mibs check
> - 481e87d3e23b: selftests: mptcp: add extra_args in do_transfer
> - 6609f1c808dd: selftests: mptcp: reuse linkfail to make given size files
> - 28ac700c6369: selftests: mptcp: add fastclose testcase
> - bd4f93690fa6: conflict in t/selftests-mptcp-add-infinite-map-mibs-check
> - 4e668db2d842: conflict in
> t/selftests-mptcp-Add-tests-for-userspace-PM-type
> - 519eb3313dc7: conflict in
> t/selftests-mptcp-adjust-output-alignment-for-more-tests
> - 5b26053898fa: conflict in
> t/selftests-mptcp-add-implicit-endpoint-test-case
> - Results: d7649a6f4e25..dd86303a6117
>
> * In the "infinite mapping support" series:
>
> - a901b62afb52: "squashed" patch 08/12 in "mptcp: infinite mapping
> receiving"
> - ed1ec3a2223c: "squashed" (with conflicts) patch 09/12 in "selftests:
> mptcp: add infinite map mibs check"
> - Results: dd86303a6117..2198a66cca7d
>
> * After the "infinite mapping support" series:
>
> - 0954244ea41e: selftests: mptcp: add more arguments for chk_join_nr
> - 0c0217635548: selftests: mptcp: add the MP_FAIL testcases
> - f2b1c0bab9a7: selftests: mptcp: update output info of chk_rm_nr
> - 66fe2565137c: conflict in
> t/selftests-mptcp-Add-tests-for-userspace-PM-type
> - 725730b4cb61: conflict in t/mptcp-more-careful-RM_ADDR-generation
> - ea63fb2b5f25: conflict in
> t/selftests-mptcp-add-implicit-endpoint-test-case
> - Results: 2198a66cca7d..5d3058e05cc9
>
> * Extra fix:
>
> - 649d88fdc3c5: tg: fix wrong conflict resolution
> - 4ec880a22963: conflict in
> t/selftests-mptcp-add-more-arguments-for-chk_join_nr
> - Results: 5d3058e05cc9..067a741aa5fb
>
> Hopefully everything has been applied as expected! Do not hesitate to
> double-check!
Hi Matt,
Thank you so much for applying all these patches. I have two extra
requests about the order of these patches here.
1. Move the commit "selftests: mptcp: adjust output alignment for more
tests" before "mptcp: add the mibs for MP_FASTCLOSE". Otherwise, it'll
break the output alignment. Since 'nr_blank' is defined in the former,
and used in the fastclose series.
2. Move the commit "selftests: mptcp: add infinite map mibs check" before
"selftests: mptcp: add invert check in check_transfer". Since the former
is more related to the previous commit "mptcp: add mib for infinite map
sending" than the latter.
No conflicts occurred. And the order of them all is like this:
pick 257287531bbc selftests: mptcp: adjust output alignment for more tests
pick e27d928aa4ec mptcp: add the mibs for MP_FASTCLOSE
pick ea66162e3f4f selftests: mptcp: add the MP_FASTCLOSE mibs check
pick f7e2120cec1b mptcp: add the mibs for MP_RST
pick babc72fe71a7 selftests: mptcp: add the MP_RST mibs check
pick 426f25b59edc selftests: mptcp: add extra_args in do_transfer
pick 8a48a2ceaa22 selftests: mptcp: reuse linkfail to make given size files
pick fc578f540a07 selftests: mptcp: add fastclose testcase
pick e02ad48fb24a mptcp: don't send RST for single subflow
pick f6e7701ed3f0 mptcp: add the fallback check
pick 2ec8e7687a0a mptcp: track and update contiguous data status
pick d2599198de2a mptcp: infinite mapping sending
pick ba54e60a32f6 mptcp: infinite mapping receiving
pick 8c2c5497dbf1 mptcp: add mib for infinite map sending
pick 01d891dec821 selftests: mptcp: add infinite map mibs check
pick 1cfaf9761bef selftests: mptcp: add invert check in check_transfer
pick c9217d510f58 selftests: mptcp: add more arguments for chk_join_nr
pick 99eb057ec657 selftests: mptcp: add the MP_FAIL testcases
pick abe3bb655cff selftests: mptcp: update output info of chk_rm_nr
pick 87210766b6ff mptcp: dump infinite_map field in mptcp_dump_mpext
pick 9363e0880eed mptcp: add tracepoint in mptcp_sendmsg_frag
Thanks,
-Geliang
>
>
> Builds and tests are now in progress:
>
> https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20220223T205717
> https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export
>
>
> Cheers,
> Matt
> --
> Tessares | Belgium | Hybrid Access Solutions
> www.tessares.net
>
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases
2022-02-23 22:56 ` Geliang Tang
@ 2022-02-24 13:36 ` Matthieu Baerts
2022-02-24 14:58 ` Geliang Tang
0 siblings, 1 reply; 17+ messages in thread
From: Matthieu Baerts @ 2022-02-24 13:36 UTC (permalink / raw)
To: Geliang Tang, Mat Martineau; +Cc: mptcp
Hi Geliang,
On 23/02/2022 23:56, Geliang Tang wrote:
> Hi Matt,
>
> Thank you so much for applying all these patches. I have two extra
> requests about the order of these patches here.
>
> 1. Move the commit "selftests: mptcp: adjust output alignment for more
> tests" before "mptcp: add the mibs for MP_FASTCLOSE". Otherwise, it'll
> break the output alignment. Since 'nr_blank' is defined in the former,
> and used in the fastclose series.
Good point. With TopGit, it is not as easy as moving commits with a 'git
rebase -i', just easier to have something wrong when doing these
manipulation. But that's not impossible and at the end, I'm used to.
- bd41af654d7f: selftests: mptcp: adjust output alignment for more tests
- Results: 4bbd9add0797..369cbca2200f → empty: good!
> 2. Move the commit "selftests: mptcp: add infinite map mibs check" before
> "selftests: mptcp: add invert check in check_transfer". Since the former
> is more related to the previous commit "mptcp: add mib for infinite map
> sending" than the latter.
- 259143ec3e7f: selftests: mptcp: add infinite map mibs check
- Results: 369cbca2200f..287a6bb7ec08 → empty: good!
> No conflicts occurred. And the order of them all is like this:
Same, no conflicts. Should be better now!
Builds and tests are now in progress:
https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20220224T133344
https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export
Cheers,
Matt
--
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net
^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH RESEND mptcp-next v2 00/12] fclose and mp_fail testcases
2022-02-24 13:36 ` Matthieu Baerts
@ 2022-02-24 14:58 ` Geliang Tang
0 siblings, 0 replies; 17+ messages in thread
From: Geliang Tang @ 2022-02-24 14:58 UTC (permalink / raw)
To: Matthieu Baerts; +Cc: Geliang Tang, Mat Martineau, MPTCP Upstream
Matthieu Baerts <matthieu.baerts@tessares.net> 于2022年2月24日周四 21:36写道:
>
> Hi Geliang,
>
> On 23/02/2022 23:56, Geliang Tang wrote:
> > Hi Matt,
> >
> > Thank you so much for applying all these patches. I have two extra
> > requests about the order of these patches here.
> >
> > 1. Move the commit "selftests: mptcp: adjust output alignment for more
> > tests" before "mptcp: add the mibs for MP_FASTCLOSE". Otherwise, it'll
> > break the output alignment. Since 'nr_blank' is defined in the former,
> > and used in the fastclose series.
>
> Good point. With TopGit, it is not as easy as moving commits with a 'git
> rebase -i', just easier to have something wrong when doing these
> manipulation. But that's not impossible and at the end, I'm used to.
>
> - bd41af654d7f: selftests: mptcp: adjust output alignment for more tests
> - Results: 4bbd9add0797..369cbca2200f → empty: good!
>
> > 2. Move the commit "selftests: mptcp: add infinite map mibs check" before
> > "selftests: mptcp: add invert check in check_transfer". Since the former
> > is more related to the previous commit "mptcp: add mib for infinite map
> > sending" than the latter.
>
> - 259143ec3e7f: selftests: mptcp: add infinite map mibs check
> - Results: 369cbca2200f..287a6bb7ec08 → empty: good!
>
> > No conflicts occurred. And the order of them all is like this:
>
> Same, no conflicts. Should be better now!
Great! Thanks.
>
> Builds and tests are now in progress:
>
> https://cirrus-ci.com/github/multipath-tcp/mptcp_net-next/export/20220224T133344
> https://github.com/multipath-tcp/mptcp_net-next/actions/workflows/build-validation.yml?query=branch:export
>
> Cheers,
> Matt
> --
> Tessares | Belgium | Hybrid Access Solutions
> www.tessares.net
>
^ permalink raw reply [flat|nested] 17+ messages in thread