PIM技術介紹


PIM

PIM簡介

PIMProtocol Independent Multicast(協議無關組播)的簡稱,表示可以利用靜態路由或者任意單播路由協議(包括RIPOSPFIS-ISBGP等)所生成的單播路由表為IP組播提供路由。組播路由與所采用的單播路由協議無關,隻要能夠通過單播路由協議產生相應的組播路由表項即可。PIM借助RPFReverse Path Forwarding,逆向路徑轉發)機製實現對組播報文的轉發。當組播報文到達本地設備時,首先對其進行RPF檢查:若RPF檢查通過,則創建相應的組播路由表項,從而進行組播報文的轉發;若RPF檢查失敗,則丟棄該報文。

根據實現機製的不同,PIM分為以下兩種模式:

l              PIM-DMProtocol Independent Multicast-Dense Mode,協議無關組播—密集模式

l              PIM-SMProtocol Independent Multicast-Sparse Mode協議無關組播—稀疏模式)

&  說明:

為了描述的方便,本文中把由支持PIM協議的組播路由器所組成的網絡簡稱為“PIM域”。

 

PIM-DM簡介

PIM-DM屬於密集模式的組播路由協議,使用“推(Push)模式”傳送組播數據,通常適用於組播組成員相對比較密集的小型網絡。

PIM-DM的基本原理如下:

l              PIM-DM假設網絡中的每個子網都存在至少一個組播組成員,因此組播數據將被擴散(Flooding)到網絡中的所有節點。然後,PIM-DM對沒有組播數據轉發的分支進行剪枝(Prune),隻保留包含接收者的分支。這種“擴散—剪枝”現象周期性地發生,被剪枝的分支也可以周期性地恢複成轉發狀態。

l              當被剪枝分支的節點上出現了組播組的成員時,為了減少該節點恢複成轉發狀態所需的時間,PIM-DM使用嫁接(Graft)機製主動恢複其對組播數據的轉發。

一般說來,密集模式下數據包的轉發路徑是有源樹(Source Tree,即以組播源為“根”、組播組成員為“枝葉”的一棵轉發樹)。由於有源樹使用的是從組播源到接收者的最短路徑,因此也稱為最短路徑樹(Shortest Path TreeSPT)。

PIM-DM工作機製

1. 鄰居發現

PIM域中,路由器通過周期性地的向所有PIM路由器(224.0.0.13)以組播方式發送PIM Hello報文(以下簡稱Hello報文),以發現PIM鄰居,維護各路由器之間的PIM鄰居關係,從而構建和維護SPT

&  說明:

路由器每個運行了PIM協議的接口都會周期性地發送Hello報文,從而了解與該接口相關的PIM鄰居信息。

 

2. 構建SPT

構建SPT的過程也就是“擴散—剪枝”的過程:

(1)        PIM-DM域中,組播源S向組播組G發送組播報文時,首先對組播報文進行擴散:路由器對該報文的RPF檢查通過後,便創建一個(SG)表項,並將該報文向網絡中的所有下遊節點轉發。經過擴散,PIM-DM域內的每個路由器上都會創建(SG)表項。

(2)        然後對那些下遊沒有接收者的節點進行剪枝:由沒有接收者的下遊節點向上遊節點發剪枝報文(Prune Message),以通知上遊節點將相應的接口從其組播轉發表項(SG)所對應的出接口列表中刪除,並不再轉發該組播組的報文至該節點。

&  說明:

l      SG)表項包括組播源的地址S、組播組的地址G、出接口列表和入接口等。

l      路由器上收到組播數據的接口稱為“上遊”,轉發組播數據的接口稱為“下遊”。

 

剪枝過程最先由葉子路由器發起,如1所示,沒有接收者(Receiver)的路由器(如與Host A直連的路由器)主動發起剪枝,並一直持續到PIM-DM域中隻剩下必要的分支,這些分支共同構成了SPT

圖1 PIM-DM中構建SPT示意圖

