鬼佬大哥大
  • / 24
  • 下載費用:30 金幣  

本地局域網中組播流量轉發方法及組播路由器.pdf

關 鍵 詞:
本地 局域網 中組播 流量 轉發 方法 路由器
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
摘要
申請專利號:

CN201110102021.0

申請日:

2011.04.22

公開號:

CN102158415B

公開日:

2015.01.28

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):H04L 12/56申請日:20110422|||公開
IPC分類號: H04L12/70(2013.01)I; H04L12/18 主分類號: H04L12/70
申請人: 中興通訊股份有限公司
發明人: 林智
地址: 518057 廣東省深圳市南山區高新技術產業園科技南路中興通訊大廈法務部
優先權:
專利代理機構: 深圳市世紀恒程知識產權代理事務所 44287 代理人: 胡海國
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201110102021.0

授權公告號:

102158415B||||||

法律狀態公告日:

2015.01.28|||2012.12.12|||2011.08.17

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明涉及一種本地局域網中組播流量轉發方法及組播路由器,其方法包括:非DR在非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態;若延遲等待超時,則向RP或S方向的上游路由器發送PIM加入消息;從RPT或SPT接收到組播流量后,向本地局域網轉發組播流量;接收DR在下游出接口檢測到組播流量時發出的Assert消息;根據Assert消息及本地路由度量值,與DR競爭轉發組播流量。本發明通過引入非DR本地加入接口概念,并擴展Assert過程對非DR本地加入接口類型的處理,非DR根據Assert消息及本地路由度量值與DR競爭轉發組播流量,實現本地局域網中沒有下游組播路由器時,主機接收者仍是從位于RP或S到本地局域網最優路徑上的路由器接收組播流量,從而達到對網絡資源的優化利用。

權利要求書

1.一種本地局域網中組播流量轉發方法,其特征在于,包括:非指定路由器非DR在非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態;若延遲等待超時,則向匯聚點RP或數據源S方向的上游路由器發送獨立組播協議PIM加入消息,生成共享樹RPT或有源樹SPT;從RPT或SPT接收到組播流量后,向本地局域網轉發所述組播流量;接收DR在下游出接口檢測到組播流量時發出的斷言Assert消息;根據所述Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量。2.根據權利要求1所述的方法,其特征在于,所述根據Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量的步驟包括:將收到的Assert消息與本地路由度量值進行比較;若本地路由度量值優于收到的Assert消息,則從非DR本地加入接口繼續轉發組播流量,并發送Assert消息;否則停止轉發組播流量,繼續由DR負責向本地局域網轉發組播流量。3.根據權利要求2所述的方法,其特征在于,所述非DR在非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態的步驟之前還包括:所述非DR與所述本地局域網內的DR及其他非DR一同接收主機接收者發送的組管理協議IGMP加入消息,由DR負責向RP或S方向的上游路由器發送PIM加入消息及從RPT或SPT接收組播流量,并向本地局域網轉發。4.根據權利要求1所述的方法,其特征在于,所述非DR的非DR本地加入接口是指有收到IGMP加入消息,但沒有收到PIM加入消息且未被選為DR的接口。5.根據權利要求1所述的方法,其特征在于,延遲等待的時間根據到達RP或S的路由度量值計算;其中,路由度量值越小,延遲等待時間越短。6.根據權利要求3所述的方法,其特征在于,若非DR本地加入接口收到的是IGMPv3加入消息,則非DR向S方向發送PIM(S,G)消息;若非DR本地加入接口收到的是IGMPv2加入消息,則非DR向RP方向發送PIM(*,G)消息。7.根據權利要求1-6中任一項所述的方法,其特征在于,所述DR發送的Assert消息的類型由DR當前所處轉發狀態決定:當DR使用SPT轉發時,則為Assert(S,G)消息;當DR使用RPT轉發時,則為Assert(*,G)消息。8.根據權利要求7所述的方法,其特征在于,還包括:在延遲等待未超時期間,當所述非DR收到DR在下游出接口檢測到組播流量時發出的Assert消息時,根據所述Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量。9.根據權利要求6所述的方法,其特征在于,所述根據Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量的步驟進一步包括:當所述主機接收者發送IGMPv2加入消息且所述非DR為最后一跳并滿足本地SPT切換條件時,所述非DR完成從RPT到SPT的切換,之后競爭轉發從SPT接收的組播流量。10.一種本地局域網中組播流量轉發的組播路由器,其特征在于,包括:延遲等待模塊,用于在所述組播路由器的非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態;加入消息發送模塊,用于當延遲等待超時,向RP或S方向的上游路由器發送PIM加入消息,生成共享樹RPT或有源樹SPT;組播流量轉發模塊,用于從RPT或SPT接收到組播流量后,向本地局域網轉發所述組播流量;消息接收模塊,用于接收DR在下游出接口檢測到組播流量時發出的Assert消息;競爭轉發模塊,用于根據所述Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量。11.根據權利要求10所述的組播路由器,其特征在于,所述競爭轉發模塊包括:比較單元,用于將收到的Assert消息與本地路由度量值進行比較;轉發控制單元,用于當本地路由度量值優于收到的Assert消息時,控制組播流量轉發模塊從非DR本地加入接口繼續轉發組播流量,并發送Assert消息;否則停止轉發組播流量,繼續由DR負責向本地局域網轉發組播流量。12.根據權利要求10所述的組播路由器,其特征在于,所述競爭轉發模塊還用于在延遲等待未超時期間,且消息接收模塊收到DR在下游出接口檢測到組播流量時發出的Assert消息時,根據所述Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量。13.根據權利要求10所述的組播路由器,其特征在于,所述競爭轉發模塊還用于當所述主機接收者發送IGMPv2加入消息,且所述路由器為最后一跳并滿足本地SPT切換條件時,完成從RPT到SPT的切換,之后競爭轉發從SPT接收的組播流量。

說明書

本地局域網中組播流量轉發方法及組播路由器

技術領域

