IP組播基礎及工作原理——3
PIM基礎及工作原理
PIM(協議無關組播)中的“協議無關”指的是與單播路由協議無關,即PIM不需要維護專門的單播路由資訊,而是直接利用單播路由表的路由資訊(注意:還有自己的組播路由表),對組播報文執行RPF(Reverse Path Forwarding,逆向路徑轉發)檢查,檢查通過後建立組播路由表項,從而轉發組播報文。
目前在實際網路中,PIM主要有兩種模式:PIM-DM(PIM-DenseMode,PIM密集模式)、PIM-SM(PIM-Sparse Mode,PIM稀疏模式),均可用於IPv4和IPv6網路。由PIM路由器所組成的網路稱為PIM網路。通常一個大的PIM網路可以劃分為多個PIM域來管理和控制組播報文的轉發,這裡的域內組播協議即是指PIM域內組播協議。
在目前的PIM協議中,主要實現方式包括PIM-DM、PIM-SM(ASM模型)、PIM-SM(SSM模型)3種。SSM模型與ASM模型之間的最大差異就是是否指定了組播源。
一、PIM基本概念
1、PIM路由器
在介面上使能了PIM協議的路由器即為PIM路由器。在建立組播分發樹的過程中,PIM路由器又分為以下幾種:
(1)第一跳路由器:在組播轉發路徑上與組播源相連且負責轉發該組播源發出的組播資料的PIM路由器。如上圖的RouterE。
(2)葉子路由器:與使用者主機相連的PIM路由器,但連線的使用者主機不一定為組成員,如上圖中的RouterA、RouterB、RouterC。
(3)最後一跳路由器:在組播轉發路徑上與組播組成員相連
(4)中間路由器:在組播轉發路徑上第一跳路由器與最後一跳路由器之間的PIM路由器。如上圖RouterD
2、組播分發樹
“組播分發樹”是PIM網路中以組播組為單位,在PIM路由器上建立的點到多點的組播轉發路徑。由於組播轉發路徑呈現樹型結構,也稱為組播分發樹(MDT,Multicast Distribution Tree)。
組播分發樹主要包括以下幾種:
(1)以組播源為根,以組播成員為葉子的組播分發樹稱為SPT(Shortest Path Tree,最短路徑樹)。SPT同時適用於PIM-DM網路和PIM-SM網路。如上圖的RouterE——>RouterD——>RouterA/RouterB/RouterC就是一棵以Source為根,以HostA、HostB和HostC為葉子的SPT。
(2)以RP(RendezvousPoint,匯集點)為根,以組播組成員為葉子的組播分發樹稱為RPT(RP Tree,匯集點樹)。RPT僅適用於PIM-SM網路。RP是通過手動配置的。
3、PIM路由表項
PIM路由表項即通過PIM協議建立的組播路由表項。PIM路由表項中主要用於指導轉發的資訊,包括組播源IP地址(是一個單播IP地址)、組播組IP地址(是一個組播IP地址)、上游介面(本地路由器上接收到組播資料的介面,如上圖中RouterD的GE3/0/0介面)和下游介面(將組播資料轉發出去的介面,如上圖中RouterD的GE1/0/0和GE2/0/0介面)。
PIM網路中存在兩種路由表項:(S,G)路由表項或(*,G)路由表項。S表示組播源IP地址,G表示組播組IP地址,*表示任意組播源。其中,(S,G)路由表項中明確指定了組播源S的位置,主要用於在PIM路由器上建立SPT(最短路徑樹),同時適用於PIM-DM和PIM-SM網路;而(*,G)路由表項中代表不知道組播源位置,只知道組播組IP地址,主要用於在PIM路由器上建立RPT(匯集點樹),僅適用於PIM-SM網路。
PIM路由器上可能同時存在以上兩種路由表項。當收到源地址為S,組地址為G的組播報文,且通過RPF(逆向路徑轉發)檢查的情況下,按照如下的規則轉發:
(1)如果存在(S,G)路由表項,則由(S,G)路由表項指導報文轉發。
(2)如果不存在(S,G)路由表項,只存在(*,G)路由表項,則先依照(*,G)路由表項建立(S,G)路由表項,再由(S,G)路由表項指導報文轉發。
二、PIM-DM基本工作原理
PIM-DM(PIM密集模式)使用“推”(Push)模式轉發組播報文,一般應用於組播組成員規模相對較小、相對密集的網路。在實現過程中,它會假設網路中的組成員分佈非常稠密,每個網段都可能存在組成員。當有活躍的組播源出現時,PIM-DM會將組播源發來的組播報文擴散到整個網路的PIM路由器上,在裁剪掉不存在組播報文轉發的分支。
PIM-DM就這樣通過週期性的進行“擴散(Flooding)——剪枝(Prune)”過程來構建並維護一棵連線組播源和組成員的單向無環SPT(Source Specific Shortest Path Tree,源指定最短路徑樹)。如果在下一次“擴散——剪枝”進行前,被裁剪掉的分支由於其葉子路由器上有新的組成員加入而希望提前恢復轉發狀態,也可通過嫁接(Graft)機制主動恢復其對組播報文的轉發。
綜上所述,PIM-DM的關鍵工作機制包括鄰居發現、擴散、剪枝、嫁接、斷言和狀態重新整理。其中,擴散、剪枝、嫁接是構建SPT的主要方法。
1、鄰居發現(NeighborDiscovery)
在PIM路由器每個使能了PIM協議的介面上都會對外發送Hello報文。封裝Hello報文的組播報文的目的地址是224.0.0.13(代表同一網段中所有PIM路由器,是一個永久組播地址)、源地址為介面的IP地址、TTL數值為1。
Hello報文的作用:發現PIM鄰居、協調各項PIM協議報文引數,並維持鄰居關係。
在發現PIM鄰居的過程中,同一網段中的PIM路由器都必須接收目的地址為224.0.0.13的組播報文。這樣直接相連的PIM路由器之間通過互動Hello報文後就可以彼此知道自己的鄰居資訊,建立鄰居關係。只有鄰居關係建立成功後,PIM路由器之間才能相互接收PIM協議報文,從而建立組播路由表項。
Hello報文中攜帶多項PIM協議報文引數,主要用於PIM鄰居之間PIM協議報文的控制,協調各項PIM協議報文引數。具體引數包括:
(1)DR_Priority:表示各路由器介面競選DR(指定路由器)的優先順序,優先順序越高越容易獲勝,擔當IGMPv1的查詢器(注意,如果是執行IGMPv2或IGMPv3則採用專門的查詢器選舉機制)。
(2)Holdtime:表示保持鄰居為可達狀態的超時時間,超過這個時間沒收到鄰居發來的Hello報文即認為該鄰居不可達。這與RIP、OSPF等動態路由協議中的Hello報文是一樣的。
(3)LAN_Delay:表示共享網段內傳輸Prune(剪枝)報文的延遲時間,超過這個時間,這個報文將被丟棄。
(4)Neighbor-Tracking:表示鄰居跟蹤功能。
(5)Override-Interval:表示Hello報文中攜帶的否決剪枝的時間間隔。當超過這個時間後原來的剪枝狀態就要被中止,恢復對應介面的組播轉發功能。
2、維持鄰居關係
PIM路由器之間週期性地傳送Hello報文。如果Holdtime超時還沒有接收到該PIM鄰居發出的新的Hello報文,則認為該鄰居不可達,將其從鄰居列表中清除。
PIM鄰居的變化將導致網路中組播拓撲的變化。如果組播分發樹上的某上游鄰居或下游鄰居不可達,將導致組播路由器重新收斂,組播分發樹遷移。
3、擴散
當PIM-DM網路總出現活躍的組播源之後,組播源傳送的組播報文將在全網內擴散(Flooding)。“擴散”的目的其實就是為了下一步的“剪枝”和“斷言”操作。當PIM路由器接收到組播報文,並根據單播路由表進行RPF檢查通過後,就會在該路由器上建立(S,G)表項。在PIM路由器的下游介面列表中包括了除上游介面之外,與所有PIM鄰居相連的介面,到達的組播報文將從各個下游介面轉發出去。最後組播報文擴散到達葉子路由器,此時會出現以下兩種情況:
(1)如果與該葉子路由器相連使用者網段上存在組成員,則將與該網段相連的介面加入(S,G)表項的下游介面列表中,後續的組播報文會向組成員轉發。
(2)如果與該葉子路由器相連使用者網段上不存在組成員,且不需要向其下游PIM鄰居轉發組播報文,則執行“剪枝”機制,從組播路徑中去掉這部分路徑。
有時組播報文擴散到一個連著多臺PIM路由器的共享網段時,會出現這種情況:這些PIM路由器上進行的RPF檢查都能通過,從而有多份相同報文轉發到這個網段。此時,需要執行“斷言”機制,保證只有一個PIM路由器向該網段轉發組播報文。
如上圖,在PIM-DM網路中,RouterA、RouterB和RouterC之間通過傳送Hello報文建立了PIM鄰居關係。HostA通過RouterA與HostA之間執行的IGMP協議加入了組播組G,HostB沒有加入任何組播組。則擴散的具體過程如下,從中也反映了擴散的目的之一——“剪枝”。
(1)組播源S開始向組播組G傳送組播報文。
(2)RouterC接收到源傳送的組播報文後根據單播路由表進行RPF檢查。RPF檢查通過後建立(S,G)表項,下游介面列表包括與RouterA和RouterB相連的介面,後續到達的報文向RouterA和RouterB轉發。
(3)RouterA接收來自RouterC的組播報文,通過RPF成功檢查後在本地建立對應(S,G)表項,並在下游介面列表新增與組成員HostA相連的介面,後續到達的報文向HostA轉發。
(4)RouterB接收來自RouterC的組播報文,由於與RouterB相連下游網段不存在組成員和PIM鄰居,所以執行剪枝操作,不會發送組播資料到HostB上。
4、剪枝(Prune)
通過“擴散”特性可瞭解“剪枝”的目的,剪枝的原理如下:
當PIM路由器接收到組播報文後,通過RPF檢查,但是下游網段沒有組播報文需求時,PIM路由器會向上遊傳送剪枝報文,通知上游路由器禁止相應下游介面的轉發,將其從(S,G)表項的下游介面列表中刪除。剪枝操作由葉子路由器發起逐跳向上,最終組播轉發路徑上只存在與組成員相連的分支。
路由器為被裁剪的下游介面啟動一個剪枝定時器,定時器超時後介面恢復轉發。這時,組播報文又會重新在全網範圍內擴散,新加入的組成員可以接收到組播報文。隨後,下游不存在組成員的葉子路由器再次將向上發起剪枝操作。通過這種週期性地擴散——剪枝,PIM-DM週期性的重新整理SPT。當下遊介面被剪枝後會執行以下操作:
(1)如果下游葉子路由器有組成員加入,並且希望在下次“擴散——剪枝”前就恢復組播報文轉發,則執行“嫁接”機制。
(2)如果下游葉子路由器一直沒有組成員加入,希望該介面保持抑制轉發狀態,則執行“狀態重新整理機制”。
如下圖,RouterB上未連線組成員。在這種情況下,RouterB會向上遊發起剪枝請求。過程如下:
(1)RouterB向上遊RouterC傳送Prune報文,通知RouterC不用再轉發資料到該下游網段。
(2)RouterC收到Prune報文後,停止該下游介面(也就是與RouterB相連的出介面)轉發,將該下游介面從(S,G)表項中刪除,後續到達的報文只向RouterA轉發。
5、嫁接(Graft)
PIM-DM通過“嫁接機制”可使有新組成員加入的網段快速得到組播報文。葉子路由器通過IGMP瞭解到與其相連的使用者網段上,組播組G有新的組成員加入。隨後葉子路由器會向上遊傳送Graft報文,請求上游路由器恢復相應出介面轉發,將其新增在(S,G)表項下游介面列表中。
嫁接過程從葉子路由器開始,到有組播報文到達的路由器結束。如下圖所示為具體的嫁接過程:
(1)RouterB希望立即恢復對HostB組播報文的轉發,於是向上遊路由器RouterC傳送Graft報文,請求恢復相應出介面轉發組播報文。
(2)RouterC收到Graft報文後,恢復與RouterB相連的出介面轉發,將該介面新增到(S,G)表項中的下游介面列表中,這樣後續到達的報文向RouterB轉發,直達HostB。
6、狀態重新整理(StateRefresh)
在PIM-DM網路中,為了避免被剪枝的介面因為“剪枝定時器”超時而恢復轉發,離組播源最近的第一跳路由器會週期性地觸發State Refresh報文在全網內擴散。收到狀態重新整理(State Refresh)報文的PIM路由器會重新整理剪枝定時器的狀態,其目的就是查詢原來被剪枝的路徑上是否有組播成員要加入,要恢復轉發狀態,是一種被動中止剪枝狀態的操作。在原來被剪枝介面的下游葉子路由器上,如果有新的組成員加入,則立即中止剪枝狀態,對應路徑的組播轉發;如果仍沒有組成員加入,則該介面將一直處於抑制轉發狀態。
7、斷言(Assert)
當一個網段內有多個相連的PIM路由器通過RPF檢查後向該網段轉發相同的組播報文時,則需要通過“斷言機制”來保證只有一個PIM路由器向該網段轉發組播報文,以保證組成員不接收多份相同的組報文。
“斷言機制”是在PIM路由器接收到鄰居路由器傳送的相同組播報文後,以組播的方式向本網段的所有PIM路由器傳送Assert報文,目的地址為224.0.0.13(代表所有PIM路由器)。其他PIM路由器在接收到Assert報文後,將自身引數與對方報文中攜帶的引數做比較,進行Assert競選。競選規則如下:
(1)單播路由協議優先順序較高者獲勝。
(2)如果優先順序相同,則到組播源的路徑開銷較小者獲勝。
(3)如果以上都相同,則下游介面IP地址最大者獲勝。
根據Assert競選結果,路由器將執行不同的操作:
(1)獲勝一方的下游介面稱為AssertWinner,將負責後續對該網段組播報文的轉發。
(2)失敗一方的下游介面稱為AssertLoser,後續不會對該網段轉發組播報文,PIM路由器也會將其從(S,G)表項下游介面列表中刪除。
Assert競選結束後,該網段上只存在一個下游介面,只傳輸一份組播報文。所有Asser Loser可以週期性地恢復組播報文轉發,從而引發週期性的Assert競選。
如上圖,RouterB和RouterC均通過了RPF檢查,建立了(S,G)表項,並且兩者的下游介面連線在同一網段,RouterB和RouterC都向該網段傳送組播報文。具體斷言過程如下:
(1)RouterB和RouterC從各自上游介面接收到RouterA發來的組播報文,RPF檢查都失敗,報文被丟棄。這時,RouterB和RouterC就會分別向該網段傳送Assert報文。
(2)RouterB在收到RouterC發來的Assert報文後,將自身的路由資訊與Assert報文中攜帶的路由資訊進行比較,由於RouterB自身到組播源的開銷較小而獲勝。於是後續組播報文仍然向該網段轉發,RouterC在接收到組播報文後仍然由於RPF檢查失敗而丟棄。
(3)同樣,RouterC在收到RouterB發來的Assert報文,也將自身的路由資訊與報文中攜帶的路由資訊進行比較,由於RouterC自身到組播源的開銷較大而落敗。於是禁止相應下游介面向該網段轉發組播報文,將其從(S,G)表項的下游介面列表中刪除。
三、PIM-SM(ASM模型)工作原理
PIM-SM適用於ASM和SSM兩種模型。在ASM模型中,它使用“拉(Pull)模式”轉發組播報文,一般應用於組播成員規模相對較大、相對稀疏的網路。其基本工作機制如下:
(1)在網路中維護一臺RP,可以為隨時出現的組成員或組播源服務。網路中所有PIM路由器都知道RP的位置。
(2)當網路中出現組成員(使用者主機通過IGMP加入某組播組G)時,最後一跳路由器向RP傳送Join報文,逐跳建立(*,G)表項,生成一棵以RP為根的RPT。
(3)當網路中出現活躍的組播源時(信源向某組播組G傳送第一個組播資料時),第一跳路由器將組播資料封裝在Register報文中單播發往RP,在RP上建立(S,G)表項,註冊源資訊。
在ASM模型中,PIM-SM的關鍵機制包括鄰居發現、DR競選、RP發現、RPT構建、組播源註冊、SPT切換、剪枝、斷言;同時也可通過配置BSR(Bootstrap Router,自舉路由器)管理域來實現單個PIM-SM域的精細化管理。其中“鄰居發現”“斷言機制”與前面相同。
1、DR競選
在組播源或組成員所在的網段,通常同時連線著多臺PIM路由器。這些PIM路由器之間通過互動Hello報文成為PIM鄰居,Hello報文中攜帶DR優先順序和該網段介面地址。PIM路由器將自身條件與對方報文中攜帶的資訊進行比較,選舉出唯一的DR(注意:每個網段要選舉一個DR,並不是整個組播網路中只能有一臺DR)來負責源端或組成員端組播報文的收發。競選規則如下:
(1)DR優先順序較高者獲勝(在網段中所有PIM路由器都支援DR優先順序的情況下)。
(2)如果DR優先順序相同,或該網段存在至少一臺PIM路由器不支援在Hello報文中攜帶DR優先順序,則IP地址較大者獲勝。
(3)如果當前DR出現故障,將導致PIM鄰居關係超時,其他PIM鄰居之間會觸發新一輪的DR競選。
在ASM模型中DR主要作用如下:
(1)在連線組播源的共享網段,由DR負責向RP傳送Register註冊(組播源註冊)報文。與組播源相連的DR稱為源端DR。
(2)在連線組成員的共享網段,由DR負責向RP傳送Join加入(組成員加入)報文。與組成員相連的DR稱為組成員端DR。
2、RP發現
RP為網路中一臺重要的PIM路由器,用於處理組播源DR註冊資訊及組成員加入請求,網路中的所有PIM路由器都必須直到RP的地址,類似於一個供求資訊的匯聚中心。
一個RP可以同時為多個組播組服務,但一個組播組只能對應一個RP。目前可以通過以下方式配置RP。
(1)靜態RP:在網路中的所有PIM路由器上配置相同的RP地址,靜態指定RP的位置。
(2)動態RP:在PIM域內選擇幾臺PIM路由器,配置C-RP(Candidate-RP,候選RP)來動態競選出RP。不過此時,還需要通過配置C-BSR(Candidate-BSR,候選BSR)選舉出BSR,來收集C-RP的通告資訊,向PIM-SM域內的所有PIM路由器釋出。
BSR(自舉路由器)是PIM-SM網路裡的管理核心,負責收集網路中C-RP(Candidate-RP,候選RP)發來的宣告資訊(Advertisement message),然後將為每個組播組選擇部分C-RP資訊組成RP-Set(即組播組和RP的對映資料庫),並以BSR訊息(BSR Meaasge)釋出到整個PIM-SM網路,從而使網路內的所有路由器(包括DR)都知道RP的位置。
BSR的選舉過程中,初始時每個C-BSR都認為自己是BSR,向全網傳送Bootstrap報文。Bootstrap報文中攜帶C-BSR地址、C-BSR的優先順序。每一臺PIM路由器都收到所有C-BSR發出的BootStrap報文,通過比較這些C-BSR資訊,競選產生BSR。BSR的競選規則如下:
(1)C-BSR優先順序較高者獲勝(優先順序數值越大優先順序越高)。
(2)如果優先順序相同,IP地址較大的C-BSR獲勝。
C-RP競選的具體過程:
(1)C-RP向BSR傳送Advertisement報文,報文中攜帶C-RP地址、服務的組範圍和C-RP優先順序。
(2)BSR收到這些Advertisement報文後,將這些資訊彙總為RP-Set(RP集),封裝在Bootstrap報文中,釋出給全網的每一臺PIM-SM路由器。
(3)各PIM路由器收到Bootstrap報文後,使用相同的規則進行計算和比較,從多個針對特定組的C-RP中競選出改組RP。規則如下:
①C-RP介面地址掩碼最長者獲勝。
②C-RP優先順序較高者獲勝(優先順序數值越大優先順序越低)。
③如果優先順序相同,則執行Hash函式,計算結果較大的C-RP獲勝。
④如果以上都相同,則C-RP地址較大者獲勝。
由於所有PIM路由器使用相同的RP-Set和競選規則,所以得到的組播組與RP之間的對應關係也相同。PIM路由器將“組播組——RP”對應關係儲存下來,指導後續的組播操作。
3、RPT構建
PIM-SMRPT是一棵以RP為根,以存在組成員關係的PIM路由器為葉子的組播分發樹,如下圖
當網路中出現組成員(使用者主機通過IGMP加入某組播組G)時,組成員端DR向RP傳送Join報文,在通向RP的路徑上逐跳建立(*,G)表項,生成一棵以RP為根的RPT。
在RPT構建過程中,PIM路由器在收發Join報文時,都會進行RPF檢查。接收者DR首先執行RPF檢查:查詢到達RP的單播路由,單播路由的出介面為上游介面,下一跳為RPF鄰居。然後,接收者DR向該RPF鄰居傳送Join報文。RPF鄰居接收到Join報文後,執行RPF檢查,如果檢查通過,繼續向上遊傳送。Join報文逐跳上送,直至到達RP。
4、組播源註冊
組播源註冊也是在RP上進行的,但註冊資訊是通過源端DR傳遞到RP的。在PIM-SM網路中,任何一個新出現的組播源都必須首先在RP處註冊,然後才能將組播報文傳輸到組成員。具體過程如下:
(1)組播源將組播報文發給源端DR。
(2)源端DR接收到組播報文後,將其封裝在Register報文中,傳送給RP。
(3)RP接收到Register報文後,將其解封裝,並根據報文中的資訊建立對應(S,G)表項,然後將組播資料沿RPT傳送到達組成員。
5、SPT切換
在PIM-SM網路中,一個組播組只對應一個RP,只構建一棵RPT。在未進行SPT切換的情況下,所有發往該組的組播報文都必須先封裝在註冊報文中發往RP,RP解封裝後,再沿RPT分發。但這樣會出現一個問題,那就是因為RP是所有組播報文必經的中轉站,當組播報文速率逐漸增大時會對RP形成巨大的負擔。為了解決此問題,PIM-SM允許RP或組成員端DR通過觸發SPT切換來減輕RP的負擔。
RP觸發SPT切換的原理:在RP收到源端DR的註冊報文後,將封裝在Register報文中的組播報文直接沿RPT轉發給組成員(不進行解封),同時RP會向源端DR逐跳傳送Join報文。傳送過程中在PIM路由器建立(S,G)表項,從而建立了RP到源的SPT。SPT樹建立成功後,源端DR直接將組成員加入的組播報文轉發到RP。最終使源端和RP免除頻繁的封裝與解封裝。
如上圖,組成員端DR週期性檢測組播報文的轉發速率,一旦發現(S,G)報文的轉發速率超過閾值,則觸發以下SPT切換:
(1)組成員端DR(如RouterD)逐跳向源端DR逐跳傳送Join報文並建立(S,G)表項,建立源端DR到組成員DR的SPT。
(2)SPT建立後,組成員端DR會沿著RPT逐跳向RP傳送剪枝報文,刪除(S,G)表項中相應的下游介面。剪枝結束後,RP不再沿RPT轉發組播報文到組成員端。
如果SPT不經過RP,RP會繼續向源端DR逐跳傳送剪枝報文,刪除(S,G)表項中相應的下游介面。剪枝結束後,源端DR不再沿“源端DR——RP”的SPT轉發組播報文到RP。
預設情況下,裝置一般未設定組播報文轉發速率的閾值,RP或者組成員端DR在接收到第一份組播報文時都會觸發各自的SPT切換。
6、BSR管理域
為了實現網路管理精細化,可以選擇將一個PIM-SM網路劃分為多個BSR管理域和一個Global(全域性)域。這樣一方面可以有效地分擔單一BSR的管理壓力,另一方面可以使用私有組地址為特定區域的使用者提供專門服務。
每個BSR管理域中維護一個BSR,為某一特定地址範圍的組播組服務。Global域中維護一個BSR,為所有剩餘的組播組服務。
BSR管理域是針對特定地址範圍的組播組的管理區域,屬於此範圍的組播報文只能在本管理域內傳播,無法通過BSR管理域邊界。
上圖所示包括了BSR1和BSR2兩個管理域。對於有相同組播地址的不同管理域,各BSR管理域所包含的PIM路由器互不相同,同一PIM路由器不能從屬於多個BSR管理域。各BSR管理域在地獄上相互獨立,且相互隔離。Global域包含PIM-SM網路內的全部PIM路由器。不屬於任意BSR管理域的組播報文,可以在整個PIM網路範圍內傳播。
如果從組播組地址範圍來看,每個BSR管理域為特定地址範圍的組播組提供服務,不同的BSR管理域服務的組播組地址範圍可以重疊。但每個組播組地址只在本BSR管理域內有效,相當於私有組地址。如下圖所示,BSR1域和BSR3域對應的組播組地址範圍出現重疊。
不屬於任何BSR管理域的組播組,一律屬於Global域的服務範圍。上圖中的Global域組地址範圍是除了G1、G2之外的G-G1-G2組播地址。
Global域和每個BSR管理域都包含針對自己域的C-RP和BSR裝置,這些裝置在行使相應功能時僅在本域內有效。即BSR機制和RP競選在各管理域之間是隔離的。每個BSR管理域都有自己的邊界,該管理域的組播資訊(C-RP宣告報文、BSR自舉報文等)不能跨越域傳播。但Global域的組播資訊可以在整個Global域內傳遞,可以穿越任意BSR管理域。
四、PIM-SM(SSM模型)工作原理
SSM模型是藉助PIM-SM的部分技術和IGMPv3/MLDv2來實現的,無需維護RP、無需構建RPT、無需註冊組播源,可以直接在源與組成員之間建立SPT。
SSM的特定是網路使用者能夠預先知道組播源的具體位置,因此使用者在加入組播組時可以明確指定從哪些源接收資訊,組成員端DR瞭解到使用者主機的需求後,直接向源端DR傳送Join報文。Join報文逐跳向上傳輸,在源與組成員之間建立SPT。
在SSM模型中,PIM-SM的關鍵機制包括鄰居發現、DR競選、構建SPT。其中“鄰居發現”機制與PIM-DM鄰居發現機制一樣,而“DR競選”機制與PIM-SM(ASM模型)的“DR競選”機制一樣。
下圖為PIM-SM(SSM模型)的SPT構建原理。具體過程如下:
(1)擔當組成員端DR的RouterD、RouterE藉助IGMPv3/MLDv2協議瞭解到使用者主機有到相同組播組不同組播源的組播需要,於是分別逐跳向源方向(SSM模型中組播源是已知的)傳送Join報文。
(2)沿途各PIM路由器通過提取Join報文中的相關資訊分別建立(S1,G)、(S2,G)表項,最終就形成了從源S1到組成員HostA、源S2到組成員HostB的SPT。
(3)SPT建立後,源端就會將組播報文沿著SPT分發給組成員。
五、單自治域PIM-SM應用
大多陣列播應用還是在單個AS、單個PIM域環境下的,如下圖所示
一個比較大型的組播網路,該網路中已經部署了完備的IGP路由,且任意網段路由可達。網路中的組成員分佈相對比較稀疏,要求網路中的使用者主機能夠按需接收視訊點播資訊,並在一定程度上節約網路的頻寬。
HostA、HostB和HostC為三個末梢網路中的資訊接收者,通過組播方式接收視訊點播資訊,整個PIM域採用PIM-SM方式。RouterA與組播源S1相連,RouterC與組播源S2相連;RouterB連線HostA,RouterE和RouterG連線HostB和HostC。在所有路由器介面上啟用PIM-SM協議。
因為網路中的組播源分佈比較密集,則可以選擇與組播源比較近的核心裝置作為C-RP。將RouterC和RouterD的介面配置為C-BSR和C-RP,動態競選出為PIM-SM網路服務的BSR和RP。在RouterB與HostA之間,RouterE、RouterG與HostB、HostC之間均執行IGMP協議。
RP的部署方式可以基於以下原則(避免在一個PIM域中不同路由器上分別使用靜態RP和動態RP,以防止RP資訊不一致)。
(1)中小型網路:建議選擇靜態RP方式,對裝置要求低,也比較穩定。
如果網路中只有一個組播源,建議選擇直連組播源的裝置作為靜態RP,這樣可以省略組播源DR向RP註冊的過程。採用靜態RP方式要確保域內所有路由器(包括RP本身)的RP資訊以及服務的組播組範圍全網一致。
(2)大型網路:可以採用動態RP方式,可靠性高,可維護性強。
如果網路中存在多個組播源,且分佈密集,建議選擇與組播源比較近的核心裝置作為C-RP;如果網路中存在多個使用者,且分佈密集,建議選擇與使用者比較近的核心裝置作為C-RP。
為路由器介面配置IGMP協議時,請確保介面引數配置的一致性,即遵循如下原則:連線在同一網段的所有路由器必須執行相同的IGMP版本(推薦使用IGMPv2),且各介面引數(如查詢定時器、組成員關係保持時間等)必須相同。如果IGMP版本或各引數不相同,會導致不同路由器上IGMP組成員關係不一致。
部署完上述網路後,HostA和HostB根據需要向RP傳送Join訊息,組播源的資訊能夠到達接收者。建議在網路邊緣配置介面靜態接入使用者所請求的組播組,可以提高使用者收看頻道的穩定性。