[Xorp-users] Seeing Odd IGMP Behavior

Pavlin Radoslavov pavlin at ICSI.Berkeley.EDU
Thu May 22 23:25:33 PDT 2008


Jayson Vantuyl <jvantuyl at engineyard.com> wrote:

> So, I desperately want to get a few things working together.  It  appears that
> XORP is my best chance, albeit a slightly shaky one.  I'm  currently using
> Xorp 1.4 release.
> 
> I'm using I have a number of virtual guests that appear and  disappear.  I
> would like a fully routed configuration with multicast.   What I'm trying to
> accomplish is:
> 
> a) OSPF to distribute the local routes to the virtual machines
> b) PIM-SM to get multicast routing
> 
> Seems simple right?
> 
> Well, I have a few issues that I've hit.
> 
> 1) Dynamically removing an interface effectively crashes the FEA

There have been various bug fixes and refactoring in the FEA since
1.4. Please get the latest XORP code from anon. CVS and see whether
you still get the crash. If it still crashes, then please submit a
bug report how to reproduce the problem.

> 2) I can't seem to receive IGMP Membership Reports
> 
> As for 1, I got it handled.  I just replaced a fatal error with a non-
> fatal one.  Specifically on fea/netlink_socket_utils.cc, around line  300.
> The error "Could not find interface corresponding to index".  It  just didn't
> need to be fatal.  Not sure exactly what the implications  are, but it appears
> that it's permissible to pass by a failure to  lookup an interface index, so
> how much worse could it be when looking  up the name, right?  :)
> 
> Number 2 is a bit more ugly.  So, I have two interfaces:  external,  and
> vif2.0.  The first is, well, my uplink.  The second is the  connection to the
> virtual machine.  External has the address/subnet of  10.0.0.1/26.  Vif2.0 has
> 10.0.129.129/30.  The virtual machine on the  other side of vif2.0 has
> 10.0.129.130/30.  Another machine on the  external subnet has 10.0.0.2/26.
> 
> Now, when I listen to group 224.1.2.3 on 10.0.0.2, I get this happiness:
> 
> [ 2008/05/22 16:31:57 TRACE xorp_igmp MLD6IGMP ] RX  IGMP_V2_MEMBERSHIP_REPORT
> from 10.0.0.2 to 224.1.2.3 on vif external
> [ 2008/05/22 16:31:57 TRACE xorp_igmp MLD6IGMP ] Notify routing add
> membership for (0.0.0.0, 224.1.2.3) on vif external
> [ 2008/05/22 16:31:57 TRACE xorp_pimsm4 PIM ] Add membership for  (0.0.0.0,
> 224.1.2.3) on vif external
> 
> That seems nice, no?
> 
> When I stop listening, I get this:
> 
> [ 2008/05/22 16:33:45 TRACE xorp_igmp MLD6IGMP ] RX  IGMP_V2_LEAVE_GROUP from
> 10.0.0.2 to 224.0.0.2 on vif external
> [ 2008/05/22 16:33:45 TRACE xorp_igmp MLD6IGMP ] TX  IGMP_MEMBERSHIP_QUERY
> from 10.0.0.1 to 224.1.2.3
> [ 2008/05/22 16:33:45 TRACE xorp_igmp MLD6IGMP ] RX  IGMP_MEMBERSHIP_QUERY
> from 10.0.0.1 to 224.1.2.3 on vif external
> [ 2008/05/22 16:33:46 TRACE xorp_igmp MLD6IGMP ] TX  IGMP_MEMBERSHIP_QUERY
> from 10.0.0.1 to 224.1.2.3
> [ 2008/05/22 16:33:46 TRACE xorp_igmp MLD6IGMP ] RX  IGMP_MEMBERSHIP_QUERY
> from 10.0.0.1 to 224.1.2.3 on vif external
> [ 2008/05/22 16:33:47 TRACE xorp_igmp MLD6IGMP ] Notify routing delete
> membership for (0.0.0.0, 224.1.2.3) on vif external
> [ 2008/05/22 16:33:47 TRACE xorp_pimsm4 PIM ] Delete membership for  (0.0.0.0,
> 224.1.2.3) on vif external
> 
> That seems fairly expected.
> 
> When I listen to the same group on the virtual machine, I see no trace  for a
> membership message.  Tcpdump verifies that it's coming it, but  Xorp just
> seems to do nothing with it.  But, when I stop listening,  for some reason
> Xorp seems to catch that just fine, and I see this:
> 
> [ 2008/05/22 16:37:05 TRACE xorp_igmp MLD6IGMP ] RX  IGMP_V2_LEAVE_GROUP from
> 10.0.65.130 to 224.0.0.2 on vif vif2.0

What OS are you running and what kind of virtual machine are you
using? Also, I'd like to know what kind of (virtual?) interface are
you using to connect to the virtual machine.

My guess the reason you don't see the IGMP membership messages is
the following. The IGMP MEMBERSHIP REPORT messages are sent to the
joined multicast group. To receive them, the multicast router cannot
join all possible multicast groups on the interface, therefore it
sets the interface in the special ALLMULTI mode (i.e., receive all
multicast packets). Therefore, probably the ALLMULTI mode doesn't work
properly on the virtual interface, or there are firewall rules that
stop those messages before they are delivered to the host IP stack.

Another (less likely) reason could be if you have some equipment in
the middle that stops the IGMP membership messages.

On BSD system, if the interface is in ALLMULTI mode, "ifconfig -a"
should show it as an interface flag. I believe one of the following
commands will show it on Linux as well: "ifconfig -a" or "ip link"
or "ip addr".

BTW, the reason the XORP router receives the IGMP leave message is
because the destination address is 224.0.0.2 (the ALL-ROUTERS
multicast group), and the multicast router has explicitly joined
that group.

Finally, where did you run tcpdump? On the XORP router or the
virtual machine. If only on the virtual machine, try running it on
the XORP router as well.

Regards,
Pavlin

> Any thoughts?
> 
> -- 
> Jayson Vantuyl
> Systems Architect
> Engine Yard
> jvantuyl at engineyard.com
> 1 866 518 9275 ext 204
> IRC (freenode): kagato
> 
> _______________________________________________
> Xorp-users mailing list
> Xorp-users at xorp.org
> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-users



More information about the Xorp-users mailing list