本發明涉及通信技術領域,尤其涉及一種用來實現主機接收者從數據源到本地局域網最優路徑上的組播路由器接收組播流量的本地局域網中組播流量轉發方法及組播路由器。

背景技術

組播是一種帶寬節約技術,在組播技術中,數據源只發送一份流量,所有且只有加入組播組的主機接收者都可以收到相同的流量。目前,被廣泛使用的三層組播技術包括PIM-SM(Protocol?Independent?Multicast-Sparse?Mode,獨立組播協議稀疏模式),PIM-SSM(Protocol?Independent?Multicast-Source?Specific?Multicast,獨立組播協議源特定組播)和IGMP(Internet?Group?Management?Protocol,Internet組管理協議),其中,PIM用于組播路由器(以下簡稱路由器)之間,IGMP用于本地局域網主機和路由器之間。

通常主機接收者通過向本地局域網中的路由器發送IGMP加入信息,以表達希望接收到的組播流量,當本地局域網中有多臺路由器時,選舉出來的DR(Designated?Router,指定路由器)負責代表本地局域網中的主機接收者向RP(Rendezvous?Point,匯聚點)或S(數據源)方向的上游路由器發送PIM(Protocol?Independent?Multicast,獨立組播協議)加入消息,生成RPT(Rendezvous?Point?Tree,共享樹)或SPT(Shortest?Path?Trees,有源樹),接收組播流量并向本地局域網轉發。

根據DR的選舉規則“優先級最大或優先級相同的情況下,IP地址最大的路由器成為DR”,顯然不能動態的保證DR一直處于數據源S到本地局域網的最優路徑上。

如果本地局域網的下游接收者中還存在路由器,則下游路由器會向MRIB(Multicast?Routing?Information?Base,組播路由信息庫)指出的到RP或S的最優路徑的下一跳路由器發送PIM加入消息。當下游路由器選擇的下一跳不是DR時,就會有兩臺路由器同時向本地局域網轉發組播流量,觸發Assert(斷言)過程,最終由Assert?Winner(經Assert過程的獲勝者)負責向本地局域網轉發組播流量。其中,Assert判定規則為:都采用SPT轉發時,距離數據源S最近的路由器獲勝;如果一個用SPT轉發,另外一個用RPT轉發,用SPT轉發的路由器獲勝;都用RPT轉發時,距離RP最近的路由器獲勝。可見,經Assert過程,本地局域網從距RP或S最近的Assert?Winner接收流量,并且Assert?Winner將負責代表本地局域網中的主機接收者向上游路由器加入或離開。

如果本地局域網的下游接收者中沒有路由器,如用戶接入網絡,根據PIM-SM協議對宏CouldAssert(S,G,I)(SPT可斷言)和宏CouldAssert(*,G,I)(RPT可斷言)的定義,本地局域網中非DR組播路由器的接口都不屬于CouldAssert(可斷言)范圍,不會有Assert過程。所以,當本地局域網中只有主機接收者而沒有下游路由器時,一定是DR負責向上游發送PIM加入消息,并向本地局域網轉發組播流量。因此,本地局域網就可能不是從距離RP或S最近的路由器接收組播流量。

如圖1所示,本地局域網A中只有下游主機接收者,DR?R5將代表接收者Host1向RP發送PIM加入消息,生成經由R1、R2、R5的RPT。經SPT切換后,生成經R1、R2、R5的SPT。網絡中有3臺路由器要記錄相關的組播路由信息,有2條鏈路要承載從數據源網絡到接收者網絡的組播流量。從網絡拓撲看,非DR?R4處于數據源S到本地局域網A的最優路徑上。

因此,當下游主機接收者中不存在路由器時,現有組播路由技術限制了只有DR能代表主機接收者向上游發送PIM加入消息并向本地局域網轉發組播流量,當DR不能處于數據源到本地局域網的最優路徑上時,就存在網絡資源浪費的情況。

發明內容

本發明的主要目的在于提供一種本地局域網中組播流量轉發方法及組播路由器,旨在避免因完全依靠DR轉發造成的路由器處理資源和鏈路帶寬資源的浪費。

為了達到上述目的,本發明提出一種本地局域網中組播流量轉發方法,包括:

非指定路由器非DR在非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態;

若延遲等待超時,則向匯聚點RP或數據源S方向的上游路由器發送獨立組播協議PIM加入消息,生成共享樹RPT或有源樹SPT;

從RPT或SPT接收到組播流量后,向本地局域網轉發所述組播流量;

接收DR在下游出接口檢測到組播流量時發出的斷言Assert消息;

根據所述Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量。

優選地,所述根據Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量的步驟包括:

將收到的Assert消息與本地路由度量值進行比較;

若本地路由度量值優于收到的Assert消息,則從非DR本地加入接口繼續轉發組播流量,并發送Assert消息;否則停止轉發組播流量,繼續由DR負責向本地局域網轉發組播流量。

優選地,所述非DR在非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態的步驟之前還包括:

所述非DR與所述本地局域網內的DR及其他非DR一同接收主機接收者發送的組管理協議IGMP加入消息,由DR負責向RP或S方向的上游路由器發送PIM加入消息及從RPT或SPT接收組播流量,并向本地局域網轉發。

優選地,所述非DR的非DR本地加入接口是指有收到IGMP加入消息,但沒有收到PIM加入消息且未被選為DR的接口。

優選地,延遲等待的時間根據到達RP或S的路由度量值計算;其中,路由度量值越小,延遲等待時間越短。

優選地,若非DR本地加入接口收到的是IGMPv3加入消息,則非DR向S方向發送PIM(S,G)消息;若非DR本地加入接口收到的是IGMPv2加入消息,則非DR向RP方向發送PIM(*,G)消息。

優選地,所述DR發送的Assert消息的類型由DR當前所處轉發狀態決定:當DR使用SPT轉發時,則為Assert(S,G)消息;當DR使用RPT轉發時,則為Assert(*,G)消息。

優選地,還包括:

