if_bridge FreeBSD 6.0 on a Broadcom interface not working

Bruce Walker bmw at borderware.com
Wed Jan 11 12:01:15 PST 2006


Bruce Walker wrote:

> [if_bridge trouble with] two Intel Ether Express Pro/1000 interfaces.  
> Previously, I was fiddling with if_bridge bridging in a box (HP VLi8) 
> with the built-in 3Com i/f (xl0) and an add-in PRO/1000 card (em0).  
> That worked great.  So I have now duplicated that config in a 
> Supermicro board (X6DHP-8G2; single 3.2 GHz Xeon) with three PRO/1000 
> interfaces, using em0 and em1.
>
> As soon as I boot up with em0 and em1 added to the bridge0 interface, 
> I lose IP connectivity.  Interestingly, I can ping hosts by IP 
> address.  But all attempts to do anything else, eg NTP, DNS or ssh are 
> futile.


I have some more specific info now, and a workaround! :-)

This box actually has three working PRO/1000 interfaces.  So I tried 
avoiding adding em0 (my inet "ssh interface") to the bridge, and voila! 
... it works.  If I create a bridge from em1 and em2 only, then 
everything is jim-dandy.

Looks like:

ne# ifconfig -a
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        inet6 fe80::230:48ff:fe2e:998c%em0 prefixlen 64 scopeid 0x1
        inet 10.1.11.205 netmask 0xffff0000 broadcast 10.1.255.255
        ether 00:30:48:2e:99:8c
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
em1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        inet6 fe80::230:48ff:fe2e:998d%em1 prefixlen 64 scopeid 0x2
        ether 00:30:48:2e:99:8d
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
em2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        inet6 fe80::230:48ff:fe42:d992%em2 prefixlen 64 scopeid 0x3
        ether 00:30:48:42:d9:92
        media: Ethernet autoselect (1000baseTX <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4
        inet 127.0.0.1 netmask 0xff000000
bridge0: flags=8041<UP,RUNNING,MULTICAST> mtu 1500
        ether ac:de:48:47:be:24
        priority 32768 hellotime 2 fwddelay 15 maxage 20
        member: em2 flags=3<LEARNING,DISCOVER>
        member: em1 flags=3<LEARNING,DISCOVER>
ne#

The reason that em0 is in promiscuous mode here is because I'm running 
tcpdump on it to see if the act of putting it in promiscuous mode nukes 
it.  It does not harm it at all, so that aspect of bridging it is not at 
fault.

So my workaround is to connect em0 and em1 in parallel to the same 
switch, and use em2 to bridge over to my test net.  As long as I don't 
add my inet IP-numbered interface (em0) to the bridge, I'm good to go.  
Pretty strange.

Cheers!



More information about the freebsd-net mailing list