【譽(yù)天數(shù)通面試私房菜之組播專題】第五期:PIM DM詳解

PIM定義

PIM(Protocol Independent Multicast)協(xié)議無關(guān)組播,目前常用版本是PIMv2保礼,PIM報文直接封裝在IP報文中沛励,協(xié)議號為103,PIMv2組播地址為224.0.0.13炮障。

在PIM組播域中目派,以組播組為單位建立從組播源到組成員的點到多點的組播轉(zhuǎn)發(fā)路徑。由于組播轉(zhuǎn)發(fā)路徑呈現(xiàn)樹型結(jié)構(gòu)胁赢,也稱為組播分發(fā)樹(MDT企蹭,Multicast Distribution Tree)。組播分發(fā)樹的特點:

??無論網(wǎng)絡(luò)中的組成員有多少智末,每條鏈路上相同的組播數(shù)據(jù)最多只有一份谅摄。

??被傳遞的組播數(shù)據(jù)在距離組播源盡可能遠(yuǎn)的分叉路口才開始復(fù)制和分發(fā)。

PIM DM基本原理

??PIM-DM使用“推(Push)模式”轉(zhuǎn)發(fā)組播報文系馆,一般應(yīng)用于組播組成員規(guī)模相對較小送漠、相對密集的網(wǎng)絡(luò)。在實現(xiàn)過程中由蘑,它會假設(shè)網(wǎng)絡(luò)中的組成員分布非常稠密闽寡,每個網(wǎng)段都可能存在組成員。當(dāng)有活躍的組播源出現(xiàn)時尼酿,PIM-DM會將組播源發(fā)來的組播報文擴(kuò)散到整個網(wǎng)絡(luò)的PIM路由器上爷狈,再裁剪掉不存在組成員的分支。PIM-DM通過周期性的進(jìn)行“擴(kuò)散(Flooding)—剪枝(Prune)”谓媒,來構(gòu)建并維護(hù)一棵連接組播源和組成員的單向無環(huán)SPT(Source Specific Shortest Path Tree)淆院。如果在下一次“擴(kuò)散-剪枝”進(jìn)行前,被裁剪掉的分支由于其葉子路由器上有新的組成員加入而希望提前恢復(fù)轉(zhuǎn)發(fā)狀態(tài),也可通過嫁接(Graft)機(jī)制主動恢復(fù)其對組播報文的轉(zhuǎn)發(fā)土辩。

??PIM-DM的關(guān)鍵工作機(jī)制包括鄰居發(fā)現(xiàn)支救、擴(kuò)散、剪枝拷淘、嫁接各墨、斷言和狀態(tài)刷新。其中启涯,擴(kuò)散贬堵、剪枝、嫁接是構(gòu)建SPT的主要方法结洼。

鄰居發(fā)現(xiàn)(Neighbor Discovery)

PIM路由器上每個使能了PIM協(xié)議的接口都會對外發(fā)送Hello報文黎做。封裝Hello報文的組播報文的目的地址是224.0.0.13(表示同一網(wǎng)段中所有PIM路由器)、源地址為接口的IP地址松忍、TTL數(shù)值為1蒸殿。

??同一網(wǎng)段中的PIM路由器都必須接收目的地址為224.0.0.13的組播報文。這樣直接相連的PIM路由器之間通過交互Hello報文以后鸣峭,就可以彼此知道自己的鄰居信息宏所,建立鄰居關(guān)系。

??只有鄰居關(guān)系建立成功后摊溶,PIM路由器才能接收其他PIM協(xié)議報文爬骤,從而創(chuàng)建組播路由表項。

擴(kuò)散(Flooding)

當(dāng)PIM-DM網(wǎng)絡(luò)中出現(xiàn)活躍的組播源之后莫换,組播源發(fā)送的組播報文將在全網(wǎng)內(nèi)擴(kuò)散霞玄。當(dāng)PIM路由器接收到組播報文,根據(jù)單播路由表進(jìn)行RPF檢查通過后浓镜,就會在該路由器上創(chuàng)建(S溃列,G)表項劲厌,下游接口列表中包括除上游接口之外與所有PIM鄰居相連的接口膛薛,后續(xù)到達(dá)的組播報文將從各個下游接口轉(zhuǎn)發(fā)出去。