“擴散—剪枝”的過程是周期性發生的。各個被剪枝的節點提供超時機製,當剪枝超時後便重新開始這一過程。

&  說明:

剪枝在PIM-SM中有著相似的應用。

 

3. 嫁接

當被剪枝的節點上出現了組播組的成員時,為了減少該節點恢複成轉發狀態所需的時間,PIM-DM使用嫁接機製主動恢複其對組播數據的轉發,過程如下:

(1)        需要恢複接收組播數據的節點向其上遊節點發送嫁接報文(Graft Message)以申請重新加入到SPT中;

(2)        當上遊節點收到該報文後恢複該下遊節點的轉發狀態,並向其回應一個嫁接應答報文(Graft-Ack Message)以進行確認;

(3)        如果發送嫁接報文的下遊節點沒有收到來自其上遊節點的嫁接應答報文,將重新發送嫁接報文直到被確認為止。

4. 斷言

在一個網段內如果存在多台組播路由器,則相同的組播報文可能會被重複發送到該網段。為了避免出現這種情況,就需要通過斷言(Assert)機製來選定唯一的組播數據轉發者。

圖2 Assert機製示意圖

2所示,當Router ARouter B從上遊節點收到(SG)組播報文後,都會向本地網段轉發該報文,於是處於下遊的節點Router C就會收到兩份相同的組播報文,Router ARouter B也會從各自的本地接口收到對方轉發來的該組播報文。此時,Router ARouter B會通過本地接口向所有PIM路由器(224.0.0.13)以組播方式發送斷言報文(Assert Message),該報文中攜帶有以下信息:組播源地址S、組播組地址G、到組播源的單播路由的優先級和度量值。通過一定的規則對這些參數進行比較後,Router ARouter B中的獲勝者將成為(SG)組播報文在本網段的轉發者,比較規則如下:

(1)        到組播源的單播路由的優先級較高者獲勝;

(2)        如果到組播源的單播路由的優先級相等,那麼到組播源的度量值較小者獲勝;

(3)        如果到組播源的度量值也相等,則本地接口IP地址較大者獲勝。

PIM-SM簡介

PIM-DM使用以“擴散—剪枝”方式構建的SPT來傳送組播數據。盡管SPT的路徑最短,但是其建立的過程效率較低,並不適合大中型網絡。

PIM-SM屬於稀疏模式的組播路由協議,使用“拉(Pull)模式”傳送組播數據,通常適用於組播組成員分布相對分散、範圍較廣的大中型網絡。

PIM-SM的基本原理如下:

l              PIM-SM假設所有主機都不需要接收組播數據,隻向明確提出需要組播數據的主機轉發。PIM-SM實現組播轉發的核心任務就是構造並維護RPTRendezvous Point Tree,共享樹或彙集樹),RPT選擇PIM域中某台路由器作為公用的根節點RPRendezvous Point,彙集點),組播數據通過RP沿著RPT轉發給接收者

l              連接接收者的路由器向某組播組對應的RP發送加入報文(Join Message),該報文被逐跳送達RP,所經過的路徑就形成了RPT的分支;

l              組播源如果要向某組播組發送組播數據,首先由與組播源側DRDesignated Router,指定路由器)負責向RP進行注冊,把注冊報文(Register Message)通過單播方式發送給RP,該報文到達RP後觸發建立SPT。之後組播源把組播數據沿著SPT發向RP,當組播數據到達RP後,被複製並沿著RPT發送給接收者。

&  說明:

複製僅發生在分發樹的分支處,這個過程能夠自動重複直到數據包最終到達接收者。

 

PIM-SM工作機製

1. 鄰居發現

PIM-SM使用與PIM-DM類似的鄰居發現機製,具體請參見“鄰居發現”一節。

2. DR選舉

借助Hello報文還可以為共享網絡(如Ethernet)選舉DRDR將作為該共享網絡中組播數據的唯一轉發者。

