Tom*_* G4 5 linux networking xen multicast udp
这是我的困境。突然,从昨天开始,不再从一个节点的 eth1(专用千兆网络)接收多播数据包。所有节点之间的路由都很好,没有冲突,没有丢包等。
ifconfiginfo、inet addr、Bcast、Mask 都很好——它们都共享相同的 bcast 和网络掩码。此外,他们都共享: UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 on eth1 。
这些节点都由 Xen VM 提供商托管。所有来宾都看到彼此的私有 IP 地址。不iptables涉及任何规则。除了一个 - 使用tcpdump. 系统重启等。
只是补充一点,根据 netstat -g,受影响的节点没有像所有其他节点一样被分配多播组“eth1 1 224.2.2.4”。
什么会导致这样的事情?似乎一个节点不再是多播组的一部分 - 我打开了一张票,但我觉得他们被难住了。
我不知道 Linux 堆栈中 IGMP 组成员身份有任何过期策略。它可能会发生,但我对此表示怀疑,因为至少有两种方法可以告诉内核(一种是显式的,另一种是隐式的)何时应该删除程序的 IGMP 成员身份。
因此,我认为您侦听多播数据包的软件存在错误。(愿意说出它的名字吗?)接收多播的程序不知何故要么放弃了自己的成员资格,要么忽略了在启动时添加其成员资格。重新启动多播侦听器程序时,tcpdump应该会看到网络上发出 IGMPv2+ 组添加成员资格请求。
在小型 LAN 上进行测试时,您可能从未注意到此错误,因为廉价的网络交换机不支持 IGMP。该功能称为 IGMP 监听,仅在交换机中发现,每个端口的成本约为最便宜设备的 5 倍或更多。没有 IGMP 侦听功能的交换机(或关闭该功能的交换机)会将多播转换为广播,因此不需要 IGMP 组添加消息。
您的托管提供商显然在其网络结构上启用了 IGMP 监听,因为在 IGMP 组成员资格在故障计算机的网络堆栈上消失后,多播消息停止传入。
也可能是托管提供商的 IGMP 监听选项在交换机中配置错误,因此它们会删除组成员身份,但这并不能解释结果netstat -g。
| 归档时间: |
|
| 查看次数: |
6026 次 |
| 最近记录: |