Message ID | 764585b6852537a93c6fba3260e311b79280267a.1722917654.git.tanggeliang@kylinos.cn |
---|---|
State | New |
Headers | show |
Series | [net-next] selftests: forwarding: lib.sh: ignore "Address not found" | expand |
Hi Ido, Thanks for the review. On Tue, 2024-08-06 at 10:40 +0300, Ido Schimmel wrote: > On Tue, Aug 06, 2024 at 12:20:38PM +0800, Geliang Tang wrote: > > From: Geliang Tang <tanggeliang@kylinos.cn> > > > > So many "Address not found" messages occur at the end of forwarding > > tests > > when using "ip address del" command for an invalid address: > > Can you give an example of an invalid address that triggers this > message? > > > > > TEST: FDB limits interacting with FDB type local > > [ OK ] > > Error: ipv4: Address not found. > > > > ... ... > > TEST: IGMPv3 S,G port entry automatic add to a *,G port > > [ OK ] > > Error: ipv4: Address not found. > > Error: ipv6: address not found. > > > > ... ... > > TEST: Isolated port flooding > > [ OK ] > > Error: ipv4: Address not found. > > Error: ipv6: address not found. > > > > ... ... > > TEST: Externally learned FDB entry - ageing & roaming > > [ OK ] > > Error: ipv4: Address not found. > > Error: ipv6: address not found. > > I'm unable to reproduce these with net-next and iproute2-next. Please > debug this to understand the root cause or provide more details on > how > to reproduce. I did get these errors with the latest net-next and iproute2-next. For example, I got these errors of "bridge_mdb_port_down.sh": $ sudo ./bridge_mdb_port_down.sh TEST: MDB add/del entry to port with state down [ OK ] Error: ipv4: Address not found. Error: ipv6: address not found. Error: ipv4: Address not found. Error: ipv6: address not found. These errors occur when using h1_destroy() and h2_destroy() to delete the addresses of h1 (192.0.2.1, 2001:db8:1::1) and h2 (192.0.2.2, 2001:db8:1::2): h1_destroy() { simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64 } h2_destroy() { simple_if_fini $h2 192.0.2.2/24 2001:db8:1::2/64 } It seems that when invoking h1_destroy() and h2_destroy(), both h1 and h2 no longer have IP addresses. I added "ifconfig" to show the addresses of h1 and h2 before invoking h1_destroy() and h2_destroy() like this: ''' @@ -105,7 +105,9 @@ cleanup() pre_cleanup switch_destroy + ifconfig $h1 h1_destroy + ifconfig $h2 h2_destroy vrf_cleanup ''' And got these messages: TEST: MDB add/del entry to port with state down [ OK ] veth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether f2:ca:02:ee:05:19 txqueuelen 1000 (Ethernet) RX packets 149 bytes 17355 (17.3 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 81 bytes 9165 (9.1 KB) TX errors 0 dropped 12 overruns 0 carrier 0 collisions 0 Error: ipv4: Address not found. Error: ipv6: address not found. veth3: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 ether 92:df:97:5c:98:7e txqueuelen 1000 (Ethernet) RX packets 67 bytes 6252 (6.2 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 39 bytes 4997 (4.9 KB) TX errors 0 dropped 56 overruns 0 carrier 0 collisions 0 Error: ipv4: Address not found. Error: ipv6: address not found. -Geliang > > > > > This patch gnores these messages and redirects them to /dev/null in > > __addr_add_del(). > > > > Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> > > --- > > tools/testing/selftests/net/forwarding/lib.sh | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/tools/testing/selftests/net/forwarding/lib.sh > > b/tools/testing/selftests/net/forwarding/lib.sh > > index ff96bb7535ff..8670b6053cde 100644 > > --- a/tools/testing/selftests/net/forwarding/lib.sh > > +++ b/tools/testing/selftests/net/forwarding/lib.sh > > @@ -839,7 +839,7 @@ __addr_add_del() > > array=("${@}") > > > > for addrstr in "${array[@]}"; do > > - ip address $add_del $addrstr dev $if_name > > + ip address $add_del $addrstr dev $if_name &> > > /dev/null > > done > > } > > > > -- > > 2.43.0 > >
On Wed, 07 Aug 2024 12:08:15 +0800 Geliang Tang wrote: > I did get these errors with the latest net-next and iproute2-next. For > example, I got these errors of "bridge_mdb_port_down.sh": > > $ sudo ./bridge_mdb_port_down.sh > TEST: MDB add/del entry to port with state down [ OK ] > Error: ipv4: Address not found. > Error: ipv6: address not found. > Error: ipv4: Address not found. > Error: ipv6: address not found. FWIW netdev CI runs with iproute2 as of 2cb1a656e99 plus Petr's 16b weight patches, and I don't see "address not found".
On Wed, 2024-08-07 at 09:59 +0300, Ido Schimmel wrote: > On Wed, Aug 07, 2024 at 12:08:15PM +0800, Geliang Tang wrote: > > On Tue, 2024-08-06 at 10:40 +0300, Ido Schimmel wrote: > > > On Tue, Aug 06, 2024 at 12:20:38PM +0800, Geliang Tang wrote: > > > > From: Geliang Tang <tanggeliang@kylinos.cn> > > > > > > > > So many "Address not found" messages occur at the end of > > > > forwarding > > > > tests > > > > when using "ip address del" command for an invalid address: > > > > > > Can you give an example of an invalid address that triggers this > > > message? > > > > > > > > > > > TEST: FDB limits interacting with FDB type > > > > local > > > > [ OK ] > > > > Error: ipv4: Address not found. > > > > > > > > ... ... > > > > TEST: IGMPv3 S,G port entry automatic add to a *,G > > > > port > > > > [ OK ] > > > > Error: ipv4: Address not found. > > > > Error: ipv6: address not found. > > > > > > > > ... ... > > > > TEST: Isolated port > > > > flooding > > > > [ OK ] > > > > Error: ipv4: Address not found. > > > > Error: ipv6: address not found. > > > > > > > > ... ... > > > > TEST: Externally learned FDB entry - ageing & > > > > roaming > > > > [ OK ] > > > > Error: ipv4: Address not found. > > > > Error: ipv6: address not found. > > > > > > I'm unable to reproduce these with net-next and iproute2-next. > > > Please > > > debug this to understand the root cause or provide more details > > > on > > > how > > > to reproduce. > > > > I did get these errors with the latest net-next and iproute2-next. > > For > > example, I got these errors of "bridge_mdb_port_down.sh": > > > > $ sudo ./bridge_mdb_port_down.sh > > TEST: MDB add/del entry to port with state down [ > > OK ] > > Error: ipv4: Address not found. > > Error: ipv6: address not found. > > Error: ipv4: Address not found. > > Error: ipv6: address not found. > > > > These errors occur when using h1_destroy() and h2_destroy() to > > delete > > the addresses of h1 (192.0.2.1, 2001:db8:1::1) and h2 (192.0.2.2, > > 2001:db8:1::2): > > > > h1_destroy() > > { > > simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64 > > } > > > > h2_destroy() > > { > > simple_if_fini $h2 192.0.2.2/24 2001:db8:1::2/64 > > } > > > > It seems that when invoking h1_destroy() and h2_destroy(), both h1 > > and > > h2 no longer have IP addresses. > > This is unexpected, I do see the addresses on my end. Maybe you have > some network manager that is deleting these addresses for some > reason? > > Try tracing __inet_del_ifa() while running the tests: > > # bpftrace -e 'k:__inet_del_ifa { @bla[comm] = count(); }' > Attaching 1 probe... > ^C > > @bla[ip]: 2 @bla[NetworkManager]: 2 Yes indeed, the addresses are deleted by NetworkManager. Does this mean that this test will be affected by the network environment in which it is running? Is it necessary to run this test in a new network namespace? If necessary, I can add it. Thanks, -Geliang > > > > > I added "ifconfig" to show the addresses of h1 and h2 before > > invoking > > h1_destroy() and h2_destroy() like this: > > > > ''' > > @@ -105,7 +105,9 @@ cleanup() > > pre_cleanup > > > > switch_destroy > > + ifconfig $h1 > > h1_destroy > > + ifconfig $h2 > > h2_destroy > > > > vrf_cleanup > > ''' > > > > And got these messages: > > > > TEST: MDB add/del entry to port with state down [ > > OK ] > > veth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 > > ether f2:ca:02:ee:05:19 txqueuelen 1000 (Ethernet) > > RX packets 149 bytes 17355 (17.3 KB) > > RX errors 0 dropped 0 overruns 0 frame 0 > > TX packets 81 bytes 9165 (9.1 KB) > > TX errors 0 dropped 12 overruns 0 carrier 0 collisions 0 > > > > Error: ipv4: Address not found. > > Error: ipv6: address not found. > > veth3: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 > > ether 92:df:97:5c:98:7e txqueuelen 1000 (Ethernet) > > RX packets 67 bytes 6252 (6.2 KB) > > RX errors 0 dropped 0 overruns 0 frame 0 > > TX packets 39 bytes 4997 (4.9 KB) > > TX errors 0 dropped 56 overruns 0 carrier 0 collisions 0 > > > > Error: ipv4: Address not found. > > Error: ipv6: address not found. > > > > -Geliang > > > > > > > > > > > > > This patch gnores these messages and redirects them to > > > > /dev/null in > > > > __addr_add_del(). > > > > > > > > Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn> > > > > --- > > > > tools/testing/selftests/net/forwarding/lib.sh | 2 +- > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > diff --git a/tools/testing/selftests/net/forwarding/lib.sh > > > > b/tools/testing/selftests/net/forwarding/lib.sh > > > > index ff96bb7535ff..8670b6053cde 100644 > > > > --- a/tools/testing/selftests/net/forwarding/lib.sh > > > > +++ b/tools/testing/selftests/net/forwarding/lib.sh > > > > @@ -839,7 +839,7 @@ __addr_add_del() > > > > array=("${@}") > > > > > > > > for addrstr in "${array[@]}"; do > > > > - ip address $add_del $addrstr dev $if_name > > > > + ip address $add_del $addrstr dev $if_name &> > > > > /dev/null > > > > done > > > > } > > > > > > > > -- > > > > 2.43.0 > > > > > >
On Thu, Aug 08, 2024 at 04:53:51PM +0800, Geliang Tang wrote: > Yes indeed, the addresses are deleted by NetworkManager. Does this mean > that this test will be affected by the network environment in which it > is running? Is it necessary to run this test in a new network > namespace? No. See tools/testing/selftests/net/forwarding/README for the motivation for using VRFs instead of namespaces. Why NetworkManager is deleting addresses it did not add from interfaces it did not create?
diff --git a/tools/testing/selftests/net/forwarding/lib.sh b/tools/testing/selftests/net/forwarding/lib.sh index ff96bb7535ff..8670b6053cde 100644 --- a/tools/testing/selftests/net/forwarding/lib.sh +++ b/tools/testing/selftests/net/forwarding/lib.sh @@ -839,7 +839,7 @@ __addr_add_del() array=("${@}") for addrstr in "${array[@]}"; do - ip address $add_del $addrstr dev $if_name + ip address $add_del $addrstr dev $if_name &> /dev/null done }