無論是與組播源相連的網絡,還是與接收者相連的網絡,都需要選舉DR。接收者側的DR負責向RP發送加入報文;組播源側的DR負責向RP發送注冊報文。

&  說明:

l      各路由器之間通過比較Hello報文中所攜帶的優先級和IP地址,可以為多路由器網段選舉DR。選舉出的DR對於PIM-SM有實際的意義;而對於PIM-DM來說,其本身其實並不需要DR,但如果PIM-DM域中的共享網絡上運行了IGMPv1,則需要選舉出DR來充當共享網絡上的IGMPv1查詢器。

l      在充當DR的設備上必須使能IGMP,否則連接在該DR上的接收者將不能通過該DR加入組播組。

 

圖3 DR選舉示意圖

3所示,DR的選舉過程如下:

(1)        共享網絡上的各路由器相互之間發送Hello報文(攜帶有競選DR優先級的參數),擁有最高優先級的路由器將成為DR

(2)        如果優先級相同,或者網絡中至少有一台路由器不支持在Hello報文中攜帶競選DR優先級的參數,則根據各路由器的IP地址大小來競選DRIP地址最大的路由器將成為DR

DR出現故障時,其餘路由器在超時後仍沒有收到來自DRHello報文,則會觸發新的DR選舉過程。

3. RP發現

RPPIM-SM域中的核心設備。在結構簡單的小型網絡中,組播信息量少,整個網絡僅依靠一個RP進行組播信息的轉發即可,此時可以在PIM-SM域中的各路由器上靜態指定RP的位置;但是在更多的情況下,PIM-SM域的規模都很大,通過RP轉發的組播信息量巨大。為了緩解RP的負擔並優化RPT的拓撲結構,可以在PIM-SM域中配置多個C-RPCandidate-RP,候選RP),通過自舉機製來動態選舉RP,使不同的RP服務於不同的組播組,此時需要配置BSRBootStrap Router,自舉路由器)。BSRPIM-SM域的管理核心,一個PIM-SM域內隻能有一個BSR,但可以配置多個C-BSRCandidate-BSR,候選BSR)。這樣,一旦BSR發生故障,其餘C-BSR能夠通過自動選舉產生新的BSR,從而確保業務免受中斷。

&  說明:

l      一個RP可以同時服務於多個組播組,但一個組播組隻能唯一對應一個RP

l      一台設備可以同時充當C-RPC-BSR

 

4所示,BSR負責收集網絡中由C-RP發來的宣告報文(Advertisement Message),該報文中攜帶有C-RP的地址和優先級以及其服務的組範圍,BSR將這些信息彙總為RP-SetRP集,即組播組與RP的映射關係數據庫),封裝在自舉報文(Bootstrap Message)中並發布到整個PIM-SM域。

圖4 RPBSR信息交互示意圖

網絡中的各路由器將依據RP-Set提供的信息,使用相同的規則從眾多C-RP中為特定組播組選擇其對應的RP,具體規則如下:

(1)        首先比較C-RP的優先級,優先級較高者獲勝。

(2)        若優先級相同,則使用哈希(Hash)函數計算哈希值,該值較大者獲勝。

(3)        若優先級和哈希值都相同,則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-RPIP地址

&

邏輯運算符,表示與運算

XOR

邏輯運算符,表示異或運算

mod

算術運算符,表示整除取餘

 

4. 構建RPT

圖5 PIM-SM中構建RPT示意圖

5所示,RPT的構建過程如下:

(1)        當接收者加入一個組播組G時,先通過IGMP報文通知與其直連的DR

(2)        DR掌握了組播組G的接收者的信息後,向該組所對應的RP方向逐跳發送加入報文;

(3)        DRRP所經過的路由器就形成了RPT的分支,這些路由器都在其轉發表中生成了(*G)表項,這裏的“*”表示來自任意組播源。RPTRP為根,以DR為葉子。

