我对linux内核中的多播有一个疑问。当多播数据到达时,Linux 内核检查 MFC,如果未找到匹配的条目,则内核将控制消息缓存未命中和标头提供给用户空间。我的问题是数据包会发生什么?假设我可能故意不想将条目保留在 MFC 中,但我可能有一些其他表有转发信息,我想使用那个表,那么该怎么办?
问候,巴文。
如果数据包到达时没有匹配的 MFC 条目,则数据包将被放入队列中。它将停留在该队列中,直到添加了与该数据包匹配的 MFC 条目或超时到期(10 秒),以先发生者为准。队列本身有 10 个条目的限制,一旦达到该限制,将不再有数据包进入队列。在这种情况下,未解析的数据包将被丢弃。
我不认为 Linux 支持拥有多个 MFC 表(但我可能是错的)。作为替代方案,您可以在用户空间中路由这些多播数据包,方法是在原始套接字上接收它们,然后将它们转发到您喜欢的任何接口。事实上,在 Linux 上的 IPv6 多播支持成熟之前,许多 IPv6 多播路由守护进程都使用了类似的方法。
you can check it that if related kernel compiled multicast support using command below
grep -i "multicast" /boot/config-2.6.32-358.6.1.el6.x86_64
/UE