前文我們瞭解了組播技術中的igmp-snooping相關話題,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/15860484.html;今天我們來聊一聊組播技術中的另一個話題組播分發;
所謂組播分發我們可以理解為單播裡面的路由;對於組播來說,它也會根據組播路由來轉發資料;不同於單播,組播關心的是源在何處,而單播關心的是目標在何處;在瞭解組播路由之前我們先來聊一聊組播分發樹;
組播分發樹
所謂組播分發樹就是指描述組播資料在網路中的轉發路徑,由組播路由協議建立;對於組播分發樹來說,它有兩個型別,一個是最短路徑樹(SPT),一個是共享樹(RPT);
組播分發表示方法
最短路徑樹(SPT)表示方法:(S,G);其中S表示特定組播源地址,G表示特定組播組;即最短路徑樹(SPT)就是描述特定組播源發往特定組播組的路由;類似單播路由中的明細路由(個人理解);
共享樹(RPT)表示方法:(*,G);其中*表示任意組播源,G表示特定組播組;即共享樹(RPT)就是用來表示任意組播源發往特定組播的路由;類似單播路由中的預設路由(個人理解);
SPT:Shortest Path Tree,最短路徑樹,也稱為“Source Tree” 源樹;所謂源樹就是以組播源作為樹根,將組播源到每一個接收者的最短路徑結合起來構成的轉發樹;也就是說每一個組播源與接收者之間建立一顆獨立的SPT;
提示:源樹是用來表示一個組播源到接收者的轉發資料樹,它關心組播源,即一個組播源到所有接收者說形成的轉發樹;組播源到接收者的路徑一定是最短的;
RPT:Rendezvous Point Tree,共享樹;所謂共享樹就是指以某個路由器作為路由樹的樹根,這個根通常被稱為RP(匯合點或核心);所有的組播源和接收者都是用這一顆樹來轉發報文,組播源先向樹根傳送資料包文,之後的報文再向下轉發到達所有接收者;
提示:共享樹是用來表示任意組播源到接收者的轉發樹;它不關心源到底是誰,即共享點往後的路由器它會建立共享樹;組播源到接收者的路徑不一定最短;
SPT組播轉發表項
提示:在同一組播組中每增加一個組播源,對應路由器的表項就會增加一顆源樹;表項較多;
RPT組播轉發表項
提示:在同一組播組中不管怎麼增加組播源,對於RP以後的路由器都只有一顆共享樹,表項相對較少;
SPT和RPT比較:
SPT優點:路徑最優,延遲最小;缺點:佔用記憶體較多,因為一個源就會建立一顆樹,相對於共享樹表項較多,所以消耗記憶體資源也相對較多;
RPT優點:佔用記憶體較少;缺點:源到接收者的路徑不一定最優,所以相對源樹來說它會引入額外的延遲;
組播防環機制
組播資料轉發過程
組播路由和單播路由是相反的,單播路由關心資料包文要到哪裡去,而組播路由關心資料包文從哪裡來;單播報文的轉發過程中,路由器並不關心源地址,它只關心報文的目標地址,通過目標地址從而決定了向哪個介面轉發資料;而組播報文轉發過程中,報文是傳送給一組接收者,這些接收者用一個邏輯地址標識(組播地址);路由器在接收到報文後,必須根據源和目標的地址確定出上遊介面(指向組播源)和下游方向,然後把報文沿著遠離組播源的方向進行轉發;組播使用RPF機制來防止環路;
RPF(Reverse Path Forwarding),反向路徑轉發;該機制主要作用是用來確保組播資料能夠沿正確的路徑傳輸,避免組播環路;工作過程大致是路由器收到組播資料包文後,只有確認這個資料包文是從自身連線到組播源的介面收到的才進行轉發,否則丟棄;即路由器只有通過路由介面收到組播源的資料才會轉發,其他非路由介面收到的資料均丟棄;
提示:如上圖所示,對於中間路由器來說,正常報文應該從離組播源最近的介面收到資料,如果不是該介面接受到對應組播資料,而是從其他介面收到組播資料,路由器會認為該資料不應該從該介面收到,所以從該介面收到的對應組播資料都會被丟棄;
RPF檢查過程:
1、在單播路由表中查詢到組播報文源地址的路由;
2、如果該路由的出介面就是組播報文的入介面,即RPF檢查成功;否則RPF檢查失敗,報文丟棄;
提示:如上所示,如果路由器從s0/0口收到來自192.18.0.32的組播資料,首先路由器會檢視自己路由表中去往192.18.0.32的路由的出介面是不是s0/0,如果是,則RPF檢查通過,否則對應報文就會丟棄;它會認為該組播資料不應該從該介面進來,即從s0/0口收到來自192.18.0.32的組播資料包文是不合理的;所以要丟棄;
提示:如果從s0/1收到來自192.18.0.32傳送的組播資料,路由器查詢去往192.18.0.0/16的出介面是s0/1,此時路由器RPF就會檢查通過;因為對應去往組播源的單播路由的出介面是組播源傳送資料的入介面,路由器認為從s0/1介面收到192.18.0.32的組播資料是合理的,所以路由器開始轉發資料;簡單講RPF就是依賴單播路由進行防止環路;