lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Wed, 12 Oct 2022 10:32:29 -0400
From:   Jonathan Toppins <jtoppins@...hat.com>
To:     "netdev @ vger . kernel . org" <netdev@...r.kernel.org>
Cc:     Jay Vosburgh <j.vosburgh@...il.com>, Liang Li <liali@...hat.com>,
        Veaceslav Falico <vfalico@...il.com>,
        Andy Gospodarek <andy@...yhouse.net>,
        Shuah Khan <shuah@...nel.org>, linux-kernel@...r.kernel.org,
        linux-kselftest@...r.kernel.org
Subject: [net RFC] selftests: bonding: up/down delay w/ slave link flapping

Verify when a bond is configured with {up,down}delay and the link state
of slave members flaps if there are no remaining members up the bond
should immediately select a member to bring up. (from bonding.txt
section 13.1 paragraph 4)

Suggested-by: Liang Li <liali@...hat.com>
Signed-off-by: Jonathan Toppins <jtoppins@...hat.com>
---

Notes:
    Bug: Currently the bond never comes back up.

 .../selftests/drivers/net/bonding/Makefile    |  3 +-
 .../net/bonding/slave-link-flapping.sh        | 85 +++++++++++++++++++
 2 files changed, 87 insertions(+), 1 deletion(-)
 create mode 100755 tools/testing/selftests/drivers/net/bonding/slave-link-flapping.sh

diff --git a/tools/testing/selftests/drivers/net/bonding/Makefile b/tools/testing/selftests/drivers/net/bonding/Makefile
index e9dab5f9d773..cb40ef91c152 100644
--- a/tools/testing/selftests/drivers/net/bonding/Makefile
+++ b/tools/testing/selftests/drivers/net/bonding/Makefile
@@ -5,7 +5,8 @@ TEST_PROGS := \
 	bond-arp-interval-causes-panic.sh \
 	bond-break-lacpdu-tx.sh \
 	bond-lladdr-target.sh \
-	dev_addr_lists.sh
+	dev_addr_lists.sh \
+	slave-link-flapping.sh
 
 TEST_FILES := lag_lib.sh
 
diff --git a/tools/testing/selftests/drivers/net/bonding/slave-link-flapping.sh b/tools/testing/selftests/drivers/net/bonding/slave-link-flapping.sh
new file mode 100755
index 000000000000..a1499933fd39
--- /dev/null
+++ b/tools/testing/selftests/drivers/net/bonding/slave-link-flapping.sh
@@ -0,0 +1,85 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0
+
+# Regression Test:
+#  When the bond is configured with down/updelay and the link state of
+#  slave members flaps if there are no remaining members up the bond
+#  should immediately select a member to bring up. (from bonding.txt
+#  section 13.1 paragraph 4)
+#
+#  +-------------+       +-----------+
+#  | client      |       | switch    |
+#  |             |       |           |
+#  |    +--------| link1 |-----+     |
+#  |    |        +-------+     |     |
+#  |    |        |       |     |     |
+#  |    |        +-------+     |     |
+#  |    | bond   | link2 | Br0 |     |
+#  +-------------+       +-----------+
+#     172.20.2.1           172.20.2.2
+
+set -e
+
+BOND="bond0"
+LINK1="veth1"
+LINK2="veth2"
+CLIENTIP="172.20.2.1"
+SWITCHIP="172.20.2.2"
+NAMESPACES="switch client"
+
+cleanup()
+{
+	for n in ${NAMESPACES}; do
+		ip netns delete ${n} >/dev/null 2>&1 || true
+	done
+	modprobe -r bonding
+}
+
+setup_network()
+{
+	# create namespaces
+	for n in ${NAMESPACES}; do
+		ip netns add ${n}
+	done
+
+	# create veths
+	ip link add name ${LINK1}-bond type veth peer name ${LINK1}-end
+	ip link add name ${LINK2}-bond type veth peer name ${LINK2}-end
+
+	# create switch
+	ip netns exec switch ip link add br0 up type bridge
+	ip link set ${LINK1}-end netns switch up
+	ip link set ${LINK2}-end netns switch up
+	ip netns exec switch ip link set ${LINK1}-end master br0
+	ip netns exec switch ip link set ${LINK2}-end master br0
+	ip netns exec switch ip addr add ${SWITCHIP}/24 dev br0
+
+	# create client
+	ip link set ${LINK1}-bond netns client
+	ip link set ${LINK2}-bond netns client
+	ip netns exec client ip link add ${BOND} type bond \
+		mode 2 miimon 100 updelay 10000
+	ip netns exec client ip link set ${LINK1}-bond master ${BOND}
+	ip netns exec client ip link set ${LINK2}-bond master ${BOND}
+	ip netns exec client ip link set ${BOND} up
+	ip netns exec client ip addr add ${CLIENTIP}/24 dev ${BOND}
+}
+
+trap cleanup 0 1 2
+cleanup
+sleep 1
+
+dmesg --clear
+setup_network
+
+# verify connectivity
+ip netns exec client ping ${SWITCHIP} -c 5 >/dev/null 2>&1
+
+# force the links of the bond down
+ip netns exec switch ip link set ${LINK1}-end down
+sleep 2
+ip netns exec switch ip link set ${LINK1}-end up
+ip netns exec switch ip link set ${LINK2}-end down
+
+# re-verify connectivity
+ip netns exec client ping ${SWITCHIP} -c 5 >/dev/null 2>&1
-- 
2.31.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