在延遲等待未超時期間,當所述非DR收到DR在下游出接口檢測到組播流量時發出的Assert消息時,根據所述Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量。

優選地,所述根據Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量的步驟進一步包括:

當所述主機接收者發送IGMPv2加入消息且所述非DR為最后一跳并滿足本地SPT切換條件時,所述非DR完成從RPT到SPT的切換,之后競爭轉發從SPT接收的組播流量。

本發明還提出一種本地局域網中組播流量轉發的組播路由器,包括:

延遲等待模塊,用于在所述組播路由器的非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態;

加入消息發送模塊,用于當延遲等待超時,向RP或S方向的上游路由器發送PIM加入消息,生成共享樹RPT或有源樹SPT;

組播流量轉發模塊,用于從RPT或SPT接收到組播流量后,向本地局域網轉發所述組播流量;

消息接收模塊,用于接收DR在下游出接口檢測到組播流量時發出的Assert消息;

競爭轉發模塊,用于根據所述Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量。

優選地,所述競爭轉發模塊包括:

比較單元,用于將收到的Assert消息與本地路由度量值進行比較;

轉發控制單元,用于當本地路由度量值優于收到的Assert消息時,控制組播流量轉發模塊從非DR本地加入接口繼續轉發組播流量,并發送Assert消息;否則停止轉發組播流量,繼續由DR負責向本地局域網轉發組播流量。

優選地,所述競爭轉發模塊還用于在延遲等待未超時期間,且消息接收模塊收到DR在下游出接口檢測到組播流量時發出的Assert消息時,根據所述Assert消息及本地路由度量值,與所述DR競爭轉發所述組播流量。

優選地,所述競爭轉發模塊還用于當所述主機接收者發送IGMPv2加入消息,且所述路由器為最后一跳并滿足本地SPT切換條件時,完成從RPT到SPT的切換,之后競爭轉發從SPT接收的組播流量。

本發明提出的一種本地局域網中組播流量轉發方法及組播路由器,通過引入非DR本地加入接口概念,并擴展Assert過程對非DR本地加入接口類型的處理,非DR根據Assert消息及本地路由度量值與DR競爭轉發組播流量,實現了本地局域網中沒有下游組播路由器時,主機接收者仍是從位于RP或S到本地局域網最優路徑上的路由器接收組播流量,從而達到對網絡資源的優化利用,避免因完全依靠DR轉發造成的路由器處理資源和鏈路帶寬資源的浪費。

附圖說明

圖1是現有協議實現組播流量轉發的示意圖;

圖2是本發明本地局域網中組播流量轉發方法一實施例流程示意圖;

圖3是本發明本地局域網中組播流量轉發方法一實施例中根據Assert消息及本地路由度量值,與DR競爭轉發組播流量的流程示意圖;

圖4是本發明本地局域網中組播流量轉發方法一實施例中PIM-SSM結合IGMPv3網絡處理流程示意圖;

圖5是本發明本地局域網中組播流量轉發方法一實施例中PIM-SM結合IGMPv2網絡前期處理流程示意圖;

圖6是圖5所示的當DR轉發RPT流量的后期處理流程示意圖;

圖7是圖5所示的當DR轉發SPT流量的后期處理流程示意圖;

圖8是本發明本地局域網中組播流量轉發的組播路由器一實施例結構示意圖;

圖9是本發明本地局域網中組播流量轉發的組播路由器一實施例中競爭轉發模塊的結構示意圖。

為了使本發明的技術方案更加清楚、明了,下面將結合附圖作進一步詳述。

具體實施方式

本發明實施例解決方案主要是:通過引入非DR本地加入接口概念,并擴展Assert過程對非DR本地加入接口類型的處理,非DR根據Assert消息及本地路由度量值與DR競爭轉發組播流量,實現本地局域網中沒有下游組播路由器時,主機接收者仍是從位于RP或S到本地局域網最優路徑上的路由器接收組播流量,達到對網絡資源的優化利用。

如圖2所示,本發明一實施例提出一種本地局域網中組播流量轉發方法,包括:

步驟S101,非DR在非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態;

其中,非DR在非DR本地加入接口檢測到DR轉發的組播流量是DR從RPT或SPT接收的組播流量向本地局域網轉發的。當主機接收者希望接收某組播流量時,主機接收者向本地局域網內的多臺組播路由器發送IGMP加入消息,非DR與本地局域網內的DR及其他非DR一同接收主機接收者發送的IGMP加入消息,并由DR負責向RP或S方向的上游路由器發送PIM加入消息,建立RPT或SPT,并從RPT或SPT接收組播流量向本地局域網轉發。

本實施例中主機接收者為本地局域網中沒有下游組播路由器的主機接收者。

非DR的非DR本地加入接口是指有收到IGMP加入消息,但沒有收到PIM加入消息且未被選為DR的接口。

延遲等待的時間根據到達RP或S的路由度量值計算;其中,路由度量值越小,延遲等待時間越短。

步驟S102,若延遲等待超時,則向RP或S方向的上游路由器發送PIM加入消息,生成共享樹RPT或有源樹SPT;

步驟S103,從RPT或SPT接收到組播流量后,向本地局域網轉發組播流量;

步驟S104,接收DR在下游出接口檢測到組播流量時發出的Assert消息;

步驟S105,根據Assert消息及本地路由度量值,與DR競爭轉發組播流量。

上述步驟S102-步驟S105中,當延遲等待超時后,非DR向RP或S方向的上游路由器發送PIM加入消息,并生成共享樹RPT或有源樹SPT。非DR從RPT或SPT接收到組播流量后向本地局域網轉發,DR在下游出接口檢測到組播流量時發生Assert過程,非DR收到DR發出的Assert消息,加入對Assert?Winner的競爭。

DR發生的Assert過程與協議RFC4601?PIM-SM:Protocol?Specification(Revised)規定一致,DR發送的Assert消息的類型由DR當前所處轉發狀態決定:當DR使用SPT轉發時,則為Assert(S,G)消息;當DR使用RPT轉發時,則為Assert(*,G)消息。

