kern/115360: [ipv6] IPv6 address and if_bridge don't play well together.

David Gilbert dgilbert at dclg.ca
Thu Nov 15 22:28:43 PST 2007


>>>>> "kmacy" == kmacy  <kmacy at FreeBSD.org> writes:

kmacy> Synopsis: [ipv6] IPv6 address and if_bridge don't play well
kmacy> together.  State-Changed-From-To: open->feedback
kmacy> State-Changed-By: kmacy State-Changed-When: Fri Nov 16 02:34:19
kmacy> UTC 2007 State-Changed-Why:

kmacy> Awaiting feedback.

kmacy> http://www.freebsd.org/cgi/query-pr.cgi?pr=115360

Hrm.  I've tried this several ways.  None work.  Machine calls itself
6.2-STABLE compiled May 13th.  It has a 4 port card running the dc
driver and an em driver GigE card.  dc0 receives cable internet in,
dc1,  dc2 and em0 are bridged with if_bridge, dc3 receieve pppoe DSL
internet in (through mpd4 --- so ng0 exists for that).  gif0 brings
ipv6 in and "tun10" is a custom tunneling daemon that uses both the
cable and the DSL for reliability.

Anyways... the pertinant configuration is bridge0 containing dc1, dc2
and em0.  As follows (I've cut out interfaces that arn't part of this):

dc1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet6 fe80::280:c8ff:fec9:2231%dc1 prefixlen 64 scopeid 0x2 
        inet 66.96.20.33 netmask 0xffffffe0 broadcast 66.96.20.63
        inet 192.168.110.1 netmask 0xffffff00 broadcast 192.168.110.255
        inet6 2001:1928:1::1 prefixlen 80 
        inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255
        inet 192.168.0.10 netmask 0xffffff00 broadcast 192.168.0.255
        ether 00:80:c8:c9:22:31
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
dc2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet6 fe80::280:c8ff:fec9:2232%dc2 prefixlen 64 scopeid 0x3 
        ether 00:80:c8:c9:22:32
        media: Ethernet autoselect (none)
        status: no carrier
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=8<VLAN_MTU>
        inet6 fe80::20e:cff:febc:6f87%em0 prefixlen 64 scopeid 0x5 
        inet6 2001:1928:1::1 prefixlen 64 
        ether 00:0e:0c:bc:6f:87
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        ether 7a:10:5b:2c:d0:77
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto stp maxaddr 100 timeout 1200
        root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
        member: em0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
        member: dc2 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
        member: dc1 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>

Now... if I put 2001:1928:1::1 on bridge0 (only), nobody get's ipv6
service.  Note that dc2 is currently not connected.  In this current
config, I've put 2001:1928:1::1 on both dc1 and em0.  This appears to
work acceptably.  Putting it on only dc1 or only em0 provides ipv6
service to only that segment.  Note that this is not true for IPv4 ---
only dc1 has IPv4 addresses and they all work.

My laptop makes for a good test.  It has a GigE interface (bge0) and a
wireless card (iwi0).  Wireless is a dumb bridge connected to dc1.

If em0 has the address (only), bge0 connected to the em0 segment
works.  bge0 connected to the dc1 segment or iwi0 (still dc1 segment)
doesn't work.  If dc1 (only) has the ipv6 address, bge0 connected to
the em0 segment doesn't work, bge0 connected to the dc1 segment or
iwi0 (also on the dc1 segment) works.

Dave.

-- 
============================================================================
|David Gilbert, Independent Contractor.       | Two things can be          |
|Mail:       dave at daveg.ca                    |  equal if and only if they |
|http://daveg.ca                              |   are precisely opposite.  |
=========================================================GLO================


More information about the freebsd-net mailing list