Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iproute2 batch-mode fails to bring up veth #29468

Closed
cryptarch opened this issue Mar 15, 2021 · 4 comments
Closed

iproute2 batch-mode fails to bring up veth #29468

cryptarch opened this issue Mar 15, 2021 · 4 comments
Labels

Comments

@cryptarch
Copy link
Contributor

Hi,

(This should probably go upstream, but it's not clear whether iproute2 bug reports are welcome on the netdev mailing list. So I thought I'd start here because I first noticed the problem when pulling in iproute 5.11.0 on one of my Void Linux boxen today.)

System

  • xuname: Void 5.10.23_1 x86_64 AuthenticAMD uptodate rrrmFFFFFFF
  • package: iproute2-5.11.0_1

Expected behavior

Iproute2 batch mode should be able to build a working network namespace. See below in "how to reproduce" section for the example script netns-test.sh.

Expected usage and output (works in 5.10.0):

$ sudo ./bin/netns-test.sh
$ sudo ip netns exec netns-test ip route
default via 192.168.5.1 dev netns-test-1
192.168.0.0/24 via 192.168.5.1 dev netns-test-1
192.168.5.0/24 dev netns-test-1 proto kernel scope link src 192.168.5.2
192.168.5.1 dev netns-test-1 proto kernel scope link src 192.168.5.2

Actual behavior

The inner veth doesn't come up properly:

$ sudo ./bin/netns-test.sh
$ sudo ip netns exec netns-test ip route
$ sudo ip netns exec netns-test ip link
Password:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
39: netns-test-1@if40: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 1a:96:4e:4f:84:31 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Steps to reproduce the behavior

Put this into a script such as ~/bin/netns-test.sh:

#! /bin/bash

gw=192.168.5.1
ip=192.168.5.2
ns=netns-test
veth0=${ns}-0
veth1=${ns}-1
/usr/local/sbin/ip -b - << EOF
link add $veth0 type veth peer name $veth1
addr add $gw peer $ip dev $veth0
link set dev $veth0 up
netns add $ns
link set $veth1 netns $ns
netns exec $ns ip link set dev lo up
netns exec $ns ip link set dev $veth1 up
netns exec $ns ip addr add $ip/24 dev $veth1
netns exec $ns ip addr add $ip peer $gw dev $veth1
netns exec $ns ip route add default via $gw dev $veth1
netns exec $ns ip route add 192.168.0.0/24 via $gw dev $veth1
EOF

Run the script and then check whether it works with commands such as ip netns exec netns-test ip link and ip netns exec netns-test ip route.

Note that git bisect identifies 1d9a81b8c9f30f9f4abeb875998262f61bf10577 as the offending commit.

@cryptarch cryptarch changed the title iproute2 bug iproute2 batch-mode fails to bring up veth Mar 15, 2021
@cryptarch
Copy link
Contributor Author

Note that running the commands manually, one at a time, seems to work okay even in 5.11.0. Afaict, the problem only affects batch mode, which makes sense, because the commit identified by git-bisect was purely focused on refactoring batch mode.

@leahneukirchen
Copy link
Member

leahneukirchen commented Mar 15, 2021

README.devel says to send bugs to netdev@, so please do that; I don't think this Void related.

@cryptarch
Copy link
Contributor Author

It seemed ambiguous:

Most new features require a kernel and a utility component.

Please submit both to the Linux networking mailing list
netdev@vger.kernel.org

But you're probably right

@github-actions
Copy link

github-actions bot commented May 8, 2022

Issues become stale 90 days after last activity and are closed 14 days after that. If this issue is still relevant bump it or assign it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants