一抖剿、PIM DM
PIM DM的工作機制包括擴散、剪枝识窿、嫁接斩郎、狀態(tài)刷新及斷言機制。
擴散喻频、剪枝是生成SPT的主要方法缩宜,而嫁接和狀態(tài)刷新是對擴散剪枝機制的改進增強;
1甥温、擴散
當一臺路由器收到組播報文后锻煌,先執(zhí)行RPF檢查,通過檢查后的報文向所有其他有PIM鄰居或有IGMP接收者的接口復制轉(zhuǎn)發(fā)姻蚓;(除RPF接口外炼幔,其他有PIM鄰居的接口都是下游接口)
只有路由器組播表項下游接口非空,報文就會繼續(xù)擴散下去史简,如果沒有其他鄰居或不再有IGMP接收者乃秀,則丟棄報文并不再繼續(xù)擴散;
2圆兵、剪枝和剪枝定時器
當報文擴散到末端路由器后跺讯,由于其沒有PIM鄰居或沒有IGMP接收者,組播表項下游接口列表為空殉农,路由器會向上游鄰居發(fā)送剪枝報文刀脏,通知上游鄰居不要再繼續(xù)將組播報文轉(zhuǎn)發(fā)下來;
上游鄰居收到剪枝報文后超凳,會將收到剪枝報文的接口從其組播表項下游接口列表中剪除愈污,如果路由器的下游接口都被剪除耀态,會觸發(fā)路由器繼續(xù)向上游發(fā)送剪枝,而如果下游接口仍有其他接口暂雹,則不再繼續(xù)剪枝首装,剪枝行為終止;
發(fā)生剪枝后杭跪,報文不再繼續(xù)向剪枝接口擴散仙逻,剪枝計時器(210s)超時后,被剪掉的接口會重新出現(xiàn)在下游接口列表中涧尿,組播數(shù)據(jù)報文會再次向該接口擴散系奉,下游路由器再次向上游鄰居發(fā)送剪枝報文,如此反復姑廉;
剪枝延遲定時器及剪枝否決機制
剪枝延遲計時器的作用是在下游接口有多個鄰居的場景下缺亮,阻止下游接口被某個下游鄰居立即剪掉而設計的;
如果下游接口僅有一個PIM鄰居且從其收到剪枝報文桥言,則收到后下游接口立即被剪掉瞬内;
但如果下游接口有多個鄰居存在,則要在3s超時后接口才被剪除限书;
Override是在共享網(wǎng)段上當前路由器看到另外一臺路由器發(fā)送剪除自己上游RPF鄰居的剪枝報文而設置的計時器虫蝶,在Override期間2.5s,當前路由器如果聽到其他路由器的join響應報文倦西,則會立即終止Override計時器能真,否則發(fā)送自己的join報文;
3扰柠、 嫁接
被剪枝的接口下游出現(xiàn)新加入的接收者粉铐,被剪枝的接口會在剪枝定時器超時恢復轉(zhuǎn)發(fā),這個時間需要210s卤档,接收者需要等待210s后才能收到組播數(shù)據(jù)蝙泼,引入嫁接機制可以優(yōu)化接收者收到組播報文的時間;
嫁接是下游路由器主動向上游RPF路由器發(fā)送Graft報文劝枣,要求上游路由器主動把被剪除的接口添加到下游接口列表汤踏,整個過程是可靠的;
發(fā)生剪枝的路由器下游新加入接收者舔腾,下游接口列表變?yōu)榉强障海|發(fā)路由器向上游RPF鄰居發(fā)送Graft報文;(如果一直沒有收到Graft-Ack稳诚,3s后會發(fā)生重傳)
上游RPF鄰居被剪枝的接口收到嫁接報文后哗脖,立即變?yōu)檗D(zhuǎn)發(fā)狀態(tài),同時單播回應Graft-Ack報文,如果當前路由器下游接口非空才避,會繼續(xù)向上游RPF鄰居發(fā)送嫁接報文橱夭,直至有組播流的路由器;
4桑逝、狀態(tài)刷新
有了主動嫁接機制棘劣,就不再需要已剪枝接口剪枝定時器超時后恢復轉(zhuǎn)發(fā)了,通過狀態(tài)刷新來周期刷新剪枝定時器不讓其因定時器超時恢復轉(zhuǎn)發(fā)肢娘;
離組播源最近的第一跳路由器會以60s為間隔周期產(chǎn)生狀態(tài)刷新報文并向全網(wǎng)擴散呈础,擴散方式同組播報文擴散方式舆驶,狀態(tài)刷新報文SR僅刷新相應表項的下游接口橱健,如果該接口已被剪除則刷新剪枝定時器,使其一直處于剪枝狀態(tài)沙廉;
當組播源不再活躍時拘荡,第一跳路由器將不再產(chǎn)生狀態(tài)刷新報文;
5撬陵、斷言機制和斷言計時器
組播報文經(jīng)多臺路由器轉(zhuǎn)發(fā)到同一下游網(wǎng)段珊皿,相同的組播報文被轉(zhuǎn)發(fā)了多份,這會加重網(wǎng)絡負擔,同時接收者會收到重復的多份報文巨税;
斷言機制通過比較R3蟋定、R4到組播源的信息,在二者間選舉出一臺路由器負責轉(zhuǎn)發(fā)組播數(shù)據(jù)到當前網(wǎng)段草添;
組播轉(zhuǎn)發(fā)路由器的下游接口發(fā)送出組播數(shù)據(jù)的同時有收到同樣的組播數(shù)據(jù)驶兜,觸發(fā)各自發(fā)送Assert報文,報文中攜帶了自身到組播源的路由協(xié)議優(yōu)先級和度量值远寸;
先比較單播路由協(xié)議優(yōu)先級抄淑,值越小越優(yōu);
如果路由協(xié)議優(yōu)先級相同驰后,比較到組播源的成本值肆资,值越小越優(yōu);
如果到組播源的成本值也一致灶芝,Assert報文的源IP地址大的成為Winner郑原;
非Winner路由器自動剪除自己的下游接口關(guān)聯(lián)斷言計時器(180s),同時發(fā)送一份剪枝報文給Winner夜涕,后續(xù)過程參考剪枝否決機制颤专;
Assert計時器超時后180s,下游接口恢復轉(zhuǎn)發(fā)钠乏,因此斷言機制周期性發(fā)生栖秕;
Assert Cannel報文? ? (將Assert報文攜帶的metric值置為無窮大)
如果Winner上游RPF接口Down掉或RPF接口改變?yōu)楫斍皵嘌詢?yōu)勝的接口,會觸發(fā)接口發(fā)送Assert Cannel消息(Assert報文中將metric置為無窮大)晓避,非Winner下游接口立即恢復轉(zhuǎn)發(fā)并發(fā)送Assert報文簇捍,避免非winner的下游接口等待Assert計時器超時只壳,最大180s才能恢復轉(zhuǎn)發(fā);
二暑塑、PIM SM
PIM SM多部署在組播成員分布稀疏分散吼句、規(guī)模相對較大的網(wǎng)絡環(huán)境中;
不同于DM主動擴散組播數(shù)據(jù)到接收者的網(wǎng)絡事格,SM使用PULL的方式來建組播樹惕艳,接收者需要主動向樹根建樹,才能接收組播報文驹愚;
PIM SM中远搪,組播網(wǎng)絡上的接收者和組播源彼此并不知道對方是否存在及所在位置,所以需要RP Rendezvous Point作為網(wǎng)絡的核心逢捺,接收者所在路由器以RP為樹根構(gòu)建共享樹RPT谁鳍,RP以組播源為樹根構(gòu)建最短路徑樹SPT;
PIM SM建組播分發(fā)樹較DM復雜劫瞳,包括三個階段:
階段一倘潜、接收者所在路由器向RP發(fā)(*,G)join建共享樹RPT志于;
階段二涮因、RP收到注冊報文后,向組播源發(fā)(S伺绽,G)join建最短路徑樹SPT养泡;
階段三、收到組播數(shù)據(jù)的接收者所在路由器向組播源發(fā)(S憔恳,G)建SPT樹(可選瓤荔,默認開啟);
SPT和RPT比較
SPT以組播源為樹根,連接組播源和組播接收者,路徑最優(yōu)筛婉,但是每個組播源和組就需要一個(S奉瘤,G)表項,占用內(nèi)存;
RPT以RP為樹根,連接組播接收者,存在次優(yōu)路徑引入延遲的問題郎逃,但是一條(*,G)表項可以轉(zhuǎn)發(fā)所有來自不同源的組播報文挺份,內(nèi)存開銷相對較少褒翰;
RP的作用及不足
RP用于匯聚組播接收者的加入/剪枝請求和組播源的組播數(shù)據(jù);
當組播源活躍時,組播源所在路由器向已知的RP發(fā)起注冊优训;
當接收者出現(xiàn)時朵你,接收者所在路由器向RP發(fā)送建樹請求;
組播數(shù)據(jù)經(jīng)RP在SPT和RPT間轉(zhuǎn)發(fā)揣非;
RP是PIM SM的核心抡医、瓶頸,易有單點故障早敬;
路由器間通告RP會使網(wǎng)絡增加負荷忌傻,配置維護的復雜性相應增加;
RP未必處于源和接收者路由器的最優(yōu)路徑上搞监,會引入額外的延遲水孩;
靜態(tài)RP
靜態(tài)RP為每臺路由器手工添加RP和組的對應關(guān)系,適用在簡單拓撲或小型網(wǎng)絡中部署腺逛;
當網(wǎng)絡拓撲發(fā)生變化時荷愕,不能及時更新RP和組播組的對應關(guān)系衡怀;
如果沒有指定ACL棍矛,靜態(tài)RP為所有組播組224.0.0.0/4服務,如果指定了ACL抛杨,靜態(tài)RP只為該ACL所許可的組播組服務够委;
如果沒有指定ACL,只能配置一個靜態(tài)RP怖现,指定ACL后可以配置最多50個靜態(tài)RP茁帽,但同一個ACL不能對應到多個靜態(tài)RP;
缺省動態(tài)RP比靜態(tài)RP優(yōu)先級高屈嗤,指定preferred關(guān)鍵字后潘拨,靜態(tài)RP生效;
如果存在多個靜態(tài)RP為某個組服務的情況饶号,則選擇IP地址最大的RP為該組服務铁追;
動態(tài)RP
動態(tài)RP的好處是當網(wǎng)絡拓撲發(fā)生變化的時候茫船,RP和組播組的對應關(guān)系會自動調(diào)整琅束,保證網(wǎng)絡的冗余性;
PIMv2使用BSR作為動態(tài)RP協(xié)議算谈,通過BSR定義組播組和RP的映射并快速的分發(fā)到域內(nèi)PIM路由器涩禀,如果當前RP不可達,可以使用備份RP然眼;
BSR協(xié)議定義了兩種角色的設備艾船,C-RP和C-BSR,二者都可以定義多臺,以提供冗余備份能力;
1屿岂、C-BSR? ? Candidate-BSR
在一個PIM-SM域內(nèi)礁蔗,可能存在多臺設備配置為C-BSR,但在同一時刻只能有一臺設備成為BSR雁社;
BSR的選舉是通過PIMv2的Bootstrap報文選舉出來的浴井,報文攜帶BSR優(yōu)先級、BSR地址霉撵;
如下圖磺浙,BSR優(yōu)先級是0,BSR地址是10.1.2.2徒坡,RP-set= (10.1.2.2撕氧,224.0.0.0/4);
Hash掩碼越大選擇RP時的顆粒度越小喇完,在多個RP間分擔的效果就越好伦泥,把組范圍和Hash掩碼執(zhí)行與運算,得出更小的地址段锦溪,對于組地址掩碼相同不脯、C-RP優(yōu)先級相同的每個組地址段可隨機在多個RP間選擇,華為Hash掩碼默認30位刻诊,Hash掩碼為0則沒有分擔能力防楷;
BSR選舉規(guī)則:
(1)比較BSR優(yōu)先級,數(shù)值越大越優(yōu)先则涯;
(2)若優(yōu)先級一樣复局,BSR IP地址大的優(yōu)先;
任何一臺C-BSR路由器初始狀態(tài)都是C-BSR狀態(tài)粟判,啟動BSR計時器130s亿昏;
若BSR計時器超時前收到一份更優(yōu)的BSR報文,轉(zhuǎn)發(fā)給所有其他PIM鄰居档礁,刷新BSR計時器角钩,并把收到BSR報文中的RP-set復制到本地RP-Info中;
若BSR計時器超時后未聽到任何其他更優(yōu)的C-BSR報文事秀,當前C-BSR成為BSR彤断,逐跳泛洪自身報文;
BSR周期產(chǎn)生BSR報文易迹,如果從另外一臺路由器收到優(yōu)先級更高的BSR報文宰衙,只轉(zhuǎn)發(fā)已知最優(yōu)BSR的報文,自身進入C-BSR狀態(tài)不再產(chǎn)生自己的BSR報文睹欲,否則丟掉BSR報文供炼;
若超過130s一屋,仍未收到BSR報文,本地已有的BSR信息及RP映射關(guān)系將由于老化而被清除袋哼;
2冀墨、C-RP? ? Candidate-RP
C-RP可以有多個,每個C-RP定義自己的一個接口IP地址和組播組地址范圍的對應關(guān)系涛贯;
每一個IP地址和組播組地址范圍的對應關(guān)系叫做RP映射诽嘉;
多個C-RP的目的是為了增加網(wǎng)絡的健壯性;
C-RP的PIMv2路由器收到泛洪過來的BSR報文后弟翘,了解到BSR地址后虫腋,每個C-RP都會以單播形式把C-RP上定義的RP映射發(fā)給BSR路由器,BSR路由器將收集到的RP映射放到周期性的BSR報文中通告稀余;
RP選舉規(guī)則:
(1)為組計算RP悦冀,組地址掩碼最長的RP優(yōu)先;? ?
(2)C-RP優(yōu)先級睛琳,數(shù)值越小越優(yōu)先盒蟆;
(3)Hash計算數(shù)值大的優(yōu)先;
(4)C-RP地址大的優(yōu)先师骗;
C-RP以60s周期向BSR單播發(fā)送RP-Advertisement历等,以免C-RP信息在BSR上超時;
RP-Advertisement報文中攜帶C-RP優(yōu)先級丧凤、C-RP地址募闲、組播組地址范圍步脓;
3愿待、普通PIMv2路由器
任何PIMv2路由器收到組地址224.0.0.13的BSR報文后,先執(zhí)行RPF檢查靴患,只有通過RPF檢查的BSR報文才能被接收仍侥,并繼續(xù)轉(zhuǎn)發(fā)給其他PIM鄰居;RPF檢查指接收路由器對BSR報文中的BSR地址檢查鸳君,使BSR為樹根农渊,向遠離BSR的路徑上通告,避免BSR報文環(huán)路或颊;
RPT構(gòu)建
(1)接收者向接收者所在路由器發(fā)送IGMP成員報告砸紊,告知路由器想要加入的組播組;
(2)接收者所在路由器生成(*囱挑,G)表項醉顽,并通過RPF檢查向RP方向發(fā)送(*,G)join平挑,逐跳生成(*游添,G)表項系草,直到RP;
(3)只要接收者存在唆涝,RPT就會一直存在找都。接收者所在路由器每隔60s向上游發(fā)送(*,G)join報文廊酣,收到報文的接口刷新接口計時器210s能耻,如果接口計時器超時都沒有收到(*,G)join報文亡驰,會從下游接口列表中移除嚎京;
下游接口計時器根據(jù)(*,G)join報文攜帶的Holdtime決定隐解;
如果接收者所在網(wǎng)段有多臺路由器鞍帝,僅DR向RP發(fā)送(*,G)join報文煞茫;
SM路由器向上游發(fā)送join報文的條件:
(1)組播接收者加入帕涌;
(2)收到下游join報文;
SM路由器向上游發(fā)送剪枝prune報文的條件续徽,下游接口為空:
(1)組播接收者離開蚓曼;
(2)從下游收到剪枝prune報文;
(3)下游接口計時器超時钦扭,未收到(*纫版,G)join報文;
SPT構(gòu)建
(1)組播源所在路由器收到組播數(shù)據(jù)后生成(S客情,G)表項其弊,收到組播數(shù)據(jù)的接口為上游接口,下游接口只有注冊隧道接口膀斋;
(2)PIM Register作為隧道協(xié)議直接封裝原始組播數(shù)據(jù)梭伐,隧道源IP地址是DR接口地址,目標地址是RP地址仰担,發(fā)給RP糊识;
(3)當RP收到Register報文并解封裝后,根據(jù)組播源和組地址摔蓝,檢查本地是否存在對應(*赂苗,G)表項;
如果不存在(*贮尉,G)表項拌滋,RP創(chuàng)建(S,G)表項绘盟,下游接口為空鸠真,立即向源端DR發(fā)送Register-stop報文悯仙,抑制其繼續(xù)通過注冊隧道發(fā)送組播數(shù)據(jù);(一旦收到出現(xiàn)接收者后吠卷,立即向組播源發(fā)送(S锡垄,G)join報文,構(gòu)建SPT)祭隔;
如果存在(*货岭,G)表項,RP沿著RPT將組播數(shù)據(jù)轉(zhuǎn)發(fā)給接收者疾渴,同時向組播源方向發(fā)送(S千贯,G)join報文,逐跳生成(S搞坝,G)表項搔谴,構(gòu)建SPT;
RP從SPT和注冊隧道收到兩份組播數(shù)據(jù)后桩撮,立即向遠端DR發(fā)送Register-Stop報文敦第,告知源端DR不要繼續(xù)通過注冊隧道發(fā)送組播數(shù)據(jù);
(4)源端DR收到Register-stop報文后店量,啟動注冊抑制計時器60s芜果,不再發(fā)送注冊報文,只要組播源一直活躍融师,注冊抑制計時器超時后右钾,源端DR重新開始發(fā)送注冊報文;
為降低RP系統(tǒng)開銷旱爆,DR在每次抑制計時器超時前5s向RP發(fā)送Register-null空注冊報文舀射,報文中僅包含組播源和組地址信息,不含組播數(shù)據(jù)疼鸟,RP在存在對應SPT或?qū)?后控,G)下游接口為空的情況下,都會響應Register-stop報文空镜,來抑制源端DR通過注冊隧道轉(zhuǎn)發(fā)組播數(shù)據(jù);
SPT切換
華為SM實現(xiàn)中捌朴,當組播數(shù)據(jù)沿RPT向下游轉(zhuǎn)發(fā)時吴攒,會觸發(fā)每一跳設備創(chuàng)建和(*,G)一致的(S砂蔽,G)表項洼怔,有一致的上下游接口對應關(guān)系,但該(S左驾,G)表項不置SPT位镣隶,僅置ACT位极谊,表示有數(shù)據(jù)經(jīng)過該表項;不置SPT位的(S安岂,G)表項不能指導數(shù)據(jù)轉(zhuǎn)發(fā)轻猖,這么設計優(yōu)點是可以在發(fā)送SPT剪枝或建樹時,減少不必要的建表項延遲域那;
(1)成員端DR對收到的所有組播組流量進行周期性檢測咙边,若速率超過設定的閥值,立即開始SPT切換次员;
缺省速率為0败许,成員端DR收到組播數(shù)據(jù)后會立即進行SPT切換;
(2)成員端DR向組播源方向發(fā)送(S淑蔚,G)join報文市殷,逐跳生成(S,G)表項刹衫;
組播表中已存在(S被丧,G)表項,置SWT位绪妹,表示SPT切換中甥桂;
(3)組播數(shù)據(jù)經(jīng)SPT轉(zhuǎn)發(fā),置SWT位的(S邮旷,G)表項置SPT位黄选,(S,G)表項開始指導組播數(shù)據(jù)轉(zhuǎn)發(fā)婶肩;
SPT置位的(S办陷,G)表項和(*,G)表項上游接口不一致時律歼,立即向RP方向發(fā)送置R位(表示RPT)的(S民镜,G)剪枝報文,只要下游接口列表為空险毁,上游路由器逐跳向RP剪枝制圈,RP下游接口列表也為空,繼續(xù)向組播源發(fā)送(S畔况,G)剪枝鲸鹦,直至源端DR;
三跷跪、PIM SSM
IGMP SSM Mapping