擴(kuò)散過程如下:

1)?組播源S開始向組播組G發(fā)送組播報文补鼻。

2)?RouterC接收到源發(fā)送的組播報文后哄啄,根據(jù)單播路由表進(jìn)行RPF檢查。RPF檢查通過风范,創(chuàng)建(S咨跌,G)表項,下游接口列表包括與RouterA和RouterB相連的接口硼婿,后續(xù)到達(dá)的報文向RouterA和RouterB轉(zhuǎn)發(fā)锌半。

3)?RouterA接收到來自RouterC的組播報文,RPF檢查成功寇漫,在本地創(chuàng)建對應(yīng)(S刊殉,G)表項殉摔,下游接口列表添加HostA相連的接口,后續(xù)到達(dá)的報文向HostA轉(zhuǎn)發(fā)记焊。

4)?RouterB接收到來自RouterC的組播報文逸月,由于與RouterB相連下游網(wǎng)段不存在組成員和PIM鄰居,執(zhí)行剪枝遍膜。

剪枝(Prune)

??當(dāng)PIM路由器接收到組播報文后碗硬,RPF檢查通過,但是下游網(wǎng)段沒有組播報文需求瓢颅。此時PIM路由器會向上游發(fā)送剪枝報文恩尾,通知上游路由器禁止相應(yīng)下游接口的轉(zhuǎn)發(fā),將其從(S挽懦,G)表項的下游接口列表中刪除特笋。剪枝操作由葉子路由器發(fā)起,逐跳向上巾兆,最終組播轉(zhuǎn)發(fā)路徑上只存在與組成員相連的分支猎物。

??路由器為被裁剪的下游接口啟動一個剪枝定時器,定時器超時后接口恢復(fù)轉(zhuǎn)發(fā)角塑。組播報文重新在全網(wǎng)范圍內(nèi)擴(kuò)散蔫磨,新加入的組成員可以接收到組播報文。隨后圃伶,下游不存在組成員的葉子路由器將向上發(fā)起剪枝操作堤如。通過這種周期性的擴(kuò)散-剪枝,PIM-DM周期性的刷新SPT窒朋。

剪枝過程如下:

1)?RouterB向上游發(fā)送Prune報文搀罢,通知RouterC不用再轉(zhuǎn)發(fā)數(shù)據(jù)到該下游網(wǎng)段。

2)?RouterC收到Prune報文后侥猩,停止該下游接口轉(zhuǎn)發(fā)榔至,將該下游接口從(S,G)表項中刪除欺劳。由于RouterC上還存在其他處于轉(zhuǎn)發(fā)狀態(tài)的下游接口唧取,剪枝過程停止。后續(xù)到達(dá)的報文只向RouterA轉(zhuǎn)發(fā)划提。

嫁接(Graft)

PIM-DM通過嫁接機(jī)制枫弟,使有新組成員加入的網(wǎng)段快速得到組播報文。葉子路由器通過IGMP了解到與其相連的用戶網(wǎng)段上鹏往,組播組G有新的組成員加入淡诗。隨后葉子路由器會向上游發(fā)送Graft報文,請求上游路由器恢復(fù)相應(yīng)出接口轉(zhuǎn)發(fā),將其添加在(S韩容,G)表項下游接口列表中绪爸。嫁接過程從葉子路由器開始,到有組播報文到達(dá)的路由器結(jié)束宙攻。

嫁接過程如下:

1)?RouterB希望在下一次“擴(kuò)散-剪枝”來臨前恢復(fù)對HostB組播報文的轉(zhuǎn)發(fā)奠货,向上游路由器RouterC發(fā)送Graft報文,請求恢復(fù)相應(yīng)出接口轉(zhuǎn)發(fā)組播報文座掘。

2)?RouterC收到Graft報文后递惋,恢復(fù)該接口轉(zhuǎn)發(fā),將該接口添加到(S溢陪,G)表項中的下游接口列表中萍虽。由于RouterC上有組播報文到達(dá),嫁接過程停止形真。后續(xù)到達(dá)的報文向RouterB轉(zhuǎn)發(fā)杉编。

