組播路由與轉發技術介紹


組播路由與轉發

組播路由與轉發簡介

在組播實現中,組播路由和轉發分為三種表:

l              每個組播路由協議都有一個協議自身的路由表,如PIM路由表(PIM Routing-Table);

l              各組播路由協議的組播路由信息經過綜合形成一個總的組播路由表(Multicast Routing-Table);

l              組播轉發表(Multicast Forwarding-Table)直接用於控製組播數據包的轉發。

組播路由表由一組(SG)表項組成,其中(SG)表示由源S向組播組G發送組播數據的路由信息。如果路由器支持多種組播路由協議,則其組播路由表中將包括由多種協議生成的組播路由。路由器根據組播路由和轉發策略,從組播路由表中選出最優的組播路由,並下發到組播轉發表中。

RPF檢查機製

組播路由協議依賴於現有的單播路由信息、MBGP路由或組播靜態路由來創建組播路由表項。組播路由協議在創建組播路由表項時,運用了RPFReverse Path Forwarding,逆向路徑轉發)檢查機製,以確保組播數據能夠沿正確的路徑傳輸,同時還能避免由於各種原因而造成的環路。

1. RPF檢查過程

執行RPF檢查的依據是單播路由、MBGP路由或組播靜態路由:

l              單播路由表中彙集了到達各個目的網段的最短路徑;

l              MBGP路由表直接提供組播路由信息;

l              組播靜態路由表中列出了用戶通過手工靜態配置指定的RPF路由信息。

在執行RPF檢查時,路由器同時查找單播路由表、MBGP路由表和組播靜態路由表,具體過程如下:

(1)        首先,分別從單播路由表、MBGP路由表和組播靜態路由表中各選出一條最優路由:

l              以“報文源”的IP地址為目的地址查找單播路由表,自動選取一條最優單播路由。對應表項中的出接口為RPF接口,下一跳為RPF鄰居。路由器認為來自RPF鄰居且由該RPF接口收到的組播報文所經曆的路徑是從源S到本地的最短路徑。

l              以“報文源”的IP地址為目的地址查找MBGP路由表,自動選取一條最優MBGP路由。對應表項中的出接口為RPF接口,下一跳為RPF鄰居。

l              以“報文源”的IP地址為指定源地址查找組播靜態路由表,自動選取一條最優組播靜態路由。對應表項明確指定了RPF接口和RPF鄰居。

(2)        然後,從這三條最優路由中選擇一條作為RPF路由:

l              如果配置了按照最長匹配選擇路由,則從這三條路由中選出最長匹配的那條路由;如果這三條路由的掩碼一樣,則選擇其中優先級最高的那條路由;如果它們的優先級也相同,則按照組播靜態路由、MBGP路由、單播路由的順序進行選擇。

l              如果沒有配置按照最長匹配選擇路由,則從這三條路由中選出優先級最高的那條路由;如果它們的優先級相同,則按照組播靜態路由、MBGP路由、單播路由的順序進行選擇。

&  說明:

根據組播報文傳輸的具體情況不同,“報文源”所代表的具體含義也不同:

l      如果當前報文沿從組播源到接收者或RPRendezvous Point,彙集點)的SPTShortest Path Tree,最短路徑樹)進行傳輸,則以組播源為“報文源”進行RPF檢查;

l      如果當前報文沿從RP到接收者的RPTRendezvous Point Tree,共享樹)進行傳輸,則以RP為“報文源”進行RPF檢查;

l      如果當前報文為BSRBootStrap Router,自舉路由器)報文,沿從BSR到各路由器的路徑進行傳輸,則以BSR為“報文源”進行RPF檢查。

 

2. RPF檢查在組播轉發中的應用

對每一個收到的組播數據報文都進行RPF檢查會給路由器帶來較大負擔,而利用組播轉發表可以解決這個問題。在建立組播路由和轉發表時,會把組播數據報文(SG)的RPF接口記錄為(SG)表項的入接口。當路由器收到組播數據報文(SG)後,查找組播轉發表:

(1)        如果組播轉發表中不存在(SG)表項,則對該報文執行RPF檢查,將其RPF接口作為入接口,結合相關路由信息創建相應的表項,並下發到組播轉發表中:

l              若該報文實際到達的接口正是其RPF接口,則RPF檢查通過,向所有的出接口轉發該報文;

l              若該報文實際到達的接口不是其RPF接口,則RPF檢查失敗,丟棄該報文。

(2)        如果組播轉發表中已存在(SG)表項,且該報文實際到達的接口與入接口相匹配,則向所有的出接口轉發該報文。

(3)        如果組播轉發表中已存在(SG)表項,但該報文實際到達的接口與入接口不匹配,則對此報文執行RPF檢查:

l              若其RPF接口與入接口一致,則說明(SG)表項正確,丟棄這個來自錯誤路徑的報文;

l              若其RPF接口與入接口不符,則說明(SG)表項已過時,於是把入接口更新為RPF接口。如果該報文實際到達的接口正是其RPF接口,則向所有的出接口轉發該報文,否則將其丟棄。

