Commit 35036b0b authored by Petr Machata's avatar Petr Machata Committed by David S. Miller

selftests: forwarding: mirror_gre_vlan_bridge_1q: Fix untagged test

The untagged egress test sets up mirroring to {,ip6}gretap such that the
underlay goes through a bridge. Then VLAN flags are manipulated to test
that the traffic leaves the bridge 802.1q-tagged or not, as appropriate.

However, when a neighbor expires at the time that the bridge VLAN is
configured as PVID and egress untagged, the following discovery process
can't finish, because the IP address on H3 is still at the VLAN-tagged
netdevice. This manifests by occasional failures where only several of
the 10 required packets get through.

Therefore, when reconfiguring the VLAN flags, move the IP address to the
appropriate device in the H3 VRF.

In addition to that, take this opportunity to embed an ASCII art diagram
to make the topology move obvious.
Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent db2c5bfc
#!/bin/bash #!/bin/bash
# SPDX-License-Identifier: GPL-2.0 # SPDX-License-Identifier: GPL-2.0
# This test uses standard topology for testing gretap. See
# mirror_gre_topo_lib.sh for more details.
#
# Test for "tc action mirred egress mirror" when the underlay route points at a # Test for "tc action mirred egress mirror" when the underlay route points at a
# vlan device on top of a bridge device with vlan filtering (802.1q). # vlan device on top of a bridge device with vlan filtering (802.1q).
#
# +---------------------+ +---------------------+
# | H1 | | H2 |
# | + $h1 | | $h2 + |
# | | 192.0.2.1/28 | | 192.0.2.2/28 | |
# +-----|---------------+ +---------------|-----+
# | |
# +-----|-------------------------------------------------------------|-----+
# | SW o--> mirred egress mirror dev {gt4,gt6} | |
# | | | |
# | +---|-------------------------------------------------------------|---+ |
# | | + $swp1 br1 $swp2 + | |
# | | | |
# | | + $swp3 | |
# | +---|-----------------------------------------------------------------+ |
# | | | |
# | | + br1.555 |
# | | 192.0.2.130/28 |
# | | 2001:db8:2::2/64 |
# | | |
# | | + gt6 (ip6gretap) + gt4 (gretap) |
# | | : loc=2001:db8:2::1 : loc=192.0.2.129 |
# | | : rem=2001:db8:2::2 : rem=192.0.2.130 |
# | | : ttl=100 : ttl=100 |
# | | : tos=inherit : tos=inherit |
# | | : : |
# +-----|---------------------:----------------------:----------------------+
# | : :
# +-----|---------------------:----------------------:----------------------+
# | H3 + $h3 + h3-gt6 (ip6gretap) + h3-gt4 (gretap) |
# | | loc=2001:db8:2::2 loc=192.0.2.130 |
# | + $h3.555 rem=2001:db8:2::1 rem=192.0.2.129 |
# | 192.0.2.130/28 ttl=100 ttl=100 |
# | 2001:db8:2::2/64 tos=inherit tos=inherit |
# | |
# +-------------------------------------------------------------------------+
ALL_TESTS=" ALL_TESTS="
test_gretap test_gretap
...@@ -30,6 +63,15 @@ source mirror_gre_topo_lib.sh ...@@ -30,6 +63,15 @@ source mirror_gre_topo_lib.sh
require_command $ARPING require_command $ARPING
h3_addr_add_del()
{
local add_del=$1; shift
local dev=$1; shift
ip addr $add_del dev $dev 192.0.2.130/28
ip addr $add_del dev $dev 2001:db8:2::2/64
}
setup_prepare() setup_prepare()
{ {
h1=${NETIFS[p1]} h1=${NETIFS[p1]}
...@@ -55,7 +97,8 @@ setup_prepare() ...@@ -55,7 +97,8 @@ setup_prepare()
ip route rep 192.0.2.130/32 dev br1.555 ip route rep 192.0.2.130/32 dev br1.555
ip -6 route rep 2001:db8:2::2/128 dev br1.555 ip -6 route rep 2001:db8:2::2/128 dev br1.555
vlan_create $h3 555 v$h3 192.0.2.130/28 2001:db8:2::2/64 vlan_create $h3 555 v$h3
h3_addr_add_del add $h3.555
ip link set dev $swp3 master br1 ip link set dev $swp3 master br1
bridge vlan add dev $swp3 vid 555 bridge vlan add dev $swp3 vid 555
...@@ -68,6 +111,8 @@ cleanup() ...@@ -68,6 +111,8 @@ cleanup()
ip link set dev $swp2 nomaster ip link set dev $swp2 nomaster
ip link set dev $swp3 nomaster ip link set dev $swp3 nomaster
h3_addr_add_del del $h3.555
vlan_destroy $h3 555 vlan_destroy $h3 555
vlan_destroy br1 555 vlan_destroy br1 555
...@@ -182,13 +227,19 @@ test_span_gre_untagged_egress() ...@@ -182,13 +227,19 @@ test_span_gre_untagged_egress()
quick_test_span_gre_dir $tundev ingress quick_test_span_gre_dir $tundev ingress
quick_test_span_vlan_dir $h3 555 ingress quick_test_span_vlan_dir $h3 555 ingress
h3_addr_add_del del $h3.555
bridge vlan add dev $swp3 vid 555 pvid untagged bridge vlan add dev $swp3 vid 555 pvid untagged
sleep 1 h3_addr_add_del add $h3
sleep 5
quick_test_span_gre_dir $tundev ingress quick_test_span_gre_dir $tundev ingress
fail_test_span_vlan_dir $h3 555 ingress fail_test_span_vlan_dir $h3 555 ingress
h3_addr_add_del del $h3
bridge vlan add dev $swp3 vid 555 bridge vlan add dev $swp3 vid 555
sleep 1 h3_addr_add_del add $h3.555
sleep 5
quick_test_span_gre_dir $tundev ingress quick_test_span_gre_dir $tundev ingress
quick_test_span_vlan_dir $h3 555 ingress quick_test_span_vlan_dir $h3 555 ingress
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment