Multicast-HOWTO已經很古老了(相對而言) ,而且不夠準確甚至會因此而誤21136.html">導讀者。
在你開始進行多播路由之前,你需要重新配置你的Linux內核來支援你想實現的多播路由類型。 這一步需要你來決定使用何種類型的多播路由。 基本上有這麼四種:DVMRP (RIP單播協定的多播版本),MOSPF(同理,只不過是OSPF),PIM-SM ("Protocol Independent Multicasting - Sparse Mode", 協定無關多播-稀疏模式, 它假定任意多播組的使用者都是spread out的,而不是clumped的)和PIM-DM (同理,只不過是「密集模式」,它假定同一個多播組的使用者適當地clumps在一起).
在Linux內核中,你會注意到並沒有這些選項。 這是因為這些協定本身是由路由程式負責處理的,比如Zebra、mrouted或者pimd。 然而你仍然應該對於你要使用那種方案有一個明確的主意,以便選擇正確的內核選項。
無論哪種多播路由,你一定都要啟用「multicasting」和「multicast routing」選項。 對於DVMRP和MOSPF這就夠了。 如果你想使用PIM,你必須還要啟用PIMv1或者PIMv2選項,具體用哪個取決於你的網路究竟使用PIM協定的哪一個版本。
當你把那些都想清楚、編譯了新內核之後,重啟的時候應該能夠看到IP協定的清單中包括了IGMP。 這是用來管理多播組的協定。 雖然第3版業已存在並歸檔,但截止到寫這篇文檔時為止,Linux只支援IGMP的第1版和第2版。 但這並不會太多地影響我們,因為IGMPv3還太新,並沒有看到多少能夠用到v3特有功能的應用。 因為,用IGMP處理組,僅會使用到連最簡單的IGMP版本中都會包含的基本功能。 絕大部分應該是IGMPv2,雖然仍能接觸到IGMPv1。
到此為止,一切都好。 我們已經啟用了多播。 現在,我們得告訴內核,做點實在的事情了——啟動路由。 也就是說象路由表中添加多播子網:
ip route add 224.0.0.0/4 dev eth0
(當然,我們假定你要通過eth0進行多播。 你要根據你的情況選擇設備。 )
現在,啟動Linux的包轉發...
echo 1 > /proc/sys/net/HTTP://www.aliyun.com/zixun/aggregation/6133.html">ipv4/ip_forward
在這裡,你可能想知道是否起了作用。 所以我們ping一下缺省組224.0.0.1,看看有沒有人在。 在你的LAN上所有配置並啟用了多播的機器都應該予以回應,其他機器則不會。 但你會注意到,沒有任何一台機器回應的時候聲明自己是224.0.0.1,多麼令人驚奇☺! 因為這是一個組位址(對於接收者來說是「廣播」),所以組中的所有成員都用它們的位址來回應,而不是用組位址來回應。
ping -c 2 224.0.0.1
到此,你已經可以實現真正的多播路由了。 好的,假定你需要在兩個網路間進行路由。