一、組播路由協議
(一)
路由器依靠轉發項來轉發組播數據包。轉發項的生成則是組播路由協議所要完成的任務。組播路由協議有距離矢量組播路由協議(DVMRP)、協議無關組播-密集模式(PIM-DM)、協議無關組播-稀疏模式(PIM-SM)、開放式組播最短路徑優先(MOSPF)、有核樹組播路由協議(CBT)等多種.這里只講述目前最成功也是最流行的PIM協議.
協議無關組播
PIM(協議無關組播)表示它不依賴於某種具體的IP路由選擇協議。它僅僅是利用單播路由表來實現RPF校驗功能。因此,它能工作在任何可以產生單播路由表的IP路由協議上,包括靜態路由。值得強調的是:協議無關並不是指不需要單播路由協議;相反,組播協議必須有單播路由協議的支撐,因為它無單播路由功能。
PIM協議報文基於UDP協議,其端口號是103。PIM還有專門的組播地址224.0.0.13,表示所有的PIM路由器。
在組播應用環境中大致可分為兩類:一類是密集環境。即:在某一個范圍內組成員眾多。比如:股票交易大廳信息的發布,學校的網上教學等。路由器的幾乎每一個接口都有組成員正在接收組播信息。對於這種環境將采用密集模式協議如:PIM_DM(協議無關組播_密集模式)來解決。
一類是稀疏環境。即:在某一范圍內組成員比較少或分布比較散。路由器只有少數幾個接口上有組成員接收數據。比如:小區音/視頻點播等。在這種環境里將不再適宜采用密集模式協議,因為這將增加路由器的負擔和導致網絡擁塞。因此,如果采用稀疏模式的組播協議(比如PIM-SM,協議無關組播-稀疏模式)將帶來更大的好處。
(二). PIM_DM
-
PIM_DM轉發
在運行PIM-DM協議的網絡中,路由器默認所有接口上都有接收者。當組播數據到達路由器后,路由器立即建立起轉發項。轉發項的入接口是路由器依據單播到數據源的接口;出接口則包括除入接口外的所有接口。如果數據RPF檢查成功,它將根據轉發項向所有接口(除入接口外)溢流。 -
PIM_DM剪枝
如果路由器所有出接口上都沒有接收者,它將清空轉發項的出接口列表,並向其RPF上游發送剪枝消息,以使組播數據不再流向本路由器。上游路由器收到剪枝消息后,從轉發項出接口列表中刪除接收到剪枝消息的接口。組播數據就不再從該接口轉發出去。
但是這種狀況只能維持一段時間。在經過一段時間后,上游路由器重新將該出口添加到轉發項出接口列表中。組播數據又能流向先前被剪枝的下游路由器。然后,下游路由器再發起剪枝。周而復始,這個過程被稱之為擴散-剪枝。 -
PIM_DM嫁接和嫁接應答
當剪枝期間,路由器需要接收組播數據(比如:收到IGMP加入),怎么辦?這時,路由器並不需要等到下一個擴散-剪枝周期,而是立即向RPF上游路由器發送嫁接消息,要求將自己添加到出接口列表中。
上游路由器收到嫁接消息后,立即回送一個嫁接應答,告知下游路由器已收到嫁接消息;然后,上游路由器將收到嫁接消息的接口添加到出接口列表中。組播數據就能夠到達希望接收數據的路由器和組成員。 -
PIM_DM狀態維護
PIM_DM如何維護轉發項而不必總是重復創建過程?PIM_DM是依靠組播數據流來維護的。只要路由器收到某個組的組播數據包,路由器就刷新該轉發項。路由器如果長時間未收到這個組的組播數據包,將刪除該轉發項。 -
斷言(assert)機制
在共享網段上,當有多個路由器向網絡上發送組播數據包時,共享網段上將收到重復的數據包。怎么辦?Assert斷言機制能夠解決這個問題。
當路由器從出接口接收到其它路由器發來的重復組播數據時,路由器將向該出接口發送斷言消息。斷言消息中帶有本路由器的優先級、到源S的路由開銷等信息。
網段上的其它路由器收到斷言消息后,將對端路由器的優先級、路由開銷以及IP地址與自身相比較(先比較優先級,優先級低者獲勝;若二者相同,則比較路由開銷,開銷小者獲勝;若二者還相等,則比較IP地址,大者獲勝)。若自己失敗,則剪枝該接口,不再向該共享網段轉發組播數據包。若自己獲勝,則發送斷言消息,申明組播數據流應該從本出接口轉發,其它路由器重復上面的動作。 -
PIM鄰居發現與PIM HELLO消息
路由器周期性的發送Hello消息到所有PIM路由器(224.0.0.13),並借此來發現鄰居,建立鄰居關系。PIM路由器可以借鄰接關系判斷自己是否為葉路由器。
PIM Hello消息除了用於建立鄰接外,它還被用來為共享網段上選擇指定路由器(DR)。PIM路由器都被配有優先級。這個優先級被包含在PIM Hello消息中。當路由器收到PIM Hello消息時,先比較自己的優先級。如果自己的優先級高,路由器將默認消息源為DR,自己變成非DR。當優先級相同時,IP地址最大的獲勝,被選舉為DR。
DR主要應用在SM中,將在SM中由DR負責向上游發起加入/剪枝過程,或是將直連組播源的數據發向組播分發樹。
如果路由器是工作在IGMPv1下,DR同時也是IGMP查詢器。
PIM-DM
三層交換機上的配置
+啟動組播進程
multicast routing-enable
+在接口上啟動PIM-DM
pim dm
禁用PIM-DM協議
undo pim dm
pim timer hello seconds
undo pim timer hello
pim timer hello命令用來配置接口發送Hello報文的時間間隔,undo pim timer hello命令用來恢復接口發送Hello報文時間間隔的缺省值。
display pim interface [interface-type interface-number]
顯示當前運行PIM接口的簡要信息。
display pim routing-table [ { { *g [ group-address [ mask { mask-length | mask } ] ] | **rp [ rp-address [ mask { mask-length | mask } ] ] } | { group-address [ mask { mask-length | mask } ] | source-address [ mask { mask-length | mask } ] } * } | incoming-interface { interface-type interface-num | interface-name | null } | { dense-mode | sparse-mode } ] *
顯示dm或sm組播路由表。
debugging pim dm { all | mrt | timer | warning | { revc | send }{ all | assert | graft | graft-ack | join | prune}}
打開和關閉PIM-DM的調試開關
例子
+配置VLAN虛接口。
PIM-DM協議是應用層協議,運行在三層接口上。
+其次,啟動組播路由協議
multicast routing-enable
+在每個VLAN接口視圖配置PIM-DM
pim dm
PIM-DM組播網絡配置就完成了。記住:組播協議必須依賴單播路由才能工作。單播路由協議可以是OSPF、RIP或者是靜態路由等。
www.huawei.com