* [LTP] [PATCH 1/6] network: rename dcctp dir to tcp_cc
2018-05-21 11:48 [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Alexey Kodanev
@ 2018-05-21 11:48 ` Alexey Kodanev
2018-05-28 4:11 ` Petr Vorel
2018-05-28 5:40 ` Petr Vorel
2018-05-21 11:48 ` [LTP] [PATCH 2/6] dctcp01: convert to new API and move common code to a library Alexey Kodanev
` (5 subsequent siblings)
6 siblings, 2 replies; 22+ messages in thread
From: Alexey Kodanev @ 2018-05-21 11:48 UTC (permalink / raw)
To: ltp
This directory will include other TCP congestion control
related tests, not only dctcp algorithm.
Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
---
testcases/network/dctcp/Makefile | 22 --------
testcases/network/dctcp/dctcp01.sh | 91 -----------------------------------
testcases/network/tcp_cc/Makefile | 22 ++++++++
testcases/network/tcp_cc/dctcp01.sh | 91 +++++++++++++++++++++++++++++++++++
4 files changed, 113 insertions(+), 113 deletions(-)
delete mode 100644 testcases/network/dctcp/Makefile
delete mode 100755 testcases/network/dctcp/dctcp01.sh
create mode 100644 testcases/network/tcp_cc/Makefile
create mode 100755 testcases/network/tcp_cc/dctcp01.sh
diff --git a/testcases/network/dctcp/Makefile b/testcases/network/dctcp/Makefile
deleted file mode 100644
index 82a6262..0000000
--- a/testcases/network/dctcp/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it would be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-top_srcdir ?= ../../..
-
-include $(top_srcdir)/include/mk/env_pre.mk
-
-INSTALL_TARGETS := dctcp01.sh
-
-include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/network/dctcp/dctcp01.sh b/testcases/network/dctcp/dctcp01.sh
deleted file mode 100755
index 92ac97d..0000000
--- a/testcases/network/dctcp/dctcp01.sh
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it would be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
-
-TCID=dctcp01
-TST_TOTAL=1
-TST_CLEANUP="cleanup"
-TST_NEEDS_TMPDIR=1
-def_alg="cubic"
-prev_alg=
-
-TST_USE_LEGACY_API=1
-. tst_net.sh
-
-set_cong_alg()
-{
- local alg=$1
- tst_resm TINFO "setting $alg"
-
- tst_set_sysctl net.ipv4.tcp_congestion_control $alg safe
-}
-
-cleanup()
-{
- if [ "$prev_cong_ctl" ]; then
- tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
- fi
- tst_rmdir
- tc qdisc del dev $(tst_iface) root netem loss 0.03% ecn
-}
-
-setup()
-{
- if tst_kvcmp -lt "3.18"; then
- tst_brkm TCONF "test requires kernel 3.18 or newer"
- fi
-
- tst_require_root
- tst_check_cmds sysctl tc
-
- tst_resm TINFO "emulate congestion with packet loss 0.03% and ECN"
- tc qdisc add dev $(tst_iface) root netem loss 0.03% ecn > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- tst_brkm TCONF "netem doesn't support ECN"
- fi
-
- prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
-}
-
-test_run()
-{
- tst_resm TINFO "compare '$def_alg' and 'dctcp' congestion alg. results"
-
- set_cong_alg "$def_alg"
-
- tst_netload -H $(tst_ipaddr rhost)
- local res0="$(cat tst_netload.res)"
-
- set_cong_alg "dctcp"
-
- tst_netload -H $(tst_ipaddr rhost)
- local res1="$(cat tst_netload.res)"
-
- local per=$(( $res0 * 100 / $res1 - 100 ))
-
- if [ "$per" -lt "10" ]; then
- tst_resm TFAIL "dctcp performance $per %"
- else
- tst_resm TPASS "dctcp performance $per %"
- fi
-}
-
-setup
-
-test_run
-
-tst_exit
diff --git a/testcases/network/tcp_cc/Makefile b/testcases/network/tcp_cc/Makefile
new file mode 100644
index 0000000..82a6262
--- /dev/null
+++ b/testcases/network/tcp_cc/Makefile
@@ -0,0 +1,22 @@
+# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+top_srcdir ?= ../../..
+
+include $(top_srcdir)/include/mk/env_pre.mk
+
+INSTALL_TARGETS := dctcp01.sh
+
+include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/network/tcp_cc/dctcp01.sh b/testcases/network/tcp_cc/dctcp01.sh
new file mode 100755
index 0000000..92ac97d
--- /dev/null
+++ b/testcases/network/tcp_cc/dctcp01.sh
@@ -0,0 +1,91 @@
+#!/bin/sh
+# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 2 of
+# the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
+
+TCID=dctcp01
+TST_TOTAL=1
+TST_CLEANUP="cleanup"
+TST_NEEDS_TMPDIR=1
+def_alg="cubic"
+prev_alg=
+
+TST_USE_LEGACY_API=1
+. tst_net.sh
+
+set_cong_alg()
+{
+ local alg=$1
+ tst_resm TINFO "setting $alg"
+
+ tst_set_sysctl net.ipv4.tcp_congestion_control $alg safe
+}
+
+cleanup()
+{
+ if [ "$prev_cong_ctl" ]; then
+ tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
+ fi
+ tst_rmdir
+ tc qdisc del dev $(tst_iface) root netem loss 0.03% ecn
+}
+
+setup()
+{
+ if tst_kvcmp -lt "3.18"; then
+ tst_brkm TCONF "test requires kernel 3.18 or newer"
+ fi
+
+ tst_require_root
+ tst_check_cmds sysctl tc
+
+ tst_resm TINFO "emulate congestion with packet loss 0.03% and ECN"
+ tc qdisc add dev $(tst_iface) root netem loss 0.03% ecn > /dev/null 2>&1
+ if [ $? -ne 0 ]; then
+ tst_brkm TCONF "netem doesn't support ECN"
+ fi
+
+ prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
+}
+
+test_run()
+{
+ tst_resm TINFO "compare '$def_alg' and 'dctcp' congestion alg. results"
+
+ set_cong_alg "$def_alg"
+
+ tst_netload -H $(tst_ipaddr rhost)
+ local res0="$(cat tst_netload.res)"
+
+ set_cong_alg "dctcp"
+
+ tst_netload -H $(tst_ipaddr rhost)
+ local res1="$(cat tst_netload.res)"
+
+ local per=$(( $res0 * 100 / $res1 - 100 ))
+
+ if [ "$per" -lt "10" ]; then
+ tst_resm TFAIL "dctcp performance $per %"
+ else
+ tst_resm TPASS "dctcp performance $per %"
+ fi
+}
+
+setup
+
+test_run
+
+tst_exit
--
1.7.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* [LTP] [PATCH 2/6] dctcp01: convert to new API and move common code to a library
2018-05-21 11:48 [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Alexey Kodanev
2018-05-21 11:48 ` [LTP] [PATCH 1/6] network: rename dcctp dir to tcp_cc Alexey Kodanev
@ 2018-05-21 11:48 ` Alexey Kodanev
2018-05-28 5:42 ` Petr Vorel
2018-05-21 11:48 ` [LTP] [PATCH 3/6] network/tcp_cc/dctcp01: increase packet loss for dctcp Alexey Kodanev
` (4 subsequent siblings)
6 siblings, 1 reply; 22+ messages in thread
From: Alexey Kodanev @ 2018-05-21 11:48 UTC (permalink / raw)
To: ltp
Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
---
testcases/network/tcp_cc/Makefile | 2 +-
testcases/network/tcp_cc/dctcp01.sh | 80 +++++--------------------------
testcases/network/tcp_cc/tcp_cc_lib.sh | 57 ++++++++++++++++++++++
3 files changed, 71 insertions(+), 68 deletions(-)
create mode 100755 testcases/network/tcp_cc/tcp_cc_lib.sh
diff --git a/testcases/network/tcp_cc/Makefile b/testcases/network/tcp_cc/Makefile
index 82a6262..a564eb4 100644
--- a/testcases/network/tcp_cc/Makefile
+++ b/testcases/network/tcp_cc/Makefile
@@ -17,6 +17,6 @@ top_srcdir ?= ../../..
include $(top_srcdir)/include/mk/env_pre.mk
-INSTALL_TARGETS := dctcp01.sh
+INSTALL_TARGETS := *.sh
include $(top_srcdir)/include/mk/generic_leaf_target.mk
diff --git a/testcases/network/tcp_cc/dctcp01.sh b/testcases/network/tcp_cc/dctcp01.sh
index 92ac97d..02b27cf 100755
--- a/testcases/network/tcp_cc/dctcp01.sh
+++ b/testcases/network/tcp_cc/dctcp01.sh
@@ -1,91 +1,37 @@
#!/bin/sh
-# Copyright (c) 2015 Oracle and/or its affiliates. All Rights Reserved.
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License as
-# published by the Free Software Foundation; either version 2 of
-# the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it would be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2015-2018 Oracle and/or its affiliates. All Rights Reserved.
#
# Author: Alexey Kodanev <alexey.kodanev@oracle.com>
-TCID=dctcp01
-TST_TOTAL=1
+TST_SETUP="setup"
+TST_TESTFUNC="do_test"
TST_CLEANUP="cleanup"
-TST_NEEDS_TMPDIR=1
-def_alg="cubic"
-prev_alg=
+TST_MIN_KVER="3.18"
-TST_USE_LEGACY_API=1
-. tst_net.sh
-
-set_cong_alg()
-{
- local alg=$1
- tst_resm TINFO "setting $alg"
-
- tst_set_sysctl net.ipv4.tcp_congestion_control $alg safe
-}
+. tcp_cc_lib.sh
cleanup()
{
- if [ "$prev_cong_ctl" ]; then
- tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
- fi
- tst_rmdir
tc qdisc del dev $(tst_iface) root netem loss 0.03% ecn
+
+ tcp_cc_cleanup
}
setup()
{
- if tst_kvcmp -lt "3.18"; then
- tst_brkm TCONF "test requires kernel 3.18 or newer"
- fi
-
- tst_require_root
- tst_check_cmds sysctl tc
+ tcp_cc_setup
- tst_resm TINFO "emulate congestion with packet loss 0.03% and ECN"
+ tst_res TINFO "emulate congestion with packet loss 0.03% and ECN"
tc qdisc add dev $(tst_iface) root netem loss 0.03% ecn > /dev/null 2>&1
if [ $? -ne 0 ]; then
tst_brkm TCONF "netem doesn't support ECN"
fi
-
- prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
}
-test_run()
+do_test()
{
- tst_resm TINFO "compare '$def_alg' and 'dctcp' congestion alg. results"
-
- set_cong_alg "$def_alg"
-
- tst_netload -H $(tst_ipaddr rhost)
- local res0="$(cat tst_netload.res)"
-
- set_cong_alg "dctcp"
-
- tst_netload -H $(tst_ipaddr rhost)
- local res1="$(cat tst_netload.res)"
-
- local per=$(( $res0 * 100 / $res1 - 100 ))
-
- if [ "$per" -lt "10" ]; then
- tst_resm TFAIL "dctcp performance $per %"
- else
- tst_resm TPASS "dctcp performance $per %"
- fi
+ tcp_cc_test01 dctcp 10
}
-setup
-
-test_run
-
-tst_exit
+tst_run
diff --git a/testcases/network/tcp_cc/tcp_cc_lib.sh b/testcases/network/tcp_cc/tcp_cc_lib.sh
new file mode 100755
index 0000000..b96c8af
--- /dev/null
+++ b/testcases/network/tcp_cc/tcp_cc_lib.sh
@@ -0,0 +1,57 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2018 Oracle and/or its affiliates. All Rights Reserved.
+
+TST_NEEDS_TMPDIR=1
+TST_NEEDS_ROOT=1
+TST_NEEDS_CMDS="sysctl tc"
+
+. tst_net.sh
+
+def_alg="cubic"
+prev_alg=
+
+set_cong_alg()
+{
+ local alg=$1
+ tst_res TINFO "setting $alg"
+
+ tst_set_sysctl net.ipv4.tcp_congestion_control $alg safe
+}
+
+tcp_cc_cleanup()
+{
+ [ "$prev_cong_ctl" ] && \
+ tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
+}
+
+tcp_cc_setup()
+{
+ prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
+}
+
+tcp_cc_test01()
+{
+ local alg=$1
+ local threshold=${2:-10}
+
+ tst_res TINFO "compare '$def_alg' and '$alg' congestion alg. results"
+
+ set_cong_alg "$def_alg"
+
+ tst_netload -H $(tst_ipaddr rhost) -A 15000
+ local res0="$(cat tst_netload.res)"
+
+ set_cong_alg "$alg"
+
+ tst_netload -H $(tst_ipaddr rhost) -A 15000
+ local res1="$(cat tst_netload.res)"
+
+ local per=$(( $res0 * 100 / $res1 - 100 ))
+
+ if [ "$per" -lt "$threshold" ]; then
+ tst_res TFAIL "$alg performance $per %"
+ else
+ tst_res TPASS "$alg performance $per %"
+ fi
+}
--
1.7.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* [LTP] [PATCH 3/6] network/tcp_cc/dctcp01: increase packet loss for dctcp
2018-05-21 11:48 [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Alexey Kodanev
2018-05-21 11:48 ` [LTP] [PATCH 1/6] network: rename dcctp dir to tcp_cc Alexey Kodanev
2018-05-21 11:48 ` [LTP] [PATCH 2/6] dctcp01: convert to new API and move common code to a library Alexey Kodanev
@ 2018-05-21 11:48 ` Alexey Kodanev
2018-05-28 5:43 ` Petr Vorel
2018-05-21 11:48 ` [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen Alexey Kodanev
` (3 subsequent siblings)
6 siblings, 1 reply; 22+ messages in thread
From: Alexey Kodanev @ 2018-05-21 11:48 UTC (permalink / raw)
To: ltp
Avoid false positive failures for this test-case.
Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
---
testcases/network/tcp_cc/dctcp01.sh | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/testcases/network/tcp_cc/dctcp01.sh b/testcases/network/tcp_cc/dctcp01.sh
index 02b27cf..3562f5a 100755
--- a/testcases/network/tcp_cc/dctcp01.sh
+++ b/testcases/network/tcp_cc/dctcp01.sh
@@ -13,7 +13,7 @@ TST_MIN_KVER="3.18"
cleanup()
{
- tc qdisc del dev $(tst_iface) root netem loss 0.03% ecn
+ tc qdisc del dev $(tst_iface) root netem loss 0.5% ecn
tcp_cc_cleanup
}
@@ -22,8 +22,9 @@ setup()
{
tcp_cc_setup
- tst_res TINFO "emulate congestion with packet loss 0.03% and ECN"
- tc qdisc add dev $(tst_iface) root netem loss 0.03% ecn > /dev/null 2>&1
+ tst_res TINFO "emulate congestion with packet loss 0.5% and ECN"
+ tc qdisc add dev $(tst_iface) root netem loss 0.5% ecn > /dev/null 2>&1
+
if [ $? -ne 0 ]; then
tst_brkm TCONF "netem doesn't support ECN"
fi
--
1.7.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen
2018-05-21 11:48 [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Alexey Kodanev
` (2 preceding siblings ...)
2018-05-21 11:48 ` [LTP] [PATCH 3/6] network/tcp_cc/dctcp01: increase packet loss for dctcp Alexey Kodanev
@ 2018-05-21 11:48 ` Alexey Kodanev
2018-05-28 4:15 ` Petr Vorel
` (2 more replies)
2018-05-21 11:48 ` [LTP] [PATCH 5/6] network/tcp_cc: add new test bbr01 Alexey Kodanev
` (2 subsequent siblings)
6 siblings, 3 replies; 22+ messages in thread
From: Alexey Kodanev @ 2018-05-21 11:48 UTC (permalink / raw)
To: ltp
Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
---
testcases/network/tcp_cc/tcp_cc_lib.sh | 34 ++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
diff --git a/testcases/network/tcp_cc/tcp_cc_lib.sh b/testcases/network/tcp_cc/tcp_cc_lib.sh
index b96c8af..7e93e1d 100755
--- a/testcases/network/tcp_cc/tcp_cc_lib.sh
+++ b/testcases/network/tcp_cc/tcp_cc_lib.sh
@@ -9,6 +9,8 @@ TST_NEEDS_CMDS="sysctl tc"
. tst_net.sh
def_alg="cubic"
+prev_qlen=
+prev_queue=
prev_alg=
set_cong_alg()
@@ -21,8 +23,16 @@ set_cong_alg()
tcp_cc_cleanup()
{
+ local rmt_dev="dev $(tst_iface rhost)"
+
[ "$prev_cong_ctl" ] && \
tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
+
+ [ "$prev_qlen" ] && \
+ tst_rhost_run -c "ip li set txqueuelen $prev_qlen $rmt_dev"
+
+ [ "$prev_queue" ] && \
+ tst_rhost_run -c "tc qdisc replace $rmt_dev root $prev_queue"
}
tcp_cc_setup()
@@ -30,6 +40,30 @@ tcp_cc_setup()
prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
}
+qdisc_list="pfifo_fast codel pfifo fq hfsc hhf htb pie prio sfb sfq"
+
+tcp_cc_set_qdisc()
+{
+ local qdisc="$1"
+ local qlen="${2:-1000}"
+ local cmd="tc qdisc replace"
+ local rmt_dev="$(tst_iface rhost)"
+
+ tst_res TINFO "set qdisc on $(tst_iface rhost) to $qdisc len $qlen"
+
+ [ -z "$prev_qlen" ] && \
+ prev_qlen=$(tst_rhost_run -s -c \
+ "cat /sys/class/net/$rmt_dev/tx_queue_len")
+
+ [ -z "$prev_queue" ] && \
+ prev_queue=$(tst_rhost_run -s -c \
+ "tc qdisc show dev $rmt_dev | head -1" | \
+ cut -f2 -d' ')
+
+ tst_rhost_run -s -c "ip li set txqueuelen $qlen dev $rmt_dev"
+ tst_rhost_run -s -c "$cmd dev $rmt_dev root $qdisc"
+}
+
tcp_cc_test01()
{
local alg=$1
--
1.7.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen
2018-05-21 11:48 ` [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen Alexey Kodanev
@ 2018-05-28 4:15 ` Petr Vorel
2018-05-28 4:20 ` Petr Vorel
2018-05-28 5:44 ` Petr Vorel
2 siblings, 0 replies; 22+ messages in thread
From: Petr Vorel @ 2018-05-28 4:15 UTC (permalink / raw)
To: ltp
> Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
Acked-by: Petr Vorel <pvorel@suse.cz>
Kind regards,
Petr
^ permalink raw reply [flat|nested] 22+ messages in thread
* [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen
2018-05-21 11:48 ` [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen Alexey Kodanev
2018-05-28 4:15 ` Petr Vorel
@ 2018-05-28 4:20 ` Petr Vorel
2018-05-28 5:44 ` Petr Vorel
2 siblings, 0 replies; 22+ messages in thread
From: Petr Vorel @ 2018-05-28 4:20 UTC (permalink / raw)
To: ltp
Hi Alexey,
> Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
> ---
> testcases/network/tcp_cc/tcp_cc_lib.sh | 34 ++++++++++++++++++++++++++++++++
> 1 files changed, 34 insertions(+), 0 deletions(-)
> diff --git a/testcases/network/tcp_cc/tcp_cc_lib.sh b/testcases/network/tcp_cc/tcp_cc_lib.sh
> index b96c8af..7e93e1d 100755
> --- a/testcases/network/tcp_cc/tcp_cc_lib.sh
> +++ b/testcases/network/tcp_cc/tcp_cc_lib.sh
> @@ -9,6 +9,8 @@ TST_NEEDS_CMDS="sysctl tc"
> . tst_net.sh
> def_alg="cubic"
> +prev_qlen=
> +prev_queue=
> prev_alg=
> set_cong_alg()
> @@ -21,8 +23,16 @@ set_cong_alg()
> tcp_cc_cleanup()
> {
> + local rmt_dev="dev $(tst_iface rhost)"
> +
> [ "$prev_cong_ctl" ] && \
> tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
> +
> + [ "$prev_qlen" ] && \
> + tst_rhost_run -c "ip li set txqueuelen $prev_qlen $rmt_dev"
> +
> + [ "$prev_queue" ] && \
> + tst_rhost_run -c "tc qdisc replace $rmt_dev root $prev_queue"
> }
> tcp_cc_setup()
> @@ -30,6 +40,30 @@ tcp_cc_setup()
> prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
> }
> +qdisc_list="pfifo_fast codel pfifo fq hfsc hhf htb pie prio sfb sfq"
Maybe just one thing: wouldn't be better to have this upper case as it's
library variable shared in tests? But it's only a minor nit.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 22+ messages in thread* [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen
2018-05-21 11:48 ` [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen Alexey Kodanev
2018-05-28 4:15 ` Petr Vorel
2018-05-28 4:20 ` Petr Vorel
@ 2018-05-28 5:44 ` Petr Vorel
2018-05-28 5:47 ` Petr Vorel
2 siblings, 1 reply; 22+ messages in thread
From: Petr Vorel @ 2018-05-28 5:44 UTC (permalink / raw)
To: ltp
Hi Alexey,
> Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
> ---
> testcases/network/tcp_cc/tcp_cc_lib.sh | 34 ++++++++++++++++++++++++++++++++
> 1 files changed, 34 insertions(+), 0 deletions(-)
> diff --git a/testcases/network/tcp_cc/tcp_cc_lib.sh b/testcases/network/tcp_cc/tcp_cc_lib.sh
> index b96c8af..7e93e1d 100755
> --- a/testcases/network/tcp_cc/tcp_cc_lib.sh
> +++ b/testcases/network/tcp_cc/tcp_cc_lib.sh
> @@ -9,6 +9,8 @@ TST_NEEDS_CMDS="sysctl tc"
> . tst_net.sh
> def_alg="cubic"
> +prev_qlen=
> +prev_queue=
> prev_alg=
> set_cong_alg()
> @@ -21,8 +23,16 @@ set_cong_alg()
> tcp_cc_cleanup()
> {
> + local rmt_dev="dev $(tst_iface rhost)"
> +
> [ "$prev_cong_ctl" ] && \
> tst_set_sysctl net.ipv4.tcp_congestion_control $prev_alg
> +
> + [ "$prev_qlen" ] && \
> + tst_rhost_run -c "ip li set txqueuelen $prev_qlen $rmt_dev"
> +
> + [ "$prev_queue" ] && \
> + tst_rhost_run -c "tc qdisc replace $rmt_dev root $prev_queue"
> }
> tcp_cc_setup()
> @@ -30,6 +40,30 @@ tcp_cc_setup()
> prev_alg="$(sysctl -n net.ipv4.tcp_congestion_control)"
> }
> +qdisc_list="pfifo_fast codel pfifo fq hfsc hhf htb pie prio sfb sfq"
Maybe just one thing: wouldn't be better to have this upper case as it's
library variable shared in tests? But it's only a minor nit.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 22+ messages in thread* [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen
2018-05-28 5:44 ` Petr Vorel
@ 2018-05-28 5:47 ` Petr Vorel
0 siblings, 0 replies; 22+ messages in thread
From: Petr Vorel @ 2018-05-28 5:47 UTC (permalink / raw)
To: ltp
Hi Alexey,
> > Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
Forget to add
Acked-by: Petr Vorel <pvorel@suse.cz>
> > ---
...
> > +qdisc_list="pfifo_fast codel pfifo fq hfsc hhf htb pie prio sfb sfq"
> Maybe just one thing: wouldn't be better to have this upper case as it's
> library variable shared in tests? But it's only a minor nit.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 22+ messages in thread
* [LTP] [PATCH 5/6] network/tcp_cc: add new test bbr01
2018-05-21 11:48 [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Alexey Kodanev
` (3 preceding siblings ...)
2018-05-21 11:48 ` [LTP] [PATCH 4/6] network/tcp_cc/lib: add a function to set qdisc and txqueuelen Alexey Kodanev
@ 2018-05-21 11:48 ` Alexey Kodanev
2018-05-28 4:15 ` Petr Vorel
2018-05-28 5:44 ` Petr Vorel
2018-05-21 11:48 ` [LTP] [PATCH 6/6] network/tcp_cc: add new test bbr02 Alexey Kodanev
2018-05-24 15:41 ` [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Petr Vorel
6 siblings, 2 replies; 22+ messages in thread
From: Alexey Kodanev @ 2018-05-21 11:48 UTC (permalink / raw)
To: ltp
Emulates congestion with packet loss. The test expects that
'bbr' congestion-control algorithm not significantly worse
than 'cubic'.
Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
---
runtest/net.features | 2 ++
testcases/network/tcp_cc/bbr01.sh | 32 ++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+), 0 deletions(-)
create mode 100755 testcases/network/tcp_cc/bbr01.sh
diff --git a/runtest/net.features b/runtest/net.features
index df78c04..732c053 100644
--- a/runtest/net.features
+++ b/runtest/net.features
@@ -1,6 +1,8 @@
#
# Stress tests for various network features
#
+bbr01 bbr01.sh
+bbr01_ipv6 bbr01.sh -6
bind_noport01 bind_noport01.sh
bind_noport01_ipv6 bind_noport01.sh -6
diff --git a/testcases/network/tcp_cc/bbr01.sh b/testcases/network/tcp_cc/bbr01.sh
new file mode 100755
index 0000000..3825c22
--- /dev/null
+++ b/testcases/network/tcp_cc/bbr01.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2018 Oracle and/or its affiliates. All Rights Reserved.
+
+TST_SETUP="setup"
+TST_TESTFUNC="do_test"
+TST_CLEANUP="cleanup"
+TST_MIN_KVER="4.13"
+
+. tcp_cc_lib.sh
+
+cleanup()
+{
+ tc qdisc del dev $(tst_iface) root netem
+
+ tcp_cc_cleanup
+}
+
+setup()
+{
+ tcp_cc_setup
+
+ tst_res TINFO "emulate congestion with packet loss 0.5%"
+ ROD tc qdisc add dev $(tst_iface) root netem loss 0.5%
+}
+
+do_test()
+{
+ tcp_cc_test01 bbr -50
+}
+
+tst_run
--
1.7.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* [LTP] [PATCH 6/6] network/tcp_cc: add new test bbr02
2018-05-21 11:48 [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Alexey Kodanev
` (4 preceding siblings ...)
2018-05-21 11:48 ` [LTP] [PATCH 5/6] network/tcp_cc: add new test bbr01 Alexey Kodanev
@ 2018-05-21 11:48 ` Alexey Kodanev
2018-05-28 4:21 ` Petr Vorel
2018-05-28 5:45 ` Petr Vorel
2018-05-24 15:41 ` [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Petr Vorel
6 siblings, 2 replies; 22+ messages in thread
From: Alexey Kodanev @ 2018-05-21 11:48 UTC (permalink / raw)
To: ltp
Difference, comparing to bbr01:
* Uses different (not default) qdisc: pfifo_fast, codel, pfifo, fq, hfsc,
hhf, htb, pie, prio, sfb and sfq.
* Emulates congestion not only with packet loss but with delay, corrupt
and reorder.
The test expects that 'bbr' congestion-control algorithm not
significantly worse than 'cubic'.
Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
---
runtest/net.features | 3 ++
testcases/network/tcp_cc/bbr02.sh | 45 +++++++++++++++++++++++++++++++++++++
2 files changed, 48 insertions(+), 0 deletions(-)
create mode 100755 testcases/network/tcp_cc/bbr02.sh
diff --git a/runtest/net.features b/runtest/net.features
index 732c053..eac1b2b 100644
--- a/runtest/net.features
+++ b/runtest/net.features
@@ -4,6 +4,9 @@
bbr01 bbr01.sh
bbr01_ipv6 bbr01.sh -6
+bbr02 bbr02.sh
+bbr02_ipv6 bbr02.sh -6
+
bind_noport01 bind_noport01.sh
bind_noport01_ipv6 bind_noport01.sh -6
diff --git a/testcases/network/tcp_cc/bbr02.sh b/testcases/network/tcp_cc/bbr02.sh
new file mode 100755
index 0000000..ca3a9b4
--- /dev/null
+++ b/testcases/network/tcp_cc/bbr02.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2018 Oracle and/or its affiliates. All Rights Reserved.
+
+TST_SETUP="setup"
+TST_TESTFUNC="do_test"
+TST_CLEANUP="cleanup"
+TST_MIN_KVER="4.13"
+
+. tcp_cc_lib.sh
+
+TST_CLEANUP="cleanup"
+
+cleanup()
+{
+ tc qdisc del dev $(tst_iface) root netem
+
+ tcp_cc_cleanup
+}
+
+setup()
+{
+ tcp_cc_setup
+
+ local emu_opts="delay 5ms 1ms 20% loss 0.3% ecn corrupt \
+0.1% reorder 93% 50% limit 10000"
+
+ tst_res TINFO "emulate congestion with packet $emu_opts"
+ ROD tc qdisc add dev $(tst_iface) root netem $emu_opts
+}
+
+do_test()
+{
+ for q in $qdisc_list; do
+ if tc qdisc add $q >/dev/null 2>&1; then
+ tst_res TCONF "$q qdisc not supported"
+ continue
+ fi
+
+ tcp_cc_set_qdisc $q
+ tcp_cc_test01 bbr -50
+ done
+}
+
+tst_run
--
1.7.1
^ permalink raw reply related [flat|nested] 22+ messages in thread* [LTP] [PATCH 6/6] network/tcp_cc: add new test bbr02
2018-05-21 11:48 ` [LTP] [PATCH 6/6] network/tcp_cc: add new test bbr02 Alexey Kodanev
@ 2018-05-28 4:21 ` Petr Vorel
2018-06-08 13:42 ` Alexey Kodanev
2018-05-28 5:45 ` Petr Vorel
1 sibling, 1 reply; 22+ messages in thread
From: Petr Vorel @ 2018-05-28 4:21 UTC (permalink / raw)
To: ltp
Hi Alexey,
> Difference, comparing to bbr01:
> * Uses different (not default) qdisc: pfifo_fast, codel, pfifo, fq, hfsc,
> hhf, htb, pie, prio, sfb and sfq.
> * Emulates congestion not only with packet loss but with delay, corrupt
> and reorder.
> The test expects that 'bbr' congestion-control algorithm not
> significantly worse than 'cubic'.
> Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
Acked-by: Petr Vorel <pvorel@suse.cz>
> ---
> +do_test()
> +{
> + for q in $qdisc_list; do
> + if tc qdisc add $q >/dev/null 2>&1; then
> + tst_res TCONF "$q qdisc not supported"
> + continue
> + fi
Yes, this one would of using TST_TEST_DATA.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 22+ messages in thread* [LTP] [PATCH 6/6] network/tcp_cc: add new test bbr02
2018-05-28 4:21 ` Petr Vorel
@ 2018-06-08 13:42 ` Alexey Kodanev
2018-06-08 14:00 ` Petr Vorel
0 siblings, 1 reply; 22+ messages in thread
From: Alexey Kodanev @ 2018-06-08 13:42 UTC (permalink / raw)
To: ltp
On 05/28/2018 07:21 AM, Petr Vorel wrote:
> Hi Alexey,
>
>> Difference, comparing to bbr01:
>
>> * Uses different (not default) qdisc: pfifo_fast, codel, pfifo, fq, hfsc,
>> hhf, htb, pie, prio, sfb and sfq.
>> * Emulates congestion not only with packet loss but with delay, corrupt
>> and reorder.
>
>> The test expects that 'bbr' congestion-control algorithm not
>> significantly worse than 'cubic'.
>
>> Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
> Acked-by: Petr Vorel <pvorel@suse.cz>
...
>> +do_test()
>> +{
>> + for q in $qdisc_list; do
>> + if tc qdisc add $q >/dev/null 2>&1; then
>> + tst_res TCONF "$q qdisc not supported"
>> + continue
>> + fi
> Yes, this one would of using TST_TEST_DATA.
>
Thanks for the review Petr!
The patch-set applied and now using new TST_TEST_DATA.
Also I've added one more patch that checks support in kernel.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [LTP] [PATCH 6/6] network/tcp_cc: add new test bbr02
2018-05-21 11:48 ` [LTP] [PATCH 6/6] network/tcp_cc: add new test bbr02 Alexey Kodanev
2018-05-28 4:21 ` Petr Vorel
@ 2018-05-28 5:45 ` Petr Vorel
1 sibling, 0 replies; 22+ messages in thread
From: Petr Vorel @ 2018-05-28 5:45 UTC (permalink / raw)
To: ltp
Hi Alexey,
> Difference, comparing to bbr01:
> * Uses different (not default) qdisc: pfifo_fast, codel, pfifo, fq, hfsc,
> hhf, htb, pie, prio, sfb and sfq.
> * Emulates congestion not only with packet loss but with delay, corrupt
> and reorder.
> The test expects that 'bbr' congestion-control algorithm not
> significantly worse than 'cubic'.
> Signed-off-by: Alexey Kodanev <alexey.kodanev@oracle.com>
Acked-by: Petr Vorel <pvorel@suse.cz>
...
> +do_test()
> +{
> + for q in $qdisc_list; do
> + if tc qdisc add $q >/dev/null 2>&1; then
> + tst_res TCONF "$q qdisc not supported"
> + continue
> + fi
Yes, this one would of using TST_TEST_DATA.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 22+ messages in thread
* [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02
2018-05-21 11:48 [LTP] [PATCH 0/6] network/tcp_cc: add new tests bbr01 and bbr02 Alexey Kodanev
` (5 preceding siblings ...)
2018-05-21 11:48 ` [LTP] [PATCH 6/6] network/tcp_cc: add new test bbr02 Alexey Kodanev
@ 2018-05-24 15:41 ` Petr Vorel
6 siblings, 0 replies; 22+ messages in thread
From: Petr Vorel @ 2018-05-24 15:41 UTC (permalink / raw)
To: ltp
Hi Alexey,
> The patches are adding two new tests for BBR congestion control
> algorithm.
> * bbr01 test is a simple one and similar to dctcp01 but not using
> ECN when emulating packet loss.
> * bbr02 test, in addition to packet loss emulation with ECN, is using
> delay, reorder and corrupt features of 'tc'. And also iterates the
> different queueing disciplines.
Whole patchset looks good to me. I hope to have deeper look tomorrow or on Monday (if you
don't merge it before).
> The last test, I guess, should use TST_TEST_DATA for passing queueing
> disciplines.
Yes.
Kind regards,
Petr
^ permalink raw reply [flat|nested] 22+ messages in thread