我有一个系统,它在自己的网络上接收大量多播数据(这是线路上唯一的流量)。这些数据来自许多 IP 和端口。通常,某人只需连接到一个或多个 IP 和端口,但对于这个系统,我需要从所有 IP 和端口读取数据。我们使用的其他系统也通过使用 PCAP 和混杂模式来实现这一点。在开发这个系统时,它在一段时间后(15 秒到 60 秒之间)开始丢失多播。
所以我开始尝试找出问题所在。首先,我排除了编程出错的可能性,并开始使用 tshark 进行测试。tshark 看到的正是我的软件所看到的内容。我采取的措施如下:
$sudo ifconfig eno2 down
$sudo ifconfig eno2 up
$sudo tshark -i eno2
然后,我会在一段时间内接收多播,然后它停止。一旦它停止,它就永远消失了,直到我关闭 NIC 并再次打开。这种情况可以反复重复。
我在 eno2 上的 ifconfig 是:
eno2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> MTU 1500
inet 127.1.1.65 netmask 255.255.255.0 broadcast 127.1.1.255
inet6 fe80::ae1f:6bff:febc:1d05 prefixlen 64 scopeid 0x20<link>
ether ~~~~~~~~~~~~~~~~~ txqueuelen 1000 (Ethernet)
RX packets 1984750 bytes 420457182 (420.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 95 bytes 7418 (7.4 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
编辑了 MAC 地址。我尝试设置 ALLMULTI 和 PROMISC 标志,但没有任何效果。
因此,据我所知,似乎有什么东西在一段时间后主动阻止了多播。有人知道为什么会发生这种情况吗?有什么建议的解决方案吗?我不确定这是我的配置还是交换机的问题。