非DR本地加入接口發生的Assert過程是指將收到的Assert消息與本地路由度量值進行比較。如果非DR的本地路由度量值優于收到的Assert消息,則非DR本地加入接口進入Assert?Winner狀態,繼續轉發組播流量,并發送Assert消息。當DR的下游出接口收到優于自己的Assert消息,則進入Assert?Loser狀態,停止轉發組播流量。至此,到RP或S最優路徑上的非DR負責向本地局域網轉發組播流量。如果非DR的本地路由度量值不能優于收到的Assert消息,則非DR本地加入接口進入Assert?Loser狀態,停止轉發組播流量,繼續由DR負責向本地局域網轉發流量。

其中,PIM加入消息的類型由非DR在本地加入接口收到的IGMP加入消息的版本決定:若收到的是IGMPv3加入消息,則非DR向S方向發送PIM(S,G)消息;若非DR在本地加入接口收到的是IGMPv2加入消息,則非DR向RP方向發送PIM(*,G)消息。

當主機接收者發送IGMPv2加入消息且非DR為最后一跳并滿足本地SPT切換條件,則非DR進行從RPT到SPT的切換,完成切換之后競爭轉發從SPT接收的組播流量。

此外,在延遲等待未超時期間,當非DR收到DR在下游出接口檢測到組播流量時發出的Assert消息時,非DR根據Assert消息及本地路由度量值,與DR競爭轉發組播流量。

如圖3所示,步驟S105包括:

步驟S1051,非DR將收到的Assert消息與本地路由度量值進行比較;

步驟S1052,若本地路由度量值優于收到的Assert消息,則從非DR本地加入接口繼續轉發組播流量,并發送Assert消息;否則停止轉發組播流量,繼續由DR負責向本地局域網轉發組播流量。

由上述可知,本地局域網中的組播路由器在滿足相應條件的情況下均可以參與組播流量轉發的競爭過程,與現有技術相比較,本實施例引入一種新的接口概念——非DR本地加入接口。通過擴展Assert過程對這種接口類型的處理,實現本地局域網中沒有下游組播路由器時,主機接收者仍是從位于RP或S到本地局域網最優路徑上的路由器接收組播流量,從而達到對網絡資源的優化利用。

下面根據網絡中使用的不同組播路由技術對本發明實現本地局域網主機接收者以最優路徑接收組播流量的方法分兩種情況進行說明。

情況(一):PIM-SSM結合IGMPv3;路由器間使用PIM-SSM協議,路由器和主機間使用IGMPv3協議。這種情況的特點是網絡中只有SPT,不存在RPT向SPT的切換過程。

上述情況(一)使用到的變量說明如下:

非DR本地加入接口宏定義:

Non_DR_CouldAssert(S,G,I)=(RPF_interface(S)!=I);

AND(I_am_not_DR(I)AND?local_receiver_include(S,G,I)==TRUE);

AND??(I?not?in??(joins(*,*,RP(G))(+)joins(*,G)(+)joins(S,G)))。

非DR本地加入接口滿足以下條件:

不是到數據源S的RPF(反向路徑轉發)接口;

收到IGMPv3加入消息,但本身不是DR;

沒有收到過PIM加入消息;

spt_assert_metric(S,I):非DR路由器到數據源S的路由度量值,計算方法與RFC4601定義一致。

Non_DR_DataTrigger_Timer(S,G,I):非DR本地加入接口檢測到(S,G)流量時設置的向數據源S方向發送PIM?JOIN(S,G)消息的延遲計時器。計算方法如下:

Non_DR_DataTrigger_Timer(S,G,I)=27-10000/(metric(S)+400);

其中metric(S)是非DR到數據源S的路由向量。Non_DR_DataTrigger_Timer(S,G,I)取值范圍(2,27),在[0,+∞)上單調遞增。具體實現中,只要滿足距離S越近,延遲等待時間越短的條件,Non_DR_DataTrigger_Timer(S,G,I)也可以使用其他計算方法。

情況(一)的處理流程說明如下:

處于同一本地局域網的多臺組播路由器收到主機接收者發送的IGMPv3加入消息,由選舉出的DR負責向數據源S方向的上游路由器發送PIM?JOIN(S,G)消息,生成SPT,DR從SPT接收組播流量并向本地局域網轉發。

當本地局域網中的非DR在非DR本地加入接口檢測到組播流量時,設置延遲計時器Non_DR_DataTrigger_Timer(S,G,I)。延遲計時器超時觸發非DR向數據源S方向的上游路由器發送PIM?JOIN(S,G)消息,生成SPT并向本地局域網轉發組播流量。

DR在下游出接口收到組播流量,觸發Assert過程,發送Assert(S,G)消息并進入Assert(S,G)Winner狀態。非DR將本地spt_assert_metric(S,I)與收到的Assert(S,G)消息進行比較,如果本地spt_assert_metric(S,I)更優且已經向本地局域網轉發過組播流量,則非DR本地加入接口進入Assert(S,G)Winner狀態,發送Assert(S,G)消息并繼續轉發組播流量。如果非DR的本地spt_assert_metric(S,I)不如收到的Assert(S,G)消息,則非DR本地加入接口進入Assert(S,G)Loser狀態,如果延遲計時器尚未超時,則取消計時器,如果非DR因為本地局域網的關系向上游發送過PIMJOIN(S,G)消息則發送PIM?PRUNE(S,G)消息。DR如果收到優于自身的Assert(S,G)消息,則進入Assert(S,G)Loser狀態并停止轉發組播流量,否則繼續負責向本地局域網轉發組播流量。至此,主機接收者從位于數據源S到本地局域網最優路徑上的路由器接收組播流量。

如圖4所示,下面結合附圖4,對PIM-SSM結合IGMPv3的網絡環境,在非DR本地加入接口檢測到組播流量后的處理流程進行詳細說明:

