[Xorp-hackers] Assert with multicast routing in fea, pif_index collision with "register_vif"

Ben Greear greearb at candelatech.com
Thu Jun 5 08:46:20 PDT 2008


Bruce M Simpson wrote:
>
> Hi,
>
> The register vif is a virtual interface in the MROUTING code which is 
> used to send PIM register messages upstream to the Rendezvous Point 
> (RP) with the correct encapsulation.
>
> The FEA code does not give the register vif any special handling, to 
> avoid introducing a lot of special cases into the code. If you look at 
> mfea_node.cc you will see the code which allocates a vif index in FEA 
> space for the register VIF.
>
> However: The MROUTING vif numbers are unrelated to ifindex, they do 
> NOT occupy the same space. By the looks of it you've hit the assertion 
> where the MFEA has allocated a VIF index inside the FEA, where there 
> is a 'real' system interface sharing the same index.
>
> Unfortunately the MROUTING code does not allocate a real interface 
> descriptor from the underlying system. If you look at the MROUTING 
> code you will see it has a 32 vif limitation due to the API used.
>
> This is why I strongly recommended looking at the other issues in 
> MROUTING first before attempting to add multiple FIB support.
Well, I haven't actually tested multiple routing tables yet...just 
working on a single one.  The FEA seems to assume that there
is no duplication of pif-index, but it seems that the fake register_vif 
interface just steals a pif_index from a physical interface.
I don't think this has anything in particular to do with the multicast 
vif-index, at least not for the assert that I hit.

I'll have to fix that somehow..maybe make it use a negative of the 
stolen pif-index or some hack like that...

Has anyone attempted multicast routing since Pavlin put in his fea 
interface hashing code?

I'll look into it in more detail today.

Thanks,
Ben


-- 
Ben Greear <greearb at candelatech.com> 
Candela Technologies Inc  http://www.candelatech.com




More information about the Xorp-hackers mailing list