組播之PIM篇v1.0.doc_第1頁
組播之PIM篇v1.0.doc_第2頁
組播之PIM篇v1.0.doc_第3頁
組播之PIM篇v1.0.doc_第4頁
組播之PIM篇v1.0.doc_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

組播之PIM篇內(nèi)部公開華為三康技術(shù)有限公司Huawei-3Com Technologies Co., Ltd.文檔編號(hào) Document ID密級(jí) Confidentiality level內(nèi)部公開文檔狀態(tài) Document Status共20頁 Total 20 pages組播之PIM篇擬制Prepared by 王君菠Date日期2006-02評(píng)審人Reviewed by Date日期批準(zhǔn)Approved byDate日期華為三康技術(shù)有限公司Huawei-3Com Technologies Co., Ltd.版權(quán)所有 侵權(quán)必究All rights reserved修訂記錄 Revision Record 日期Date修訂版本Revision Version修改章節(jié)Sec No. 修改描述Change Description作者Author2006-02-101.00initial 初稿完成王君菠目 錄1PIM-DM篇51.1簡(jiǎn)介51.2RPF 逆向路徑查詢51.3PIM的組播轉(zhuǎn)發(fā)方式71.4PIM-DM 的剪枝(prune)81.5PIM-DM的嫁接(Graft)91.6剪枝否決(pruning override)101.7斷言(Assert)111.8PIM-DM的狀態(tài)維護(hù)111.9DR的選取122PIMSM篇132.1引述132.2PIM-SM表項(xiàng)建立和轉(zhuǎn)發(fā)過程132.3PIM-SM 注冊(cè)與注冊(cè)停止152.4PIM-SM 剪枝162.5PIM-SM的狀態(tài)維護(hù)162.6組播分發(fā)樹模型和RPT到SPT的切換163參考資料20前 言近幾年,隨著網(wǎng)絡(luò)應(yīng)用的發(fā)展,多媒體會(huì)議普及、IPTV炒作的越來越熱,組播變的越來越熱,應(yīng)用的越來越多。組播要完成從組播源到客戶端傳遞信息,可分成兩個(gè)部分理解:客戶端主機(jī)和路由器之間的組播數(shù)據(jù)傳輸及實(shí)現(xiàn);路由器與路由器之間的組播數(shù)據(jù)傳輸及實(shí)現(xiàn)。其中客戶端和主機(jī)之間是IGMP來完成的;路由器與路由器之間,是組播路由協(xié)議,常見的有DVMRP,CBT,MOSPF,MBGP,MSDP,PIM等。PIM (Protocol Independent Multicast)分為兩種模式:PIM-SM(SparseMode稀疏模式) 和 PIM-DM(DenseMode密集模式),本文就這兩部分分別展開討論。1 PIM-DM篇1.1 簡(jiǎn)介適用場(chǎng)景:組播接收客戶端分布比較密集。要想理解組播的轉(zhuǎn)發(fā),必須理解單播的轉(zhuǎn)發(fā)過程。當(dāng)路由器收到一個(gè)單播報(bào)文后,路由器會(huì)根據(jù)報(bào)文的目的地址查找自己的轉(zhuǎn)發(fā)表(路由表或FIB表或cache中的表項(xiàng),這屬于路由轉(zhuǎn)發(fā)的范疇,這里就不討論了),找到一個(gè)匹配項(xiàng)后,直接按照出接口和下一條確定報(bào)文的二層封裝,然后改寫報(bào)文二層頭,從相應(yīng)的接口發(fā)送出去。單播的轉(zhuǎn)發(fā)過程路由器不用關(guān)心報(bào)文從哪里來,它關(guān)心的僅僅是報(bào)文的目的地址(策略路由除外)。每個(gè)單播報(bào)文都一個(gè)目標(biāo)地址,從源到目的沿途每臺(tái)路由器都按照自己的轉(zhuǎn)發(fā)表轉(zhuǎn)發(fā)該報(bào)文,如果所有設(shè)備都轉(zhuǎn)發(fā)正確,那么報(bào)文離目的地越來越近,最后被送到目的地。而路由器在轉(zhuǎn)發(fā)組播報(bào)文的時(shí)候它第一個(gè)要關(guān)心的是:“該組播報(bào)文從哪里來”,如果(來路不正者斬,這是RPF的功能,下文有述),然后關(guān)心的才是自己的轉(zhuǎn)發(fā)表里是否有轉(zhuǎn)發(fā)表項(xiàng)。而組播報(bào)文的目的地址并不是單獨(dú)一臺(tái)主機(jī),組播地址是一個(gè)邏輯的概念,它只是一個(gè)標(biāo)記,就好比是電視臺(tái)的頻道。一般一個(gè)組播地址對(duì)應(yīng)著零個(gè)、一個(gè)到N個(gè)接受者,而且路由器的轉(zhuǎn)發(fā)路由表中并不存放組播主機(jī),如果再按照單播轉(zhuǎn)發(fā)的那種思想去轉(zhuǎn)發(fā)組播顯然是不行的。那么當(dāng)路由器接收到一個(gè)組播報(bào)文應(yīng)該怎么做呢?路由器有它的三板斧:首先RPF、然后查組播轉(zhuǎn)發(fā)表項(xiàng),最后按照表項(xiàng)轉(zhuǎn)發(fā)該組播報(bào)文。什么是RPF呢,路由器又是如何建立組播轉(zhuǎn)發(fā)表項(xiàng)的呢,這個(gè)過程和你所熟悉的ospf、rip等路由協(xié)議建立路由表的過程一樣嗎?帶著這些問題,聽我下文的分解。1.2 RPF 逆向路徑查詢路由器在轉(zhuǎn)發(fā)單播報(bào)文的時(shí)候關(guān)心的是報(bào)文的目的地址,而在轉(zhuǎn)發(fā)組播報(bào)文的時(shí)候,如上文所述,它首先關(guān)心的是組播報(bào)文的源地址和接受到該組播報(bào)文的入接口。當(dāng)路由器收到一個(gè)組播報(bào)文時(shí),要判斷接收到組播報(bào)文的“入接口”是不是本路由器到達(dá)該組播報(bào)文的“源地址”的最佳路徑的“出接口”;這個(gè)最佳路徑是通過查找自己的路由表得出的。如果是那么路由器就考慮對(duì)改組播報(bào)文進(jìn)行轉(zhuǎn)發(fā),如果不是的話直接丟棄,這就是RPF(Reverse Path Forwarding逆向路徑查詢)理論比較晦澀,舉例子說明下圖1 組播轉(zhuǎn)發(fā)RPF如上圖的RTE,該路由器從兩個(gè)口上收到server給他的組播報(bào)文,這時(shí)RTE會(huì)查詢它的單播路由表(假設(shè)組播服務(wù)器的IP地址為101.3.240.3)圖2 RPF續(xù)101.3.240.3在RTE的路由表里出接口應(yīng)該是S1口,而組播的入接口是S0口,RPF查詢失敗,丟棄該組播數(shù)據(jù)包,同時(shí)向S0口發(fā)送一個(gè)剪枝報(bào)文(后續(xù)內(nèi)容中對(duì)該報(bào)文有詳細(xì)介紹,它的作用就是告訴上層路由器,不用給我發(fā)送該組播報(bào)文了)再舉一個(gè)查詢成功的例子見下圖圖3 RPF續(xù)假設(shè)組播服務(wù)器IP地址為101.3.240.3,此時(shí)該路由器在自己的S1口收到該組播報(bào)文,查找路由表,101.3.240.3 出接口是S1,RPF查詢成功,轉(zhuǎn)發(fā)該組播數(shù)據(jù)包現(xiàn)在我們知道RPF是怎么一個(gè)處理過程了,那么此時(shí)聰明的你可能要問:為什么要RPF?或者RPF為什么要這么做呢?其實(shí)答案很簡(jiǎn)單,還是從RTE的角度考慮,如果RTE在轉(zhuǎn)發(fā)組播數(shù)據(jù)包的時(shí)候不考慮RPF逆向查詢,那么從S0口和S1口收到的組播數(shù)據(jù)都轉(zhuǎn)發(fā)的話,在接收者那里每個(gè)組播報(bào)文至少會(huì)收到兩份一模一樣的,為了避免這種情況,所有我們用RPF查詢:只轉(zhuǎn)發(fā)一份從最優(yōu)路徑來的組播數(shù)據(jù)包,這就是RPF的目的。那么路由器是如何建立組播轉(zhuǎn)發(fā)表項(xiàng),并轉(zhuǎn)發(fā)組播數(shù)據(jù)包的呢,這就靠組播路由協(xié)議了,不同的協(xié)議有不同的轉(zhuǎn)發(fā)方式。目前pim用的最多,本文只討論pim的行為。1.3 PIM的組播轉(zhuǎn)發(fā)方式該節(jié)討論P(yáng)IM-DM的組播轉(zhuǎn)發(fā)方式。在概述中討論過,PIM-DM適用于組播接收客戶端分布比較密集的場(chǎng)景,這跟PIM-DM的假設(shè)有關(guān),pim路由器在轉(zhuǎn)發(fā)組播報(bào)文時(shí)它假設(shè):路由器的每個(gè)接口下都有組播接收客戶端。PIM-DM組播路由器接收到組播報(bào)文后,就會(huì)非常主動(dòng)的建立轉(zhuǎn)發(fā)表項(xiàng),所謂組播的轉(zhuǎn)發(fā)表項(xiàng)就是由S,G,Upstream interface lists和Downstream interface list所組成的,S 表示source,即組播報(bào)文的發(fā)起者,一般是服務(wù)器,G 表示組地址,Upstream interface list表示組播報(bào)文的入接口,Downstream interface lists,表示組播報(bào)文的出接口,就是說組播報(bào)文要被路由器從這些端口發(fā)送出去。PIM-DM建立表項(xiàng)時(shí),upstream interface list即RPF檢查成功的組播報(bào)文的入接口,downstream interface lists就是所有的其它接口,因?yàn)閜im-dm假設(shè)所有的接口下面都有組播的接收者(dm,即dense mode,密集模式)。(S,G)即直接取組播報(bào)文的源地址和它的目的地址即組地址。當(dāng)建立表項(xiàng)后根據(jù)轉(zhuǎn)發(fā)表項(xiàng)直接把組播報(bào)文復(fù)制N份(N為downstream interface lists的接口數(shù)),從各個(gè)downstream interface lists 轉(zhuǎn)發(fā)出去。1.4 PIM-DM 的剪枝(prune)這時(shí)你可能要問:pim-dm的這種轉(zhuǎn)發(fā)方式和廣播有什么區(qū)別?答案是,在PIM-DM中,還有一種剪枝機(jī)制。當(dāng)一臺(tái)pim路由器接口up后,它也會(huì)像大家熟悉的ospf一樣,通過發(fā)送hello報(bào)文來發(fā)現(xiàn)自己的鄰居,hello報(bào)文里面包含hello-interval 和hold time。如果一臺(tái)路由器的某個(gè)接口開啟pim,但該接口的neighber列表為空,說明它是一個(gè)邊緣路由器(leaf router)。當(dāng)邊緣路由器接收到一個(gè)組播報(bào)文后它會(huì)查自己的igmp表項(xiàng),查看是否有該組的用戶,如果有,則轉(zhuǎn)發(fā),如果沒有,那么此時(shí)本路由器接收這個(gè)組的組播報(bào)文就沒有意義了,所以他要向自己的上游(upstream interface list)路由器發(fā)送剪枝消息。它的上游pim路由器在收到來自下游的剪枝消息之后會(huì)把接收剪枝消息的接口標(biāo)記為pruning狀態(tài),同時(shí)啟動(dòng)一個(gè)定時(shí)器,在定時(shí)器超時(shí)前不會(huì)再向被置為pruning狀態(tài)的downstream interface發(fā)送組播報(bào)文,當(dāng)定時(shí)器超時(shí)后,路由器會(huì)再次向該接口發(fā)送組播報(bào)文,如果下游路由器仍沒有接受者,它仍然會(huì)向上發(fā)送剪枝消息,然后本路由器再次把該接口置為pruning狀態(tài),這種行為被稱為“剪枝-擴(kuò)散-剪枝-擴(kuò)散”。假設(shè)一個(gè)路由器的DownStream interface list的所有接口都被置為pruning狀態(tài),則說明它的下游都沒有接受者了,此時(shí)這臺(tái)路由器接收該組的組播地址也會(huì)變得沒有意義,所以他也向它的上游發(fā)送剪枝消息。舉一個(gè)pim-dm轉(zhuǎn)發(fā)的例子圖4 Pim-dm轉(zhuǎn)發(fā)流程PC1、PC3、PC4是該組播組的成員,PC2不是該組播組成員,那么當(dāng)組播報(bào)文被轉(zhuǎn)發(fā)到RTG的時(shí)候,RTG查找自己的IGMP表項(xiàng)發(fā)現(xiàn)該組沒有成員,則向RTF發(fā)送剪枝報(bào)文,RTF只有一個(gè)DownStream口,從該口收到剪枝消息意味著RTF也沒有該組播組成員,所以RTF也向上發(fā)送剪枝消息,RTE收到該剪枝消息后,把該接口置為pruning狀態(tài),但此時(shí)RTE的DownStream list中的接口并不是全部被置為pruning狀態(tài),所以它不再向上發(fā)送剪枝消息。此時(shí)RTE啟動(dòng)一個(gè)剪枝消息的計(jì)時(shí)器,當(dāng)計(jì)時(shí)器超時(shí),再次從被剪枝的接口向下發(fā)送該組播組報(bào)文,當(dāng)組播報(bào)文發(fā)送到RTG時(shí),和上次處理過程相同,RTG查找IGMP 表項(xiàng),發(fā)現(xiàn)沒有該組表項(xiàng),然后發(fā)送剪枝消息,RTF繼續(xù)發(fā)送剪枝消息,RTE啟動(dòng)計(jì)時(shí)器,這個(gè)過程被稱為 剪枝-擴(kuò)散-剪枝-擴(kuò)散(題外話:從這一點(diǎn)可以看出來PIM-DM路由器很熱情,不停的想送你禮物,你不需要的話我過段時(shí)間再去問問你需要不需要,而PIM-SM就很羞澀,在SM章節(jié)會(huì)向大家展示)1.5 PIM-DM的嫁接(Graft)當(dāng)下游路由器剛剛發(fā)送剪枝消息給自己的上游路由器后不久,他收到一個(gè)igmp report報(bào)文,該report報(bào)文要求加入剛剛被剪枝的那個(gè)組,此時(shí)該路由器是否要等待上游的路由器剪枝定時(shí)器超時(shí)后再開始接受組播數(shù)據(jù)呢,答案是否定的,此時(shí)它可以向自己的上游鄰居發(fā)送嫁接消息,當(dāng)上游的路由器收到嫁接消息后馬上收到嫁接消息的接口的狀態(tài)從pruning狀態(tài)置為forwarding狀態(tài),此時(shí)分兩種情況:一、如果本路由器正在向其它下游接口發(fā)送該組的組播數(shù)據(jù),那么該路由器馬上把接收到嫁接消息的接口狀態(tài)機(jī)從pruning狀態(tài)轉(zhuǎn)換為forwarding 狀態(tài),并且開始從該接口向下游轉(zhuǎn)發(fā)該組的組播數(shù)據(jù),同時(shí)向下游發(fā)送嫁接應(yīng)答(Graft-Ack)消息。二、如果此路由器該(S,G)組中所有的downstream list 中的所有接口都是pruning狀態(tài)(此時(shí)說明路由器已經(jīng)把自己從組播樹中剪枝掉了,也就是說它也向自己的上游發(fā)送過剪枝消息),那么該路由器首先把接收到嫁接消息的downstream interface狀態(tài)機(jī)從pruning狀態(tài)轉(zhuǎn)換位forwarding狀態(tài),同時(shí)向自己的上游發(fā)送嫁接消息,以此類推。1.6 剪枝否決(pruning override)圖5 剪枝否決如圖,路由器RTA在以太網(wǎng)共享網(wǎng)段上有兩個(gè)pim鄰居,轉(zhuǎn)發(fā)組播數(shù)據(jù)的時(shí)候RTB和RTC都是下游路由器,如果RTC下面沒有接受者,那么他會(huì)發(fā)送剪枝消息給自己的上游設(shè)備,(注意剪枝消息發(fā)送的目的地址是224.0.0.13,所有的pim路由器都可以接收到,所以RTB也可以收到一份)。RTA通過hello消息知道自己的以太口下面有兩個(gè)鄰居,當(dāng)RTA收到剪枝消息后,它不知道是否該把該以太口從組播轉(zhuǎn)發(fā)樹中剪掉,此時(shí)他會(huì)啟動(dòng)一個(gè)計(jì)時(shí)器(一般是3秒),計(jì)時(shí)器超時(shí)前他不會(huì)剪枝該接口。上面說過,RTB也會(huì)收到RTC的剪枝消息,RTB發(fā)現(xiàn)對(duì)方要剪枝的(S,G)組播組恰恰是自己下游有接收端要接收的組,此時(shí)RTB也并不是黔驢技窮,他會(huì)向自己的上游發(fā)送加入消息(一般在pim-dm中很少用的到加入報(bào)文),當(dāng)RTA收到該加入報(bào)文后,就繼續(xù)向該端口發(fā)送組播報(bào)文而忽略RTC的剪枝消息,這就是剪枝否決。1.7 斷言(Assert)圖6 斷言如圖,在共享式以太網(wǎng)上,RTA和RTB都有到達(dá)同一個(gè)組播源的路由,而且RPF檢查成功,因此該以太網(wǎng)上的接受者將收到兩份一模一樣的報(bào)文,這是沒有必要的。當(dāng)RTA和RTB發(fā)送組播報(bào)文時(shí),他們都會(huì)從自己的DownStream接口上收到對(duì)方的組播報(bào)文,當(dāng)路由器從自己的downstream接口收到同一個(gè)(S,G)的組播報(bào)文時(shí),它會(huì)從該接口發(fā)送斷言消息,該消息包括:組播源、組地址,單播到源的路由的路由協(xié)議優(yōu)先級(jí)。RTA和RTB將對(duì)各自的斷言消息和進(jìn)行比較,以選擇誰是該共享網(wǎng)段的該(S,G)組播報(bào)文發(fā)送者,過程如下:1. 發(fā)現(xiàn)到組播源的路由的路由協(xié)議優(yōu)先級(jí)高者(數(shù)越小優(yōu)先級(jí)越大),將成為forwarder2. 如果RTA和RTB到源的路由協(xié)議都一樣,那么到源的metric值小的路由器將成為forwarder3. 如果metric值相等,兩個(gè)路由器誰的IP地址大誰將是forwardePIM-DM使用五中協(xié)議報(bào)文來完成鄰居的維護(hù)、組播分發(fā)樹的建立維護(hù)刪除、組播轉(zhuǎn)發(fā)項(xiàng)維護(hù)和組播路由器鄰居的維護(hù)等1.8 PIM-DM的狀態(tài)維護(hù)PIM-DM的(S,G)表項(xiàng)靠組播數(shù)據(jù)包來維護(hù),也就是說路由器每收到一個(gè)組播數(shù)據(jù)包,就把關(guān)于該組的(S,G)表項(xiàng)的老化實(shí)現(xiàn)重置。如果(S,G)表項(xiàng)超時(shí),則刪除該表項(xiàng)。(S,G)表項(xiàng)的DownStream interface list中有部分接口的狀態(tài)為pruning,它們是在剪枝擴(kuò)散的重復(fù)著。1.9 DR的選取其實(shí),DR的選取和PIM關(guān)系不大,只是對(duì)于邊緣路由器而言,有的路由器運(yùn)行的IGMPv1,而IGMPv1沒有選取查詢器的功能,所以靠PIM選擇的DR來做為自己的查詢器,單單說DR對(duì)PIM而言,意義并不是很大,只是DR負(fù)責(zé)在以太網(wǎng)上傳輸組播報(bào)文而已。它的選擇機(jī)制很簡(jiǎn)單,首先比較優(yōu)先級(jí),然后比較IP地址,高者獲勝??傮w而言,PIM-DM從狀態(tài)機(jī)到轉(zhuǎn)發(fā)過程都比較簡(jiǎn)單容易理解,下面給大家介紹一下PIM的另一種轉(zhuǎn)發(fā)模式PIM-SM(稀疏模式)2 PIMSM篇2.1 引述如上文所述,PIM-DM轉(zhuǎn)發(fā)方式源于一種假設(shè):路由器除了接受組播的接口外每個(gè)接口都有接收者,所以它的轉(zhuǎn)發(fā)方式是泛洪式的轉(zhuǎn)發(fā),如果沒有剪枝,那么就很類似廣播了,所以它在接收者密集的場(chǎng)景效率比較高。但如果接收者比較少,那么PIM-DM的那種“擴(kuò)散剪枝”的轉(zhuǎn)發(fā)方式勢(shì)必會(huì)效率很低,這時(shí)候就需要另一種轉(zhuǎn)發(fā)機(jī)制。PIMSM的轉(zhuǎn)發(fā)模式是源于另一種假設(shè),這種假設(shè)和PIMDM的假設(shè)恰恰相反:假設(shè)網(wǎng)絡(luò)中沒有任何接受者,所以當(dāng)路由器接收到組播報(bào)文后并不轉(zhuǎn)發(fā),而是等著下游的路由器主動(dòng)加入,從哪個(gè)口接收到加入報(bào)文,就把該接口添加到downstream interface list中,并向該接口轉(zhuǎn)發(fā)組播報(bào)文。和PIM-DM相比,SM的這種加入方式是顯式的加入,即有明確的加入報(bào)文聲明要加入哪個(gè)組;而PIM-DM的加入方式是隱含的加入,在密集模式的加入過程中并沒有pim的加入報(bào)文(而且密集模式中很少用到pim的加入報(bào)文,只要在剪枝否決的時(shí)候用到),當(dāng)收到上游組播報(bào)文后,只要設(shè)備不向上游發(fā)送剪枝消息,就是隱含的接受本組的組播報(bào)文了。這兩種加入方式都有自己適用的場(chǎng)景。2.2 PIM-SM表項(xiàng)建立和轉(zhuǎn)發(fā)過程當(dāng)一個(gè)邊緣路由器(leaf router)收到一個(gè)igmp的report報(bào)文時(shí),它會(huì)建立一個(gè)關(guān)于該組的表項(xiàng)。但是此時(shí)它并不知道改組的源在哪里。所以它的表項(xiàng)不能建立成(S,G)方式,而只能建立(*,G)表項(xiàng),該表項(xiàng)只表明組,而不關(guān)心組播源是誰。接下來,該leaf router就該發(fā)送pim加入消息了,此時(shí)你肯定要問:它不知道源在哪里,那么它的pim加入報(bào)文發(fā)給誰呢?難道是泛洪式的全網(wǎng)轉(zhuǎn)發(fā)嗎?答案是:它此時(shí)不需要知道組播源的IP地址。在PIM-SM的轉(zhuǎn)發(fā)模型中,不僅是邊緣路由器不知道源在哪里,而且靠近組播組播源的路由器(稱之為DR,DR的概念上文有述,和ospf的DR稍有區(qū)別)也不知道誰是它的接受者,此時(shí)若沒有中間人站出來協(xié)調(diào)一下,恐怕大家只能撤著嗓子狂喊了(泛洪式轉(zhuǎn)發(fā))這種方式好像又回到了PIMDM的轉(zhuǎn)發(fā)方式去了。所以在PIMSM的轉(zhuǎn)發(fā)模型中,又添加了一個(gè)中間人的角色(Rendezvous Point)RP,RP可以負(fù)責(zé)幾個(gè)或者所有組播組的轉(zhuǎn)發(fā),所以網(wǎng)絡(luò)中可以有一個(gè)到多個(gè)RP,那么此時(shí)如果DR和Leaf router想轉(zhuǎn)發(fā)組播數(shù)據(jù)的話,只需找到RP即可。但是,它們?nèi)绾握业絉P呢?泛洪嗎?方法有兩種:1. 在DR和Leaf router以及組播將要經(jīng)過的所有路由器上手工制定RP的IP地址2. 啟動(dòng)BootStrap 協(xié)議第一種方式簡(jiǎn)單,如果網(wǎng)絡(luò)不大的話這也不失為一種好方法,但所有靜態(tài)的配置都有它不利的一面,擴(kuò)展性,可管理性不高等等等等,想想靜態(tài)路由的優(yōu)缺點(diǎn),那么靜態(tài)配置的RP的優(yōu)缺點(diǎn)你也就知道了。第二種方式,BootStrap Protocol,是一種開放的協(xié)議,它可以負(fù)責(zé)通過BootStrap Message通過給網(wǎng)絡(luò)中所有的路由器關(guān)于RP和每個(gè)RP所能轉(zhuǎn)發(fā)的組播組的消息。BootStrap router工作的原理和過程:首先要在網(wǎng)絡(luò)中選擇合適的路由器把它配置成候選BSR(C-BSR,Candidate BootStrap Router),每個(gè)C-BSR都有優(yōu)先級(jí),當(dāng)它得知自己是C-BSR后,首先啟動(dòng)一個(gè)定時(shí)器(默認(rèn)為130秒),監(jiān)聽網(wǎng)絡(luò)中的 BootStrap Message。BootStrap Message 初始時(shí)通告發(fā)送路由器的優(yōu)先級(jí)、BSR的IP地址,當(dāng)C-BSR收到一個(gè)BootStrap Message后,它會(huì)把自己的優(yōu)先級(jí)和報(bào)文里的優(yōu)先級(jí)做比較,如果對(duì)方的優(yōu)先級(jí)高,它就把自己的定時(shí)器重置,繼續(xù)監(jiān)聽BootStrap Message;如果是自己的高,那么它就發(fā)送BootStrap Message聲明自己是BSR,如果優(yōu)先級(jí)相等,則比較IP地址,誰的IP地址大誰就是BSR。BSR消息發(fā)送的目的地址是224.0.0.13,所有的PIM路由器都能接收到這個(gè)報(bào)文,該報(bào)文TTL一般被置為1,但每個(gè)PIM路由器收到此報(bào)文后都是把它以泛洪的方式從自己所有的使能PIM的接口上發(fā)送出去,這就能保證網(wǎng)絡(luò)中的每臺(tái)PIM設(shè)備都能收到BootStrap Message。RP就像C-BSR一樣需要在設(shè)備上手工配置,首先配置C-RP(Candidate Rendezvous Point),包括RP地址、優(yōu)先級(jí)和它所能服務(wù)的組。正如上文所述,一個(gè)RP可以給所有的組播組提供服務(wù),也可以只給部分組提供服務(wù)。當(dāng)C-RP收到BootStrap Message后,它可以從該message中得知網(wǎng)絡(luò)中誰是BSR,然后C-RP通過Candidate-RP-Advertisement Message把自己所能服務(wù)的組單播給BSR,每個(gè)C-RP都這么做的話那么BSR就收集到了網(wǎng)絡(luò)中所有C-RP的信息并把這些信息整理成一個(gè)集RP-Set。此后BSR通過BootStrap Message把RP-Set的信息通告給全網(wǎng)所有的路由器?;氐介_始部分的討論,邊緣路由器(leaf router)收到IGMP report報(bào)文后,它不需要知道該組的組播源是誰,它只需知道關(guān)于改組的C-RP是誰就可以了,所以它建立的表項(xiàng)是(*,G)。當(dāng)Leaf Router收到IGMP Report報(bào)文后,它檢查從BSR學(xué)來的RP-Set,此時(shí):1. 如果RP-Set對(duì)應(yīng)改組地址的C-RP只有一個(gè),那么DR就選該C-RP做RP2. 如果對(duì)應(yīng)改組地址的有多個(gè)C-RP,那么優(yōu)先級(jí)最高的是RP(優(yōu)先級(jí)數(shù)越小優(yōu)先級(jí)越高)3. 如果大家優(yōu)先級(jí)相等,那么DR將開始Hash運(yùn)算,把組地址、hash掩碼、和C-RP的地址做為輸入?yún)?shù),輸出是一些數(shù)字,數(shù)字高的C-RP將是改組的RP4. 如果hash的結(jié)果大家也相等,那么IP地址最大的C-RP將成為改組的RP這些選擇RP的規(guī)則其實(shí)就是為了保證在一個(gè)網(wǎng)絡(luò)中對(duì)于一個(gè)組播組大家選擇的RP是同一個(gè)C-RP。算出RP來之后,Leaf Router就向RP的方向發(fā)送PIM Join,目的地址是224.0.0.13,ttl為1,從Leaf Router到RP沿途每臺(tái)路由器當(dāng)收到PIM Join報(bào)文后,(假設(shè)這是它收到的第一個(gè)關(guān)于該組的join報(bào)文)都重復(fù)Leaf Router的動(dòng)作:計(jì)算RP,建立(*,G)表項(xiàng),向RP方向的相鄰PIM路由器發(fā)送 PIM Join Message,直到RP收到關(guān)于改組的join報(bào)文。至此,RP中間人的角色完成了一半,Leaf Router已經(jīng)找到中間人了,那么靠近組播源的DR路由器如何把組播報(bào)文發(fā)送給RP呢?2.3 PIM-SM 注冊(cè)與注冊(cè)停止當(dāng)靠近組播源的DR收到第一個(gè)組播報(bào)文后,它就開始尋找關(guān)于該組的RP(方法同Leaf Router),然后通過注冊(cè)消息把組播報(bào)文封裝成單播報(bào)文發(fā)送給改組對(duì)應(yīng)的RP,RP收到該單播報(bào)文后,首先要建立(S,G)表項(xiàng),然后會(huì)檢查自身的PIM的(*,G)表項(xiàng),如果有關(guān)于改組的(*,G)表項(xiàng)(也就是說該組有接受者,因?yàn)槿绻鸕P有表項(xiàng)說明它收到過Join報(bào)文)那么RP就把源該單播報(bào)文解封裝成組播報(bào)文,然后根據(jù)自己的(*,G)表項(xiàng)向DownStream interface list中的接口轉(zhuǎn)發(fā)組播報(bào)文;如果RP沒有對(duì)應(yīng)該組的表項(xiàng),那么它會(huì)向源DR路由器單播發(fā)送注冊(cè)停止消息,此后源DR啟動(dòng)一個(gè)定時(shí)器,定時(shí)器超時(shí)前,DR不會(huì)再向RP發(fā)送注冊(cè)報(bào)文,定時(shí)器超時(shí),則DR向RP發(fā)送單播注冊(cè)消息。這里可能你會(huì)問,RP收到注冊(cè)報(bào)文后為什么要建立(S,G)表項(xiàng)呢,如果下游沒有該組的組播接收者,那么建立(S,G)表項(xiàng)豈不是沒有意義?請(qǐng)考慮這么一種情況:假設(shè)RP收到注冊(cè)報(bào)文時(shí),沒有該組的(*,G)表項(xiàng),那么它發(fā)送一個(gè)注冊(cè)停止消息給源DR,此時(shí)DR啟動(dòng)一個(gè)注冊(cè)超時(shí)定時(shí)器,在該定時(shí)器未超時(shí)前,RP收到一個(gè)關(guān)于該組的加入報(bào)文,而此時(shí)RP有沒有保存關(guān)于該組的組播源的任何消息,那么它此時(shí)只能等DR的定時(shí)器超時(shí)再此給他發(fā)送注冊(cè)消息的時(shí)候才能給下游發(fā)送該組的組播數(shù)據(jù);而如果RP第一次收到注冊(cè)報(bào)文就馬上建立(S,G)表項(xiàng),那么再有加入報(bào)文時(shí),它可以直接根據(jù)(S,G)的源地址向組播源的方向發(fā)送PIM Join報(bào)文請(qǐng)求該組播組的報(bào)文而不用等DR的定時(shí)器超時(shí),這就是RP一收到注冊(cè)報(bào)文就建立(S,G)的原因。至此,對(duì)于PIM-SM組播轉(zhuǎn)發(fā)的過程給大家一個(gè)大致的介紹,接下來介紹稀疏模式的其他特性2.4 PIM-SM 剪枝當(dāng)邊緣路由器(Leaf Router)收到igmp leave報(bào)文后,它會(huì)發(fā)送兩次igmp 特定查詢,以確定是否該組已經(jīng)沒有接收者。當(dāng)它確定自己沒有任何接受者后,會(huì)向自己的UPStream發(fā)送剪枝報(bào)文,然后把關(guān)于改組的(*,G)表項(xiàng)和igmp表項(xiàng)刪除。當(dāng)它的PIM鄰居路由器收到剪枝消息后,確認(rèn)自己還有沒有其他鄰居需要該組的組播數(shù)據(jù),如果有,那么它只需把接收到剪枝報(bào)文的接口從自己的(*,G)表項(xiàng)的DownStream interface list中刪除即可;如果它也沒有其他接收者了(即自己的(*,G)表項(xiàng)的DownStream interface list中只有一個(gè)接口),那么它把(*,G)表項(xiàng)刪除,同時(shí)它也向自己的上游發(fā)送剪枝消息。沿途所有的設(shè)備都如此操作直到RP。(回憶一下PIM-DM的操作,當(dāng)它收到剪枝報(bào)文后它是如何做的,)思考:1. PIM-SM用嫁接消息嗎?2. PIM-SM收到剪枝消息,會(huì)有剪枝擴(kuò)散的現(xiàn)象出現(xiàn)嗎?2.5 PIM-SM的狀態(tài)維護(hù)PIM-SM的(*,G)表項(xiàng)的超時(shí)時(shí)間是靠下游的pim加入消息來維護(hù)的,當(dāng)收到一個(gè)pim的加入消息,那么就把該組的(*,G)表項(xiàng)的老化時(shí)間重置。2.6 組播分發(fā)樹模型和RPT到SPT的切換請(qǐng)大家回憶PIM-DM的轉(zhuǎn)發(fā)方式,組播數(shù)據(jù)是從組播源出發(fā),從最近的路徑(RPF保證這一點(diǎn))逐跳轉(zhuǎn)發(fā)到組播的接受者,以組播源為根,組播數(shù)據(jù)包走過的路徑形成一個(gè)樹狀的拓?fù)?,因?yàn)檫@種樹可以保證組播數(shù)據(jù)報(bào)文所走過的路徑是最短的,所以大家習(xí)慣上稱之為最短樹(SPT)圖7 最短樹模型PIM-SM的轉(zhuǎn)發(fā)并不是以組播源為根的,它是首先在網(wǎng)絡(luò)中確定一個(gè)中間人RP,然后以RP為根向各個(gè)組播成員發(fā)送組播數(shù)據(jù),但它并不能保證組播數(shù)據(jù)所走路徑是最優(yōu)(最短)路徑,但是PIM-SM的轉(zhuǎn)發(fā)方式注定它只能這么做。圖8 共享樹模型如圖8所示,所有接收者的組播數(shù)據(jù)都是從RP那里轉(zhuǎn)發(fā)過來的,對(duì)于PC3和PC4而言,他們的組播數(shù)據(jù)所走路徑并不是最優(yōu)路徑(假設(shè)網(wǎng)絡(luò)中所有線路的cost一樣)。所以RPT的缺點(diǎn)就是如果組播流量比較大,那么RP壓力比較大,而且組播所走路徑不是最優(yōu)路徑勢(shì)必增加數(shù)據(jù)傳輸?shù)难舆t時(shí)間。而如果直接用PIM-DM協(xié)議的話如果接受者比較少它的那種泛洪式的轉(zhuǎn)發(fā)和剪枝擴(kuò)散機(jī)制效率又比較低。這時(shí),我們需要一個(gè)折中的解決方法:即要PIM-SM的這種顯式的加入,又要PIM-DM的SPT,所以就有了PIM-SM的RPT到SPT的切換。PIM-SM為什么要選擇RPT呢,請(qǐng)大家回憶PIM-SM的表項(xiàng)建立流程和轉(zhuǎn)發(fā)過程,開始Leaf Router并不知道組播源在哪里,而且在沒有收到組播數(shù)據(jù)前它也無法知道組播源的IP地址,所以它只能通過BSR的message得到關(guān)于該組的中間人RP,通過RP再接收組播數(shù)據(jù)。此時(shí)的組播分發(fā)樹的模型就是RPT(Rendezvous Point Tree)共享樹(因?yàn)槎鄠€(gè)組播組可以用一個(gè)RP做為自己的樹根,所以有的文檔稱之為共享樹。)當(dāng)Leaf Rou

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論