PIM-DM協議原理
1、前言
組播路由器之間運行組播路由協議,組播路由協議用於建立和維護組播路由,建立一個從數據源端到多個接收端的無環數據傳輸路徑,即構建組播分發樹,並正確、高校地轉發組播數據包。
PIM(Protocol Independent Multicast)是典型的域內組播路由協議,分為DM(Dense Mode)和SM(Sparse Mode)兩種模型
一、PIM-DM概述與配置
1、組播路由協議概述
和單播路由一樣,組播路由也分為域內和域間兩大類
域內組播路由協議
通過發現組播源並構建組播分發樹,將信息傳遞到接收者
DVMRP、MOSPF、PIM-DM、PIM-SM、PIM-SSM、CBT
域間組播路由協議
需要一種機制能發現其他組播域內的組播源:MDSP、PIM-SSM
用於RPF檢測的路由信息如何在自治系統間傳遞:M-BGP、BGP
2、域內的組播路由協議可以分為三類
密集模式協議(DVMRP和PIM-DM)
密集模式協議用Push方式,Push原理假設網絡里的每個子網至少有一個組播信息的接收點,因此,信息擴散到網絡中的所有點;然后再利用擴散、剪枝和嫁接來維護組播分發樹。
稀疏模式協議(PIM-SM)、CBT
稀疏模式協議用Pull而不是Push的方式,即組播信息被拉入網絡中的接收站點。這種方式假定組播數據不被需要,除非有加入申請,否則組播信息不會被傳送到接收站點。
鏈路狀態協議(MOSPF)--使用密集模式
3、PIM概述
PIM(Protocol Independent Multicast)稱為協議無關組播,表示組播依靠的單播路由可以由靜態、RIP、OSPF、IS-IS、BGP等提供,組播路由和單播路由協議無關,只要單播路由協議產生所需路由表項能夠完成RPF檢查即可。
協議號:103
PIM路由器組播地址為:224.0.0.13
PIM協議分為:
PIM-DM(協議無關組播-密集模式)
PIM-SM(協議無關組播-稀疏模式)
協議假設:網絡中的每個子網都存在至少一個對組播源感興趣的接收站點,因此組播數據包被擴散到網絡中的所有網段。(Push模式)
PIM-DM對沒有組播數據轉發的分支進行Prune剪枝操作,只保留包含接收者的分支
為了使減掉的有組播數據轉發需求的分支能夠重新接收組播數據流,減掉的分支周期性地回復稱轉發狀態。(泛洪修剪時間周期是3分鍾)
為了減少等待被剪掉的分支恢復成轉發狀態的延遲時間,PIM-DM使用Graft嫁接機制主動恢復組播報文的轉發。
4、PIM-DM中數據包的轉發
PIM-DM域中數據包的轉發路徑是“有源樹”
以“組播源”為根、組播組成員為枝葉的一棵樹
由於有源樹使用的是從組播源到接收者的最短路徑,因此也稱為最短路徑樹SPT(Shortest Path Tree)
PIM-DM不依賴於特定的單播路由協議,而是使用現存的單播路由進行RPF檢查
路由器收到組播數據的接口稱為上游接口,轉發組播數據的接口稱為下游接口
5、PIMv2報文頭格式
版本
版本字段標識版本信息,當前為2
類型
0:hello
3:加入/剪枝
5:assert
6:嫁接
7嫁接回應
9:狀態刷新
6、PIM-DM基本配置
Pim // 全局開啟PIM
Multicast routing-enable // 在路由器全局開機組播路由功能
Interface Ethernet 0/0/0 // 進入接口模式
Pim dm // 設置接口為PIM的DM模式
二、PIM-DM協議機制
1、鄰居發現hello報文
Hello報文的目的地址是224.0.0.13
2、hello報文
Hello(默認30秒)報文類型(Option Type)=1
Holdtime(默認為105)定時器,這個定時器只是接收方何時終止與發送方的鄰接關系
組播路由器需要使用hello消息來發現鄰居,並維護鄰居關系
通過比較hello消息上攜帶的優先級(越高越好)和IP地址(越大越好),各路由器為多路由器網段選舉指定路由器DR
3、構建STP樹—擴散
當某組播源S開始向組播組G發送數據時,路由器接收到組播報文后,首先根據單播路由進行RPF檢查如果檢查通過則創建一個(S,G)表項,然后數據向網絡上所有下游PIM-DM節點轉發,這個過程稱為擴散(Flooding)
4、構建SPT樹—剪枝
如果下游節點沒有組播成員,則向上游節點發Prune剪枝消息(224.0.0.13),通知上游節點不用再轉發數據到該分支。上游節點接收到Prune剪枝消息后,就將相應的接口從某組播轉發表項(S,G)對應的輸出接口列表中至於Prune狀態(列表中刪除),剪枝過程繼續指導PIM-DM中僅剩下了必要的分支,這就建立了一個組播源S為根的SPT
6、SPT樹的形成
網路中的每個路由器仍然會保留(S,G)表項
注意:擴散—剪枝周期性進行!每3分鍾重復一次!
7、剪枝的觸發條件
流量達到非RPF點對點接口
沒有直連接收者的葉節點路由器
位於點到點鏈路上的非葉節點路由器從其鄰居收到剪枝信息
LAN網段上的非葉路由器從其鄰居接收到剪枝信息,而且LAN網段上的其他鄰居沒有剪枝信息的否決(oevrride)
8、多路訪問網段的修剪延遲
B是葉節點路由器並且沒有接收者,發送修剪信息
A收到修剪信息后要等待3S才能繼續向上修剪
C收到了B的修剪信息,立馬發送否決信息
A接收到join信息后放棄向上修剪。(Prune override)
9、嫁接機制
由誰觸發的:接收者(發送了一個IGMP的report報文)
由誰發送的:最后一跳路由器(發送group信息:PIM信息)
10、RPF檢查
利用單播路由表(默認),可以是任何方式生成的路由表項;如果組播包到達接口是單播路由只是的通往組播源S的接口,就認為這個組播包是從正確路徑來的。
11、RPF細則
RPF檢查也可以使用其他信息源來選擇RPF接口,有MBGP(多播BGP),靜態多播路由表等。當路由是從多個路由源學到時,組播RPF將使用路由協議優先級來進行計算。如果有多條路由匹配並且管理距離相同,那么最長匹配原則。
步驟一:依據上述規則找到RPF接口(或者說找到RPF的鄰居)
步驟二、當多播數據包從接口收到后進行RPF檢查
Display multicast rpf-info 10.1.123.100(組播源IP) // 查看關於組播源的RPF信息
IP rpf-route-static 1.1.1.1 24 2.2.2.2 // 指定組播的單播路由,1.1.1.1:源IP 2.2.2.2:下一跳
12、Assert機制
觸發規則:一台路由器的OIL列表接口收到一份多播信息,會觸發發送PIM assert信息
網絡中的各路由器通過發送Assert報文選出一條最優的路徑,獲勝路由器稱為該(S,G)項的上游鄰居,由它負責該(S,G)組播報文的轉發,而其他落選路由器則剪掉對應的接口以禁止轉發信息。
13、PIM-DM協議機制概括
鄰居發現、擴散、剪枝、嫁接、Assert機制(只有收到多分相同的報文都會選舉Assert)
三、PIM-DM配置驗證
Display pim routing-table // 查看PIM-DM組播路由表
Display pim neighbor // 查看PIM鄰居
Display pim interface verbose // 查看PIM接口配置