步驟S201:非DR連接到本地局域網的非DR本地加入接口檢測到DR轉發的組播流量;

步驟S202:非DR設置向數據源S方向發送PIM?JOIN(S,G)消息的延遲計時器Non_DR_DataTrigger_Timer(S,G,I),根據延遲計時器的計算方法,距離數據源S越近的非DR路由器的延遲等待時間越短;

步驟S203:判斷延遲計時器是否超時,若超時,則執行步驟S204,否則繼續等待,如果在等待超時期間收到Assert(S,G)消息,則執行步驟S206;

步驟S204:延遲計時器超時觸發非DR向數據源S方向的上游路由器發送PIM?JOIN(S,G)消息,建立數據源S到非DR的SPT。

步驟S205:非DR從SPT接收組播流量并向本地局域網轉發。DR的下游出接口收到非DR轉發的組播流量,觸發Assert過程,進入Assert(S,G)Winner狀態,發送Assert(S,G)消息。

步驟S206:非DR收到Assert(S,G)消息,如果本地spt_assert_metric(S,I)優于收到的Assert(S,G)消息,則執行步驟S207,否則執行步驟S208;

步驟S207:本地spt_assert_metric(S,I)優于收到的Assert(S,G)消息,進入Assert(S,G)Winner狀態,發送Assert(S,G)消息。根據非DR是否轉發過組播流量執行不同的后續操作。

如果非DR已經向本地局域網轉發過組播流量,則繼續負責轉發流量。該非DR發送的Assert(S,G)消息將使DR的下游出接口和其它非DR的非DR本地加入接口進入Assert(S,G)Loser狀態。

如果非DR尚未向本地局域網轉發過組播流量,即存在其他非DR先完成了SPT的建立。該非DR因收到DR發送的Assert(S,G)消息暫時進入Assert(S,G)Winner狀態,但很快又會收到轉發過組播流量的非DR發送的Assert(S,G)消息,根據延遲計時器的計算方法,該非DR到數據源S的路由度量不會比從其他非DR接收到的Assert(S,G)消息更優,取消延遲計時器并進入Assert(S,G)Loser狀態。如果該非DR因為本地局域網的關系向上游發送過PIM?JOIN(S,G)消息,則發送PIM?PRUNE(S,G)消息,取消SPT的建立。

至此,本地局域網中位于到數據源S最優路徑上的路由器負責向本地局域網轉發組播流量。

步驟S208:非DR路由器的本地spt_assert_metric(S,I)不能優于收到的Assert(S,G)消息,進入Assert(S,G)Loser狀態,取消尚未超時的延遲計時器,如果已經因為本地局域網的關系向上游發送過PIM?JOIN(S,G)消息,則發送PIM?PRUNE(S,G)。

情況(二):PIM-SM結合IGMPv2;路由器間使用PIM-SM協議,路由器和主機間使用IGMPv2協議。這種情況的特點是主機接收者最初是從RPT接收組播流量,由最后一跳組播路由器判斷是否要進行SPT切換,組播流量的轉發存在從RPT向SPT的切換過程。

情況(二)使用的變量說明如下:

非DR本地加入接口宏定義:

Non_DR_CouldAssert(*,G,I)=(RPF_interface(RP(G))!=I);

AND(I_am_not_DR(I)AND?local_receiver_include(*,G,I)==TRUE);

AND(I?not?in(joins(*,*,RP(G))(+)joins(*,G)))。

非DR本地加入接口滿足以下條件:

不是到匯聚點RP的RPF接口;

收到IGMPv2加入消息,但本身不是DR;

沒有收到過PIM加入消息;

spt_assert_metric(G,I):非DR到匯聚點RP的路由度量值,計算方法與RFC4601定義一致。

spt_assert_metric(S,I):非DR到數據源S的路由度量值,計算方法與RFC4601定義一致。

Non_DR_DataTrigger-Timer(*,G,I):非DR本地加入接口檢測到組播流量時設置的向匯聚點RP方向發送PIM?JOIN(*,G)消息的延遲計時器。計算方法如下:

Non_DR_DataTrigger_Timer(*,G,I)=30-10000/(metric(RP(G))+400);

其中metric(RP(G))是非DR到匯聚點RP的路由向量。Non_DR_DataTrigger_Timer(*,G,I)取值范圍(5,30),在[0,+∞)單調遞增。

Non_DR_DataTrigger_Timer(S,G,I):非DR在滿足SPT切換條件時設置的向數據源S方向發送PIM?JOIN(S,G)消息的延遲計時器。計算方法如下:

Non_DR_DataTrigger_Timer(S,G,I)=27-10000/(metric(S)+400)

其中metric(S)是非DR到數據源S的路由向量。Non_DR_DataTrigger_Timer(S,G,I)取值范圍(2,27),在[0,+∞)單調遞增。

具體實現中,只要滿足路由向量越小延遲等待時間越短的條件,以上兩個延遲計時器也可以使用其他計算方法。

情況(二)的處理流程說明如下:

主機接收者發送IGMPv2加入消息,請求組地址為G的組播流量。本地局域網中的DR在收到IGMPv2加入消息后,代表本地局域網中的主機接收者向匯聚點RP方向的上游路由器發送PIM?JOIN(*,G)消息,建立RPT,接受組播流量并向本地局域網轉發。非DR連接到本地局域網的非DR本地加入接口檢測到組播流量后設置向匯聚點RP方向發送PIM?JOIN(*,G)消息的延遲計時器Non_DR_DataTrigger_Timer(*,G,I)。待延遲計時器超時,非DR向匯聚點RP方向的上游路由器發送PIM?JOIN(*,G)消息,生成RPT并向本地局域網轉發組播流量。DR在下游出接口收到組播流量時發生Assert過程,并根據當前所處的轉發狀態,發送不同的Assert消息。DR在下游出接口接收到組播流量時,如果仍處于RPT轉發狀態,則發送Assert(*,G)消息;如果已經完成RPT到SPT的切換,則發送Assert(S,G)消息。非DR根據收到的不同Assert消息,進入不同的處理流程:

