Re: [RFC] [PATCH] netns: Fix race in virtual interface bringup

Nicolas Dichtel
2017-11-16T09:56:14Z

Le 15/11/2017 à 20:04, Dan Rue a écrit :
> Adding CC netdev
>
> Can someone comment on the expected behavior of this test case?
>
> Here's the isolated test:
>
> ip netns del tst_net_ns0
> ip netns del tst_net_ns1
> ip netns add tst_net_ns0
> ip netns add tst_net_ns1
> ip netns exec tst_net_ns0 ip link add veth0 type veth peer name veth1
> ip netns exec tst_net_ns0 ip link set veth1 netns tst_net_ns1
>
> ip netns exec tst_net_ns0 ifconfig veth0 inet6 add fd00::2/64
> ip netns exec tst_net_ns1 ifconfig veth1 inet6 add fd00::3/64
ip netns exec tst_net_ns0 sysctl -w net.ipv6.conf.all.accept_dad=0
ip netns exec tst_net_ns0 sysctl -w net.ipv6.conf.veth0.accept_dad=0
ip netns exec tst_net_ns1 sysctl -w net.ipv6.conf.all.accept_dad=0
ip netns exec tst_net_ns1 sysctl -w net.ipv6.conf.veth1.accept_dad=0

> ip netns exec tst_net_ns0 ifconfig veth0 up
> ip netns exec tst_net_ns1 ifconfig veth1 up
>
> #sleep 2>
> ip netns exec tst_net_ns0 ping6 -q -c2 -I veth0 fd00::3
>
> This is essentially what LTP is running. Sometimes, on some systems,
> ping6 fails with "connect: Cannot assign requested address". Adding a
> "sleep 2" always fixes it (but we'd obviously like to avoid a hard coded
> sleep in the test).
Probably due to DAD. By disabling DAD, you should be able to use immediately the
ipv6 addrs.

Regards,
Nicolas