狀態(tài)刷新(State Refresh)

在PIM-DM網(wǎng)絡(luò)中,為了避免被裁剪的接口因為“剪枝定時器”超時而恢復(fù)轉(zhuǎn)發(fā)咆霜,離組播源最近的第一跳路由器會周期性地觸發(fā)State Refresh報文在全網(wǎng)內(nèi)擴(kuò)散邓馒。收到State Refresh報文的PIM路由器會刷新剪枝定時器的狀態(tài)。被裁剪接口的下游葉子路由器如果一直沒有組成員加入蛾坯,該接口將一直處于抑制轉(zhuǎn)發(fā)狀態(tài)光酣。

斷言(Assert)

當(dāng)一個網(wǎng)段內(nèi)有多個相連的PIM路由器RPF檢查通過向該網(wǎng)段轉(zhuǎn)發(fā)組播報文時,則需要通過斷言機(jī)制來保證只有一個PIM路由器向該網(wǎng)段轉(zhuǎn)發(fā)組播報文脉课。PIM路由器在接收到鄰居路由器發(fā)送的相同組播報文后救军,會以組播的方式向本網(wǎng)段的所有PIM路由器發(fā)送Assert報文,其中目的地址為永久組地址224.0.0.13倘零。其它PIM路由器在接收到Assert報文后唱遭,將自身參數(shù)與對方報文中攜帶的參數(shù)做比較,進(jìn)行Assert競選呈驶。

競選規(guī)則如下:

1)?單播路由協(xié)議優(yōu)先級較高者獲勝拷泽。

2)?如果優(yōu)先級相同,則到組播源的開銷較小者獲勝俐东。

3)?如果以上都相同跌穗,則下游接口IP地址最大者獲勝。

根據(jù)Assert競選結(jié)果虏辫,路由器將執(zhí)行不同的操作:

??獲勝一方的下游接口稱為Assert Winner,將負(fù)責(zé)后續(xù)對該網(wǎng)段組播報文的轉(zhuǎn)發(fā)锈拨。

??落敗一方的下游接口稱為Assert Loser砌庄,后續(xù)不會對該網(wǎng)段轉(zhuǎn)發(fā)組播報文,PIM路由器也會將其從(S,G)表項下游接口列表中刪除娄昆。

Assert競選結(jié)束后佩微,該網(wǎng)段上只存在一個下游接口,只傳輸一份組播報文萌焰。所有Assert Loser可以周期性地恢復(fù)組播報文轉(zhuǎn)發(fā)哺眯,從而引發(fā)周期性的Assert競選。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扒俯,一起剝皮案震驚了整個濱河市奶卓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撼玄,老刑警劉巖夺姑,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異掌猛,居然都是意外死亡盏浙,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門荔茬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來废膘,“玉大人,你說我怎么就攤上這事慕蔚≈潮埃” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵坊萝,是天一觀的道長孵稽。 經(jīng)常有香客問我,道長十偶,這世上最難降的妖魔是什么菩鲜? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮惦积,結(jié)果婚禮上接校,老公的妹妹穿的比我還像新娘。我一直安慰自己狮崩,他們只是感情好蛛勉,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著睦柴,像睡著了一般诽凌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坦敌,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天侣诵,我揣著相機(jī)與錄音痢法,去河邊找鬼。 笑死杜顺,一個胖子當(dāng)著我的面吹牛财搁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躬络,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼尖奔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了穷当?” 一聲冷哼從身側(cè)響起提茁,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膘滨,沒想到半個月后甘凭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡火邓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年丹弱,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铲咨。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡躲胳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出纤勒,到底是詐尸還是另有隱情坯苹,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布摇天,位于F島的核電站粹湃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏泉坐。R本人自食惡果不足惜为鳄,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望腕让。 院中可真熱鬧孤钦,春花似錦、人聲如沸纯丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽觉鼻。三九已至俊扭,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間滑凉,已是汗流浹背统扳。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工喘帚, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留畅姊,地道東北人咒钟。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像若未,于是被迫代替她去往敵國和親朱嘴。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345