networking/stress/icmp: add ip xfrm ipsec support
v6 cover networking/stress/icmp: add ip xfrm ipsec support
As we know, most of the network stress tests have IPsec testing, and we use setkey for configuration. But setkey[1] hasn't updated for a long time. And some distros, RHEL7 for example, even don't have ipset-tools package. On other hand, iproute2 is recommend for network configuration. And ip xfrm is more powerful than setkey. So let's use ip xfrm for ipsec testing.
[1] http://ipsec-tools.sourceforge.net/
Change from V5:
1. remove useless description
2. use same command substitution syntax in script
3. set TFAIL in the end
Hangbin Liu (3):
lib/test_net.sh: add tst_ping() to check icmp connectivity network/stress: add ipsec lib
network/stress/icmp: add icmp-uni-basic to implement all icmp basic
stress test
runtest/network_stress.icmp | 46 +++++++---- testcases/lib/test_net.sh | 30 ++++++++ testcases/network/stress/icmp/Makefile | 3 + testcases/network/stress/icmp/icmp-uni-basic | 91 ++++++++++++++++++++++ testcases/network/stress/ipsec/Makefile | 28 +++++++ testcases/network/stress/ipsec/ipsec_lib.sh | 110 +++++++++++++++++++++++++++ 6 files changed, 294 insertions(+), 14 deletions(-) create mode 100755 testcases/network/stress/icmp/icmp-uni-basic create mode 100644 testcases/network/stress/ipsec/Makefile create mode 100644 testcases/network/stress/ipsec/ipsec_lib.sh
Signature · 1 line
2.5.0
PATCH v6 1/3 lib/test_net.sh: add tst_ping() to check icmp connectivity
--- testcases/lib/test_net.sh | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+)
testcases/lib/test_net.sh +30 -0
@@ -314,3 +314,33 @@ tst_netload() return $ret } + +# tst_ping [IFACE] [DST ADDR] [MESSAGE SIZE ARREY] +# Check icmp connectivity +# IFACE: source interface name +# DST ADDR: destination IPv4 or IPv6 address +# MESSAGE SIZE ARREY: message size arrey +tst_ping() +{ + # The max number of ICMP echo request + PING_MAX=${PING_MAX:-"10"} + + local src_iface=${1:-"$(tst_iface)"} + local dst_addr=${2:-"$(tst_ipaddr rhost)"} + local msg_sizes=${@:3} + local ret=0 + + # ping cmd use 56 as default message size + for size in ${msg_sizes:-"56"}; do + ping$TST_IPV6 -I $src_iface -c $PING_MAX $dst_addr \ + -s $size > /dev/null 2>&1 + ret=$? + if [ $ret -eq 0 ]; then + tst_resm TINFO "tst_ping IPv${TST_IPV6:-4} msg_size $size pass" + else + tst_resm TINFO "tst_ping IPv${TST_IPV6:-4} msg_size $size fail" + break + fi + done + return $ret +}
Signature · 1 line
2.5.0
PATCH v6 2/3 network/stress: add ipsec lib
In reply to Hangbin Liu--- testcases/network/stress/ipsec/Makefile | 28 +++++++ testcases/network/stress/ipsec/ipsec_lib.sh | 110 ++++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 testcases/network/stress/ipsec/Makefile create mode 100644 testcases/network/stress/ipsec/ipsec_lib.sh
testcases/network/stress/ipsec/Makefile new file +28 -0
@@ -0,0 +1,28 @@ +#!/bin/sh +# Copyright (c) 2016 Red Hat Inc., 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: Hangbin Liu <[email protected]> +# +####################################################################### + + +top_srcdir ?= ../../../.. + +include $(top_srcdir)/include/mk/env_pre.mk + +INSTALL_TARGETS := *.sh + +include $(top_srcdir)/include/mk/generic_leaf_target.mk
testcases/network/stress/ipsec/ipsec_lib.sh new file +110 -0
110 lines not on this page · raw message
Signature · 1 line
2.5.0
PATCH v6 3/3 network/stress/icmp: add icmp-uni-basic to implement all icmp basic stress test
In reply to Hangbin LiuAdd icmp-uni-basic to implement the test case and define each test case in "runtest/" and use parameters. Also use ip xfrm instead of setkey for ipsec testing.
--- runtest/network_stress.icmp | 46 +++++++++----- testcases/network/stress/icmp/Makefile | 3 + testcases/network/stress/icmp/icmp-uni-basic | 91 ++++++++++++++++++++++++++++ 3 files changed, 126 insertions(+), 14 deletions(-) create mode 100755 testcases/network/stress/icmp/icmp-uni-basic
runtest/network_stress.icmp +32 -14
@@ -2,21 +2,39 @@ # Stress test for TCP/IP protocol stack (ICMP) # -icmp4-uni-basic01 icmp4-uni-basic01 -icmp4-uni-basic02 icmp4-uni-basic02 -icmp4-uni-basic03 icmp4-uni-basic03 -icmp4-uni-basic04 icmp4-uni-basic04 -icmp4-uni-basic05 icmp4-uni-basic05 -icmp4-uni-basic06 icmp4-uni-basic06 -icmp4-uni-basic07 icmp4-uni-basic07 +# MAX_LENGTH(65535) - IP(20) - ICMP(8) = MAX_SIZE(65507) +icmp4-uni-basic01 icmp-uni-basic -s "10 100 1000 10000 65507" +# MAX_LENGTH(65535) - IP(20) - AH(24) - ICMP(8) = MAX_SIZE(65483) +icmp4-uni-basic02 icmp-uni-basic -p ah -m transport -s "10 100 1000 10000 65483" +# MAX_LENGTH(65535) - IP(20) - AH(24) - Tunnel(IPv4 20) - ICMP(8) = MAX_SIZE(65463) +icmp4-uni-basic03 icmp-uni-basic -p ah -m tunnel -s "10 100 1000 10000 65463" +# MAX_LENGTH(65535) - IP(20) - ESP (37) - ICMP(8) = MAX_SIZE(65470) +# ESP Header has pad payload, so the ESP length is variable +icmp4-uni-basic04 icmp-uni-basic -p esp -m transport -s "10 100 1000 10000 65470" +# MAX_LENGTH(65535) - IP(20) - ESP (37) - Tunnel(20) - ICMP(8) = MAX_SIZE(65450) +icmp4-uni-basic05 icmp-uni-basic -p esp -m tunnel -s "10 100 1000 10000 65450" +# Same message size but different content will result in different data size +# after compression. So we just use a large enough message size(65000) for testing +icmp4-uni-basic06 icmp-uni-basic -p ipcomp -m transport -s "10 100 1000 10000 65000" +icmp4-uni-basic07 icmp-uni-basic -p ipcomp -m tunnel -s "10 100 1000 10000 65000" -icmp6-uni-basic01 icmp6-uni-basic01 -icmp6-uni-basic02 icmp6-uni-basic02 -icmp6-uni-basic03 icmp6-uni-basic03 -icmp6-uni-basic04 icmp6-uni-basic04 -icmp6-uni-basic05 icmp6-uni-basic05 -icmp6-uni-basic06 icmp6-uni-basic06 -icmp6-uni-basic07 icmp6-uni-basic07 +# MAX_LENGTH(65535) - ICMP(8) = MAX_SIZE(65527) +icmp6-uni-basic01 icmp-uni-basic -6 -s "10 100 1000 10000 65527" +# MAX_LENGTH(65535) - AH(24) - ICMP(8) = MAX_SIZE(65503) +icmp6-uni-basic02 icmp-uni-basic -6 -p ah -m transport -s "10 100 1000 10000 65503" +# MAX_LENGTH(65535) - ICMP(8) = MAX_SIZE(65527) +# When receive, we drop the tunnel header first and only leave the inside IPv6 +# Header and icmp message. That's why we can have so large message size. +icmp6-uni-basic03 icmp-uni-basic -6 -p ah -m tunnel -s "10 100 1000 10000 65527" +# MAX_LENGTH(65535) - ESP (33) - ICMP(8) = MAX_SIZE(65494) +# ESP Header has pad payload, so the ESP length is variable +icmp6-uni-basic04 icmp-uni-basic -6 -p esp -m transport -s "10 100 1000 10000 65494" +# MAX_LENGTH(65535) - ICMP(8) = MAX_SIZE(65527) +icmp6-uni-basic05 icmp-uni-basic -6 -p esp -m tunnel -s "10 100 1000 10000 65527" +# Same message size but different content will result in different data size +# after compression. So we just use a large enough message size(65000) for testing +icmp6-uni-basic06 icmp-uni-basic -6 -p ipcomp -m transport -s "10 100 1000 10000 65000" +icmp6-uni-basic07 icmp-uni-basic -6 -p ipcomp -m tunnel -s "10 100 1000 10000 65000" icmp4-multi-diffip01 icmp4-multi-diffip01 icmp4-multi-diffip02 icmp4-multi-diffip02
testcases/network/stress/icmp/Makefile +3 -0
@@ -23,4 +23,7 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/env_pre.mk + +INSTALL_TARGETS := icmp* + include $(top_srcdir)/include/mk/generic_trunk_target.mk
testcases/network/stress/icmp/icmp-uni-basic new file +91 -0
91 lines not on this page · raw message
Signature · 1 line
2.5.0
PATCH v6 3/3 network/stress/icmp: add icmp-uni-basic to implement all icmp basic stress test
Hangbin,
Quoted 2 lines · Hangbin Liu
...
+# The test case ID, the test case count and the total number of test case
I meant this particular line above :)
testcases/network/stress/icmp/icmp-uni-basic line 86
Quoted 4 lines
...
testcases/network/stress/icmp/icmp-uni-basic new file +3
-0+tst_ping $lhost_ifname $rhost_addr $ICMP_SIZE_ARRAY +if [ $? -ne 0 ]; then + tst_brkm TFAIL "Check IPv${TST_IPV6:-4} $IPSEC_PROTO $IPSEC_MODE connectivity "
tst_brkm not needed here as well
testcases/network/stress/icmp/icmp-uni-basic line 91
Quoted 5 lines
testcases/network/stress/icmp/icmp-uni-basic new file +5
-0+else + tst_resm TPASS "Check IPv${TST_IPV6:-4} $IPSEC_PROTO $IPSEC_MODE connectivity" +fi + +tst_exit
Cyril,
Do you have any objections to pushing the patch-set before release?
Thanks,
Alexey
PATCH v6 3/3 network/stress/icmp: add icmp-uni-basic to implement all icmp basic stress test
Hi!
Quoted 1 line
Do you have any objections to pushing the patch-set before release?
Apart from the typo and bashism I've pointed out it looks fine.
I'm ok with pushing it before release once you have tested that the tests runs fine.
Signature · 2 lines
Cyril Hrubis [email protected]