1所示,假設網絡中單播路由暢通,未配置MBGPRouter C上也未配置組播靜態路由。組播報文(SG)沿從組播源(Source)到接收者(Receiver)的SPT進行傳輸。假定Router C上的組播轉發表中已存在(SG)表項,其記錄的入接口為POS5/1

圖1 RPF檢查過程

l              如果該組播報文從接口POS5/1到達Router C,與(SG)表項的入接口相匹配,則向所有的出接口轉發該報文。

l              如果該組播報文從接口POS5/0到達Router C,與(SG)表項的入接口不匹配,則對其執行RPF檢查:通過查找單播路由表發現到達Source的出接口(即RPF接口)是POS5/1,與(SG)表項的入接口一致。這說明(SG)表項是正確的,該報文來自錯誤的路徑,RPF檢查失敗,於是丟棄該報文。

組播靜態路由

組播靜態路由是RPF檢查的重要依據之一。根據具體應用環境的不同,組播靜態路由有以下兩種主要用途:

1. 改變RPF路由

通常,組播的網絡拓撲結構與單播相同,組播數據的傳輸路徑也與單播相同。可以通過配置組播靜態路由以改變RPF路由,從而為組播數據創建一條與單播不同的傳輸路徑。

圖2 改變RPF路由示意圖

2所示,當網絡中沒有配置組播靜態路由時,Router C到組播源(Source)的RPF鄰居為Router A,從Source發出的組播信息沿Router A—Router C的路徑傳輸,與單播路徑一致;當在Router C上配置了組播靜態路由,指定從Router CSourceRPF鄰居為Router B之後,從Source發出的組播信息將改變傳輸路徑,沿Router A—Router B—Router C的新路徑傳輸。

2. 銜接RPF路由

當網絡中的單播路由被阻斷時,由於沒有RPF路由而無法進行包括組播數據在內的數據轉發。可以通過配置組播靜態路由以生成RPF路由,從而創建組播路由表項以指導組播數據的轉發。

圖3 銜接RPF路由示意圖

3所示,RIP域與OSPF域之間實行單播路由隔離。當網絡中沒有配置組播靜態路由時,OSPF域內的接收者(Receiver)不能收到RIP域內的組播源(Source)所發出的組播信息;當在Router CRouter D上均配置了組播靜態路由,分別指定從Router CSourceRPF鄰居為Router B、從Router DSourceRPF鄰居為Router C之後,Receiver便能收到Source發出的組播信息了。

&  說明:

l      組播靜態路由的作用隻在於影響RPF檢查,而不能用於指導組播數據轉發,故又稱為RPF靜態路由;

l      組播靜態路由僅在所配置的組播路由器上生效,不會以任何方式被廣播或者引入給其它路由器。

 

GRE隧道在組播轉發中的應用

網絡中可能存在不支持組播協議的路由器。從組播源(Source)發出的組播數據沿組播路由器逐跳轉發,當下一跳路由器不支持組播協議時,組播轉發路徑將被阻斷。此時,通過在處於單播網段兩端的組播路由器之間建立GREGeneric Routing Encapsulation,通用路由封裝)隧道,可以實現跨越單播網段的組播數據交換。

圖4 使用隧道方式傳送組播數據

4所示,在Router ARouter B之間建立起GRE隧道。Router A將組播數據包封裝在單播IP報文中,經由單播路由器轉發,傳送到隧道另一端的Router B。然後,Router B將單播IP報文頭剝掉,繼續進行組播傳輸。

如果在隧道的兩端配置了單播靜態路由,則任意單播數據包都可以通過該隧道傳輸。為了將該隧道專用於組播數據包的傳輸,可以在隧道兩端隻配置組播靜態路由,從而使單播數據包的傳輸不能再使用此隧道。

組播路徑跟蹤

Multicast traceroute(組播路徑跟蹤)用來跟蹤組播數據從第一跳到最後一跳路由器所經過的路徑。

1. Multicast traceroute基本概念

(1)        最後一跳路由器(Last-hop Router):如果某路由器有一個接口的IP地址與指定地址在同一個網段內,具備組播功能,且能夠向該網段轉發特定組播源發來的組播流,則稱該路由器為最後一跳路由器。

(2)        第一跳路由器(First-hop Router):與組播源直連的路由器。

(3)        查詢器(Querier):觸發組播路徑跟蹤的路由器。

2. Multicast traceroute報文簡介

Multicast traceroute報文是一種特殊的IGMP報文,與普通IGMP報文的區別在於其類型字段為0x1F/0x1E,且其目的IP地址為單播地址。Multicast traceroute報文分為以下三種類型:

l              Query報文:類型字段為0x1F

l              Request報文:類型字段為0x1F

l              Response報文:類型字段為0x1E

3. Multicast traceroute執行步驟

(1)        查詢器向最後一跳路由器發送Query報文;

(2)        最後一跳路由器在收到的Query報文後加上本地響應數據塊轉換成Request報文,查找到上遊鄰居後向其單播發送該Request報文;

(3)        最後一跳路由器到組播源之間的每一跳都在Request報文之後附加一個響應數據塊,並向其上遊鄰居單播轉發;

(4)        第一跳路由器在收到Request報文後,將其報文類型改為Response報文,向查詢器單播發送完整的報文。

附件下載

聯係我們