流程(1):非DR路由器收到Assert(*,G)消息。如果非DR的本地rpt_assert_metric(G,I)優于收到的Assert(*,G)消息,則進入Assert(*,G)Winner狀態,發送Asser(*,G)消息并繼續轉發組播流量。非DR發送的Assert(*,G)消息使DR進入Assert(*,G)Loser狀態,取代DR負責向本地局域網轉發從RPT接收到的組播流量。如果非DR的本地rpt_assert_metric(G,I)不能優于收到的Assert(*,G)消息,則進入Assert(*,G)Loser狀態,取消未超時的延遲計時器,如果因為本地局域網的關系向RP方向發送過PIM?JOIN(*,G)消息,則發送PIM?PRUNE(*,G)消息。

因為SPT切換僅取決于最后一跳路由器,所以非DR只要滿足本地SPT切換條件,就可以生成SPT,轉發從SPT接收到的組播流量,取代當前本地局域網中使用RPT轉發的組播路由器。

滿足SPT切換條件的組播路由器設置向數據源S方向發送PIM?JOIN(S,G)消息的延遲計時器Non_DR_DataTrigger_Timer(S,G,I),計時器超時后,向數據源S方向的上游路由器發送PIM?JOIN(S,G)消息,建立SPT,從SPT接收組播流量并向本地局域網轉發。處于SPT轉發狀態的組播路由器在下游出接口收到從RPT轉發過來的組播流量,發生Assert過程,發送Assert(S,G)消息。Assert(S,G)消息使當前仍處于RPT轉發狀態的組播路由器或者進入Loser狀態,停止轉發從RPT接收到的組播流量;或者進行SPT切換,加入SPT轉發競爭。至此,本地局域網從SPT接受組播流量。

如果在滿足本地SPT切換條件之前,收到優于本地spt_assert_metric(S,I)的Assert(S,G)消息,則進入Assert(S,G)Loser狀態,否則繼續檢查SPT切換條件。

如果在等待Non_DR_DataTrigger_Timer(S,G,I)延遲計時器超時期間收到優于本地spt_assert_metric(S,I)的Assert(S,G)消息,取消延遲計時器并進入Assert(S,G)Loser狀態,否則繼續等待延遲計時器超時。

流程(2):非DR收到Assert(S,G)消息。如果非DR因為本地局域網的關系向匯聚點RP方向發送過PIM?JOIN(*,G)消息,則發送PIM?PRUNE(*,G)消息,取消RPT的建立。如果非DR的本地spt_assert_metric(S,I)優于收到的Assert(S,G)消息,且滿足本地切換SPT條件,設置向數據源S方向發送PIM?JOIN(S,G)消息的延遲計時器Non_DR_DataTrigger_Timer(S,G,I)。計時器超時后,向數據源S方向的上游路由器發送PIM?JOIN(S,G)消息,建立SPT,接收組播流量并向本地局域網轉發。當出接口收到其他組播路由器轉發到本地局域網的組播流量時,發生Assert過程,發送Assert(S,G)消息,進入Assert(S,G)Winner狀態。當前負責轉發的組播路由器收到優于自己的Assert(S,G)消息,進入Assert(S,G)Loser狀態,停止向本地局域網轉發流量。至此,滿足切換SPT條件且位于數據源S到本地局域網最優路徑上的組播路由器負責向本地局域網轉發流量。

如果非DR的本地spt_assert_metric(S,I)不能優于收到的Assert(S,G)消息,則進入Assert(S,G)Loser狀態。

如果非DR的本地spt_assert_metric(S,I)優于收到的Assert(S,G)消息,但不滿足本地切換SPT條件,則周期性的檢查判斷,直到滿足切換SPT條件,建立SPT,加入SPT轉發競爭;或是收到優于本地spt_assert_metric(S,I)的Assert(S,G)消息,進入Assert(S,G)Loser狀態。

如果在等待Non_DR_DataTrigger_Timer(S,G,I)延遲計時器超時期間收到優于本地spt_assert_metric(S,I)的Assert(S,G)消息,取消延遲計時器,進入Assert(S,G)Loser狀態,否則繼續等待延遲計時器超時。

如圖5所示,下面結合附圖5,對本發明主機接收者以最優路徑接收組播流量的第二種情況:PIM-SM結合IGMPv2的網絡環境,在非DR本地加入接口檢測到組播流量后的處理過程進行詳細說明:

步驟S301:非DR的非DR本地加入接口檢測到由DR路由器向本地局域網轉發的組播流量;

步驟S302:非DR設置向匯聚點RP方向發送PIM?JOIN(*,G)消息的延遲計時器Non_DR_DataTrigger_Timer(*,G,I)。該延遲計時器的等待時間相對較長,如果DR能進行SPT切換,可以在該等待時間內完成;

步驟S303:檢查Non_DR_DataTrigger_Timer(*,G,I)計時器是否超時。超時執行步驟S304,否則繼續等待,如果在等待期間收到Assert消息,執行步驟S306;

步驟S304:Non_DR_DataTrigger_Timer(*,G,I)延遲計時器超時觸發非DR向匯聚點RP方向發送PIM?JOIN(*,G)消息,建立RPT。

步驟S305:非DR從RPT接收組播流量,向本地局域網轉發。DR的下游出接口收到組播流量時,發生Assert過程。如果DR處于RPT轉發狀態,發送Assert(*,G)消息。如果DR已經完成從RPT到SPT的切換,則發送Assert(S,G)消息。

步驟S306:非DR判斷接收到的Assert消息的類型。如果收到的是Assert(*,G)消息,執行步驟S307;否則,執行步驟S308。

步驟S307:非DR收到Assert(*,G)消息,進入相應的處理過程,該過程請參見后續結合圖6的詳細說明。

