我想通过Linux内核调试多播接收,因为我没有收到任何数据包。让我更具体一点:我正在构建一个灵活的用户空间传输模式网络守护进程。运行它的一个选项是使用UDP套接字。其中一个用例是传输转发到多播地址的UDP数据包。
因此,我最终将UDP数据包发送到多播目的地,并通过UDP数据包传输到同一个多播目的地。我知道,这就是在寻找麻烦,但我侥幸逃脱:使用SO_BINDTODEVICE,我几乎可以通过路由表作弊,并按照我的预期发送数据包。
在接收方面,我没那么幸运。 Linux没有给我的接收套接字提供组播数据包。它只是不会看到它们,虽然tcpdump证明它们到达了界面。请注意,单播 - 使用完全相同的套接字 - 根本不是问题。我可以发送和接收他们的内容。多播并非如此。
所以我想知道Linux内核在接收数据包(显然是这样)之间的那个位置'认为',并将它提供给我的进程'UDP服务器套接字(它没有做)。有什么想法吗?