當發往組播組G的組播數據流經RP時,數據就會沿著已建立好的RPT到達DR,進而到達接收者。

當某接收者對組播組G的信息不再感興趣時,與其直連的DR會逆著RPT向該組的RP方向逐跳發送剪枝報文;上遊節點收到該報文後在其出接口列表中刪除與下遊節點相連的接口,並檢查自己是否擁有該組播組的接收者,如果沒有則繼續向其上遊轉發該剪枝報文。

5. 組播源注冊

組播源注冊的目的是向RP通知組播源的存在。

圖6 組播源注冊示意圖

6所示,組播源向RP注冊的過程如下:

(1)        當組播源S向組播組G發送了一個組播報文時,與組播源直連的DR在收到該報文後,就將其封裝成注冊報文,並通過單播方式發送給相應的RP

(2)        RP收到該報文後,一方麵解封裝注冊報文並將封裝在其中的組播報文沿著RPT轉發給接收者,另一方麵向組播源逐跳發送(SG)加入報文。這樣,從RP到組播源所經過的路由器就形成了SPT的分支,這些路由器都在其轉發表中生成了(SG)表項。SPT以組播源為根,以RP為葉子。

(3)        組播源發出的組播數據沿著已建立好的SPT到達RP,然後由RP把組播數據沿著RPT向接收者進行轉發。當RP收到沿著SPT轉發來的組播數據後,通過單播方式向與組播源直連的DR發送注冊停止報文(Register-Stop Message),組播源注冊過程結束。

6. RPTSPT切換

當接收者側的DR發現從RP發往組播組G的組播數據速率超過了一定的閾值時,將由其發起從RPTSPT的切換,過程如下:

(1)        首先,接收者側DR向組播源S逐跳發送(SG)加入報文,並最終送達組播源側DR,沿途經過的所有路由器在其轉發表中都生成了(SG)表項,從而建立了SPT分支;

(2)        隨後,接收者側DRRP逐跳發送包含RP位的剪枝報文,RP收到該報文後會向組播源方向繼續發送剪枝報文(假設此時隻有這一個接收者),從而最終實現從RPTSPT的切換。

RPT切換到SPT後,組播數據將直接從組播源發送到接收者。通過由RPTSPT的切換,PIM-SM能夠以比PIM-DM更經濟的方式建立SPT

7. 斷言

PIM-SM使用與PIM-DM類似的斷言機製,具體請參見“斷言”一節。

PIM-SM管理域機製介紹

1. PIM-SM域兩種機製的劃分

一般情況下,在一個PIM-SM域內隻能有一個BSR,並由該BSR負責在整個PIM-SM域內宣告RP-Set信息,所有組播組的信息都在此BSR管理的網絡範圍內進行轉發,我們稱之為非管理域機製。

考慮到管理的精細化,可以將整個PIM-SM域劃分為一個Global域(Global-scope Zone)和多個管理域(Admin-scope Zone),一方麵可以有效分擔單一BSR的管理壓力,另一方麵可以使用私有組地址為特定區域提供專門的服務。相應地,我們稱之為管理域機製。

管理域與組播組相對應,針對不同組播組劃分相應的管理域。管理域的邊界由ZBRZone Border Router,區域邊界路由器)構成,每個管理域各維護一個BSR,為特定範圍的組播組服務,屬於此範圍的組播協議報文(如斷言報文、BSR自舉報文等)無法通過管理域邊界。不同管理域所服務的組播組範圍可以重疊,該組播組隻在本管理域內有效,相當於私有組地址。不屬於任何管理域的組播組則一律屬於Global域的服務範圍,Global域中維護一個BSR,為剩餘的所有組播組服務。

2. 管理域與Global域的關係

每個管理域和Global域都有獨立的C-RPBSR設備,這些設備僅在其所屬域有效,也就是說BSR機製與RP選舉在各管理域之間是隔離的;每個管理域都有自己的邊界,各管理域所服務組播組範圍內的組播信息不能進、出該邊界。為了更清晰地理解管理域和Global域,可以從以下兩個角度進行考慮:

