Hi Bhavin, On Mon, Sep 21, 2009 at 12:10 PM, <[email protected]> wrote: > > S,G entry is entered inside the MFC. Now if any data pkt arrives and > it does not find entry inside MFC then kernel will generate the cache > miss message which can be processed and we can look in to MRT. Now my > question is > what happens to the data packet since kernel only passes the header and > control message to the user.
I don't know the exact answer for your question, but I believe it works as follows: 1) The Linux kernel keeps a queue of "unresolved" mcast packets (mfc_unres_queue). 2) When a new packet arrives, if it does not match an existing MFC entry, the kernel adds the packet to the unresolved queue and delivers an IGMPMSG_NOCACHE message to the mroute socket. 3) If the mroute daemon fills in the MFC entry quickly enough, the queued packets for that MFC entry are forwarded according the new entry. Otherwise, the unresolved queue may overflow or be expired by a kernel timer. Also, please note the pimd uses a different strategy than the one described above. pimd keeps all multicast routing information sync'ed with the kernel, hence there is no reason to react to any IGMPMSG_NOCACHE message from the kernel. Cheers, Everton
