ipv6 broken for bridge

Bug #894272 reported by Markus Heberling
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
linux (Ubuntu)
Triaged
Medium
Unassigned

Bug Description

ipv6 seems to be broken on bridges in oneiric:

root@office:/home/markus# uname -a
Linux office 3.0.0-12-virtual #20-Ubuntu SMP Fri Oct 7 18:25:20 UTC 2011 i686 i686 i386 GNU/Linux
root@office:/home/markus# brctl addbr test
root@office:/home/markus# ip -6 addr add 2001:DB8:4309:2388::2/64 dev test
root@office:/home/markus# ifconfig test up
root@office:/home/markus# ifconfig test
test Link encap:Ethernet HWaddr fa:12:c8:34:79:69
          inet6 addr: 2001:db8:4309:2388::2/64 Scope:Global
          UP BROADCAST MULTICAST MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@office:/home/markus# ping6 2001:DB8:4309:2388::2
PING 2001:DB8:4309:2388::2(2001:db8:4309:2388::2) 56 data bytes
^C
--- 2001:DB8:4309:2388::2 ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 5999ms

root@office:/home/markus#

The address is correctly assigned to the interface, but it can't be pinged.

This used to work in natty:

root@yavin:/home/markus# uname -a
Linux yavin 2.6.38-12-virtual #51-Ubuntu SMP Wed Sep 28 17:57:49 UTC 2011 i686 i686 i386 GNU/Linux
root@yavin:/home/markus# brctl addbr test
root@yavin:/home/markus# ip -6 addr add 2001:DB8:4309:2388::2/64 dev test
root@yavin:/home/markus# ifconfig test up
root@yavin:/home/markus# ifconfig test
test Link encap:Ethernet HWaddr 0a:38:75:60:be:f1
          inet6 addr: fe80::838:75ff:fe60:bef1/64 Scope:Link
          inet6 addr: 2001:db8:4309:2388::2/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B) TX bytes:1446 (1.4 KB)
root@yavin:/home/markus# ping6 2001:DB8:4309:2388::2
PING 2001:DB8:4309:2388::2(2001:db8:4309:2388::2) 56 data bytes
64 bytes from 2001:db8:4309:2388::2: icmp_seq=1 ttl=64 time=0.035 ms
64 bytes from 2001:db8:4309:2388::2: icmp_seq=2 ttl=64 time=0.034 ms
64 bytes from 2001:db8:4309:2388::2: icmp_seq=3 ttl=64 time=0.034 ms
^C
--- 2001:DB8:4309:2388::2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.034/0.034/0.035/0.004 ms

root@yavin:/home/markus#

affects: ubuntu → linux-meta (Ubuntu)
Revision history for this message
Markus Heberling (markus-tisoft) wrote :

Just tried it in the 12.04 daily build. It works fine there. So seems to be a Ubuntu 11.10 problem only.

Don't want to put 12.04 daily build on my production machine though. :)

Revision history for this message
Joseph Salisbury (jsalisbury) wrote :

Do you know if this issue exists in 10.04, which is a LTS release? We generally recommend running a LTS release for production machines. It would also be good to know if this is a regression in 11.10.

affects: linux-meta (Ubuntu) → linux (Ubuntu)
Changed in linux (Ubuntu):
status: New → Triaged
importance: Undecided → Medium
tags: added: kernel-fixed-upstream-v3.2 oneiric
Revision history for this message
Sarah Newman (srn-f) wrote :

Hi,

I am using 12.04 and that particular sequence appears to be expected behavior due to duplicate address detection in ipv6 leading to the ipv6 address being tentative. I see similar behavior on an ethernet port which has never physically been connected to anything.

Before attaching anything to the bridge, it has NO-CARRIER and tentative ipv6 address, ping does not work:

$ ip addr show br0
26: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 00:16:3e:ff:00:01 brd ff:ff:ff:ff:ff:ff
    inet6 2605:2700:0:18::1/64 scope global tentative
       valid_lft forever preferred_lft forever

After attaching something which is itself up:
$ ip addr show br0
26: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 00:16:3e:ff:00:01 brd ff:ff:ff:ff:ff:ff
    inet6 2605:2700:0:18::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:feff:1/64 scope link
       valid_lft forever preferred_lft forever

ping works at this point.

Furthermore, after removing the interface, NO-CARRIER is back but the address is still no longer tentative and is still pingable:

$ ip addr show br0
26: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 00:16:3e:ff:00:01 brd ff:ff:ff:ff:ff:ff
    inet6 2605:2700:0:18::1/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::216:3eff:feff:1/64 scope link
       valid_lft forever preferred_lft forever
$ ping6 -c1 2605:2700:0:18::1
PING 2605:2700:0:18::1(2605:2700:0:18::1) 56 data bytes
64 bytes from 2605:2700:0:18::1: icmp_seq=1 ttl=64 time=0.047 ms

With 3.5.0-43-generic, I set net.ipv6.conf.all.dad_transmits and net.ipv6.conf.all.accept_dad to 0 and that doesn't cause the addresses to no longer be tentative. It seems like redhat may have had a similar bug https://bugzilla.redhat.com/show_bug.cgi?id=709271 but it is not clear what they did to fix it. I have not yet tried more recent kernels to see if the problem is fixed there.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.