[Xorp-users] How to work with a bridge (br0)? (corrected version)

Pavlin Radoslavov pavlin@icir.org
Tue, 22 Nov 2005 12:51:32 -0800


> [Sorry, I messed up with the interface description. Now ethN are at the
> right places, the problem remains the same]
> 
> Hello!
> 
> I am a beginner with xorp, but have read the whole PDF (that does not mean I
> understood everything).
> 
> I'd like to set up a simple multicast routing environment (details
> later). The router in question has three interfaces, where two are
> combined to form the bridge br0. The original meaning was to built a
> cheap gigabit three-port switch. At the moment one port of the bridge is
> not in use, so nothing is connected.
> 
> How do I have to setup the interfaces if this bridge is still present?
> 
> eth0 has several IPs (ifconfig shows eth0:0 and so on)

The safest bet is to enable all IP addresses for eth0 by either:
(a) Adding "address" statement for each address in the "interfaces"
section.
OR 
(b) Removing the "vif" statements and using instead the
   "default-system-config" statement per each interface.
BTW, do those IP addresses belong to the same subnet?

> eth1 and eth2 are in br0, but have no IP
> br0 has one (single) IP
> 
> I am not sure what the right thing is, although I did not find any
> errors that might be caused by this bridge situation.

It looks like the setup is OK, but if you want to be sure there are
no issues, then I'd recommend to perform the following test:

1. Configure the XORP router to be the RP for some particular group
   range. The simplest way to do it is to use the "static-rps"
   statement.
2. Start receivers directly connected to each of the
   interfaces/segments: eth0, eth1, eth2.
3. Start a sender on each of the interfaces/segments (eth0, eth1,
   eth2) and verify that the receivers receive the data.

> Details about the desired multicast routing:
> 
> The network connected to eth1/br0 is the whole internet providing PIM-SM and
> IGMP (thanks, university). eth0 connected to the
> internal network. Here the kernel (not xorp) provides basic routing and
> packet counting, firewalling, ... Additionally I'd like to route
> multicast in both directions. We have several high bandwidth multicast
> streams in the internal network that should be passed into the
> university if someone needs this data (and not the whole time!).
> 
> Some related questions:
> 
> 1) Is there any way to force xorp to be multicast IGMP querier (v2)? I have
> some devices that feel the desire to be the querier, but cannot provide
> the necessary bandwith (which is >>100MBit!). So it would be nice to "kick"
> those devices out in the election process. At the moment (luckily) a device
> is querier that has gigabit, but that was pure luck (I think).

I'd say that you don't need to worry who is the IGMP querier,
because if a router is a querier it does not mean it will be the one
responsible for forwarding the multicast traffic.
At the PIM-SM level for example, you may care who is the DR
(Designated Router) on the LAN and you can affect that decision by
using the dr-priority statement per vif (inside the pimsm4
configuration block).
BTW, you cannot change who the IGMP querier is, because the election
is purely based on the IP address, and the IGMP protocol does not
provide priority-based election support.

> 2) [ 2005/11/22 15:40:56 WARNING xorp_fea MFEA ] proto_socket_read()
> failed: RX packet from 134.130.49.250 to 224.0.0.1: no vif found
>
> 134.130.49.250 is the current IGMP querier in the internal network
> (eth0).
> What is needed to handle this warning? Is this bridge-related?
> In the network (where the querier resides) there are several multicast
> devices in another IP range (that is not routed).

You should configure (inside XORP) the corresponding interface that
is directly connected to 134.130.49.250 with the corresponding IP
address that shares same subnet with 134.130.49.250 (see the first
paragraph in my reply with the (a)-(b) options).

> 
> The full configuration can be seen here:
> http://home.c-otto.de/xorp.conf.txt

You need to enable fib2mrib as well:

protocols {
    fib2mrib {
        disable: false
    }
}


Pavlin