Routing
使用橋接介面在伺服器上進行多播
網路:
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)
問題可能出在哪裡?
不知何故,重新啟動 10.1.1.2 後,多播開始按預期工作。為什麼會發生這種情況仍然是個謎。
我不確定您的多播問題是在數據鏈路層還是網路層。
過去,當數據包是 IP 時,我確實遇到了乙太網多播的問題。所有具有多播地址的 IP 數據包都被丟棄,即 MAC 地址的第一個八位字節的最低有效位設置為 1。
但是,我注意到某些協議的多播/廣播幀通過此類 NLB、STP、ARP 粘貼而沒有問題。所以我得出結論,橋接乙太網多播數據包最有可能著眼於協議以做出與乙太網多播相關的橋接決策。
由於我的網路結構與乙太網廣播/多播沒有什麼不同,我只是使用 ebtables 廣播了多播幀。
請閱讀我之前在以下連結上與此問題相關的文章: http://forums.debian.net/viewtopic.php?f=5& t=111338
或者,您可以將 bridge 設置為不過濾幀,而是將其傳遞給 iptables 以做出路由決策。