网络:
10.1.1.2 和 10.1.1.3 在同一网络中。10.1.1.2 有以桥接模式运行的 VPN 服务器。10.1.1.4 - VPN 客户端的 IP 地址。所有机器都安装了 Debian 6。
我正在尝试使用 iperf 测试多播。
听众:
iperf -s -u -B 224.1.1.1 -i 1
发件人:
iperf -c 224.1.1.1 -u -T 32 -t 3 -i 1
这些组合效果很好:
- 监听器位于 10.1.1.2,发送器位于 10.1.1.3
- 监听器位于 10.1.1.2,发送器位于 10.1.1.4
- 10.1.1.3 上的监听器,10.1.1.3 上的发送器
- 监听器位于 10.1.1.3,发送器位于 10.1.1.4
- 监听器位于 10.1.1.4,发送器位于 10.1.1.3
- 监听器位于 10.1.1.4,发送器位于 10.1.1.4
以下组合失败:
- 监听器位于 10.1.1.3,发送器位于 10.1.1.2
- 监听器位于 10.1.1.4,发送器位于 10.1.1.2
- 10.1.1.2 上的监听器,10.1.1.2 上的发送器
因此,我无法从 10.1.1.2 发送任何多播数据包。
10.1.1.2 的 ifconfig:
br0 Link encap:Ethernet HWaddr 00:25:90:e3:1e:0c
inet addr:10.1.1.2 Bcast:10.1.1.255 Mask:255.255.255.0
inet6 addr: fe80::225:90ff:fee3:1e0c/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:31968583 errors:0 dropped:0 overruns:0 frame:0
TX packets:29453949 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3140243824 (2.9 GiB) TX bytes:243929369766 (227.1 GiB)
eth0 Link encap:Ethernet HWaddr 00:25:90:e3:1e:0c
inet6 addr: fe80::225:90ff:fee3:1e0c/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:2196690402 errors:0 dropped:0 overruns:0 frame:0
TX packets:8254769825 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:344354922111 (320.7 GiB) TX bytes:11202019887816 (10.1 TiB)
Memory:dfb20000-dfb40000
tap0 Link encap:Ethernet HWaddr be:fb:ed:8a:ce:f9
inet6 addr: fe80::bcfb:edff:fe8a:cef9/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:163739 errors:0 dropped:0 overruns:0 frame:0
TX packets:196107 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:14506871 (13.8 MiB) TX bytes:28238942 (26.9 MiB)
问题可能出在哪里?
答案1
我不确定您的多播问题是在数据链路层还是网络层。
过去,当数据包为 IP 时,我确实遇到过以太网多播问题;所有具有多播地址的 IP 数据包都被丢弃,即在第一个八位字节的最低有效位中设置的 MAC 地址的值为 1。
但是,我注意到某些协议的多播/广播帧可以毫无问题地通过 NLB、STP、ARP 等协议。因此我得出结论,桥接以太网多播数据包最有可能查看协议来做出与以太网多播相关的桥接决策。
由于我的网络结构与以太网广播/多播没有什么不同,因此我只是使用 ebtables 广播多播帧。
请点击以下链接阅读我之前关于此问题的帖子:http://forums.debian.net/viewtopic.php?f=5&t=111338
或者,您可以将网桥设置为不过滤帧,而是将其传递给 iptables 来做出路由决策。
答案2
不知何故,在重启 10.1.1.2 后,多播开始按预期工作。为什么会发生这种情况仍然是个谜。