步驟S308:非DR收到Assert(S,G)消息,判斷本路由器是否因本地局域網的關系向匯聚點RP方向發送過PIM?JOIN(*,G),如果已經發送過,則執行步驟S309,否則,執行步驟310。

步驟S309:DR已經完成RPT向SPT的切換,根據Assert的判定規則,SPT轉發要優于RPT轉發,非DR向匯聚點RP方向發送PIM?PRUNE(*,G)消息,取消RPT的建立。

步驟310:進入非DR收到Assert(S,G)消息的處理過程。該過程請參見后續結合圖7的詳細描述。

如圖6所示,非DR收到Asser(*,G)消息情況的處理過程詳細說明如下:

步驟S401:非DR將本地rpt_assert_metric(G,I)與收到的Assert(*,G)消息進行比較,如果本地rpt_assert_metric(G,I)優于收到的Assert(*,G)消息,執行步驟S402,否則,執行步驟S403;

步驟S402:本地rpt_assert_metric(G,I)優于收到的Assert(*,G)消息,進入Assert(*,G)Winner狀態,發送Assert(*,G)消息。DR收到優于本地的Assert(*,G)消息,進入Asser(*,G)Loser狀態,停止轉發流量。至此,網絡中由距匯聚點RP最近的路由器負責轉發從RPT接收到的組播流量。

步驟S403:非DR的本地rpt_assert_metric(G,I)不能優于接收到的Assert(*,G)消息,接口進入Asser(*,G)Loser狀態,取消尚未超時的延遲計時器,如果已經向匯聚點RP方向發送過PIM?JOIN(*,G)消息,還需發送PIM?PRUNE(*,G)消息,執行步驟S404;

步驟S404:各路由器判斷本地切換SPT條件是否滿足。滿足切換條件的執行步驟S405,否則執行步驟S409;

步驟S405:設置向數據源S方向發送PIM?JOIN(S,G)消息的延遲計時器Non_DR_DataTrigger_Timer(S,G,I);

步驟S406:判斷Non_DR_DataTrigger_Timer(S,G,I)延遲計時器是否超時。超時執行步驟S407,否則執行步驟411;

步驟S407:延遲計時器超時觸發路由器向數據源S方向發送PIM?JOIN(S,G)消息,建立SPT;

步驟S408:完成SPT切換的路由器向本地局域網轉發從SPT接收到的組播流量,該路由器的(S,G)出接口接收到其他路由器轉發的組播流量,觸發Assert過程,發送Assert(S,G)消息,進入Assert(S,G)Winner狀態。之前負責向本地局域網轉發流量的路由器收到優于自己的Assert(S,G)消息,進入Assert(S,G)Loser狀態,停止轉發流量。至此,本地局域網從滿足切換SPT條件且距離數據源S最近的路由器接收組播流量;

步驟S409:本地切換SPT條件滿足前收到Assert(S,G)消息,如果本地spt_assert_metric(S,I)優于收到的Assert(S,G)消息,繼續等待本地切換SPT條件滿足,執行步驟S404,否則執行步驟410;

步驟410:收到優于本地spt_assert_metric(S,I)的Assert(S,G)消息,接口進入Assert(S,G)Loser狀態。本路由器對SPT轉發競爭結束;

步驟411:在延遲計時器Non_DR_DataTrigger_Timer(S,G,I)超時之前收到Assert(S,G)消息,如果本地spt_assert_metric(S,I)優于收到的Assert(S,G)消息,執行步驟S406,繼續等待延遲計時器超時,否則執行步驟412;

步驟412:本地spt_assert_metric(S,I)不能優于收到的Assert(S,G)消息,取消Non_DR_DataTrigger_Timer(S,G,I)延遲計時器,接口進入Assert(S,G)Loser狀態,本路由器對SPT轉發競爭結束;

如圖7所示,非DR路由器收到Assert(S,G)消息情況的處理流程詳細說明如下:

步驟S501:非DR將本地spt_assert_mitric(S,I)與收到的Assert(S,G)消息進行比較,如果不能優于收到的Assert(S,G)消息,執行步驟S502,否則執行步驟S503;

步驟S502:非DR路由器收到優于本地的Assert(S,G)消息,非DR本地加入接口進入Assert(S,G)Loser狀態,本路由器的SPT轉發競爭結束;

步驟S503:非DR路由器本地spt_assert_metric(S,I)優于收到的Assert(S,G)消息,判斷本地切換SPT的條件是否滿足,滿足時執行步驟S504,否則繼續等待,如果在切換SPT條件滿足之前又收到新的Assert(S,G)消息,執行步驟S501;

步驟S504:設置向數據源S方向發送PIM?JOIN(S,G)的延遲計時器Non_DR_DataTrigger_Timer(S,G,I);

步驟S505:檢測延遲計時器是否超時,超時執行步驟S506,否則繼續等待,如果在超時之前收到Assert(S,G)消息,執行步驟S508;

步驟S506:計時器超時,非DR向數據源S方向發送PIM?JOIN(S,G)消息,建立SPT;

步驟S507:完成SPT切換的非DR向本地局域網轉發組播流量,在出接口收到其他路由器轉發的組播流量時,觸發Assert過程,發送Assert(S,G)消息,接口進入Assert(S,G)Winner狀態。之前負責轉發組播流量的路由器因收到優于自己的Assert(S,G)消息而進入Assert(S,G)Loser狀態。至此,本地局域網從滿足切換SPT條件且距離數據源S最近的路由器接收組播流量;

步驟S508:在延遲計時器超時之前收到Assert(S,G)消息,如果本地spt_assert_metric(S,I)優于收到的Assert(S,G)消息,則繼續等待計時器超時,執行步驟S505,否則執行步驟S509;

步驟S509:取消延遲計時器Non_DR_DataTrigger_Timer(S,I,G),接口進入Assert(S,G)Loser狀態,本路由器的SPT轉發競爭結束。

