07-PIM配置
本章節下載: 07-PIM配置 (1.16 MB)
本文所涉及的路由器和路由器圖標,代表了運行PIM協議的路由交換機。
PIM(Protocol Independent Multicast,協議無關組播)表示可以利用單播靜態路由或者任意單播路由協議(包括RIP、OSPF、IS-IS、BGP等)所生成的單播路由表為IP組播提供路由。組播路由與所采用的單播路由協議無關,隻要能夠通過單播路由協議產生相應的組播路由表項即可。PIM借助RPF(Reverse Path Forwarding,逆向路徑轉發)機製實現對組播報文的轉發。當組播報文到達本地設備時,首先對其進行RPF檢查:若RPF檢查通過,則創建相應的組播路由表項,從而進行組播報文的轉發;若RPF檢查失敗,則丟棄該報文。有關RPF的詳細介紹,請參見“IP組播配置指導”中的“組播路由與轉發”。
根據實現機製的不同,PIM分為以下幾種類型:
· PIM-DM(Protocol Independent Multicast-Dense Mode,協議無關組播—密集模式)
· PIM-SM(Protocol Independent Multicast-Sparse Mode,協議無關組播—稀疏模式)
· BIDIR-PIM(Bidirectional Protocol Independent Multicast,雙向協議無關組播,簡稱雙向PIM)
· PIM-SSM(Protocol Independent Multicast Source-Specific Multicast,協議無關組播-指定源組播)
為了描述的方便,本文中把由支持PIM協議的組播路由器所組成的網絡簡稱為“PIM域”。
PIM-DM屬於密集模式的組播路由協議,使用“推(Push)模式”傳送組播數據,通常適用於組播組成員相對比較密集的小型網絡,其基本原理如下:
· PIM-DM假設網絡中的每個子網都存在至少一個組播組成員,因此組播數據將被擴散(Flooding)到網絡中的所有節點。然後,PIM-DM對沒有組播數據轉發的分支進行剪枝(Prune),隻保留包含接收者的分支。這種“擴散—剪枝”現象周期性地發生,被剪枝的分支也可以周期性地恢複成轉發狀態。
· 當被剪枝分支的節點上出現了組播組的成員時,為了減少該節點恢複成轉發狀態所需的時間,PIM-DM使用嫁接(Graft)機製主動恢複其對組播數據的轉發。
一般說來,密集模式下數據包的轉發路徑是有源樹(Source Tree,即以組播源為“根”、組播組成員為“枝葉”的一棵轉發樹)。由於有源樹使用的是從組播源到接收者的最短路徑,因此也稱為SPT(Shortest Path Tree,最短路徑樹)。
PIM-DM的工作機製可以概括如下:
· 鄰居發現
· 構建SPT
· 嫁接
· 斷言
在PIM域中,路由器通過周期性地向本網段的所有PIM路由器(224.0.0.13)以組播方式發送PIM Hello報文(以下簡稱Hello報文),以發現PIM鄰居,維護各路由器之間的PIM鄰居關係,從而構建和維護SPT。
路由器每個運行了PIM協議的接口都會周期性地發送Hello報文,從而了解與該接口相關的PIM鄰居信息。
構建SPT的過程也就是“擴散—剪枝”的過程:
在PIM-DM域中,組播源S向組播組G發送組播報文時,首先對組播報文進行擴散:路由器對該報文的RPF檢查通過後,便創建一個(S,G)表項,並將該報文向網絡中的所有下遊節點轉發。經過擴散,PIM-DM域內的每個路由器上都會創建(S,G)表項。
然後對那些下遊沒有接收者的節點進行剪枝:由沒有接收者的下遊節點向上遊節點發剪枝報文(Prune Message),以通知上遊節點將相應的接口從其組播轉發表項(S,G)所對應的出接口列表中刪除,並不再轉發該組播組的報文至該節點。
· (S,G)表項包括組播源的地址S、組播組的地址G、出接口列表和入接口等。
· 路由器上收到組播數據的接口稱為“上遊”,轉發組播數據的接口稱為“下遊”。
剪枝過程最先由葉子路由器發起,如圖1-1所示,沒有接收者(Receiver)的路由器(如與Host A直連的路由器)主動發起剪枝,並一直持續到PIM-DM域中隻剩下必要的分支,這些分支共同構成了SPT。
圖1-1 PIM-DM中構建SPT示意圖
“擴散—剪枝”的過程是周期性發生的。各個被剪枝的節點提供超時機製,當剪枝超時後便重新開始這一過程。
當被剪枝的節點上出現了組播組的成員時,為了減少該節點恢複成轉發狀態所需的時間,PIM-DM使用嫁接機製主動恢複其對組播數據的轉發,過程如下:
需要恢複接收組播數據的節點向其上遊節點發送嫁接報文(Graft Message)以申請重新加入到SPT中;
當上遊節點收到該報文後恢複該下遊節點的轉發狀態,並向其回應一個嫁接應答報文(Graft-Ack Message)以進行確認;
如果發送嫁接報文的下遊節點沒有收到來自其上遊節點的嫁接應答報文,將重新發送嫁接報文直到被確認為止。
在一個網段內如果存在多台組播路由器,則相同的組播報文可能會被重複發送到該網段。為了避免出現這種情況,就需要通過斷言(Assert)機製來選定唯一的組播數據轉發者。
圖1-2 Assert機製示意圖
如圖1-2所示,當Router A和Router B從上遊節點收到(S,G)組播報文後,都會向本地網段轉發該報文,於是處於下遊的節點Router C就會收到兩份相同的組播報文,Router A和Router B也會從各自的下遊接口收到對方轉發來的該組播報文。此時,Router A和Router B會通過其下遊接口向本網段的所有PIM路由器(224.0.0.13)以組播方式發送斷言報文(Assert Message),該報文中攜帶有以下信息:組播源地址S、組播組地址G、到組播源的單播路由/MBGP路由/組播靜態路由的優先級和度量值。通過一定的規則對這些參數進行比較後,Router A和Router B中的獲勝者將成為(S,G)組播報文在本網段的轉發者,比較規則如下:
到組播源的優先級較高者獲勝;
如果到組播源的優先級相等,那麼到組播源的度量值較小者獲勝;
如果到組播源的度量值也相等,則下遊接口IP地址較大者獲勝。
PIM-DM使用以“擴散—剪枝”方式構建的SPT來傳送組播數據。盡管SPT的路徑最短,但是其建立的過程效率較低,並不適合大中型網絡。
PIM-SM屬於稀疏模式的組播路由協議,使用“拉(Pull)模式”傳送組播數據,通常適用於組播組成員分布相對分散、範圍較廣的大中型網絡,其基本原理如下:
· PIM-SM假設所有主機都不需要接收組播數據,隻向明確提出需要組播數據的主機轉發。PIM-SM實現組播轉發的核心任務就是構造並維護RPT(Rendezvous Point Tree,共享樹或彙集樹),RPT選擇PIM域中某台路由器作為公用的根節點RP(Rendezvous Point,彙集點),組播數據通過RP沿著RPT轉發給接收者;
· 連接接收者的路由器向某組播組對應的RP發送加入報文(Join Message),該報文被逐跳送達RP,所經過的路徑就形成了RPT的分支;
· 組播源如果要向某組播組發送組播數據,首先由組播源側DR(Designated Router,指定路由器)負責向RP進行注冊,把注冊報文(Register Message)通過單播方式發送給RP,該報文到達RP後觸發建立SPT。之後組播源把組播數據沿著SPT發向RP,當組播數據到達RP後,被複製並沿著RPT發送給接收者。
複製僅發生在分發樹的分支處,這個過程能夠自動重複直到數據包最終到達接收者。
PIM-SM的工作機製可以概括如下:
· 鄰居發現
· DR選舉
· RP發現
· 構建RPT
· 組播源注冊
· SPT切換
· 斷言
PIM-SM使用與PIM-DM類似的鄰居發現機製,具體請參見“1.1.1 1. 鄰居發現”一節。
借助Hello報文還可以為共享網絡(如Ethernet)選舉DR,DR將作為該共享網絡中組播數據的唯一轉發者。
無論是與組播源相連的網絡,還是與接收者相連的網絡,都需要選舉DR。接收者側的DR負責向RP發送加入報文;組播源側的DR負責向RP發送注冊報文。
· 各路由器之間通過比較Hello報文中所攜帶的優先級和IP地址,可以為多路由器網段選舉DR。選舉出的DR對於PIM-SM有實際的意義;而對於PIM-DM來說,其本身其實並不需要DR,但如果PIM-DM域中的共享網絡上運行了IGMPv1,則需要選舉出DR來充當共享網絡上的IGMPv1查詢器。
· 在充當接收者側DR的設備上必須使能IGMP,否則連接在該DR上的接收者將不能通過該DR加入組播組。
有關IGMP的介紹,請參見“IP組播配置指導”中的“IGMP”。
圖1-3 DR選舉示意圖
如圖1-3所示,DR的選舉過程如下:
共享網絡上的各路由器相互之間發送Hello報文(攜帶有競選DR優先級的參數),擁有最高優先級的路由器將成為DR;
如果優先級相同,或者網絡中至少有一台路由器不支持在Hello報文中攜帶競選DR優先級的參數,則根據各路由器的IP地址大小來競選DR,IP地址最大的路由器將成為DR。
當DR出現故障時,其餘路由器在超時後仍沒有收到來自DR的Hello報文,則會觸發新的DR選舉過程。
RP是PIM-SM域中的核心設備。在結構簡單的小型網絡中,組播信息量少,整個網絡僅依靠一個RP進行組播信息的轉發即可,此時可以在PIM-SM域中的各路由器上靜態指定RP的位置;但是在更多的情況下,PIM-SM域的規模都很大,通過RP轉發的組播信息量巨大。為了緩解RP的負擔並優化RPT的拓撲結構,可以在PIM-SM域中配置多個C-RP(Candidate-RP,候選RP),通過自舉機製來動態選舉RP,使不同的RP服務於不同的組播組,此時需要配置BSR(BootStrap Router,自舉路由器)。BSR是PIM-SM域的管理核心,一個PIM-SM域內隻能有一個BSR,但可以配置多個C-BSR(Candidate-BSR,候選BSR)。這樣,一旦BSR發生故障,其餘C-BSR能夠通過自動選舉產生新的BSR,從而確保業務免受中斷。
· 一個RP可以同時服務於多個組播組,但一個組播組隻能唯一對應一個RP。
· 一台設備可以同時充當C-RP和C-BSR。
如圖1-4所示,BSR負責收集網絡中由C-RP發來的宣告報文(Advertisement Message),該報文中攜帶有C-RP的地址和優先級以及其服務的組範圍,BSR將這些信息彙總為RP-Set(RP集,即組播組與RP的映射關係數據庫),封裝在BSM(Bootstrap Message,自舉報文)中並發布到整個PIM-SM域。
圖1-4 RP與BSR信息交互示意圖
網絡中的各路由器將依據RP-Set提供的信息,使用相同的規則從眾多C-RP中為特定組播組選擇其對應的RP,具體規則如下:
首先比較C-RP的優先級,優先級較高者獲勝。
若優先級相同,則使用哈希(Hash)函數計算哈希值,該值較大者獲勝。
若優先級和哈希值都相同,則C-RP地址較大者獲勝。
哈希函數的表達式為:Value (G, M, Ci) = (1103515245 * ( (1103515245 * (G & M) + 12345) XOR Ci) + 12345) mod 231,其中各符號的含義如表1-1所示。
符號 |
含義 |
Value |
哈希值 |
G |
IP組播組的地址 |
M |
哈希掩碼長度(Hash Mask Length) |
Ci |
C-RP的IP地址 |
& |
邏輯運算符,表示與運算 |
XOR |
邏輯運算符,表示異或運算 |
mod |
算術運算符,表示整除取餘 |
圖1-5 PIM-SM中構建RPT示意圖
如圖1-5所示,RPT的構建過程如下:
當接收者加入一個組播組G時,先通過IGMP報文通知與其直連的DR;
DR掌握了組播組G的接收者的信息後,向該組所對應的RP方向逐跳發送加入報文;
從DR到RP所經過的路由器就形成了RPT的分支,這些路由器都在其轉發表中生成了(*,G)表項,這裏的“*”表示來自任意組播源。RPT以RP為根,以DR為葉子。
當發往組播組G的組播數據流經RP時,數據就會沿著已建立好的RPT到達DR,進而到達接收者。
當某接收者對組播組G的信息不再感興趣時,與其直連的DR會逆著RPT向該組的RP方向逐跳發送剪枝報文;上遊節點收到該報文後在其出接口列表中刪除與下遊節點相連的接口,並檢查自己是否擁有該組播組的接收者,如果沒有則繼續向其上遊轉發該剪枝報文。
組播源注冊的目的是向RP通知組播源的存在。
如圖1-6所示,組播源向RP注冊的過程如下:
當組播源S向組播組G發送了一個組播報文時,與組播源直連的DR在收到該報文後,就將其封裝成注冊報文,並通過單播方式發送給相應的RP;
當RP收到該報文後,一方麵解封裝注冊報文並將封裝在其中的組播報文沿著RPT轉發給接收者,另一方麵向組播源方向逐跳發送(S,G)加入報文。這樣,從RP到組播源所經過的路由器就形成了SPT的分支,這些路由器都在其轉發表中生成了(S,G)表項。SPT以組播源側的DR為根,以RP為葉子。
組播源發出的組播數據沿著已建立好的SPT到達RP,然後由RP把組播數據沿著RPT向接收者進行轉發。當RP收到沿著SPT轉發來的組播數據後,通過單播方式向與組播源直連的DR發送注冊停止報文(Register-Stop Message),組播源注冊過程結束。
本節中假設允許RP發起SPT切換,否則組播源側DR將一直用注冊報文封裝組播報文,注冊過程不會結束,除非RP上(S,G)表項的出接口變為空。
在PIM-SM域中,一個組播組唯一對應一個RP和一棵RPT。在SPT切換前,所有發往該組的組播報文都必須先由組播源側DR封裝在注冊報文中發往RP,由RP解封裝後再沿RPT分發給接收者側的DR,RP是所有組播數據必經的中轉站。這個過程存在以下三個問題:
· 組播源側的DR和RP必須對組播數據進行繁瑣的封裝/解封裝處理。
· 組播數據的轉發路徑不一定是從組播源到接收者的最短路徑。
· 當組播流量變大時,RP負擔增大,容易引發故障。
為了解決上述問題,PIM-SM允許由RP或接收者側的DR發起SPT切換:
RP發起的SPT切換
RP收到組播報文時,立即向組播源方向發送(S,G)加入報文,在組播源側DR與RP之間建立起SPT分支,後續的組播報文都直接沿該分支到達RP。
接收者側DR發起的SPT切換
缺省情況下,設備從RPT收到第一個組播數據包後便立即向SPT切換,過程如下:
· 首先,接收者側DR向組播源方向發送(S,G)加入報文,並最終送達組播源側DR,沿途經過的所有路由器在其轉發表中都生成了(S,G)表項,從而建立了SPT分支;
· 隨後,當組播數據沿SPT到達RPT與SPT分叉的路由器時,該路由器開始丟棄沿RPT到達的組播數據,同時向RP逐跳發送含RP位的剪枝報文,RP收到該報文後繼續向組播源方向發送剪枝報文(假設此時隻有這一個接收者),從而完成了SPT切換;
· 最終,組播數據將沿SPT從組播源到達接收者。
通過SPT切換,PIM-SM能夠以比PIM-DM更經濟的方式建立SPT。
PIM-SM使用與PIM-DM類似的斷言機製,具體請參見“1.1.1 4. 斷言”一節。
在某些組網應用(譬如多方電視電話會議)中,同時存在多個接收者和多個組播源,在這種情況下,如果使用傳統的PIM-DM或PIM-SM按SPT轉發組播數據,需在每台路由器上針對每個組播源都創建(S,G)表項,這將占用大量的係統資源。為了解決這個問題,提出了雙向PIM的概念。雙向PIM由PIM-SM發展而來,它通過建立以RP為中心、分別連接組播源和接收者的雙向RPT,使組播數據沿著雙向RPT從組播源經由RP轉發到接收者。這樣,在每台路由器上隻需維護(*,G)表項即可,從而節約了係統資源。
雙向PIM主要適用於組播源和接收者都比較密集的網絡,其工作機製可以概括如下:
· 鄰居發現
· RP發現
· DF選舉
· 構建雙向RPT
雙向PIM使用與PIM-SM完全相同的鄰居發現機製,具體請參見“1.1.2 1. 鄰居發現”一節。
雙向PIM使用與PIM-SM完全相同的RP發現機製,具體請參見“1.1.2 3. RP發現”一節。
PIM-SM的RP必須指定為一個實際存在的IP地址,而雙向PIM的RP則可以指定為一個實際不存在的IP地址,簡稱RPA(Rendezvous Point Address,彙集點地址)。RPA所屬網段對應的鏈路就稱為RPL(Rendezvous Point Link,彙集點鏈路),連接到RPL上的所有接口都可以充當RP,且互為備份。
雙向PIM中的RPF接口是指向RP的接口,RPF鄰居自然就是到達RP的下一跳地址。
DF(Designated Forwarder,指定轉發者)是雙向PIM中的重要角色,組播數據由組播源向RP轉發的動力來自於DF,也就是說隻有DF才有能力將組播數據向RP方向轉發。因此,每個RP在每個網段都需要有其對應的DF,以負責將該網段的組播數據向該RP轉發;此外,在有多台組播路由器的網段,DF的唯一性也可以避免相同的組播報文被重複發往RP。
在RPL上不需要選舉DF。
圖1-7 DF選舉示意圖
如圖1-7所示,Router B和Router C都可以從Router A收到由組播源向組播組G發送的組播報文,如果它們都向下遊節點轉發該報文,RP最終將收到兩份相同的組播報文。因此,Router B和Router C一旦獲得RP的信息,就會為該RP發起DF的選舉:Router B和Router C將分別向本網段的所有PIM路由器(224.0.0.13)以組播方式發送DF選舉報文(DF Election Message),該報文攜帶有以下信息:RP的地址、到RP的單播路由/MBGP路由/組播靜態路由的優先級和度量值。通過一定規則對這些參數進行比較後,Router B和Router C中的獲勝者將成為DF,具體的比較規則如下:
到RP的優先級較高者獲勝;
如果到RP的優先級相等,那麼到RP的度量值較小者獲勝;
如果到RP的度量值也相等,則接口的IP地址較大者獲勝。
雙向RPT由兩部分構成:一部分是以RP為根、以直連接收者的路由器為葉子的RPT,簡稱接收者側RPT;而另一部分則是以RP為根、以直連組播源的路由器為葉子的RPT,簡稱組播源側RPT。這兩部分RPT的構建過程不同,下麵分別加以介紹。
圖1-8 接收者側RPT構建示意圖
接收者側RPT的構建過程與PIM-SM中RPT的構建過程類似,如圖1-8所示,其構建過程如下:
當接收者加入一個組播組G時,先通過IGMP報文通知與其直連的路由器;
該路由器掌握了組播組G的接收者的信息後,向該組所對應的RP方向逐跳發送加入報文;
從直連接收者的路由器到RP所經過的路由器就形成了接收者側RPT的分支,這些路由器都在其轉發表中生成了(*,G)表項。
當某接收者對組播組G的信息不再感興趣時,與其直連的路由器會逆著接收者側RPT向該組的RP方向逐跳發送剪枝報文;上遊節點收到該報文後在其出接口列表中刪除與下遊節點相連的接口,並檢查自己是否擁有該組播組的接收者,如果沒有則繼續向其上遊轉發該剪枝報文。
圖1-9 組播源側RPT構建示意圖
組播源側RPT的構建過程則相對簡單,如圖1-9所示,其構建過程如下:
組播源發向組播組G的組播數據在途徑的每個網段,都被該網段的DF無條件地向RP轉發;
從直連組播源的路由器到RP所經過的路由器就形成了組播源側RPT的分支,這些路由器都在其轉發表中生成了(*,G)表項。
當雙向RPT構建完成之後,由組播源發出的組播數據將依次沿著組播源側RPT和接收者側RPT,經由RP轉發至接收者。
當接收者和組播源都位於RP的同一側時,組播源側RPT與接收者側RPT有可能在到達RP之前就已彙合。在這種情況下,組播數據將在此彙合點直接轉發給接收者,而不必經由RP。
一般情況下,在一個PIM-SM/雙向PIM域內隻能有一個BSR,並由該BSR負責在整個PIM-SM/雙向PIM域內宣告RP-Set信息,所有組播組的信息都在此BSR管理的網絡範圍內進行轉發,我們稱之為非管理域機製。
考慮到管理的精細化,可以將整個PIM-SM/雙向PIM域劃分為一個Global域(Global-scope Zone)和多個管理域(Admin-scope Zone),一方麵可以有效分擔單一BSR的管理壓力,另一方麵可以使用私有組地址為特定區域提供專門的服務。相應地,我們稱之為管理域機製。
管理域與組播組相對應,針對不同組播組劃分相應的管理域。管理域的邊界由ZBR(Zone Border Router,區域邊界路由器)構成,每個管理域各維護一個BSR,為特定範圍的組播組服務,屬於此範圍的組播協議報文(如斷言報文、BSR自舉報文等)無法通過管理域邊界。不同管理域所服務的組播組範圍可以重疊,該範圍內的組播組隻在本管理域內有效,相當於私有組地址。而不屬於任何管理域服務範圍的組播組則一律屬於Global域的服務範圍,Global域中維護一個BSR,為剩餘的所有組播組服務。
每個管理域以及Global域都有獨立的C-RP和BSR設備,這些設備僅在其所屬的域有效,也就是說BSR機製與RP選舉在各管理域之間是隔離的;每個管理域都有自己的邊界,各管理域所服務組播組範圍內的組播信息不能進、出該邊界。為了更清晰地理解管理域和Global域之間的關係,可以從以下兩個角度進行考慮:
地域空間角度
管理域是針對特定範圍組播組的邏輯管理區域,屬於此範圍的組播報文隻能在本管理域的域內或域外傳播,無法跨過管理域的邊界。
圖1-10 地域空間上管理域與Global域的關係
如圖1-10所示,對於同一地址範圍內的組播組而言,各管理域在地域上必須相互獨立、相互隔離,即同一路由器不能從屬於多個管理域,各管理域所包含的路由器也互不相同。而Global域則包含了PIM-SM/雙向PIM域內的所有路由器,不屬於任何管理域服務範圍的組播報文,可以在整個PIM-SM/雙向PIM域範圍內傳播。
組地址範圍角度
每個管理域為特定的組播組提供服務,這些組播組地址之間通常沒有交集,但是也可能存在相互交叉和重疊關係。
如圖1-11所示,管理域1與管理域2所對應的組地址範圍無交集,而管理域3的組地址是管理域1組地址的子集;Global域所對應的組地址範圍是除各管理域組地址外的其它所有組地址,即G−G1−G2。也就是說,Global域和所有管理域之間就組地址範圍來說是互補關係。
SSM(Source-Specific Multicast,指定信源組播)模型和ASM(Any-Source Multicast,任意信源組播)模型是兩個完全對等的模型。目前,ASM模型包括PIM-DM和PIM-SM兩種模式,SSM模型能夠借助PIM-SM的部分技術來實現,也稱為PIM-SSM。
SSM模型為指定源組播提供了解決方案,通過IGMPv3來維護主機與路由器之間的關係。在實際應用中,通常采用IGMPv3以及PIM-SM的一部分技術來實現SSM模型。由於接收者已經通過其它渠道(如廣告谘詢等)知道了組播源的具體位置,因此在SSM模型中無需RP,無需構建RPT,無需組播源注冊過程,也無需通過MSDP(Multicast Source Discovery Protocol,組播源發現協議)來發現其它PIM域內的組播源。
PIM-SSM的工作機製可以概括如下:
· 鄰居發現
· DR選舉
· 構建SPT
PIM-SSM使用與PIM-SM完全相同的鄰居發現機製,具體請參見“1.1.2 1. 鄰居發現”一節。
PIM-SSM使用與PIM-SM完全相同的DR選舉機製,具體請參見 “1.1.2 2. DR選舉”一節。
構建為PIM-SM服務的RPT,還是構建為PIM-SSM服務的SPT,關鍵在於接收者準備加入的組播組是否屬於SSM組地址範圍(IANA保留的SSM組地址範圍為232.0.0.0/8)。
圖1-12 PIM-SSM中構建SPT示意圖
如圖1-12所示,Host B和Host C為組播信息的接收者(Receiver),由其借助IGMPv3的報告報文向DR報告自己對來自組播源S、發往組播組G的信息感興趣。收到該報告報文的DR先判斷該報文中的組地址是否在SSM組地址範圍內:
· 如果在SSM組地址範圍內,則構建PIM-SSM,並向組播源S逐跳發送通道(Channel)的訂閱報文(Subscribe Message)。沿途所有路由器上都創建(S,G)表項,從而在網絡內構建了一棵以組播源S為根、以接收者為葉子的SPT,該SPT就是PIM-SSM中的傳輸通道;
· 如果不在SSM組地址範圍內,則仍舊按照PIM-SM的流程進行後續處理,此時接收者側DR需要向RP發送(*,G)加入報文,同時組播源側DR需要進行組播源的注冊。
在PIM-SSM中,借助“通道”的概念表示組播組,借助“訂閱報文”的概念表示加入報文。
在一個PIM網絡中,不允許PIM-DM與其它類型的PIM協議(PIM-SM、雙向PIM和PIM-SSM)同時運行,但允許同時運行PIM-SM、雙向PIM和PIM-SSM。
當網絡中同時運行PIM-SM、雙向PIM和PIM-SSM時,針對具體的組加入行為運行哪種類型的PIM協議,其判斷過程如圖1-13所示。
圖1-13 各PIM協議運行關係示意圖
有關IGMP SSM Mapping的詳細介紹,請參見“IP組播配置指導”中的“IGMP”。
在多實例應用中,組播路由器需要針對不同的實例分別維護PIM鄰居表、組播路由表、BSR信息和RP-Set信息,並保持多個VPN實例間上述信息的相互獨立。
當組播路由器收到組播數據報文時,需要區分出該數據報文所屬的實例,並根據該實例對應的組播路由表將其轉發,或創建與該VPN實例的PIM相關的組播路由表項。
係統工作在標準模式下時,如果需要配置多實例的PIM,則必須配置保留VLAN,否則係統會出現異常。保留VLAN配置完成後,請不要修改,否則需要重新配置。關於係統工作模式的介紹請參見“基礎配置指導”中的“設備管理”。關於保留VLAN的詳細配置和命令,請參見“MPLS配置指導”和“MPLS命令參考”中的“MPLS L3VPN”。
與PIM相關的協議規範有:
· RFC 3973:Protocol Independent Multicast-Dense Mode (PIM-DM): Protocol Specification (Revised)
· RFC 4601:Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification (Revised)
· RFC 5015:Bidirectional Protocol Independent Multicast (BIDIR-PIM)
· RFC 5059:Bootstrap Router (BSR) Mechanism for Protocol Independent Multicast (PIM)
· RFC 4607:Source-Specific Multicast for IP
· draft-ietf-ssm-overview-05:An Overview of Source-Specific Multicast (SSM)
表1-2 PIM-DM配置任務簡介
配置任務 |
說明 |
詳細配置 |
使能PIM-DM |
必選 |
|
使能狀態刷新能力 |
可選 |
|
配置狀態刷新參數 |
可選 |
|
配置PIM-DM定時器 |
可選 |
|
配置PIM公共特性 |
可選 |
在配置PIM-DM之前,需完成以下任務:
· 配置任一單播路由協議,實現域內網絡層互通
在配置PIM-DM之前,需準備以下數據:
· 發送狀態刷新報文的時間間隔
· 等待接收新狀態刷新報文的最小時間
· 狀態刷新報文的TTL值
· 嫁接報文的重傳時間
在接口上使能了PIM-DM後,路由器會定期發送Hello報文以發現PIM鄰居,並對收到的來自PIM鄰居的報文進行處理。在部署PIM-DM域時,建議在其所有非邊界接口上均使能PIM-DM。
表1-3 使能公網實例中的PIM-DM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
使能IP組播路由 |
multicast routing-enable |
必選 缺省情況下,IP組播路由處於關閉狀態 |
進入接口視圖 |
interface interface-type interface-number |
- |
使能PIM-DM |
pim dm |
必選 缺省情況下,PIM-DM處於關閉狀態 |
· 係統工作在標準模式下時,如果需要配置多實例的PIM-DM,則必須配置保留VLAN。關於係統工作模式的介紹請參見“基礎配置指導”中的“設備管理”。關於保留VLAN的詳細配置和命令,請參見“MPLS配置指導”和“MPLS命令參考”中的“MPLS L3VPN”。
· 在同一台設備的同一個VPN實例中,所有接口上所啟用的PIM模式必須相同。
· PIM-DM不能與處於SSM組地址範圍內的組播組同時使用。
表1-4 使能VPN實例中的PIM-DM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建VPN實例,並進入VPN實例視圖 |
ip vpn-instance vpn-instance-name |
- |
配置VPN實例的RD |
route-distinguisher route-distinguisher |
必選 缺省情況下,VPN實例沒有RD |
使能IP組播路由 |
multicast routing-enable |
必選 缺省情況下,IP組播路由處於關閉狀態 |
進入接口視圖 |
interface interface-type interface-number |
- |
將接口與VPN實例進行關聯 |
ip binding vpn-instance vpn-instance-name |
必選 缺省情況下,接口隻屬於公網,未與任何VPN實例關聯 |
使能PIM-DM |
pim dm |
必選 缺省情況下,PIM-DM處於關閉狀態 |
· 有關ip vpn-instance、route-distinguisher和ip binding vpn-instance命令的詳細介紹,請參見“MPLS命令參考”中的“MPLS L3VPN”。
· 有關multicast routing-enable命令的詳細介紹,請參見“IP組播命令參考”中的“組播路由與轉發”。
為了避免各路由器上被剪枝的接口因為超時而恢複轉發,與組播源直連的路由器會周期性地發送(S,G)狀態刷新報文,該報文沿著PIM-DM域最初的擴散路徑逐跳進行轉發,從而刷新沿途所有路由器上的剪枝定時器的狀態。隻有當一個共享網段內的所有PIM路由器上都使能了狀態刷新能力時,該共享網段才具備狀態刷新能力。
請在PIM-DM域內的所有路由器上進行如下配置。
表1-5 使能狀態刷新能力
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
使能狀態刷新能力 |
pim state-refresh-capable |
可選 缺省情況下,狀態刷新能力處於使能狀態 |
在與組播源直連的路由器上,會以一定的時間間隔周期性地發送狀態刷新報文,可以通過配置來改變這個時間間隔。
路由器可能在短時間內收到多個狀態刷新報文,而其中有些報文可能是重複的。為了避免接收這些重複的報文,可以配置接收新狀態刷新報文的等待時間:路由器將丟棄在該時間內收到的狀態刷新報文;當該時間超時後,路由器將正常接收新的狀態刷新報文,並更新自己的PIM-DM狀態,同時重置該等待時間。
在收到狀態刷新報文時,路由器會將該報文的TTL值減1後轉發給其下遊,直至該報文的TTL值減為0,當網絡規模很小時,狀態刷新報文將在網絡中循環傳遞。因此,為了有效控製刷新報文的傳遞範圍,需要根據網絡規模大小配置合適的TTL值。
請在PIM-DM域內的所有路由器上進行如下配置。
表1-6 配置狀態刷新參數
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置發送狀態刷新報文的時間間隔 |
state-refresh-interval interval |
可選 缺省情況下,發送狀態刷新報文的時間間隔為60秒 |
配置接收新狀態刷新報文的等待時間 |
state-refresh-rate-limit interval |
可選 缺省情況下,接收新狀態刷新報文的等待時間為30秒 |
配置狀態刷新報文的TTL值 |
state-refresh-ttl ttl-value |
可選 缺省情況下,狀態刷新報文的TTL值為255 |
嫁接報文是PIM-DM中唯一使用確認機製的報文。在PIM-DM域中,下遊路由器發出嫁接報文後,如果在指定時間內沒有收到來自其上遊路由器的嫁接應答報文,則會重發嫁接報文,直到被確認。
表1-7 配置PIM-DM定時器
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
配置嫁接報文的重傳時間 |
pim timer graft-retry interval |
可選 缺省情況下,嫁接報文的重傳時間為3秒 |
有關PIM-DM其它定時器的相關配置,請參見“1.6.7 配置PIM公共定時器”。
表1-8 PIM-SM配置任務簡介
配置任務 |
說明 |
詳細配置 |
|
使能PIM-SM |
必選 |
||
配置RP |
配置靜態RP |
三者至少選其一,若隻配置靜態RP,則不必再配置BSR |
|
配置C-RP |
|||
使能自動RP偵聽 |
|||
全局配置C-RP定時器 |
可選 |
||
配置BSR |
配置C-BSR |
必選 |
|
配置BSR服務邊界 |
可選 |
||
全局配置C-BSR參數 |
可選 |
||
配置C-BSR定時器 |
可選 |
||
關閉自舉報文語義分片功能 |
可選 |
||
配置管理域 |
使能管理域機製 |
可選 |
|
配置管理域邊界 |
可選 |
||
配置管理域和Global域的C-BSR |
可選 |
||
配置組播源注冊 |
可選 |
||
配置SPT切換 |
可選 |
||
配置PIM公共特性 |
可選 |
在配置PIM-SM之前,需完成以下任務:
· 配置任一單播路由協議,實現域內網絡層互通
在配置PIM-SM之前,需準備以下數據:
· 靜態RP的IP地址及表示其所服務組範圍的ACL規則
· C-RP的優先級及表示其所服務組範圍的ACL規則
· 合法C-RP的地址範圍及表示其所服務組範圍的ACL規則
· 發送宣告報文的時間間隔
· C-RP超時時間
· C-BSR的優先級
· 哈希掩碼長度
· 表示合法BSR地址範圍的ACL規則
· 自舉時間間隔
· 自舉超時時間
· 表示注冊報文過濾規則的ACL規則
· 注冊抑製時間
· 注冊探測時間
· 發起SPT切換的ACL規則和排序規則
在接口上使能了PIM-SM後,路由器會定期發送Hello報文以發現PIM鄰居,並對收到的來自PIM鄰居的報文進行處理。在部署PIM-SM域時,建議在其所有非邊界接口上均使能PIM-SM。
表1-9 使能公網實例中的PIM-SM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
使能IP組播路由 |
multicast routing-enable |
必選 缺省情況下,IP組播路由處於關閉狀態 |
進入接口視圖 |
interface interface-type interface-number |
- |
使能PIM-SM |
pim sm |
必選 缺省情況下,PIM-SM處於關閉狀態 |
· 係統工作在標準模式下時,如果需要配置多實例的PIM-SM,則必須配置保留VLAN。關於係統工作模式的介紹請參見“基礎配置指導”中的“設備管理”。關於保留VLAN的詳細配置和命令,請參見“MPLS配置指導”和“MPLS命令參考”中的“MPLS L3VPN”。
· 在同一台設備的同一個VPN實例中,所有接口上所啟用的PIM模式必須相同。
表1-10 使能VPN實例中的PIM-SM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建VPN實例,並進入VPN實例視圖 |
ip vpn-instance vpn-instance-name |
- |
配置VPN實例的RD |
route-distinguisher route-distinguisher |
必選 缺省情況下,VPN實例沒有RD |
使能IP組播路由 |
multicast routing-enable |
必選 缺省情況下,IP組播路由處於關閉狀態 |
進入接口視圖 |
interface interface-type interface-number |
- |
將接口與VPN實例進行關聯 |
ip binding vpn-instance vpn-instance-name |
必選 缺省情況下,接口隻屬於公網,未與任何VPN實例關聯 |
使能PIM-SM |
pim sm |
必選 缺省情況下,PIM-SM處於關閉狀態 |
· 有關ip vpn-instance、route-distinguisher和ip binding vpn-instance命令的詳細介紹,請參見“MPLS命令參考”中的“MPLS L3VPN”。
· 有關multicast routing-enable命令的詳細介紹,請參見“IP組播命令參考”中的“組播路由與轉發”。
RP可以通過手工方式靜態配置,也可以通過BSR機製動態選舉。對於大型PIM網絡,配置靜態RP將會非常繁瑣。所以,通常靜態RP是作為動態選舉RP機製的備份手段,以提高網絡的健壯性,增強組播網絡的運營管理能力。
當PIM網絡中同時運行PIM-SM和雙向PIM時,請勿使一個RP同時為PIM-SM和雙向PIM工作,否則可能引起PIM路由表出錯。
當網絡內僅有一個動態RP時,通過手工配置靜態RP可以避免因單一節點故障而引起的通信中斷,同時也可以避免C-RP與BSR之間頻繁的信息交互而占用帶寬。
請在PIM-SM域內的所有路由器上進行如下配置。
表1-11 配置靜態RP
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置服務於PIM-SM的靜態RP |
static-rp rp-address [ acl-number ] [ preferred ] |
必選 缺省情況下,沒有配置靜態RP |
為了讓靜態RP功能正常發揮作用,必須在所有路由器上指定相同的靜態RP地址。
在PIM-SM域中,可以把有意成為RP的路由器配置為C-RP。BSR通過接收來自C-RP的C-RP信息,或者接收來自其它路由器的自動RP宣告,收集C-RP信息並將其彙總為RP-Set信息,然後在全網內擴散。之後,網絡內的其它路由器根據RP-Set信息計算出特定組播組範圍所對應的RP。建議在骨幹網路由器上配置C-RP。
為了防止C-RP欺騙,需要在BSR上配置合法的C-RP地址範圍及其所服務的組播組範圍。同時由於每個C-BSR都可能成為BSR,因此必須在PIM-SM域內的所有C-BSR上都配置相同的過濾策略。
表1-12 配置C-RP
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置某接口為服務於PIM-SM的C-RP |
c-rp interface-type interface-number [ group-policy acl-number | priority priority | holdtime hold-interval | advertisement-interval adv-interval ] * |
必選 缺省情況下,沒有配置C-RP |
配置合法C-RP的地址範圍及其所服務的組播組範圍 |
crp-policy acl-number |
可選 缺省情況下,C-RP的地址範圍及其所服務的組播組範圍不受任何限製 |
· 在配置C-RP時,應在C-RP與PIM-SM域中的其它設備之間保留較大的通信帶寬。
· 一個RP可以為多個組播組服務,也可以為所有組播組服務。每個組播組在任意時刻,隻能由唯一的一個RP為其轉發數據,而不能由多個RP轉發數據。
自動RP宣告(Announce)和發現(Discovery)報文的目的地址分別為組播組地址224.0.1.39和224.0.1.40。在設備上使能了自動RP偵聽功能後,該設備便能夠接收這兩種報文,並記錄報文中所攜帶的RP信息。
表1-13 使能自動RP偵聽
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
使能自動RP偵聽功能 |
auto-rp enable |
必選 缺省情況下,自動RP偵聽功能處於關閉狀態 |
為了使BSR能夠在PIM-SM域內分發RP-Set信息,C-RP必須周期性地向BSR發送宣告報文,BSR從該報文中學習RP-Set信息,並將該信息與自己的IP地址一起封裝在自舉報文中向域中的所有PIM路由器進行宣告。
C-RP在其宣告報文中封裝一個保持時間,BSR在收到該報文後,從中獲得該時間值並啟動C-RP超時定時器,如果超時後BSR仍沒有收到來自C-RP後續的宣告報文,則認為目前網絡中的C-RP失效或不可達。
請在已配置為C-RP的路由器上進行如下配置。
表1-14 全局配置C-RP定時器
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置發送宣告報文的時間間隔 |
c-rp advertisement-interval interval |
可選 缺省情況下,發送宣告報文的時間間隔為60秒 |
配置C-RP超時時間 |
c-rp holdtime interval |
可選 缺省情況下,C-RP的超時時間為150秒 |
有關PIM-SM其它定時器的相關配置,請參見“1.6.7 配置PIM公共定時器”。
在一個PIM-SM域中隻能有一個BSR,但需要配置至少一個C-BSR。任意一台路由器都可以被配置為C-BSR。在C-BSR之間通過自動選舉產生BSR,BSR負責在PIM-SM域中收集並發布RP信息。
C-BSR應配置在骨幹網的路由器上,在將路由器配置為C-BSR時,必須同時指定一個使能了PIM-SM的接口。C-BSR間的自動選舉機製簡單描述如下:
· 最初,每個C-BSR都認為自己是本PIM-SM域的BSR,並使用接口的IP地址作為BSR地址,發送自舉報文;
· 當某C-BSR收到其它C-BSR發來的自舉報文時,首先比較自己與後者的優先級,優先級較高者獲勝;在優先級相同的情況下,再比較自己與後者的BSR地址,擁有較大IP地址者獲勝。如果後者獲勝,則用後者的BSR地址替換自己的BSR地址,並不再認為自己是BSR;否則,保留自己的BSR地址,並繼續認為自己是BSR。
通過在路由器上配置合法BSR的地址範圍,可以對收到的自舉報文按照地址範圍進行過濾,從而防止某些惡意主機非法偽裝成BSR,以避免合法的BSR被惡意取代。必須在PIM-SM域內的所有路由器上進行相同的配置。通常針對以下兩類情況實施預防措施:
· 某些惡意主機通過偽造自舉報文以欺騙路由器,試圖更改RP映射關係。這種攻擊通常發生在邊緣路由器上,由於BSR處於網絡內部,主機在網絡外部,因此邊緣路由器通過對收到的自舉報文進行鄰居檢查和RPF檢查,丟棄不符合要求的報文,就可以避免外部網絡用戶對內部網絡BSR的攻擊;
· 網絡中某台路由器被攻擊者控製,或者有非法接入的路由器時,攻擊者可以將這樣的路由器配置為C-BSR,並使其在競爭中獲勝,從而控製網絡中RP信息的發布權。由於在被配置為C-BSR後,路由器會自動向整個網絡擴散自舉報文,而自舉報文是TTL值為1的組播報文,所以隻要其鄰居路由器不接收該自舉報文,就不會影響整個網絡。因此,通過在整個網絡的所有路由器上都配置合法BSR的地址範圍,從而丟棄合法範圍之外的自舉報文,就可以防止此類攻擊。
以上兩種預防措施可以部分地保護網絡中BSR的安全。但是如果某台合法的BSR路由器被攻擊者控製,還是可能導致問題。
表1-15 配置C-BSR
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置某接口為C-BSR |
c-bsr interface-type interface-number [ hash-length [ priority ] ] |
必選 缺省情況下,沒有配置C-BSR |
配置合法的BSR地址範圍 |
bsr-policy acl-number |
可選 缺省情況下,BSR的地址範圍不受任何限製 |
· 由於BSR與PIM-SM域中的其它設備需要交換大量信息,因此應在C-BSR與PIM-SM域中的其它設備之間保留較大的通信帶寬。
· 如果C-BSR之間通過GRE(Generic Routing Encapsulation,通用路由封裝)隧道相連接,則需要配置組播靜態路由,以保證到C-BSR下一跳的是Tunnel接口。有關組播靜態路由的相關配置,請參見“IP組播配置指導”中的“組播路由與轉發”。
BSR作為PIM-SM域中的管理核心,負責將收集到的RP-Set信息以自舉報文的形式發向PIM-SM域中的所有路由器。
BSR的服務邊界,即PIM-SM域的邊界。BSR是針對特定的服務範圍而言的,眾多的BSR服務邊界接口將網絡劃分成不同的PIM-SM域,自舉報文無法通過PIM-SM域的邊界,BSR服務邊界之外的路由器也不能參與本PIM-SM域內的組播轉發。
請在欲配置為BSR服務邊界的路由器上進行如下配置。
表1-16 配置BSR服務邊界
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
配置BSR的服務邊界 |
pim bsr-boundary |
必選 缺省情況下,沒有配置BSR的服務邊界 |
在一個PIM-SM域中,從眾多C-BSR中選舉出唯一的BSR。PIM-SM域內的C-RP向BSR發送宣告報文,由BSR彙總為RP-Set,並向本PIM-SM域內的所有路由器進行宣告。所有路由器都使用統一的哈希算法,得到特定組播組所對應RP的地址。
請在已配置為C-BSR的路由器上進行如下配置。
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置哈希掩碼長度 |
c-bsr hash-length hash-length |
可選 缺省情況下,哈希掩碼長度為30 |
配置C-BSR的優先級 |
c-bsr priority priority |
可選 缺省情況下,C-BSR的優先級為64 |
哈希掩碼長度和C-BSR的優先級可以在全局、管理域和Global域這三種範圍內進行配置:
· 如果在管理域或Global域下進行了配置,則取其配置值;
· 如果未在管理域或Global域下進行配置,則取相應的全局值。
有關管理域和Global域C-BSR參數的相關配置,請參見“1.3.6 3. 配置管理域和Global域的C-BSR”。
當某C-BSR競選成為BSR後,它會通過自舉報文向其所服務的區域以組播方式發送自己的IP地址和RP-Set信息。BSR以自舉時間間隔周期性地向網絡發送自舉報文,收到該報文的C-BSR會在自舉超時時間內將其保持,此時BSR選舉過程暫停;當自舉超時時間超時後,C-BSR之間會觸發新一輪的BSR選舉過程。
請在已配置為C-BSR的路由器上進行如下配置。
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置自舉時間間隔 |
c-bsr interval interval |
可選 缺省取值請參見表後的說明 |
配置自舉超時時間 |
c-bsr holdtime interval |
可選 缺省取值請參見表後的說明 |
關於自舉時間間隔的取值:
· 如果沒有進行手工配置,則其取值由如下公式決定:自舉時間間隔=(自舉超時時間-10)÷2。缺省情況下,自舉超時時間為130秒,則自舉時間間隔的缺省值=(130-10)÷2=60(秒)。
· 如果進行了手工配置,則取配置值。
關於自舉超時時間的取值:
· 如果沒有進行手工配置,則其取值由如下公式決定:自舉超時時間=自舉時間間隔×2+10。缺省情況下,自舉時間間隔為60秒,則自舉超時時間的缺省值=60×2+10=130(秒)。
· 如果進行了手工配置,則取配置值。
配置時,應保證自舉時間間隔小於自舉超時時間。
BSR周期性地向所在PIM-SM域發送自舉報文以通告RP-Set信息。當RP-Set信息較少時,自舉報文被封裝在一個IP報文中發送出去;而當RP-Set信息較多時,自舉報文的大小可能超過接口的MTU(Maximum Transmission Unit,最大傳輸單元)值,從而觸發其在IP層的分片。在這種情況下,一個IP分片的丟失就會導致整個自舉報文都被丟棄。
自舉報文語義分片功能可以解決上述問題:當自舉報文大於接口MTU時,會被分解為多個BSMF(Bootstrap Message Fragment,自舉報文分片)。非BSR收到自舉報文分片後,若發現某組範圍對應的RP信息都在這一個分片中,便立即更新該組範圍對應的RP-Set;若發現某組範圍映射的RP信息被分在了多個分片中,則待收齊了這些分片後再更新該組範圍對應的RP-Set。這樣,由於不同分片所含組範圍對應的RP信息不同,因此個別分片的丟失隻影響該分片所含組範圍對應的RP信息,而不會導致整個自舉報文都被丟棄。
自舉報文語義分片功能是缺省使能的,但由於不支持該功能的設備會將自舉報文分片當作完整的自舉報文處理,從而導致其學到的RP-Set信息不完整,因此當PIM-SM域中存在此類設備時,請在已配置為C-BSR的路由器上關閉本功能。
表1-19 關閉自舉報文語義分片功能
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
關閉自舉報文語義分片功能 |
undo bsm-fragment enable |
必選 缺省情況下,自舉報文語義分片功能處於使能狀態 |
通常,BSR根據其BSR接口的MTU值對自舉報文進行語義分片;而對由於新學到PIM鄰居而觸發的自舉報文發送,則根據發送接口的MTU值進行語義分片。
在非管理域機製下,一個PIM-SM域中隻有唯一的BSR,整個網絡都在該BSR的管理範圍之內。為了更有針對性地管理,可以將整個PIM-SM域劃分為多個管理域:每個管理域中各維護一個BSR,服務於特定範圍的組播組;而Global域中也維護一個BSR,為所有剩餘的組播組提供服務。
在配置管理域各項功能之前,必須先使能管理域機製。
請在PIM-SM域內的所有路由器上進行如下配置。
表1-20 使能管理域機製
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
使能管理域機製 |
c-bsr admin-scope |
必選 缺省情況下,管理域機製處於關閉狀態 |
在管理域機製中,各管理域的邊界由ZBR構成,每個管理域各維護一個BSR,服務於特定範圍的組播組,屬於此範圍的組播協議報文(如斷言報文、BSR自舉報文等)無法通過管理域邊界。
請在欲配置為ZBR的路由器上進行如下配置。
表1-21 配置管理域邊界
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
配置組播轉發邊界 |
multicast boundary group-address { mask | mask-length } |
必選 缺省情況下,沒有配置組播轉發邊界 |
通過multicast boundary命令中的參數group-address { mask | mask-length }可指定管理域所服務的組播組範圍,有效的組範圍在239.0.0.0/8之內。有關multicast boundary命令的詳細介紹,請參見“IP組播命令參考”中的“組播路由與轉發”。
在應用了管理域機製的網絡中,從眾多C-BSR中選舉出針對不同組播組的BSR。網絡內的C-RP隻向對應的BSR發送宣告報文,由BSR彙總為RP-Set,並向其所服務管理域內的所有路由器進行宣告。所有路由器都使用統一的哈希算法,得到特定組播組所對應RP的地址。
請為管理域和Global域分別配置其各自的C-BSR。
配置管理域的C-BSR
請在欲配置為管理域C-BSR的路由器上進行如下配置。
表1-22 配置管理域的C-BSR
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置管理域的C-BSR |
c-bsr group group-address { mask | mask-length } [ hash-length hash-length | priority priority ] * |
必選 缺省情況下,沒有配置管理域的C-BSR |
通過c-bsr group命令中的參數group-address { mask | mask-length }可指定C-BSR所服務的組播組範圍,有效的組範圍在239.0.0.0/8之內。
配置Global域的C-BSR
請在欲配置為Global域C-BSR的路由器上進行如下配置。
表1-23 配置Global域的C-BSR
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置Global域的C-BSR |
c-bsr global [ hash-length hash-length | priority priority ] * |
必選 缺省情況下,沒有配置Global域的C-BSR |
哈希掩碼長度和C-BSR的優先級可以在全局、管理域和Global域這三種範圍內進行配置:
· 如果在管理域或Global域下進行了配置,則取其配置值;
· 如果未在管理域或Global域下進行配置,則取相應的全局值。
有關全局C-BSR參數的相關配置,請參見“1.3.5 3. 全局配置C-BSR參數”。
在PIM-SM域內,組播源側DR向RP發送注冊報文,而這些注冊報文擁有不同的組播源或組播組地址。為了讓RP服務於特定的組播組,可以對注冊報文進行過濾。如果某個(S,G)表項被過濾規則拒絕,或者過濾規則中沒有定義對它的操作,RP都會向DR發送注冊停止報文,以停止該組播數據的注冊過程。
出於對注冊報文在傳遞過程中完整性的考慮,可以配置根據整個報文來計算校驗和。但為了減少往注冊報文中封裝數據報文的工作量並考慮到互通性,一般情況下不建議配置根據注冊報文的全部內容來計算校驗和的方式。
當接收者不再通過RP接收發往某組播組的數據(即RP不再服務於該組播組),或RP開始接收組播源沿著SPT發來的組播數據時,RP將向組播源側DR發送注冊停止報文,DR收到該報文後將停止發送封裝有組播數據的注冊報文並啟動注冊停止定時器(Register-Stop Timer)。在注冊停止定時器超時之前,DR會向RP發送一個空注冊報文(Null-Register Message,即不封裝組播數據的注冊報文):如果DR在注冊探測時間(Register_Probe_Time)內收到了來自RP的注冊停止報文,DR將刷新其注冊停止定時器;否則,DR將重新開始發送封裝有組播數據的注冊報文。
注冊停止定時器的超時時間是一個隨機值,由其它兩個時間值決定:注冊抑製時間(Register_Suppression_Time)和注冊探測時間。其具體取值範圍如下:(0.5×注冊抑製時間,1.5×注冊抑製時間)-注冊探測時間。
請在所有已配置為C-RP的路由器上配置注冊報文的過濾規則和根據注冊報文的全部內容來計算校驗和;請在所有可能成為組播源側DR的路由器上配置注冊抑製時間和注冊探測時間。
表1-24 配置組播源注冊
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置注冊報文的過濾規則 |
register-policy acl-number |
可選 缺省情況下,沒有配置注冊報文的過濾規則 |
配置根據注冊報文的全部內容來計算校驗和 |
register-whole-checksum |
可選 缺省情況下,僅根據注冊報文頭來計算校驗和 |
配置注冊抑製時間 |
register-suppression-timeout interval |
可選 缺省情況下,注冊抑製時間為60秒 |
配置注冊探測時間 |
probe-interval interval |
可選 缺省情況下,注冊探測時間為5秒 |
由於RPT不一定是路徑最短的樹,因此有必要將RPT切換為路徑最短的SPT。
缺省情況下,設備從RPT收到第一個組播數據包後便立即向SPT切換。
設備一旦建立了組播轉發表項,即使有注冊出接口,後續的組播數據報文也不會被封裝成注冊報文進行轉發。所以,在可能成為RP的交換機(即靜態RP或C-RP等)上,請不要使用參數infinity配置永遠不向SPT切換,以免導致轉發失敗。
請在所有可能成為接收者側DR的路由器上進行如下配置。
表1-25 配置RPT向SPT切換
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置RPT向SPT切換的參數 |
spt-switch-threshold infinity [ group-policy acl-number [ order order-value] ] |
可選 缺省情況下,設備從RPT收到第一個組播數據包後便立即向SPT切換 |
表1-26 雙向PIM配置任務簡介
配置任務 |
說明 |
詳細配置 |
|
使能PIM-SM |
必選 |
||
使能雙向PIM |
必選 |
||
配置RP |
配置靜態RP |
三者至少選其一,若隻配置靜態RP,則不必再配置BSR |
|
配置C-RP |
|||
使能自動RP偵聽 |
|||
全局配置C-RP定時器 |
可選 |
||
配置BSR |
配置C-BSR |
必選 |
|
配置BSR服務邊界 |
可選 |
||
全局配置C-BSR參數 |
可選 |
||
配置C-BSR定時器 |
可選 |
||
關閉自舉報文語義分片功能 |
可選 |
||
配置管理域 |
使能管理域機製 |
可選 |
|
配置管理域邊界 |
可選 |
||
配置管理域和Global域的C-BSR |
可選 |
||
配置PIM公共特性 |
可選 |
在配置雙向PIM之前,需完成以下任務:
· 配置任一單播路由協議,實現域內網絡層互通
在配置雙向PIM之前,需準備以下數據:
· 靜態RP的IP地址及表示其所服務組範圍的ACL規則
· C-RP的優先級及表示其所服務組範圍的ACL規則
· 合法C-RP的地址範圍及表示其所服務組範圍的ACL規則
· 發送宣告報文的時間間隔
· C-RP超時時間
· C-BSR的優先級
· 哈希掩碼長度
· 表示合法BSR地址範圍的ACL規則
· 自舉時間間隔
· 自舉超時時間
由於雙向PIM是在PIM-SM的基礎上實現的,因此在使能雙向PIM之前須先使能PIM-SM。在部署雙向PIM域時,建議在其所有非邊界接口上均使能PIM-SM。
表1-27 使能公網實例中的PIM-SM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
使能IP組播路由 |
multicast routing-enable |
必選 缺省情況下,IP組播路由處於關閉狀態 |
進入接口視圖 |
interface interface-type interface-number |
- |
使能PIM-SM |
pim sm |
必選 缺省情況下,PIM-SM處於關閉狀態 |
表1-28 使能VPN實例中的PIM-SM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建VPN實例,並進入VPN實例視圖 |
ip vpn-instance vpn-instance-name |
- |
配置VPN實例的RD |
route-distinguisher route-distinguisher |
必選 缺省情況下,VPN實例沒有RD |
使能IP組播路由 |
multicast routing-enable |
必選 缺省情況下,IP組播路由處於關閉狀態 |
進入接口視圖 |
interface interface-type interface-number |
- |
將接口與VPN實例進行關聯 |
ip binding vpn-instance vpn-instance-name |
必選 缺省情況下,接口隻屬於公網,未與任何VPN實例關聯 |
使能PIM-SM |
pim sm |
必選 缺省情況下,PIM-SM處於關閉狀態 |
在同一台設備的同一個VPN實例中,所有接口上所啟用的PIM模式必須相同。
· 有關ip vpn-instance、route-distinguisher和ip binding vpn-instance命令的詳細介紹,請參見“MPLS命令參考”中的“MPLS L3VPN”。
· 有關multicast routing-enable命令的詳細介紹,請參見“IP組播命令參考”中的“組播路由與轉發”。
· 係統工作模式為標準模式時,設備不支持雙向PIM。關於係統工作模式的介紹請參見“基礎配置指導”中的“設備管理”。
· 如果公網或VPN內的PIM實例使能了雙向PIM,則公網或該VPN內的隧道接口不支持三層組播。
· IRF模式下,使能雙向PIM的VPN中,VLAN 4094對應的VLAN接口、子接口編號為4094的三層以太網子接口/三層聚合子接口(例如:GE2/0/1.4094、Route-Aggregation 1.4094)均不支持三層組播。
請在雙向PIM域內的所有路由器上進行如下配置。
表1-29 使能雙向PIM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
使能雙向PIM |
bidir-pim enable |
必選 缺省情況下,雙向PIM處於關閉狀態 |
RP可以通過手工方式靜態配置,也可以通過BSR機製動態選舉。對於大型PIM網絡,配置靜態RP將會非常繁瑣。所以,通常靜態RP是作為動態選舉RP機製的備份手段,以提高網絡的健壯性,增強組播網絡的運營管理能力。
當PIM網絡中同時運行PIM-SM和雙向PIM時,請勿使一個RP同時為PIM-SM和雙向PIM工作,否則可能引起PIM路由表出錯。
當網絡內僅有一個動態RP時,通過手工配置靜態RP可以避免因單一節點故障而引起的通信中斷,同時也可以避免C-RP與BSR之間頻繁的信息交互而占用帶寬。
請在雙向PIM域內的所有路由器上進行如下配置。
表1-30 配置靜態RP
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置服務於雙向PIM的靜態RP |
static-rp rp-address [ acl-number ] [ preferred ] bidir |
必選 缺省情況下,沒有配置靜態RP |
為了讓靜態RP功能正常發揮作用,必須在所有路由器上指定相同的靜態RP地址。
雙向PIM允許將靜態RP的IP地址指定為一個實際不存在的IP地址。譬如,一條鏈路兩端接口的IP地址分別為10.1.1.1/24和10.1.1.2/24,可以將靜態RP的IP地址指定為同網段但實際不存在的一個地址,如10.1.1.100/24,該鏈路就成為了RPL。
在雙向PIM域中,可以把有意成為RP的路由器配置為C-RP。BSR通過接收來自C-RP的C-RP信息,或者接收來自其它路由器的自動RP宣告,收集C-RP信息並將其彙總為RP-Set信息,然後在全網內擴散。之後,網絡內的其它路由器根據RP-Set信息計算出特定組播組範圍所對應的RP。建議在骨幹網路由器上配置C-RP。
為了防止C-RP欺騙,需要在BSR上配置合法的C-RP地址範圍及其所服務的組播組範圍。同時由於每個C-BSR都可能成為BSR,因此必須在雙向PIM域內的所有C-BSR上都配置相同的過濾策略。
表1-31 配置C-RP
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置某接口為服務於雙向PIM的C-RP |
c-rp interface-type interface-number [ group-policy acl-number | priority priority | holdtime hold-interval | advertisement-interval adv-interval ] * bidir |
必選 缺省情況下,沒有配置C-RP |
· 在配置C-RP時,應在C-RP與雙向PIM域中的其它設備之間保留較大的通信帶寬。
· 一個RP可以為多個組播組服務,也可以為所有組播組服務。每個組播組在任意時刻,隻能由唯一的一個RP為其轉發數據,而不能由多個RP轉發數據。
自動RP宣告和發現報文的目的地址分別為組播組地址224.0.1.39和224.0.1.40。在設備上使能了自動RP偵聽功能後,該設備便能夠接收這兩種報文,並記錄報文中所攜帶的RP信息。
表1-32 使能自動RP偵聽
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
使能自動RP偵聽功能 |
auto-rp enable |
必選 缺省情況下,自動RP偵聽功能處於關閉狀態 |
為了使BSR能夠在雙向PIM域內分發RP-Set信息,C-RP必須周期性地向BSR發送宣告報文,BSR從該報文中學習RP-Set信息,並將該信息與自己的IP地址一起封裝在自舉報文中向域中的所有PIM路由器進行宣告。
C-RP在其宣告報文中封裝一個保持時間,BSR在收到該報文後,從中獲得該時間值並啟動C-RP超時定時器,如果超時後BSR仍沒有收到來自C-RP後續的宣告報文,則認為目前網絡中的C-RP失效或不可達。
請在已配置為C-RP的路由器上進行如下配置。
表1-33 全局配置C-RP定時器
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置發送宣告報文的時間間隔 |
c-rp advertisement-interval interval |
可選 缺省情況下,發送宣告報文的時間間隔為60秒 |
配置C-RP超時時間 |
c-rp holdtime interval |
可選 缺省情況下,C-RP的超時時間為150秒 |
有關雙向PIM其它定時器的相關配置,請參見“1 1.6.7 配置PIM公共定時器”。
在一個雙向PIM域中隻能有一個BSR,但需要配置至少一個C-BSR。任意一台路由器都可以被配置為C-BSR。在C-BSR之間通過自動選舉產生BSR,BSR負責在雙向PIM域中收集並發布RP信息。
C-BSR應配置在骨幹網的路由器上,在將路由器配置為C-BSR時,必須同時指定一個使能了PIM-SM的接口。C-BSR間的自動選舉機製簡單描述如下:
· 最初,每個C-BSR都認為自己是本雙向PIM域的BSR,並使用接口的IP地址作為BSR地址,發送自舉報文;
· 當某C-BSR收到其它C-BSR發來的自舉報文時,首先比較自己與後者的優先級,優先級較高者獲勝;在優先級相同的情況下,再比較自己與後者的BSR地址,擁有較大IP地址者獲勝。如果後者獲勝,則用後者的BSR地址替換自己的BSR地址,並不再認為自己是BSR;否則,保留自己的BSR地址,並繼續認為自己是BSR。
通過在路由器上配置合法BSR的地址範圍,可以對收到的自舉報文按照地址範圍進行過濾,從而防止某些惡意主機非法偽裝成BSR,以避免合法的BSR被惡意取代。必須在雙向PIM域內的所有路由器上進行相同的配置。通常針對以下兩類情況實施預防措施:
· 某些惡意主機通過偽造自舉報文以欺騙路由器,試圖更改RP映射關係。這種攻擊通常發生在邊緣路由器上,由於BSR處於網絡內部,主機在網絡外部,因此邊緣路由器通過對收到的自舉報文進行鄰居檢查和RPF檢查,丟棄不符合要求的報文,就可以避免外部網絡用戶對內部網絡BSR的攻擊;
· 網絡中某台路由器被攻擊者控製,或者有非法接入的路由器時,攻擊者可以將這樣的路由器配置為C-BSR,並使其在競爭中獲勝,從而控製網絡中RP信息的發布權。由於在被配置為C-BSR後,路由器會自動向整個網絡擴散自舉報文,而自舉報文是TTL值為1的組播報文,所以隻要其鄰居路由器不接收該自舉報文,就不會影響整個網絡。因此,通過在整個網絡的所有路由器上都配置合法BSR的地址範圍,從而丟棄合法範圍之外的自舉報文,就可以防止此類攻擊。
以上兩種預防措施可以部分地保護網絡中BSR的安全。但是如果某台合法的BSR路由器被攻擊者控製,還是可能導致問題。
表1-34 配置C-BSR
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置某接口為C-BSR |
c-bsr interface-type interface-number [ hash-length [ priority ] ] |
必選 缺省情況下,沒有配置C-BSR |
配置合法的BSR地址範圍 |
bsr-policy acl-number |
可選 缺省情況下,BSR的地址範圍不受任何限製 |
· 由於BSR與雙向PIM域中的其它設備需要交換大量信息,因此應在C-BSR與雙向PIM域中的其它設備之間保留較大的通信帶寬。
· 如果C-BSR之間通過GRE隧道相連接,則需要配置組播靜態路由,以保證到C-BSR下一跳的是Tunnel接口。有關組播靜態路由的相關配置,請參見“IP組播配置指導”中的“組播路由與轉發”。
BSR作為雙向PIM域中的管理核心,負責將收集到的RP-Set信息以自舉報文的形式發向雙向PIM域中的所有路由器。
BSR的服務邊界,即雙向PIM域的邊界。BSR是針對特定的服務範圍而言的,眾多的BSR服務邊界接口將網絡劃分成不同的雙向PIM域,自舉報文無法通過雙向PIM域的邊界,BSR服務邊界之外的路由器也不能參與本雙向PIM域內的組播轉發。
請在欲配置為BSR服務邊界的路由器上進行如下配置。
表1-35 配置BSR服務邊界
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
配置BSR的服務邊界 |
pim bsr-boundary |
必選 缺省情況下,沒有配置BSR的服務邊界 |
在一個雙向PIM域中,從眾多C-BSR中選舉出唯一的BSR。雙向PIM域內的C-RP向BSR發送宣告報文,由BSR彙總為RP-Set,並向本雙向PIM域內的所有路由器進行宣告。所有路由器都使用統一的哈希算法,得到特定組播組所對應RP的地址。
請在已配置為C-BSR的路由器上進行如下配置。
表1-36 全局配置C-BSR參數
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置哈希掩碼長度 |
c-bsr hash-length hash-length |
可選 缺省情況下,哈希掩碼長度為30 |
配置C-BSR的優先級 |
c-bsr priority priority |
可選 缺省情況下,C-BSR的優先級為64 |
哈希掩碼長度和C-BSR的優先級可以在全局、管理域和Global域這三種範圍內進行配置:
· 如果在管理域或Global域下進行了配置,則取其配置值;
· 如果未在管理域或Global域下進行配置,則取相應的全局值。
有關管理域和Global域C-BSR參數的相關配置,請參見“1.4.7 3. 配置管理域和Global域的C-BSR”。
當某C-BSR競選成為BSR後,它會通過自舉報文向其所服務的區域以組播方式發送自己的IP地址和RP-Set信息。BSR以自舉時間間隔周期性地向網絡發送自舉報文,收到該報文的C-BSR會在自舉超時時間內將其保持,此時BSR選舉過程暫停;當自舉超時時間超時後,C-BSR之間會觸發新一輪的BSR選舉過程。
請在已配置為C-BSR的路由器上進行如下配置。
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置自舉時間間隔 |
c-bsr interval interval |
可選 缺省取值請參見表後的說明 |
配置自舉超時時間 |
c-bsr holdtime interval |
可選 缺省取值請參見表後的說明 |
關於自舉時間間隔的取值:
· 如果沒有進行手工配置,則其取值由如下公式決定:自舉時間間隔=(自舉超時時間-10)÷2。缺省情況下,自舉超時時間為130秒,則自舉時間間隔的缺省值=(130-10)÷2=60(秒)。
· 如果進行了手工配置,則取配置值。
關於自舉超時時間的取值:
· 如果沒有進行手工配置,則其取值由如下公式決定:自舉超時時間=自舉時間間隔×2+10。缺省情況下,自舉時間間隔為60秒,則自舉超時時間的缺省值=60×2+10=130(秒)。
· 如果進行了手工配置,則取配置值。
配置時,應保證自舉時間間隔小於自舉超時時間。
BSR周期性地向所在雙向PIM域發送自舉報文以通告RP-Set信息。當RP-Set信息較少時,自舉報文被封裝在一個IP報文中發送出去;而當RP-Set信息較多時,自舉報文的大小可能超過接口的MTU值,從而觸發其在IP層的分片。在這種情況下,一個IP分片的丟失就會導致整個自舉報文都被丟棄。
自舉報文語義分片功能可以解決上述問題:當自舉報文大於接口MTU時,會被分解為多個自舉報文分片。非BSR收到自舉報文分片後,若發現某組範圍對應的RP信息都在這一個分片中,便立即更新該組範圍對應的RP-Set;若發現某組範圍映射的RP信息被分在了多個分片中,則待收齊了這些分片後再更新該組範圍對應的RP-Set。這樣,由於不同分片所含組範圍對應的RP信息不同,因此個別分片的丟失隻影響該分片所含組範圍對應的RP信息,而不會導致整個自舉報文都被丟棄。
自舉報文語義分片功能是缺省使能的,但由於不支持該功能的設備會將自舉報文分片當作完整的自舉報文處理,從而導致其學到的RP-Set信息不完整,因此當PIM-SM域中存在此類設備時,請在已配置為C-BSR的路由器上關閉本功能。
表1-38 關閉自舉報文語義分片功能
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
關閉自舉報文語義分片功能 |
undo bsm-fragment enable |
必選 缺省情況下,自舉報文語義分片功能處於使能狀態 |
通常,BSR根據其BSR接口的MTU值對自舉報文進行語義分片;而對由於新學到PIM鄰居而觸發的自舉報文發送,則根據發送接口的MTU值進行語義分片。
在非管理域機製下,一個雙向PIM域中隻有唯一的BSR,整個網絡都在該BSR的管理範圍之內。為了更有針對性地管理,可以將整個雙向PIM域劃分為多個管理域:每個管理域中各維護一個BSR,服務於特定範圍的組播組;而Global域中也維護一個BSR,為所有剩餘的組播組提供服務。
在配置管理域各項功能之前,必須先使能管理域機製。
請在雙向PIM域內的所有路由器上進行如下配置。
表1-39 使能管理域機製
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
使能管理域機製 |
c-bsr admin-scope |
必選 缺省情況下,管理域機製處於關閉狀態 |
在管理域機製中,各管理域的邊界由ZBR構成,每個管理域各維護一個BSR,服務於特定範圍的組播組,屬於此範圍的組播協議報文(如斷言報文、BSR自舉報文等)無法通過管理域邊界。
請在欲配置為ZBR的路由器上進行如下配置。
表1-40 配置管理域邊界
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
配置組播轉發邊界 |
multicast boundary group-address { mask | mask-length } |
必選 缺省情況下,沒有配置組播轉發邊界 |
通過multicast boundary命令中的參數group-address { mask | mask-length }可指定管理域所服務的組播組範圍,有效的組範圍在239.0.0.0/8之內。有關multicast boundary命令的詳細介紹,請參見“IP組播命令參考”中的“組播路由與轉發”。
在應用了管理域機製的網絡中,從眾多C-BSR中選舉出針對不同組播組的BSR。網絡內的C-RP隻向對應的BSR發送宣告報文,由BSR彙總為RP-Set,並向其所服務管理域內的所有路由器進行宣告。所有路由器都使用統一的哈希算法,得到特定組播組所對應RP的地址。
請為管理域和Global域分別配置其各自的C-BSR。
配置管理域的C-BSR
請在欲配置為管理域C-BSR的路由器上進行如下配置。
表1-41 配置管理域的C-BSR
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置管理域的C-BSR |
c-bsr group group-address { mask | mask-length } [ hash-length hash-length | priority priority ] * |
必選 缺省情況下,沒有配置管理域的C-BSR |
通過c-bsr group命令中的參數group-address { mask | mask-length }可指定C-BSR所服務的組播組範圍,有效的組範圍在239.0.0.0/8之內。
配置Global域的C-BSR
請在欲配置為Global域C-BSR的路由器上進行如下配置。
表1-42 配置Global域的C-BSR
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置Global域的C-BSR |
c-bsr global [ hash-length hash-length | priority priority ] * |
必選 缺省情況下,沒有配置Global域的C-BSR |
哈希掩碼長度和C-BSR的優先級可以在全局、管理域和Global域這三種範圍內進行配置:
· 如果在管理域或Global域下進行了配置,則取其配置值;
· 如果未在管理域或Global域下進行配置,則取相應的全局值。
有關全局C-BSR參數的相關配置,請參見“1.4.6 3. 全局配置C-BSR參數”。
PIM-SSM模型需要IGMPv3的支持,因此應確保連接有接收者的PIM路由器上使能了IGMPv3。
表1-43 PIM-SSM配置任務簡介
配置任務 |
說明 |
詳細配置 |
使能PIM-SM |
必選 |
|
配置SSM組播組範圍 |
可選 |
|
配置PIM公共特性 |
可選 |
在配置PIM-SSM之前,需完成以下任務:
· 配置任一單播路由協議,實現域內網絡層互通
在配置PIM-SSM之前,需準備以下數據:
· SSM組播組範圍
由於PIM-SSM是通過PIM-SM的部分子集功能實現的,因此在配置PIM-SSM之前須先使能PIM-SM。在部署PIM-SSM域時,建議在其所有非邊界接口上均使能PIM-SM。
表1-44 使能公網實例中的PIM-SM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
使能IP組播路由 |
multicast routing-enable |
必選 缺省情況下,IP組播路由處於關閉狀態 |
進入接口視圖 |
interface interface-type interface-number |
- |
使能PIM-SM |
pim sm |
必選 缺省情況下,PIM-SM處於關閉狀態 |
· 係統工作在標準模式下時,如果需要配置多實例的PIM-SM,則必須配置保留VLAN。關於係統工作模式的介紹請參見“基礎配置指導”中的“設備管理”。關於保留VLAN的詳細配置和命令,請參見“MPLS配置指導”和“MPLS命令參考”中的“MPLS L3VPN”。
· 在同一台設備的同一個VPN實例中,所有接口上所啟用的PIM模式必須相同。
表1-45 使能VPN實例中的PIM-SM
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
創建VPN實例,並進入VPN實例視圖 |
ip vpn-instance vpn-instance-name |
- |
配置VPN實例的RD |
route-distinguisher route-distinguisher |
必選 缺省情況下,VPN實例沒有RD |
使能IP組播路由 |
multicast routing-enable |
必選 缺省情況下,IP組播路由處於關閉狀態 |
進入接口視圖 |
interface interface-type interface-number |
- |
將接口與VPN實例進行關聯 |
ip binding vpn-instance vpn-instance-name |
必選 缺省情況下,接口隻屬於公網,未與任何VPN實例關聯 |
使能PIM-SM |
pim sm |
必選 缺省情況下,PIM-SM處於關閉狀態 |
· 有關ip vpn-instance、route-distinguisher和ip binding vpn-instance命令的詳細介紹,請參見“MPLS命令參考”中的“MPLS L3VPN”。
· 有關multicast routing-enable命令的詳細介紹,請參見“IP組播命令參考”中的“組播路由與轉發”。
在把來自組播源的信息傳遞給接收者的過程中,是采用PIM-SSM模型還是PIM-SM模型,這取決於接收者訂閱通道(S,G)中的組播組是否在SSM組播組範圍之內,所有使能了PIM-SM的接口將會認為屬於該範圍內的組播組采用了PIM-SSM模型。
請在PIM-SSM域內的所有路由器上進行如下配置。
表1-46 配置SSM組播組範圍
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置SSM組播組的範圍 |
ssm-policy acl-number |
可選 缺省情況下,SSM組播組的範圍為232.0.0.0/8 |
· 應確保域內所有路由器上配置的SSM組播組地址範圍都一致,否則組播信息將無法通過SSM模型進行傳輸。
· 如果某組播組屬於SSM組播組範圍,但該組成員使用IGMPv1或IGMPv2發送加入報文,則設備不會觸發(*,G)加入報文。
對於本節中那些既可在PIM視圖、又可在接口視圖下進行配置的功能或參數來說:
· 在PIM視圖下所作的配置對所有接口生效,在接口視圖下所作的配置僅對當前接口生效;
· 如果在這兩個視圖下對某功能或參數均進行了配置,則不論配置先後,接口視圖下的配置將被優先采用。
表1-47 PIM公共特性配置任務簡介
配置任務 |
說明 |
詳細配置 |
配置組播數據過濾器 |
可選 |
|
配置Hello報文過濾器 |
可選 |
|
配置Hello報文選項 |
可選 |
|
配置剪枝延遲時間 |
可選 |
|
配置PIM公共定時器 |
可選 |
|
配置加入/剪枝報文規格 |
可選 |
|
配置PIM與BFD聯動 |
可選 |
在配置PIM公共特性之前,需完成以下任務:
· 配置任一單播路由協議,實現域內網絡層互通
· 配置PIM-DM(或PIM-SM、PIM-SSM)
在配置PIM公共特性之前,需準備以下數據:
· 表示組播數據過濾規則的ACL規則
· 表示合法Hello報文的源地址範圍的ACL規則
· 競選DR的優先級(全局值/接口值)
· 保持PIM鄰居可達狀態的時間(全局值/接口值)
· 發送剪枝報文的延遲時間(全局值/接口值)
· 剪枝否決時間(全局值/接口值)
· 剪枝延遲時間
· 發送Hello報文的時間間隔(全局值/接口值)
· 發送Hello報文的最大延遲時間(接口值)
· 保持斷言狀態的時間(全局值/接口值)
· 發送加入/剪枝報文的時間間隔(全局值/接口值)
· 保持加入/剪枝狀態的時間(全局值/接口值)
· 組播源生存時間
· 加入/剪枝報文的最大長度
· 加入/剪枝報文中(S,G)表項的最大數量
無論在PIM-DM還是PIM-SM域內,各路由器都可以對流經自己的組播數據進行檢查,通過比較是否符合過濾規則,從而決定是否繼續轉發組播數據。也就是說PIM域內的路由器能夠成為組播數據的過濾器。過濾器的存在一方麵有助於實現信息流量控製,另一方麵可以在安全性方麵限定下遊接收者能夠獲得的信息。
表1-48 配置組播數據過濾器
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置組播數據過濾器 |
source-policy acl-number |
必選 缺省情況下,沒有配置組播數據過濾器 |
· 通常,過濾器的位置離組播源距離越近,過濾影響越明顯。
· 過濾器不僅過濾獨立的組播數據,還過濾封裝在注冊報文中的組播數據。
隨著PIM協議的推廣和應用,對其安全性的要求也越來越高。建立正確的PIM鄰居是PIM協議安全應用的前提。如果在接口上指定了合法Hello報文的源地址範圍,便能夠保證PIM鄰居的正確建立,從而有效防止各種PIM協議報文攻擊,提高設備對PIM協議報文處理的安全性。
表1-49 配置Hello報文過濾器
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
配置合法Hello報文的源地址範圍 |
pim neighbor-policy acl-number |
必選 缺省情況下,Hello報文的源地址範圍不受任何限製 |
當Hello報文過濾器的配置生效後,對於之前已建立的PIM鄰居,若由於其Hello報文被過濾而導致無法收到後續的Hello報文,將會在老化超時後被自動刪除。
無論在PIM-DM域還是在PIM-SM域內,各路由器之間發送的Hello報文都包含很多可供配置的選項,對各選項的介紹如下:
· DR_Priority(僅用於PIM-SM):表示競選DR的優先級,優先級高的設備被選舉為DR。可以在與組播源或接收者直連的共享網絡中的所有路由器上都配置此參數。
· Holdtime:表示保持PIM鄰居可達狀態的時間,若超時後仍沒有收到Hello報文,則認為PIM鄰居失效或不可達。
· LAN_Prune_Delay:表示在共享網絡上傳遞剪枝報文的延遲時間,該選項由三部分組成:LAN-delay(發送剪枝報文的延遲時間)、Override-interval(剪枝否決時間)和禁止加入報文抑製能力。當共享網段內各PIM路由器的LAN-delay或Override-interval不同時,取其中最大的值;當要禁止加入報文抑製能力時,須在共享網段內的所有PIM路由器上都禁止該能力。
LAN-delay表示路由器從收到下遊路由器發來的剪枝報文到繼續向上遊路由器發送剪枝報文的延遲時間,Override-interval則表示允許下遊路由器否決剪枝動作的時間。路由器在收到下遊路由器發來的剪枝報文後並不立即執行剪枝動作,而是仍將當前的轉發狀態保持LAN-delay+Override-interval時間。如果下遊路由器需要繼續接收組播數據,則必須在Override-interval時間內向上遊路由器發送加入報文以否決這個剪枝動作,這就稱為剪枝否決;如果Override-interval時間超時後未收到任何加入報文,上遊路由器就會在LAN-delay+Override-interval時間超時後執行剪枝動作。
PIM路由器發送Hello報文時,會生成一個隨機數Generation ID並攜帶在該報文中。一台PIM路由器的Generation ID一般不會變化,除非該路由器的狀態發生了改變(如接口剛使能了PIM或設備進行了重啟),此時,當其開始或重新開始發送Hello報文時,會生成一個新的Generation ID。這樣,如果PIM路由器發現其上遊鄰居發來的Hello報文中Generation ID發生了改變,就會認為該鄰居的狀態已經丟失或其上遊鄰居已經改變,從而觸發發送加入報文以進行狀態刷新。
在禁止加入報文抑製能力(即使能鄰居跟蹤)時,應在共享網段的所有PIM路由器上都禁止該能力,否則上遊路由器無法跟蹤每台下遊路由器的加入報文。
表1-50 全局配置Hello報文選項
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置競選DR的優先級 |
hello-option dr-priority priority |
可選 缺省情況下,競選DR的優先級為1 |
配置保持PIM鄰居可達狀態的時間 |
hello-option holdtime interval |
可選 缺省情況下,保持PIM鄰居可達狀態的時間為105秒 |
配置發送剪枝報文的延遲時間 |
hello-option lan-delay interval |
可選 缺省情況下,發送剪枝報文的延遲時間為500毫秒 |
配置剪枝否決時間 |
hello-option override-interval interval |
可選 缺省情況下,剪枝否決時間為2500毫秒 |
禁止加入報文抑製能力 |
hello-option neighbor-tracking |
必選 缺省情況下,加入報文抑製能力處於使能狀態 |
表1-51 在接口上配置Hello報文選項
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
配置競選DR的優先級 |
pim hello-option dr-priority priority |
可選 缺省情況下,競選DR的優先級為1 |
配置保持PIM鄰居可達狀態的時間 |
pim hello-option holdtime interval |
可選 缺省情況下,保持PIM鄰居可達狀態的時間為105秒 |
配置發送剪枝報文的延遲時間 |
pim hello-option lan-delay interval |
可選 缺省情況下,發送剪枝報文的延遲時間為500毫秒 |
配置剪枝否決時間 |
pim hello-option override-interval interval |
可選 缺省情況下,剪枝否決時間為2500毫秒 |
禁止加入報文抑製能力 |
pim hello-option neighbor-tracking |
必選 缺省情況下,加入報文抑製能力處於使能狀態 |
配置不接受無Generation ID的Hello報文 |
pim require-genid |
必選 缺省情況下,接受無Generation ID的Hello報文 |
剪枝延遲時間(Prune Delay)的作用是使共享網段中的上遊路由器在收到下遊路由器發來的剪枝報文後不立即執行剪枝動作,而將當前的轉發狀態繼續保持Prune Delay時間:如果在該時間內收到了下遊路由器發來的加入報文,則否決這個剪枝動作;否則,便執行這個剪枝動作。
表1-52 配置剪枝延遲時間
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置剪枝延遲時間 |
prune delay interval |
可選 缺省情況下,剪枝延遲時間等於剪枝未決時間(Prune Pending Timer,缺省為3秒) |
PIM路由器通過周期性地發送Hello報文,以發現PIM鄰居,並維護各路由器之間的PIM鄰居關係。
為了避免多個PIM路由器同時發送Hello報文而導致衝突,當PIM路由器在收到Hello報文時,將延遲一段時間再發送Hello報文,該時間值為小於“觸發Hello報文的最大延遲時間”的一個隨機值。
PIM路由器通過周期性地向其上遊路由器發送加入/剪枝報文以更新狀態,在該報文中攜帶有保持時間,上遊路由器為被剪枝的下遊接口設置保持加入/剪枝狀態定時器。
在斷言中落選的路由器將會剪掉其下遊的轉發接口,並把這種斷言狀態保持一段時間。超時後,落選的路由器會重新恢複轉發組播數據。
當路由器沒有收到來自組播源S的後續組播數據時,不會立即刪除(S,G)表項,而是將其維持一段時間後再刪除,這段時間就稱為組播源的生存時間。
表1-53 全局配置PIM公共定時器
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置發送Hello報文的時間間隔 |
timer hello interval |
可選 缺省情況下,發送Hello報文的時間間隔為30秒 |
配置發送加入/剪枝報文的時間間隔 |
timer join-prune interval |
可選 缺省情況下,發送加入/剪枝報文的時間間隔為60秒 |
配置保持加入/剪枝狀態的時間 |
holdtime join-prune interval |
可選 缺省情況下,保持加入/剪枝狀態的時間為210秒 |
配置保持斷言狀態的時間 |
holdtime assert interval |
可選 缺省情況下,保持斷言狀態的時間為180秒 |
配置組播源生存時間 |
source-lifetime interval |
可選 缺省情況下,組播源的生存時間為210秒 |
表1-54 在接口上配置PIM公共定時器
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
配置發送Hello報文的時間間隔 |
pim timer hello interval |
可選 缺省情況下,發送Hello報文的時間間隔為30秒 |
配置觸發Hello報文的最大延遲時間 |
pim triggered-hello-delay interval |
可選 缺省情況下,觸發Hello報文的最大延遲時間為5秒 |
配置發送加入/剪枝報文的時間間隔 |
pim timer join-prune interval |
可選 缺省情況下,發送加入/剪枝報文的時間間隔為60秒 |
配置保持加入/剪枝狀態的時間 |
pim holdtime join-prune interval |
可選 缺省情況下,保持加入/剪枝狀態的時間為210秒 |
配置保持斷言狀態的時間 |
pim holdtime assert interval |
可選 缺省情況下,保持斷言狀態的時間為180秒 |
如果網絡沒有特殊要求,建議采用缺省值。
如果加入/剪枝報文的尺寸較大,則丟失一個報文將導致較多信息的遺失;如果加入/剪枝報文的尺寸較小,則單個報文的丟失所產生的影響也將降低。
通過控製加入/剪枝報文中(S,G)表項的數目,可以有效減少單位時間內發送的(S,G)表項數量。
表1-55 配置加入/剪枝報文規格
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入公網實例或VPN實例PIM視圖 |
pim [ vpn-instance vpn-instance-name ] |
- |
配置加入/剪枝報文的最大長度 |
jp-pkt-size packet-size |
可選 缺省情況下,加入/剪枝報文的最大長度為8100字節 |
配置加入/剪枝報文中(S,G)表項的最大數量 |
jp-queue-size queue-size |
可選 缺省情況下,加入/剪枝報文中(S,G)表項的最大數量為1020個 |
PIM借助Hello報文在共享網段中選舉出DR,使其成為該網段中組播數據的唯一轉發者。當DR出現故障時,隻有待其老化後才會觸發新的DR選舉過程,這個過程通常比較長。為了實現DR的快速切換,可以在共享網段的PIM鄰居之間引入BFD機製進行鏈路狀態的快速檢測。通過在共享網段內的所有PIM路由器上都使能PIM與BFD聯動功能,可以使這些PIM鄰居快速感知DR故障並重新選舉DR。
表1-1 配置PIM與BFD聯動
操作 |
命令 |
說明 |
進入係統視圖 |
system-view |
- |
進入接口視圖 |
interface interface-type interface-number |
- |
使能PIM與BFD聯動功能 |
pim bfd enable |
必選 缺省情況下,PIM與BFD聯動功能處於關閉狀態 |
· 隻有在接口上先使能了PIM-DM或PIM-SM,本配置才能生效。
· 有關BFD的詳細介紹,請參見“可靠性配置指導”中的“BFD”。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後PIM的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下執行reset命令可以清除PIM統計信息。
表1-56 PIM顯示和維護
操作 |
命令 |
查看PIM-SM域中的BSR信息,以及本地配置並生效的C-RP信息 |
display pim [ all-instance | vpn-instance vpn-instance-name ] bsr-info [ | { begin | exclude | include } regular-expression ] |
查看PIM所使用的單播路由信息 |
display pim [ all-instance | vpn-instance vpn-instance-name ] claimed-route [ source-address ] [ | { begin | exclude | include } regular-expression ] |
查看PIM控製報文的數量 |
display pim [ all-instance | vpn-instance vpn-instance-name ] control-message counters [ message-type { probe | register | register-stop } | [ interface interface-type interface-number | message-type { assert | bsr | crp | graft | graft-ack | hello | join-prune | state-refresh } ] * ] [ | { begin | exclude | include } regular-expression ] |
查看雙向PIM的DF信息 |
display pim [ all-instance | vpn-instance vpn-instance-name ] df-info [ rp-address ] [ | { begin | exclude | include } regular-expression ] |
查看尚未確認的PIM-DM嫁接信息 |
display pim [ all-instance | vpn-instance vpn-instance-name ] grafts [ | { begin | exclude | include } regular-expression ] |
查看接口上的PIM信息 |
display pim [ all-instance | vpn-instance vpn-instance-name ] interface [ interface-type interface-number ] [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看待發送的加入/剪枝報文信息 |
display pim [ all-instance | vpn-instance vpn-instance-name ] join-prune mode { sm [ flags flag-value ] | ssm } [ interface interface-type interface-number | neighbor neighbor-address ] * [ verbose ] [ | { begin | exclude | include } regular-expression ] |
查看PIM鄰居信息 |
display pim [ all-instance | vpn-instance vpn-instance-name ] neighbor [ interface interface-type interface-number | neighbor-address | verbose ] * [ | { begin | exclude | include } regular-expression ] |
查看PIM路由表的內容 |
display pim [ all-instance | vpn-instance vpn-instance-name ] routing-table [ group-address [ mask { mask-length | mask } ] | source-address [ mask { mask-length | mask } ] | incoming-interface [ interface-type interface-number | register ] | outgoing-interface { include | exclude | match } { interface-type interface-number | register } | mode mode-type | flags flag-value | fsm ] * [ | { begin | exclude | include } regular-expression ] |
查看RP的信息 |
display pim [ all-instance | vpn-instance vpn-instance-name ] rp-info [ group-address ] [ | { begin | exclude | include } regular-expression ] |
重置PIM控製報文計數器 |
reset pim [ all-instance | vpn-instance vpn-instance-name ] control-message counters [ interface interface-type interface-number ] |
缺省情況下,以太網接口、VLAN接口及聚合接口處於DOWN狀態。如果要對這些接口進行配置,請先使用undo shutdown命令使接口狀態處於UP狀態。
· 接收者通過組播方式接收視頻點播信息,不同組織的接收者群體組成末梢網絡,每個末梢網絡中都存在至少一個接收者,整個PIM域采用DM方式。
· Host A和Host C為兩個末梢網絡中的組播信息接收者;Switch D通過Vlan-interface300接口與組播源(Source)所在的網絡連接;Switch A通過Vlan-interface100接口連接末梢網絡N1,通過Vlan-interface103接口連接Switch D;Switch B和Switch C通過各自的Vlan-interface200接口連接末梢網絡N2,分別通過Vlan-interface101和Vlan-interface102接口連接Switch D。
· Switch A與末梢網絡N1之間運行IGMPv2;Switch B和Switch C與末梢網絡N2之間也運行IGMPv2。
圖1-14 PIM-DM典型配置組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
10.110.1.1/24 |
Switch D |
Vlan-int300 |
10.110.5.1/24 |
|
Vlan-int103 |
192.168.1.1/24 |
|
Vlan-int103 |
192.168.1.2/24 |
Switch B |
Vlan-int200 |
10.110.2.1/24 |
|
Vlan-int101 |
192.168.2.2/24 |
|
Vlan-int101 |
192.168.2.1/24 |
|
Vlan-int102 |
192.168.3.2/24 |
Switch C |
Vlan-int200 |
10.110.2.2/24 |
|
|
|
|
Vlan-int102 |
192.168.3.1/24 |
|
|
|
配置IP地址和單播路由協議
請按照圖1-14配置各接口的IP地址和子網掩碼,具體配置過程略。
配置PIM-DM域內的各交換機之間采用OSPF協議進行互連,確保PIM-DM域內部在網絡層互通,並且各交換機之間能夠借助單播路由協議實現動態路由更新,具體配置過程略。
使能IP組播路由,並使能PIM-DM和IGMP
# 在Switch A上使能IP組播路由,在各接口上使能PIM-DM,並在其連接末梢網絡的接口Vlan-interface100上使能IGMP。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] pim dm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 103
[SwitchA-Vlan-interface103] pim dm
[SwitchA-Vlan-interface103] quit
Switch B和Switch C的配置與Switch A相似,配置過程略。
# 在Switch D上使能IP組播路由,並在各接口上使能PIM-DM。
<SwitchD> system-view
[SwitchD] multicast routing-enable
[SwitchD] interface vlan-interface 300
[SwitchD-Vlan-interface300] pim dm
[SwitchD-Vlan-interface300] quit
[SwitchD] interface vlan-interface 103
[SwitchD-Vlan-interface103] pim dm
[SwitchD-Vlan-interface103] quit
[SwitchD] interface vlan-interface 101
[SwitchD-Vlan-interface101] pim dm
[SwitchD-Vlan-interface101] quit
[SwitchD] interface vlan-interface 102
[SwitchD-Vlan-interface102] pim dm
[SwitchD-Vlan-interface102] quit
檢驗配置效果
通過使用display pim interface命令可以查看交換機接口上PIM的配置和運行情況。例如:
# 查看Switch D上PIM的配置信息。
[SwitchD] display pim interface
VPN-Instance: public net
Interface NbrCnt HelloInt DR-Pri DR-Address
Vlan300 0 30 1 10.110.5.1 (local)
Vlan103 1 30 1 192.168.1.2 (local)
Vlan101 1 30 1 192.168.2.2 (local)
Vlan102 1 30 1 192.168.3.2 (local)
通過使用display pim neighbor命令可以查看交換機之間的PIM鄰居關係。例如:
# 查看Switch D上PIM的鄰居關係信息。
[SwitchD] display pim neighbor
VPN-Instance: public net
Total Number of Neighbors = 3
Neighbor Interface Uptime Expires Dr-Priority Mode
192.168.1.1 Vlan103 00:02:22 00:01:27 1
192.168.2.1 Vlan101 00:00:22 00:01:29 3
192.168.3.1 Vlan102 00:00:23 00:01:31 5
假如Host A需要接收組播組G(225.1.1.1)的信息,當組播源S(10.110.5.100/24)向組播組G發送組播數據時,通過擴散生成SPT,SPT路徑中各交換機(Switch A和Switch D)上都存在(S,G)表項,Host A向Switch A發送IGMP報告以加入組播組G,在Switch A上生成(*,G)表項。通過使用display pim routing-table命令可以查看交換機的PIM路由表信息。例如:
# 查看Switch A上的PIM路由表信息。
[SwitchA] display pim routing-table
VPN-Instance: public net
Total 1 (*, G) entry; 1 (S, G) entry
(*, 225.1.1.1)
Protocol: pim-dm, Flag: WC
UpTime: 00:04:25
Upstream interface: NULL
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:04:25, Expires: never
(10.110.5.100, 225.1.1.1)
Protocol: pim-dm, Flag: ACT
UpTime: 00:06:14
Upstream interface: Vlan-interface103
Upstream neighbor: 192.168.1.2
RPF prime neighbor: 192.168.1.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: pim-dm, UpTime: 00:04:25, Expires: never
# 查看Switch D上的PIM路由表信息。
[SwitchD] display pim routing-table
VPN-Instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 225.1.1.1)
Protocol: pim-dm, Flag: LOC ACT
UpTime: 00:03:27
Upstream interface: Vlan-interface300
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 2
1: Vlan-interface103
Protocol: pim-dm, UpTime: 00:03:27, Expires: never
2: Vlan-interface102
Protocol: pim-dm, UpTime: 00:03:27, Expires: never
· 接收者通過組播方式接收視頻點播信息,不同組織的接收者群體組成末梢網絡,每個末梢網絡中都存在至少一個接收者,整個PIM域采用SM非管理域方式。
· Host A和Host C為兩個末梢網絡中的組播信息接收者;Switch D通過Vlan-interface300接口與組播源(Source)所在網絡連接;Switch A通過Vlan-interface100接口連接末梢網絡N1,通過Vlan-interface101接口和Vlan-interface102接口分別連接Switch D和Switch E;Switch B和Switch C通過各自的Vlan-interface200接口連接末梢網絡N2,分別通過Vlan-interface103和Vlan-interface104接口連接Switch E。
· 將Switch D的Vlan-interface105接口和Switch E的Vlan-interface102接口都配置為C-BSR和C-RP,其中Switch E上C-BSR的優先級較高。C-RP所服務的組播組範圍為225.1.1.0/24,通過改變哈希掩碼長度使此範圍內的組地址間隔映射到這兩個C-RP上。
· Switch A與末梢網絡N1之間運行IGMPv2;Switch B和Switch C與末梢網絡N2之間也運行IGMPv2。
圖1-15 PIM-SM非管理域配置組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
10.110.1.1/24 |
Switch D |
Vlan-int300 |
10.110.5.1/24 |
|
Vlan-int101 |
192.168.1.1/24 |
|
Vlan-int101 |
192.168.1.2/24 |
|
Vlan-int102 |
192.168.9.1/24 |
|
Vlan-int105 |
192.168.4.2/24 |
Switch B |
Vlan-int200 |
10.110.2.1/24 |
Switch E |
Vlan-int104 |
192.168.3.2/24 |
|
Vlan-int103 |
192.168.2.1/24 |
|
Vlan-int103 |
192.168.2.2/24 |
Switch C |
Vlan-int200 |
10.110.2.2/24 |
|
Vlan-int102 |
192.168.9.2/24 |
|
Vlan-int104 |
192.168.3.1/24 |
|
Vlan-int105 |
192.168.4.1/24 |
配置IP地址和單播路由協議
請按照圖1-15配置各接口的IP地址和子網掩碼,具體配置過程略。
配置PIM-SM域內的各交換機之間采用OSPF協議進行互連,確保PIM-SM域內部在網絡層互通,並且各交換機之間能夠借助單播路由協議實現動態路由更新,具體配置過程略。
使能IP組播路由,並使能PIM-SM和IGMP
# 在Switch A上使能IP組播路由,在各接口上使能PIM-SM,並在其連接末梢網絡的接口Vlan-interface100上使能IGMP。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 102
[SwitchA-Vlan-interface102] pim sm
[SwitchA-Vlan-interface102] quit
Switch B和Switch C的配置與Switch A相似,Switch D和Switch E除了不需要在相應接口上使能IGMP外,其它的配置也與Switch A相似,配置過程略。
配置C-BSR和C-RP
# 在Switch D上配置RP通告的服務範圍,以及C-BSR和C-RP的位置,並指定哈希掩碼長度為32,C-BSR的優先級為10。
<SwitchD> system-view
[SwitchD] acl number 2005
[SwitchD-acl-basic-2005] rule permit source 225.1.1.0 0.0.0.255
[SwitchD-acl-basic-2005] quit
[SwitchD] pim
[SwitchD-pim] c-bsr vlan-interface 105 32 10
[SwitchD-pim] c-rp vlan-interface 105 group-policy 2005
[SwitchD-pim] quit
# 在Switch E上配置RP通告的服務範圍,以及C-BSR和C-RP的位置,並指定哈希掩碼長度為32,C-BSR的優先級為20。
<SwitchE> system-view
[SwitchE] acl number 2005
[SwitchE-acl-basic-2005] rule permit source 225.1.1.0 0.0.0.255
[SwitchE-acl-basic-2005] quit
[SwitchE] pim
[SwitchE-pim] c-bsr vlan-interface 102 32 20
[SwitchE-pim] c-rp vlan-interface 102 group-policy 2005
[SwitchE-pim] quit
檢驗配置效果
通過使用display pim interface命令可以查看交換機接口上PIM的配置和運行情況。例如:
# 查看Switch A上PIM的配置信息。
[SwitchA] display pim interface
VPN-Instance: public net
Interface NbrCnt HelloInt DR-Pri DR-Address
Vlan100 0 30 1 10.110.1.1 (local)
Vlan101 1 30 1 192.168.1.2
Vlan102 1 30 1 192.168.9.2
通過使用display pim bsr-info命令可以查看交換機上BSR選舉的信息,以及本地配置並生效的C-RP信息。例如:
# 查看Switch A上的BSR信息,以及本地配置並生效的C-RP信息。
[SwitchA] display pim bsr-info
VPN-Instance: public net
Elected BSR Address: 192.168.9.2
Priority: 20
Hash mask length: 32
State: Accept Preferred
Scope: Not scoped
Uptime: 00:40:40
Expires: 00:01:42
# 查看Switch D上的BSR信息,以及本地配置並生效的C-RP信息。
[SwitchD] display pim bsr-info
VPN-Instance: public net
Elected BSR Address: 192.168.9.2
Priority: 20
Hash mask length: 32
State: Accept Preferred
Scope: Not scoped
Uptime: 00:05:26
Expires: 00:01:45
Candidate BSR Address: 192.168.4.2
Priority: 10
Hash mask length: 32
State: Candidate
Scope: Not scoped
Candidate RP: 192.168.4.2(Vlan-interface105)
Priority: 192
HoldTime: 150
Advertisement Interval: 60
Next advertisement scheduled at: 00:00:34
# 查看Switch E上的BSR信息,以及本地配置並生效的C-RP信息。
[SwitchE] display pim bsr-info
VPN-Instance: public net
Elected BSR Address: 192.168.9.2
Priority: 20
Hash mask length: 32
State: Elected
Scope: Not scoped
Uptime: 00:01:18
Next BSR message scheduled at: 00:01:52
Candidate BSR Address: 192.168.9.2
Priority: 20
Hash mask length: 32
State: Elected
Scope: Not scoped
Candidate RP: 192.168.9.2(Vlan-interface102)
Priority: 192
HoldTime: 150
Advertisement Interval: 60
Next advertisement scheduled at: 00:00:48
通過使用display pim rp-info命令可以查看交換機上獲取的RP信息。例如:
# 查看Switch A上的RP信息。
[SwitchA] display pim rp-info
VPN-Instance: public net
PIM-SM BSR RP information:
Group/MaskLen: 225.1.1.0/24
RP: 192.168.4.2
Priority: 192
HoldTime: 150
Uptime: 00:51:45
Expires: 00:02:22
RP: 192.168.9.2
Priority: 192
HoldTime: 150
Uptime: 00:51:45
Expires: 00:02:22
假如Host A需要接收組播組G(225.1.1.0)的信息,由於根據哈希算法得出G對應的RP為Switch E,因此Switch A和Switch E之間會生成RPT。當組播源S(10.110.5.100/24)向RP發起注冊後,Switch D和Switch E之間會生成SPT。當Switch A收到組播數據後立即執行從RPT到SPT的切換。RPT路徑中的交換機(Switch A和Switch E)上存在(*,G)表項,而SPT路徑中的交換機(Switch A和Switch D)上存在(S,G)表項,通過使用display pim routing-table命令可以查看交換機的PIM路由表信息。例如:
# 查看Switch A上的PIM路由表信息。
[SwitchA] display pim routing-table
VPN-Instance: public net
Total 1 (*, G) entry; 1 (S, G) entry
(*, 225.1.1.0)
RP: 192.168.9.2
Protocol: pim-sm, Flag: WC
UpTime: 00:13:46
Upstream interface: Vlan-interface102
Upstream neighbor: 192.168.9.2
RPF prime neighbor: 192.168.9.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:13:46, Expires: 00:03:06
(10.110.5.100, 225.1.1.0)
RP: 192.168.9.2
Protocol: pim-sm, Flag: SPT ACT
UpTime: 00:00:42
Upstream interface: Vlan-interface101
Upstream neighbor: 192.168.1.2
RPF prime neighbor: 192.168.1.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: pim-sm, UpTime: 00:00:42, Expires: 00:03:06
# 查看Switch D上的PIM路由表信息。
[SwitchD] display pim routing-table
VPN-Instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 225.1.1.0)
RP: 192.168.9.2
Protocol: pim-sm, Flag: SPT LOC ACT
UpTime: 00:00:42
Upstream interface: Vlan-interface300
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface105
Protocol: pim-sm, UpTime: 00:00:42, Expires: 00:02:26
# 查看Switch E上的PIM路由表信息。
[SwitchE] display pim routing-table
VPN-Instance: public net
Total 1 (*, G) entry; 0 (S, G) entry
(*, 225.1.1.0)
RP: 192.168.9.2 (local)
Protocol: pim-sm, Flag: WC
UpTime: 00:13:16
Upstream interface: Register
Upstream neighbor: 192.168.4.2
RPF prime neighbor: 192.168.4.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface102
Protocol: pim-sm, UpTime: 00:13:16, Expires: 00:03:22
· 接收者通過組播方式接收視頻點播信息,整個PIM域采用SM管理域方式,劃分為管理域1、管理域2和Global域,Switch B、Switch C和Switch D為各管理域的ZBR。
· Source 1和Source 2分別向組播組239.1.1.1發送內容不同的組播信息,Host A和Host B則分別隻接收來自Source 1和Source 2的組播信息;Source 3向組播組224.1.1.1發送組播信息,Host C為其接收者。
· Switch B的Vlan-interface101接口為管理域1的C-BSR和C-RP,服務於239.0.0.0/8;Switch D的Vlan-interface104接口為管理域2的C-BSR和C-RP,服務於239.0.0.0/8;Switch F的Vlan-interface109為Global域的C-BSR和C-RP,服務於239.0.0.0/8以外的所有組播組。
· Switch A、Switch E和Switch I分別與各自所連接的接收者之間運行IGMPv2。
圖1-16 PIM-SM管理域配置組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
192.168.1.1/24 |
Switch D |
Vlan-int104 |
10.110.4.2/24 |
|
Vlan-int101 |
10.110.1.1/24 |
|
Vlan-int108 |
10.110.7.1/24 |
Switch B |
Vlan-int200 |
192.168.2.1/24 |
|
Vlan-int107 |
10.110.8.1/24 |
|
Vlan-int101 |
10.110.1.2/24 |
Switch E |
Vlan-int400 |
192.168.4.1/24 |
|
Vlan-int103 |
10.110.2.1/24 |
|
Vlan-int105 |
10.110.5.2/24 |
|
Vlan-int102 |
10.110.3.1/24 |
|
Vlan-int108 |
10.110.7.2/24 |
Switch C |
Vlan-int300 |
192.168.3.1/24 |
Switch F |
Vlan-int109 |
10.110.9.1/24 |
|
Vlan-int104 |
10.110.4.1/24 |
|
Vlan-int107 |
10.110.8.2/24 |
|
Vlan-int105 |
10.110.5.1/24 |
|
Vlan-int102 |
10.110.3.2/24 |
|
Vlan-int103 |
10.110.2.2/24 |
Switch G |
Vlan-int500 |
192.168.5.1/24 |
|
Vlan-int106 |
10.110.6.1/24 |
|
Vlan-int109 |
10.110.9.2/24 |
Switch H |
Vlan-int110 |
10.110.10.1/24 |
Source 1 |
- |
192.168.2.10/24 |
|
Vlan-int106 |
10.110.6.2/24 |
Source 2 |
- |
192.168.3.10/24 |
Switch I |
Vlan-int600 |
192.168.6.1/24 |
Source 3 |
- |
192.168.5.10/24 |
|
Vlan-int110 |
10.110.10.2/24 |
|
|
|
配置IP地址和單播路由協議
請按照圖1-16配置各接口的IP地址和子網掩碼,具體配置過程略。
配置PIM-SM域內的各交換機之間采用OSPF協議進行互連,確保PIM-SM域內部在網絡層互通,並且各交換機之間能夠借助單播路由協議實現動態路由更新,具體配置過程略。
使能IP組播路由和管理域機製,並使能PIM-SM和IGMP
# 在Switch A上使能IP組播路由和管理域機製,在各接口上使能PIM-SM,並在其連接有接收者的接口Vlan-interface100上使能IGMP。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] pim
[SwitchA-pim] c-bsr admin-scope
[SwitchA-pim] quit
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
Switch E和Switch I的配置與Switch A相似,配置過程略。
# 在Switch B上使能IP組播路由和管理域機製,並在各接口上使能PIM-SM。
<SwitchB> system-view
[SwitchB] multicast routing-enable
[SwitchB] pim
[SwitchB-pim] c-bsr admin-scope
[SwitchB-pim] quit
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] pim sm
[SwitchB-Vlan-interface200] quit
[SwitchB] interface vlan-interface 101
[SwitchB-Vlan-interface101] pim sm
[SwitchB-Vlan-interface101] quit
[SwitchB] interface vlan-interface 102
[SwitchB-Vlan-interface102] pim sm
[SwitchB-Vlan-interface102] quit
[SwitchB] interface vlan-interface 103
[SwitchB-Vlan-interface103] pim sm
[SwitchB-Vlan-interface103] quit
Switch C、Switch D、Switch F、Switch G和Switch H的配置與Switch B相似,配置過程略。
配置管理域邊界
# 在Switch B上將接口Vlan-interface102和Vlan-interface103配置為管理域1的邊界。
[SwitchB] interface vlan-interface 102
[SwitchB-Vlan-interface102] multicast boundary 239.0.0.0 8
[SwitchB-Vlan-interface102] quit
[SwitchB] interface vlan-interface 103
[SwitchB-Vlan-interface103] multicast boundary 239.0.0.0 8
[SwitchB-Vlan-interface103] quit
# 在Switch C上將接口Vlan-interface103和Vlan-interface106配置為管理域2的邊界。
<SwitchC> system-view
[SwitchC] interface vlan-interface 103
[SwitchC-Vlan-interface103] multicast boundary 239.0.0.0 8
[SwitchC-Vlan-interface103] quit
[SwitchC] interface vlan-interface 106
[SwitchC-Vlan-interface106] multicast boundary 239.0.0.0 8
[SwitchC-Vlan-interface106] quit
# 在Switch D上將接口Vlan-interface107配置為管理域2的邊界。
<SwitchD> system-view
[SwitchD] interface vlan-interface 107
[SwitchD-Vlan-interface107] multicast boundary 239.0.0.0 8
[SwitchD-Vlan-interface107] quit
配置C-BSR和C-RP
# 在Switch B上配置RP通告的服務範圍,並將接口Vlan-interface101配置為管理域1的C-BSR和C-RP。
[SwitchB] acl number 2001
[SwitchB-acl-basic-2001] rule permit source 239.0.0.0 0.255.255.255
[SwitchB-acl-basic-2001] quit
[SwitchB] pim
[SwitchB-pim] c-bsr group 239.0.0.0 8
[SwitchB-pim] c-bsr vlan-interface 101
[SwitchB-pim] c-rp vlan-interface 101 group-policy 2001
[SwitchB-pim] quit
# 在Switch D上配置RP通告的服務範圍,並將接口Vlan-interface104配置為管理域2的C-BSR和C-RP。
[SwitchD] acl number 2001
[SwitchD-acl-basic-2001] rule permit source 239.0.0.0 0.255.255.255
[SwitchD-acl-basic-2001] quit
[SwitchD] pim
[SwitchD-pim] c-bsr group 239.0.0.0 8
[SwitchD-pim] c-bsr vlan-interface 104
[SwitchD-pim] c-rp vlan-interface 104 group-policy 2001
[SwitchD-pim] quit
# 在Switch F上將接口Vlan-interface109配置為Global域的C-BSR和C-RP。
<SwitchF> system-view
[SwitchF] pim
[SwitchF-pim] c-bsr global
[SwitchF-pim] c-bsr vlan-interface 109
[SwitchF-pim] c-rp vlan-interface 109
[SwitchF-pim] quit
檢驗配置效果
通過使用display pim bsr-info命令可以查看交換機上BSR選舉的信息,以及本地配置並生效的C-RP信息。例如:
# 查看Switch B上的BSR信息,以及本地配置並生效的C-RP信息。
[SwitchB] display pim bsr-info
VPN-Instance: public net
Elected BSR Address: 10.110.9.1
Priority: 64
Hash mask length: 30
State: Accept Preferred
Scope: Global
Uptime: 00:01:45
Expires: 00:01:25
Elected BSR Address: 10.110.1.2
Priority: 64
Hash mask length: 30
State: Elected
Scope: 239.0.0.0/8
Uptime: 00:04:54
Next BSR message scheduled at: 00:00:06
Candidate BSR Address: 10.110.1.2
Priority: 192
Hash mask length: 30
State: Elected
Scope: 239.0.0.0/8
Candidate RP: 10.110.1.2(Vlan-interface101)
Priority: 192
HoldTime: 150
Advertisement Interval: 60
Next advertisement scheduled at: 00:00:15
# 查看Switch D上的BSR信息,以及本地配置並生效的C-RP信息。
[SwitchD] display pim bsr-info
VPN-Instance: public net
Elected BSR Address: 10.110.9.1
Priority: 64
Hash mask length: 30
State: Accept Preferred
Scope: Global
Uptime: 00:01:45
Expires: 00:01:25
Elected BSR Address: 10.110.4.2
Priority: 64
Hash mask length: 30
State: Elected
Scope: 239.0.0.0/8
Uptime: 00:03:48
Next BSR message scheduled at: 00:01:12
Candidate BSR Address: 10.110.4.2
Priority: 64
Hash mask length: 30
State: Elected
Scope: 239.0.0.0/8
Candidate RP: 10.110.4.2(Vlan-interface104)
Priority: 192
HoldTime: 150
Advertisement Interval: 60
Next advertisement scheduled at: 00:00:10
# 查看Switch F上的BSR信息,以及本地配置並生效的C-RP信息。
[SwitchF] display pim bsr-info
VPN-Instance: public net
Elected BSR Address: 10.110.9.1
Priority: 64
Hash mask length: 30
State: Elected
Scope: Global
Uptime: 00:11:11
Next BSR message scheduled at: 00:00:49
Candidate BSR Address: 10.110.9.1
Priority: 64
Hash mask length: 30
State: Elected
Scope: Global
Candidate RP: 10.110.9.1(Vlan-interface109)
Priority: 192
HoldTime: 150
Advertisement Interval: 60
Next advertisement scheduled at: 00:00:55
通過使用display pim rp-info命令可以查看交換機上獲取的RP信息。例如:
# 查看Switch B上的RP信息。
[SwitchB] display pim rp-info
VPN-Instance: public net
PIM-SM BSR RP information:
Group/MaskLen: 224.0.0.0/4
RP: 10.110.9.1
Priority: 192
HoldTime: 150
Uptime: 00:03:39
Expires: 00:01:51
Group/MaskLen: 239.0.0.0/8
RP: 10.110.1.2 (local)
Priority: 192
HoldTime: 150
Uptime: 00:07:44
Expires: 00:01:51
# 查看Switch D上的RP信息。
[SwitchD] display pim rp-info
VPN-Instance: public net
PIM-SM BSR RP information:
Group/MaskLen: 224.0.0.0/4
RP: 10.110.9.1
Priority: 192
HoldTime: 150
Uptime: 00:03:42
Expires: 00:01:48
Group/MaskLen: 239.0.0.0/8
RP: 10.110.4.2 (local)
Priority: 192
HoldTime: 150
Uptime: 00:06:54
Expires: 00:02:41
# 查看Switch F上的RP信息。
[SwitchF] display pim rp-info
VPN-Instance: public net
PIM-SM BSR RP information:
Group/MaskLen: 224.0.0.0/4
RP: 10.110.9.1 (local)
Priority: 192
HoldTime: 150
Uptime: 00:00:32
Expires: 00:01:58
· 整個PIM域采用BIDIR方式,Source 1和Source 2都向組播組225.1.1.1發送組播信息,Host A和Host B為組播信息的接收者。
· 將Switch C的Vlan-interface102接口配置為C-BSR,Loopback0接口配置為服務於雙向PIM的C-RP。
· Switch B和Switch D分別與各自所連接的接收者之間運行IGMPv2。
圖1-17 雙向PIM典型配置組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
192.168.1.1/24 |
Switch D |
Vlan-int300 |
192.168.3.1/24 |
|
Vlan-int101 |
10.110.1.1/24 |
|
Vlan-int400 |
192.168.4.1/24 |
Switch B |
Vlan-int200 |
192.168.2.1/24 |
|
Vlan-int103 |
10.110.3.2/24 |
|
Vlan-int101 |
10.110.1.2/24 |
Source 1 |
- |
192.168.1.100/24 |
|
Vlan-int102 |
10.110.2.1/24 |
Source 2 |
- |
192.168.4.100/24 |
Switch C |
Vlan-int102 |
10.110.2.2/24 |
Receiver 1 |
- |
192.168.2.100/24 |
|
Vlan-int103 |
10.110.3.1/24 |
Receiver 2 |
- |
192.168.3.100/24 |
|
Loop0 |
1.1.1.1/32 |
|
|
|
配置IP地址和單播路由協議
請按照表1-17配置各接口的IP地址和子網掩碼,具體配置過程略。
配置雙向PIM域內的各交換機之間采用OSPF協議進行互連,確保雙向PIM域內部在網絡層互通,並且各交換機之間能夠借助單播路由協議實現動態路由更新,具體配置過程略。
使能IP組播路由,並使能PIM-SM、雙向PIM和IGMP
# 在Switch A上使能IP組播路由,在各接口上使能PIM-SM,並使能雙向PIM。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] pim
[SwitchA-pim] bidir-pim enable
[SwitchA-pim] quit
# 在Switch B上使能IP組播路由,在各接口上使能PIM-SM,在其連接有接收者的接口Vlan-interface200上使能IGMP,並使能雙向PIM。
<SwitchB> system-view
[SwitchB] multicast routing-enable
[SwitchB] interface vlan-interface 200
[SwitchB-Vlan-interface200] igmp enable
[SwitchB-Vlan-interface200] pim sm
[SwitchB-Vlan-interface200] quit
[SwitchB] interface vlan-interface 101
[SwitchB-Vlan-interface101] pim sm
[SwitchB-Vlan-interface101] quit
[SwitchB] interface vlan-interface 102
[SwitchB-Vlan-interface102] pim sm
[SwitchB-Vlan-interface102] quit
[SwitchB] pim
[SwitchB-pim] bidir-pim enable
[SwitchB-pim] quit
# 在Switch C上使能IP組播路由,在各接口上使能PIM-SM,並使能雙向PIM。
<SwitchC> system-view
[SwitchC] multicast routing-enable
[SwitchC] interface vlan-interface 102
[SwitchC-Vlan-interface102] pim sm
[SwitchC-Vlan-interface102] quit
[SwitchC] interface vlan-interface 103
[SwitchC-Vlan-interface103] pim sm
[SwitchC-Vlan-interface103] quit
[SwitchC] interface loopback 0
[SwitchC-LoopBack0] pim sm
[SwitchC-LoopBack0] quit
[SwitchC] pim
[SwitchC-pim] bidir-pim enable
# 在Switch D上使能IP組播路由,在各接口上使能PIM-SM,在其連接有接收者的接口Vlan-interface300上使能IGMP,並使能雙向PIM。
<SwitchD> system-view
[SwitchD] multicast routing-enable
[SwitchD] interface vlan-interface 300
[SwitchD-Vlan-interface300] igmp enable
[SwitchD-Vlan-interface300] pim sm
[SwitchD-Vlan-interface300] quit
[SwitchD] interface vlan-interface 400
[SwitchD-Vlan-interface400] pim sm
[SwitchD-Vlan-interface400] quit
[SwitchD] interface vlan-interface 103
[SwitchD-Vlan-interface103] pim sm
[SwitchD-Vlan-interface103] quit
[SwitchD] pim
[SwitchD-pim] bidir-pim enable
[SwitchD-pim] quit
配置C-BSR和C-RP
# 在Switch C上將接口Vlan-interface102配置為C-BSR,並將接口Loopback0配置為服務於雙向PIM的C-RP。
[SwitchC-pim] c-bsr vlan-interface 102
[SwitchC-pim] c-rp loopback 0 bidir
[SwitchC-pim] quit
檢驗配置效果
通過使用display pim df-info命令可以查看交換機上雙向PIM的DF信息。例如:
# 查看Switch A上雙向PIM的DF信息。
[SwitchA] display pim df-info
VPN-Instance: public net
RP Address: 1.1.1.1
Interface State DF-Pref DF-Metric DF-Uptime DF-Address
Vlan100 Win 100 2 01:08:50 192.168.1.1 (local)
Vlan101 Lose 100 1 01:07:49 10.110.1.2
# 查看Switch B上雙向PIM的DF信息。
[SwitchB] display pim df-info
VPN-Instance: public net
RP Address: 1.1.1.1
Interface State DF-Pref DF-Metric DF-Uptime DF-Address
Vlan200 Win 100 1 01:24:09 192.168.2.1 (local)
Vlan101 Win 100 1 01:24:09 10.110.1.2 (local)
Vlan102 Lose 0 0 01:23:12 10.110.2.2
# 查看Switch C上雙向PIM的DF信息。
[SwitchC] display pim df-info
VPN-Instance: public net
RP Address: 1.1.1.1
Interface State DF-Pref DF-Metric DF-Uptime DF-Address
Loop0 - - - - -
Vlan102 Win 0 0 01:06:07 10.110.2.2 (local)
Vlan103 Win 0 0 01:06:07 10.110.3.1 (local)
# 查看Switch D上雙向PIM的DF信息。
[SwitchD] display pim df-info
VPN-Instance: public net
RP Address: 1.1.1.1
Interface State DF-Pref DF-Metric DF-Uptime DF-Address
Vlan300 Win 100 1 01:19:53 192.168.3.1 (local)
Vlan400 Win 100 1 00:39:34 192.168.4.1 (local)
Vlan103 Lose 0 0 01:21:40 10.110.3.1
通過使用display multicast forwarding-table df-info命令可以查看交換機上組播轉發表的DF信息,有關display multicast forwarding-table df-info命令的詳細介紹,請參見“IP組播命令參考”中的“組播路由與轉發”。例如:
# 查看Switch A上組播轉發表的DF信息。
[SwitchA] display multicast forwarding-table df-info
Multicast DF information of VPN-Instance: public net
Total 1 RP
Total 1 RP matched
00001. RP Address: 1.1.1.1
MID: 0, Flags: 0x2100000:0
Uptime: 00:08:32
RPF interface: Vlan-interface101
List of 1 DF interfaces:
1: Vlan-interface100
# 查看Switch B上組播轉發表的DF信息。
[SwitchB] display multicast forwarding-table df-info
Multicast DF information of VPN-Instance: public net
Total 1 RP
Total 1 RP matched
00001. RP Address: 1.1.1.1
MID: 0, Flags: 0x2100000:0
Uptime: 00:06:24
RPF interface: Vlan-interface102
List of 2 DF interfaces:
1: Vlan-interface101
2: Vlan-interface200
# 查看Switch C上組播轉發表的DF信息。
[SwitchC] display multicast forwarding-table df-info
Multicast DF information of VPN-Instance: public net
Total 1 RP
Total 1 RP matched
00001. RP Address: 1.1.1.1
MID: 0, Flags: 0x2100000:0
Uptime: 00:07:21
RPF interface: LoopBack0
List of 2 DF interfaces:
1: Vlan-interface102
2: Vlan-interface103
# 查看Switch D上組播轉發表的DF信息。
[SwitchD] display multicast forwarding-table df-info
Multicast DF information of VPN-Instance: public net
Total 1 RP
Total 1 RP matched
00001. RP Address: 1.1.1.1
MID: 0, Flags: 0x2100000:0
Uptime: 00:05:12
RPF interface: Vlan-interface103
List of 2 DF interfaces:
1: Vlan-interface300
2: Vlan-interface400
通過使用display pim routing-table命令可以查看交換機的PIM路由表信息。例如:
# 查看Switch A上的PIM路由表信息。
<SwitchA>display pim routing-table
VPN-Instance: public net
Total 2 (*, G) entries; 0 (S, G) entry
(*, 228.0.0.1)
RP: 1.1.1.1
Protocol: pim-sm, Flag: WC BIDIR ACT
UpTime: 16:10:46
Upstream interface: Vlan-interface101
Upstream neighbor: 10.110.1.2
RPF prime neighbor: 10.110.1.2
Downstream interface(s) information:
Total number of downstreams: 2
1: Vlan-interface101
Protocol: pim-sm, UpTime: - , Expires: -
2: Vlan-interface100
Protocol: pim-sm, UpTime: - , Expires: -
(*, 228.0.0.2)
RP: 1.1.1.1
Protocol: pim-sm, Flag: WC BIDIR ACT
UpTime: 16:10:46
Upstream interface: Vlan-interface101
Upstream neighbor: 10.110.1.2
RPF prime neighbor: 10.110.1.2
Downstream interface(s) information:
Total number of downstreams: 2
1: Vlan-interface101
Protocol: pim-sm, UpTime: - , Expires: -
2: Vlan-interface100
Protocol: pim-sm, UpTime: - , Expires: -
Switch B、Switch C和Switch D上的顯示信息與Switch A類似。
· 接收者通過組播方式接收視頻點播信息,不同組織的接收者群體組成末梢網絡,每個末梢網絡中都存在至少一個接收者,整個PIM域采用SSM方式。
· Host A和Host C為兩個末梢網絡中的組播信息接收者;Switch D通過Vlan-interface300接口與組播源(Source)所在網絡連接;Switch A通過Vlan-interface100接口連接末梢網絡N1,通過Vlan-interface101接口和Vlan-interface102接口分別連接Switch D和Switch E;Switch B和Switch C通過各自的Vlan-interface200接口連接末梢網絡N2,分別通過Vlan-interface103和Vlan-interface104接口連接Switch E;Switch E連接Switch A、Switch B、Switch C和Switch D。
· SSM組播組的範圍是232.1.1.0/24。
· Switch A與末梢網絡N1之間運行IGMPv3;Switch B和Switch C與末梢網絡N2之間也運行IGMPv3。
圖1-18 PIM-SSM典型配置組網圖
設備 |
接口 |
IP地址 |
設備 |
接口 |
IP地址 |
Switch A |
Vlan-int100 |
10.110.1.1/24 |
Switch D |
Vlan-int300 |
10.110.5.1/24 |
|
Vlan-int101 |
192.168.1.1/24 |
|
Vlan-int101 |
192.168.1.2/24 |
|
Vlan-int102 |
192.168.9.1/24 |
|
Vlan-int105 |
192.168.4.2/24 |
Switch B |
Vlan-int200 |
10.110.2.1/24 |
Switch E |
Vlan-int104 |
192.168.3.2/24 |
|
Vlan-int103 |
192.168.2.1/24 |
|
Vlan-int103 |
192.168.2.2/24 |
Switch C |
Vlan-int200 |
10.110.2.2/24 |
|
Vlan-int102 |
192.168.9.2/24 |
|
Vlan-int104 |
192.168.3.1/24 |
|
Vlan-int105 |
192.168.4.1/24 |
配置IP地址和單播路由協議
請按照圖1-18配置各接口的IP地址和子網掩碼,具體配置過程略。
配置PIM-SSM域內的各交換機之間采用OSPF協議進行互連,確保PIM-SSM域內部在網絡層互通,並且各交換機之間能夠借助單播路由協議實現動態路由更新,具體配置過程略。
使能IP組播路由,並使能PIM-SM和IGMP
# 在Switch A上使能IP組播路由,在各接口上使能PIM-SM,並在其連接末梢網絡的接口Vlan-interface100上使能IGMP,且配置其版本為3。
<SwitchA> system-view
[SwitchA] multicast routing-enable
[SwitchA] interface vlan-interface 100
[SwitchA-Vlan-interface100] igmp enable
[SwitchA-Vlan-interface100] igmp version 3
[SwitchA-Vlan-interface100] pim sm
[SwitchA-Vlan-interface100] quit
[SwitchA] interface vlan-interface 101
[SwitchA-Vlan-interface101] pim sm
[SwitchA-Vlan-interface101] quit
[SwitchA] interface vlan-interface 102
[SwitchA-Vlan-interface102] pim sm
[SwitchA-Vlan-interface102] quit
Switch B和Switch C的配置與Switch A相似,Switch D和Switch E除了不需要在相應接口上使能IGMP外,其它的配置也與Switch A相似,配置過程略。
配置SSM組播組的地址範圍
# 在Switch A上配置SSM組播組地址範圍為232.1.1.0/24。
[SwitchA] acl number 2000
[SwitchA-acl-basic-2000] rule permit source 232.1.1.0 0.0.0.255
[SwitchA-acl-basic-2000] quit
[SwitchA] pim
[SwitchA-pim] ssm-policy 2000
[SwitchA-pim] quit
Switch B、Switch C、Switch D和Switch E的配置與Switch A相似,配置過程略。
檢驗配置效果
通過使用display pim interface命令可以查看交換機接口上PIM的配置和運行情況。例如:
# 查看Switch A上PIM的配置信息。
[SwitchA] display pim interface
VPN-Instance: public net
Interface NbrCnt HelloInt DR-Pri DR-Address
Vlan100 0 30 1 10.110.1.1 (local)
Vlan101 1 30 1 192.168.1.2
Vlan102 1 30 1 192.168.9.2
假如Host A需要接收指定組播源S(10.110.5.100/24)發往組播組G(232.1.1.1)的信息,Switch A會向組播源方向構造SPT,SPT路徑中的交換機(Switch A和Switch D)上生成(S,G)表項,而SPT路徑之外的交換機(Switch E)上沒有組播路由項,通過使用display pim routing-table命令可以查看交換機的PIM路由表信息。例如:
# 查看Switch A上的PIM路由表信息。
[SwitchA] display pim routing-table
VPN-Instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 232.1.1.1)
Protocol: pim-ssm, Flag:
UpTime: 00:13:25
Upstream interface: Vlan-interface101
Upstream neighbor: 192.168.1.2
RPF prime neighbor: 192.168.1.2
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface100
Protocol: igmp, UpTime: 00:13:25, Expires: 00:03:25
# 查看Switch D上的PIM路由表信息。
[SwitchD] display pim routing-table
VPN-Instance: public net
Total 0 (*, G) entry; 1 (S, G) entry
(10.110.5.100, 232.1.1.1)
Protocol: pim-ssm, Flag: LOC
UpTime: 00:12:05
Upstream interface: Vlan-interface300
Upstream neighbor: NULL
RPF prime neighbor: NULL
Downstream interface(s) information:
Total number of downstreams: 1
1: Vlan-interface105
Protocol: pim-ssm, UpTime: 00:12:05, Expires: 00:03:25
網絡中各路由器(包括直連組播源或接收者的路由器)上都沒有組播轉發項,也就是說無法正確建立組播分發樹,客戶端無法接收組播數據。
· 當全網運行PIM-DM時,組播數據由直連組播源的第一跳路由器擴散到直連客戶端的最後一跳路由器。無論組播數據擴散到哪一台路由器,隻有該路由器存在到達組播源的路由,才會創建(S,G)表項。反之,如果沒有到達組播源的路由或者到達組播源的RPF接口沒有使能PIM-DM,則該路由器無法創建(S,G)表項。
· 當全網運行PIM-SM時,路由器在準備加入SPT時,隻有存在到達組播源的路由,才會創建(S,G)表項。反之,如果沒有到達組播源的路由或者到達組播源的RPF接口沒有使能PIM-SM,則該路由器無法創建(S,G)表項。
· 對於某個RPF檢查對象,在現存的單播路由表中查找到達該對象的最優路由,該路由的出接口作為RPF接口,下一跳作為RPF鄰居。RPF接口完全依賴於現存的單播路由,並且與PIM本身無關。RPF接口必須使能PIM,而且RPF鄰居也必須是PIM鄰居。如果RPF接口或RPF鄰居所在路由器上沒有使能PIM,必然導致組播分發樹無法正確建立,導致組播數據轉發異常。
· Hello報文並不攜帶PIM的模式信息,所以運行PIM的路由器無法掌握自己的PIM鄰居運行的是何種模式的PIM。如果RPF接口和RPF鄰居所在路由器的對應接口沒有使能相同模式的PIM,必然導致組播分發樹無法正確建立,導致組播數據轉發異常。
· 全網必須運行相同模式的PIM。否則,組播分發樹必然無法正確建立,導致組播數據轉發異常。
檢查單播路由。使用命令display ip routing-table檢查從接收者主機是否有到達組播源的單播路由項。
檢查接口上是否使能PIM,尤其是RPF接口上是否使能PIM。通過命令display pim interface觀察接口上的PIM信息。若接口上沒有使能PIM,請使用pim dm或pim sm命令使能PIM-DM或者PIM-SM。
檢查RPF鄰居是否是PIM鄰居。通過命令display pim neighbor觀察PIM鄰居信息。
檢查直連組播源或接收者的路由器接口上是否使能了PIM和IGMP。
檢查PIM模式是否一致。通過命令display pim interface verbose檢查RPF接口和RPF鄰居所在路由器的對應接口上是否使能了相同模式的PIM。
檢查全部網絡中各路由器上的PIM模式是否一致。確保全網所有路由器配置相同模式的PIM,即要麼全部配置為PIM-SM,要麼全部配置為PIM-DM。如果配置為PIM-SM,則還需要檢查BSR以及RP的配置是否正確。
組播數據可以到達中間路由器,但無法到達最後一跳路由器。中間路由器某接口上收到組播數據,但PIM路由表中沒有創建相應的(S,G)表項。
· 命令multicast boundary用於在接口上設置組播轉發邊界,如果組播數據無法通過該邊界,PIM是無法創建路由項的。
· 此外,source-policy命令用於過濾接收到的組播數據報文。如果組播數據報文無法通過該命令的ACL規則,PIM也是無法創建路由項的。
檢查組播轉發邊界的配置。通過命令display current-configuration查看組播轉發邊界上的設置,使用multicast boundary命令更改組播轉發邊界的設置,使組播數據能夠通過該邊界。
檢查組播過濾器配置。通過命令display current-configuration查看組播過濾器的配置,更改source-policy命令的ACL規則,使組播數據的源/組地址通過ACL過濾。
共享樹無法正確建立,或者RP無法加入到達組播源的最短路徑樹。
· RP是PIM-SM的核心,為特定的組服務。網絡中可以同時存在多個RP。必須保證所有路由器的RP信息完全一致,並且對於某個特定的組映射到相同的RP。否則必然導致組播數據轉發異常。
· 如果使用靜態RP機製,必須在全網所有路由器上配置完全相同的靜態RP命令。否則必然導致組播數據轉發異常。
檢查是否有到達RP的路由。通過命令display ip routing-table查看各路由器上是否有到達RP的路由。
檢查動態RP信息。通過命令display pim rp-info查看各路由器上的RP信息是否一致。
檢查靜態RP的配置。通過命令display pim rp-info查看全網所有路由器上是否配置了完全相同的靜態RP。
C-RP無法向BSR單播通告報文,BSR沒有發布包含C-RP的自舉報文,BSR上沒有到達各C-RP的單播路由,共享樹無法正確建立,或者DR無法向RP進行源注冊。
· 由於C-RP周期性地向BSR單播宣告報文,如果C-RP沒有到達BSR的單播路由就無法發送宣告報文,BSR就收不到C-RP宣告報文,也就不會發布包含該C-RP的自舉報文。
· 另外,如果BSR沒有到達C-RP的單播路由,就會丟棄該宣告報文,也就不會發布包含該C-RP的自舉報文。
· RP是PIM-SM域的核心。必須保證全網所有路由器的RP信息完全一致,並且對於某個特定的組G映射到相同的RP,並且存在到達RP的單播路由。
檢查是否有到達各C-RP、BSR的路由。通過命令display ip routing-table查看各路由器上是否有到達RP和BSR的路由,及RP和BSR之間的路由。確保C-RP上存在到達BSR的單播路由,BSR上存在到達C-RP的單播路由,全網絡所有路由器上存在到達RP的單播路由。
檢查RP和BSR信息。PIM-SM協議需要有RP和BSR的支持,首先使用命令display pim bsr-info查看是否有BSR信息,使用display pim rp-info命令查看RP信息是否正確。
檢查PIM鄰居關係。通過命令display pim neighbor來查看是否正確建立了鄰居關係。
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!