(1)        地域空間角度

管理域是針對特定組播組的邏輯管理區域,各管理域在地域上必須相互獨立,如7所示。

圖7 地域空間上管理域Global域的關係

在地域空間上,各管理域之間相互隔離,即同一路由器不能從屬於多個管理域。換句話說,各管理域所包含的路由器互不相同。而Global域則包含了PIM-SM域內的所有路由器。

(2)        組地址範圍角度

每個管理域為特定的組播組提供服務,這些組播組地址之間通常沒有交集,但是也可能存在相互交叉和重疊關係。

圖8 組地址範圍上管理域與Global域的關係

8所示,管理域1與管理域2所對應的組地址範圍無交集,而管理域3的組地址是管理域1組地址的子集;Global域所對應的組地址範圍是除各管理域組地址外的其它所有組地址,即G−G1−G2。也就是說,Global域和所有管理域之間就組地址範圍來說是互補關係。

SSM模型在PIM中的實現

SSMSource-Specific Multicast,指定信源組播)模型和ASMAny-Source Multicast,任意信源組播)模型是兩個完全對等的模型。目前,ASM模型包括PIM-DMPIM-SM兩種模式,SSM模型能夠借助PIM-SM的部分技術來實現。

SSM模型為指定源組播提供了解決方案,通過IGMPv3來維護主機與路由器之間的關係。在實際應用中,通常采用PIM-SM模式的一部分技術來實現SSM模型。由於接收者已經通過其它渠道(如廣告谘詢等)知道了組播源的具體位置,因此在SSM模型中無需RP,無需構建RPT,無需組播源注冊過程,也無需通過MSDPMulticast Source Discovery Protocol,組播源發現協議)來發現其它PIM域內的組播源。

ASM模型相比,SSM模型僅需要IGMPv3PIM-SM部分子集的支持。

1. 鄰居發現

PIM-SSM使用與PIM-SM完全相同的鄰居發現機製,具體請參見“鄰居發現”一節。

2. DR選舉

PIM-SSM使用與PIM-SM完全相同的DR選舉機製,具體請參見 DR選舉”一節。

3. 構建SPT

構建為PIM-SM服務的RPT,還是構建為PIM-SSM服務的SPT,關鍵在於接收者準備加入的組播組是否屬於SSM組地址範圍(IANA保留的SSM組地址範圍為232.0.0.0/8)。

圖9 PIM-SSM中構建SPT示意圖

9所示,Host BHost C為組播信息的接收者(Receiver),由其借助IGMPv3的報告報文向DR報告自己對來自組播源S、發往組播組G的信息感興趣。收到該報告報文的DR先判斷該報文中的組地址是否在SSM組地址範圍內:

l              如果在SSM組地址範圍內,則構建PIM-SSM,並向組播源S逐跳發送通道(Channel)的訂閱報文(Subscribe Message)。沿途所有路由器上都創建(SG)表項,從而在網絡內構建了一棵以組播源S為根、以接收者為葉子的SPT,該SPT就是PIM-SSM中的傳輸通道;

l              如果不在SSM組地址範圍內,則仍舊按照PIM-SM的流程進行後續處理,此時DR需要向RP發送(*G)加入報文,同時需要進行組播源的注冊。

&  說明:

PIM-SSM中,借助“通道”的概念表示組播組,借助“訂閱報文”的概念表示加入報文。

 

多實例的PIM

在多實例應用中,組播路由器需要針對不同的VPN實例分別維護PIM鄰居表、組播路由表、BSR信息和RP-Set信息,並保持多個VPN實例間上述信息的相互獨立。

當組播路由器收到組播數據報文時,需要區分出該數據報文所屬的VPN實例,並根據該VPN實例對應的組播路由表將其轉發,或創建與該VPN實例的PIM相關的組播路由表項。

附件下載

聯係我們