需要說明的是,在路由器間使用PIM-SM,路由器與主機間使用IGMPv2的情況下,因為路由器需要先檢查切換SPT的條件是否滿足,所以,最先向數據源S發送PIM?JOIN(S,G)并完成SPT建立的路由器不一定是本地局域網到數據源S最優路徑上的路由器,因此,當有距數據源S的路由度量更優的路由器滿足切換SPT的條件時,就會取代當前負責流量轉發的路由器。

由上述兩種網絡情況PIM-SSM網絡和PIM-SM網絡的具體實施過程可以看到,通過定義一種新的協議接口類型,并擴展該接口類型的Assert處理過程,達到本地局域網中沒有下游組播路由器時的主機接收者以最優路徑接收組播流量的目的,實現對網絡資源的優化利用。

如圖8所示,本發明一實施例提出一種本地局域網中組播流量轉發的組播路由器,包括:延遲等待模塊801、加入消息發送模塊802、組播流量轉發模塊803、消息接收模塊804及競爭轉發模塊805,其中:

延遲等待模塊801,用于在非DR本地加入接口檢測到DR轉發的組播流量時,進入延遲等待狀態;

加入消息發送模塊802,用于當延遲等待超時,向RP或S方向的上游路由器發送PIM加入消息,生成共享樹RPT或有源樹SPT;

組播流量轉發模塊803,用于從RPT或SPT接收到組播流量后,向本地局域網轉發所述組播流量;

消息接收模塊804,用于接收DR在下游出接口檢測到組播流量時發出的Assert消息;

競爭轉發模塊805,用于根據Assert消息及本地路由度量值,與DR競爭轉發所述組播流量。

其中,非DR在非DR本地加入接口檢測到DR轉發的組播流量是DR從RPT或SPT接收的組播流量向本地局域網轉發的。當主機接收者希望接收某組播流量時,主機接收者向本地局域網內的多臺組播路由器發送IGMP加入消息,非DR與本地局域網內的多臺組播路由器一同接收主機接收者發送的IGMP加入消息,并由DR負責向RP或S方向的上游路由器發送PIM加入消息,建立RPT或SPT,并從RPT或SPT接收組播流量向本地局域網轉發。

非DR本地加入接口是指有收到IGMP加入消息,但沒有收到PIM加入消息且未被選為DR的接口。

延遲等待的時間根據到達RP或S的路由度量值計算;其中,路由度量值越小,延遲等待時間越短。

當延遲等待超時后,非DR向RP或S方向的上游路由器發送PIM加入消息。非DR從RPT或SPT接收到組播流量后向本地局域網轉發,DR在下游出接口檢測到組播流量時發生Assert過程,非DR收到DR發出的Assert消息,加入對Assert?Winner的競爭。

DR發生的Assert過程與協議RFC4601PIM-SM:Protocol?Specification(Revised)規定一致,DR發送的Assert消息的類型由DR當前所處轉發狀態決定:當DR使用SPT轉發時,則為Assert(S,G)消息;當DR使用RPT轉發時,則為Assert(*,G)消息。

非DR本地加入接口發生的Assert過程是指將收到的Assert消息與本地路由度量值進行比較。如果非DR的本地路由度量值優于收到的Assert消息,則非DR本地加入接口進入Assert?Winner狀態,繼續轉發組播流量,并發送Assert消息。當DR的下游出接口收到優于自己的Assert消息,則進入AssertLoser狀態,停止轉發組播流量。至此,到RP或S最優路徑上的非DR負責向本地局域網轉發組播流量。如果非DR的本地路由度量值不能優于收到的Assert消息,則非DR本地加入接口進入Assert?Loser狀態,停止轉發組播流量,繼續由DR負責向本地局域網轉發流量。

其中,PIM加入消息的類型由非DR本地加入接口收到的IGMP加入消息的版本決定:若收到的是IGMPv3加入消息,則非DR向S方向發送PIM(S,G)消息;若收到的是IGMPv2加入消息,則非DR向RP方向發送PIM(*,G)消息。

當主機接收者發送IGMPv2加入消息且非DR為最后一跳并滿足本地SPT切換條件時,非DR進行從RPT到SPT的切換,完成切換之后競爭轉發從SPT接收的組播流量。

如圖9所示,競爭轉發模塊805包括:比較單元8051及轉發控制單元8052,其中:

比較單元8051,用于將收到的Assert消息與本地路由度量值進行比較;

轉發控制單元8052,用于當本地路由度量值優于收到的Assert消息時,控制組播流量轉發模塊從非DR本地加入接口繼續轉發組播流量,并發送Assert消息;否則停止轉發組播流量,繼續由DR負責向本地局域網轉發組播流量。

進一步的,競爭轉發模塊805還用于在延遲等待未超時期間,且消息接收模塊804收到DR在下游出接口檢測到組播流量時發出的Assert消息時,根據Assert消息及本地路由度量值,與DR競爭轉發組播流量。

進一步的,競爭轉發模塊805還用于當主機接收者發送IGMPv2加入消息,且路由器為最后一跳并滿足本地SPT切換條件時,進行從RPT到SPT的切換,完成切換之后競爭轉發從SPT接收的組播流量。

本發明實施例本地局域網中組播流量轉發方法及組播路由器,通過引入非DR本地加入接口概念,并擴展Assert過程對非DR本地加入接口類型的處理,非DR根據Assert消息及本地路由度量值與DR競爭轉發組播流量,實現本地局域網中沒有下游組播路由器時,主機接收者仍是從位于RP或S到本地局域網最優路徑上的路由器接收組播流量,從而達到對網絡資源的優化利用,避免因完全依靠DR轉發造成的路由器處理資源和鏈路帶寬資源的浪費。

以上所述僅為本發明的優選實施例,并非因此限制本發明的專利范圍,凡是利用本發明說明書及附圖內容所作的等效結構或流程變換,或直接或間接運用在其它相關的技術領域,均同理包括在本發明的專利保護范圍內。

關于本文
本文標題:本地局域網中組播流量轉發方法及組播路由器.pdf
鏈接地址:http://www.wwszu.club/p-6420877.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大