­

HCNP Routing&Switching之組播技術-組播分發

  前文我們了解了組播技術中的igmp-snooping相關話題,回顧請參考//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就是依賴單播路由進行防止環路;