8.2-PRERELEASE: if_bridge ARP and broadcasts issues

Nikos Vassiliadis nvass at gmx.com
Tue Jan 25 16:25:19 UTC 2011


On 1/25/2011 3:32 PM, Alexander Zagrebin wrote:
> Hi!
>
> I've found some issues with the if_bridge on 8.2-PRERELEASE.
>
> 1. An ARP issue
>
> Suppose we have a box with the 4 interfaces: nic0, nic1, nic2, nic3.
> The interfaces are linked pairwise using 2 bridge(4) interfaces: bridge0
> and bridge1. Only nic0 has an IP address assigned (for example,
> 192.168.0.1/24).
> So we have configuration like this:
>
>   192.168.0.1
> ---nic0---+       +---nic2---
>            |       |
>         bridge0 bridge1
>            |       |
> ---nic1---+       +---nic3---
>
> The problem: when ARP query about MAC address of 192.168.0.1 is received
> on the nic2 or nic3, then system responds with the MAC address of the nic0,
> though networks on the bridge0 and bridge1 are completely independent.
> IMHO, it isn't correct.
>

Yes, I tried the setup and it behaves as you described.


> The reason is in ARP handling code: it looks for an address of the interface
> belonging to a bridge, but there is not check that a bridge is the same.
>
> Attached patch (patch-if_ether.c) fixes the issue.
>

I tried your patch and it works for me.

> 2. Broadcasts issue
>
> I have a box with two NICs: re0 and wlan0. re0 and wlan0 are members of the
> bridge0. re0 has IP address 192.168.1.1; wlan0 hasn't an address configured.
> I have the samba installed. The smbd and nmbd listens on the 192.168.1.1.
> There are no problems with the clients connected to the re0, but the samba
> clients connected to the wlan0 has problems with the network browsing and
> domain logons.
> I've found that nmbd doesn't receive udp broadcasts received on the wlan0,
> though bridge0 successfully retransmits this broadcast out of re0.
> I've looked in the sources, and it seems that in this case subnet broadcasts
> have to be handled in ether_output(), but this doesn't work anyway...
>
> Can anybody help to fix this issue?

As far as I recall, the recommended setup is to assign IP addresses to
the bridge interface, not the member interfaces. Could you try this?

HTH, Nikos


More information about the freebsd-net mailing list