views:

179

answers:

1

Hello friends,

I have one doubt regarding multicasting in linux kernel. When multicast data arrives linux kernel checks MFC and if the matching entry is not found then kernel gives conrol message cache miss and header to the user space. My question is what happens to the data packet? Suppose i may deliberately not want to keep the entry inside MFC but i may have some other table which has got forwarding information and i want to use that one then what to do?

Regards, Bhavin.

A: 

Hi Bhavin,

If a data packet arrives for which there is no matching MFC entry, then the data packet gets put into a queue. It will stay in that queue until either an MFC entry gets added that matches that packet or a timeout expires (10 seconds), whichever happens first. The queue itself has a limit of 10 entries, and once that limit is reached no more packets will get put onto the queue. In that case, unresolved packets will get dropped.

I don't think Linux supports having multiple MFC tables (but I could be wrong). As an alternative, you could route these multicast packets in userspace using by receiving them on a raw socket and then forwarding them out whatever interface you like. In fact many of the IPv6 multicast routing daemons used a method like this before IPv6 multicast support on Linux matured.

Todd Hayton