[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