專利名稱:構(gòu)建等耗多徑多播分發(fā)結(jié)構(gòu)的制作方法
技術領域:
本發(fā)明涉及計算機網(wǎng)絡,具體地說,涉及一個計算機網(wǎng)絡內(nèi)多播內(nèi)容的傳輸。
背景技術:
一個計算機網(wǎng)絡是相互聯(lián)系、可以交換數(shù)據(jù)并且共享資源的多個計算設備的集合。有多種不同的方法在計算設備之間傳送數(shù)據(jù)。其中的一種稱為“多播”的方法,使用多播樹以允許一臺源設備將需要分發(fā)的單個數(shù)據(jù)包發(fā)送給包含一個或多個接收計算設備的群組。利用多播,該源設備為所傳送的數(shù)據(jù)指定一個多播標識符,使該接收群組中的每個計算設備都能接收到該數(shù)據(jù)的一份拷貝。在一些情況下,這臺源設備通過網(wǎng)絡將多播數(shù)據(jù)包發(fā)送給配置為多播的一臺路由器。接著,該路由器復制這些數(shù)據(jù)包并且將這些拷貝轉(zhuǎn)發(fā)給其他多播有效的路由器。然后,這些接收路由器復制這些數(shù)據(jù)包并且重復轉(zhuǎn)發(fā)流程以使每臺接收設備都收到這些數(shù)據(jù)包的拷貝。通過這樣的方式,使用一棵多播樹通過一個或多個網(wǎng)絡傳遞多播數(shù)據(jù)包。
用戶可以通過提交“多播動作請求”,在由一個內(nèi)容提供者或是由多個內(nèi)容提供者提供不同多播內(nèi)容的模式之間切換。特別地,多播動作請求允許用戶加入和退出與多播標識符相關聯(lián)的各個多播群組。一個發(fā)出各種多播動作請求(比如“加入請求”)的示范性協(xié)議,是互聯(lián)網(wǎng)群組管理協(xié)議(IGMP)。為加入一個特定多播群組,這些接收設備發(fā)送“多播加入請求”給上游路由器(即中繼路由器),由這些路由器將該加入請求轉(zhuǎn)發(fā)給源設備。
發(fā)明內(nèi)容
總體而言,本發(fā)明涉及用于在網(wǎng)絡中提供多播傳輸效率的技術。該技術不是只為一個特定多播組和源設備建立單一分發(fā)結(jié)構(gòu)(比如樹),而是可以為其建立多個多播分發(fā)結(jié)構(gòu)。依照該技術,一個多播協(xié)議可以被擴展,以在用于建立一個多播分發(fā)結(jié)構(gòu)的控制消息中包括一個實例(instance)編號,該實例編號和用于多播群組和源設備的多個實例中的一個相對應。由此,該源設備,比如,可以使用單播等耗多徑(ECMP)哈希算法,在多個多播分發(fā)結(jié)構(gòu)中選擇一個用于傳送多播內(nèi)容。
每個接收節(jié)點知道(例如,通過配置或發(fā)現(xiàn)協(xié)議)ECMP的寬度,即,用于一個多播群組和源設備的多個實例的數(shù)目N。每個接收節(jié)點接著發(fā)送分布于上游設備中的N條加入消息,每條消息有各自的實例編號。通過這種方式,可以組成N棵多播樹,但是因為源設備只選擇多棵多播樹中的一棵來發(fā)送多播內(nèi)容,每臺接收設備只能收到來自源設備的多播內(nèi)容的一份拷貝??梢酝ㄟ^一個擴展的協(xié)議獨立多播(PIM)協(xié)議或點對多點(P2MP)標簽分發(fā)協(xié)議(LDP)發(fā)送加入消息。以上的描述由于示例的目的,只考慮到IP多播,但本發(fā)明的原則也可以應用于在其他環(huán)境下建立多播樹,比如LDP,P2MP,或多協(xié)議標簽交換(MPLS)等環(huán)境。
在一個實施例中,一種在一個網(wǎng)絡內(nèi)組成多播分發(fā)結(jié)構(gòu)的方法包括,在一臺設備加入來自單臺源設備的一個多播群組的多個實例N,其中每個實例對應于網(wǎng)絡內(nèi)該多播群組的一個不同的多播分發(fā)結(jié)構(gòu)。
在另一實施例中,網(wǎng)絡內(nèi)的使用多播的分發(fā)結(jié)構(gòu),包括在一個多播群組的一臺源設備上,為該多播群組選擇多個實例N中的一個,以及為該多播群組通過這個對應于所選N個實例中的一個實例的多播分發(fā)結(jié)構(gòu),發(fā)送多播內(nèi)容給該設備。
在其他一項具體實施中,一臺網(wǎng)絡設備包括一個保存指定實例數(shù)目N的配置數(shù)據(jù)的控制單元,以及在該控制單元內(nèi)運行的一個多播協(xié)議,該協(xié)議基于這個實例編號N,為一個多播群組的N個實例生成N條加入請求,其中每個實例對應于該多播群組的一個多播分發(fā)結(jié)構(gòu)。每條加入請求指定加入的該多播群組N個實例中的一個。該網(wǎng)絡設備還包括一個將加入請求輸出到位于該網(wǎng)絡設備與該多播群組的一臺源設備間的多個上游設備的接口,以加入該多播群組。
在另一個實施例中,一個系統(tǒng)包括一臺為多播群組提供多播內(nèi)容的源設備,以及通過位于該網(wǎng)絡設備與該源設備之間的多個上游設備而結(jié)合進該源設備的一臺網(wǎng)絡設備。N個實例的每個,對應于該多播群組不同的一個多播分發(fā)結(jié)構(gòu),每條加入請求指定所加入的不同的N個實例中的一個。該源設備選擇N個實例中的一個,并且,通過該對應于所選N個實例中的一個實例的多播分發(fā)結(jié)構(gòu),發(fā)送該多播群組的多播內(nèi)容給所述網(wǎng)絡設備。
在另一個實施例中,一個計算機可讀介質(zhì)包括使一個可編程處理器,由一臺單個源設備為一個多播群組指定N個實例的指令,其中的每個實例對應于該多播群組的一個不同的多播分發(fā)結(jié)構(gòu)。這些指令進而使該可編程處理器為該N個實例的每個實例,從該設備到位于該設備與源設備之間的多個上游路由器,發(fā)送一條加入請求。每條加入請求指定了將加入的多播群組的N個實例中的一個。
一項或多項實施例的細節(jié),均在隨后的
和具體實施方式
中列出。在具體實施方式
、附圖和權利要求書中,將明確闡述本發(fā)明的其他特征、目標和優(yōu)點。
圖1A-1D是說明一個示例性系統(tǒng)的系列塊圖,這一系統(tǒng)中,接收設備和中繼路由器交換多播優(yōu)化數(shù)據(jù)(MOD)并且依照本發(fā)明的原則為接收多播業(yè)務選擇上游路由器。
圖2A是說明一個示例性包格式的塊圖,該包格式用于一臺下游設備與一個上游設備共享多播優(yōu)化數(shù)據(jù),以提高系統(tǒng)中的多播效率。
圖2B是說明一個示例性包格式的塊圖,該包格式用于一個上游設備與一個下游設備共享多播優(yōu)化數(shù)據(jù),以提高系統(tǒng)中的多播效率。
圖3是說明接收機與鄰接上游路由器共享多播優(yōu)化數(shù)據(jù)運行示例的流程圖。
圖4是說明一臺上游路由器與鄰接設備共享多播優(yōu)化數(shù)據(jù)運行示例的流程圖。
圖5是說明一臺示例性路由器依照本發(fā)明的一個具體實施例,分發(fā)或接收多播優(yōu)化數(shù)據(jù)的塊圖。
圖6是說明保存多播優(yōu)化數(shù)據(jù)的示例數(shù)據(jù)結(jié)構(gòu)的塊圖。
圖7是說明一個局域網(wǎng)(LAN)環(huán)境的塊圖,其中一臺源設備通過一個或多個中繼設備將用于一個群組的多播數(shù)據(jù)流注入主干網(wǎng)。
圖8是說明另一個示例性計算系統(tǒng)的塊圖,該系統(tǒng)中接收機為同一個多播群組為對應于多棵多播樹的多個實例而發(fā)送多播加入請求。
圖9是為同一個多播群組的多個實例而組成多個多播樹之后、圖8系統(tǒng)的系統(tǒng)示例。
圖10是說明一個擴展后包括一個實例編號的示例性多播包格式的塊圖。
圖11是說明依照本發(fā)明原則的一臺接收機、一臺上游路由器和源設備運行示例的流程圖。
具體實施例方式圖1A是說明示例系統(tǒng)10的塊圖,其中接收機14A-14D(統(tǒng)稱接收機14)依照與本發(fā)明的原則相一致的方式,由源設備12為接收多播業(yè)務而選擇一臺或多臺路由器。源設備12向接收機14提供內(nèi)容,比如互聯(lián)網(wǎng)協(xié)議(IP)視頻服務,IP電視(IPTV),網(wǎng)絡會議,公司廣播,或其他內(nèi)容。例如,源設備12可以以多播數(shù)據(jù)包流的形式,向接收機14加入的一個或多個多播群組提供內(nèi)容。每個多播數(shù)據(jù)包包括一個用于標識各個多播群組的多播標識符。路由器16A-16B(統(tǒng)稱16號路由器)維護將接收機14與多播群組關聯(lián)的路由信息,并且由源設備12向接收機14發(fā)送多播數(shù)據(jù)包的拷貝。
出于示例的目的,以下將以使用IP多播以生成多播樹的方式來說明本發(fā)明。但該項技術也可以應用于在其他環(huán)境下建立多播分發(fā)結(jié)構(gòu),比如標簽分發(fā)協(xié)議(LDP),點對多點(P2MP),或多協(xié)議標簽交換(MPLS)等環(huán)境。例如,一個多播流可以通過一條標簽交換路徑發(fā)送,比如,于2005年8月29日在美國提出的、申請?zhí)?1/215,813為“點對多點標簽帶標簽分發(fā)協(xié)議的交換路徑”的申請中所描述的一條P2MP LSP,該申請的全部內(nèi)容以參考內(nèi)容的方式收入本申請。
圖A1中的系統(tǒng)10的配置僅僅是示范性的。例如,系統(tǒng)10可以包含其他源設備(未列出)。一般而言,源設備12可以代表任何多播內(nèi)容的源,比如一個視頻服務器。此外,接收機14可以包含能接收多播內(nèi)容的任何類型的設備,比如個人計算機、膝上型計算機、手持計算機、工作站、服務器、數(shù)字電視、網(wǎng)絡支持的手機以及其他。
接收機14可以通過互聯(lián)網(wǎng)群組管理協(xié)議(IGMP)或其他多播協(xié)議與路由器16相互作用以發(fā)出多播動作請求。例如,接收機14可以發(fā)出加入或退出動作請求以相應地加入或退出一個多播群組。又如,接收機14可以發(fā)出多播加入請求以成為由路由器16為之傳遞多播數(shù)據(jù)包的示例多播群組的成員。另外一個例子中,一臺接收機14可以發(fā)出一個多播退出動作請求(也稱為一個“修剪”動作請求)以退出一個群組,由此,終止來自它所對應的路由器16的內(nèi)容傳遞。以類似的方式,接收機14可以向路由器16發(fā)出多播動作請求、在不同的多播群組間切換,以允許接收機14訪問由源設備12提供的不同的內(nèi)容。
依照本發(fā)明的原則,接收機14和路由器16交換帶有他們所屬多播群組信息的消息,以及帶有與他們相連、有能力或者已經(jīng)為多播群組提供多播內(nèi)容的上游或下游設備。接收機14及路由器16可以使用這一信息智能地選擇一臺“上游”路由器以向其發(fā)出一條多播加入請求。做出決斷的時候,該接收設備監(jiān)控系統(tǒng)10的狀況并使用多個不同標準的任意一個為上游路由器16定級,比如,多播業(yè)務復制的最小化,當前帶寬水準的負載平衡,以及避免路徑遭受通訊延遲。
一臺路由器是否是一臺接收機和源設備之間的“上游”路由器,取決于這些設備所采用的“上游”定義。網(wǎng)絡中的所有路由器必須使用統(tǒng)一的“上游”定義。例如,根據(jù)“上游”的一種定義,如果從源設備到這臺路由器的距離小于從源設備到接收機的距離,那么這臺路由器就是該特定接收機和源設備的上游路由器,其中距離依照互聯(lián)網(wǎng)網(wǎng)關協(xié)議(IGP)度量尺度確定。根據(jù)“上游”的另一種定義,如果從一臺路由器到源設備的距離小于從目的設備到源設備的距離,該路由器就是接收機和源設備的上游路由器。因為兩個設備間的IGP尺度可能是非對稱的,這種定義可能會產(chǎn)生與第一種定義不同的結(jié)果。另一套定義增加了一個額外要求,即如IGP尺度所定義的,上游路由器必須位于由該特定路由器到源設備的最短路徑(或相應地,從源設備到該路由器)。此外,一臺特定路由器在一些情況下可能是上游路由器,在其他一些情況下可能是下游路由器,這都基于它與特定源設備和接收機的關系。
圖1A的例子中,假設系統(tǒng)10中有產(chǎn)生于源設備12的一個單一多播流,并只傳遞給接收機14A。此外,假設接收機14B希望加入與多播流26相關聯(lián)的多播示范組<源設備12,群組1>。由此,接收機14B初始發(fā)送多播優(yōu)化(MO)數(shù)據(jù)包20A給與接收機14B相連的每一臺上游路由器。多播優(yōu)化包20A可以告知路由器16A,比如,與接收機14B相連的上游路由器的數(shù)量,以及接收機14B為特定源和與多播流26相關聯(lián)的群組<源設備12,群組1>而從其接收多播業(yè)務的上游路由器的數(shù)量。
在這個例子中,路由器16A是僅有的與接收機14B相連的一臺上游路由器,因此多播優(yōu)化包20A將告知路由器16A,接收機14B僅有一臺上游路由器為群組<12號源設備,群組1>接收多播業(yè)務。多播優(yōu)化包20A也可以告知路由器16A,接收機14B有多少可能加入群組的下游設備,有多少已經(jīng)加入群組的下游設備。這里,接收機14B尚沒有這樣兩類下游設備。當路由器16A收到多播優(yōu)化包20A,路由器16A會將數(shù)據(jù)包中的信息作為多播優(yōu)化數(shù)據(jù)(MOD)保存在一個數(shù)據(jù)庫內(nèi)。
作為響應,路由器16A發(fā)送一個多播優(yōu)化答復包21A給接收機14B。多播優(yōu)化答復包21A可以告知接收機14B,比如,路由器16A的依賴性和非依賴型的下游設備,以及任何依賴性設備是否已經(jīng)加入了該多播群組。術語“依賴性的下游設備”用于指向一臺依賴于路由器的設備,即這臺路由器是該下游設備可從其接收一個多播流的僅有的一臺上游路由器。術語“非依賴性的下游設備”用于指向一臺可以從該路由器接收一個群組的多播流的設備,但也可指向那些連接到可以接收多播流的其他上游路由器的一臺下游設備。
在這個例子中,多播優(yōu)化答復包21A告知接收機14B,路由器16A有單一一臺依賴性下游設備(即接收機14B),一臺非依賴性下游設備(即接收機14C),沒有已加入的下游設備。路由器16A可能已經(jīng)通過來自接收機14C的類似的一個多播優(yōu)化包20A(沒有列出),知道接收機14C是一臺非依賴性下游設備。通過這樣的方式,接收機14B可以知道位于路由器16A下游的任何對端(peer)設備是否已經(jīng)加入該多播群組,以及這些對端設備將來是否依賴于路由器16A來接收多播業(yè)務。
當接收機14C接收到多播優(yōu)化答復包21A,接收機14C會將數(shù)據(jù)包中的多播優(yōu)化數(shù)據(jù)保存在一個數(shù)據(jù)結(jié)構(gòu)內(nèi)。此外,接收機14C將發(fā)送一個加入請求24A給路由器16A以請求加入與多播流26相關聯(lián)的多播群組<源設備12,群組1>。
接收機14B發(fā)出加入請求24A以加入群組之前或之后,路由器16A分別發(fā)送多播優(yōu)化包20B、20C給路由器16D、16E。多播優(yōu)化包20B、20C可以指出,路由器16A有兩個可能的上游路由器,路由器16A可以由這兩個可能的上游路由器為有關系的特定的源設備和群組接收多播業(yè)務。多播優(yōu)化包20B、20C也可以指出,路由器16A有兩臺下游設備(即接收機14B、14C),其中一臺下游設備(即接收機14B)已經(jīng)加入了群組<S,G>。在某些實施中,路由器16A甚至可以在接收機14B加入該群組之前,就發(fā)出多播優(yōu)化包20B、20C。
作為響應,路由器16D、16E分別發(fā)送多播優(yōu)化答復包21B、21C給路由器16A。多播優(yōu)化包20B指出,路由器16D有兩個下游設備(即接收機14A與中繼路由器16A),其中之一(即接收機14A)已經(jīng)加入了該群組。多播優(yōu)化答復包21C指出,路由器16E有兩個下游設備,均沒有加入了該群組?;谶@個信息,路由器16A可以智能地構(gòu)造一棵子樹。例如,如圖1A所示,路由器16A可以選擇路由器16D作為上游路由器,從其路由器16A可以為群組<源設備12,群組1>接收多播流26,因為路由器16D已經(jīng)在為該群組從源設備12接收多播業(yè)務。以這樣的方式,這些路由器可以避免系統(tǒng)10中不必要的多播數(shù)據(jù)包的復制。另一個例子,路由器16A可以出于負載平衡的目的,選擇路由器16E。
假設路由器16A選擇了路由器16D,路由器16A將發(fā)送一個加入請求24B給所選的路由器16D。路由器16D同樣可以發(fā)送多播優(yōu)化包20D給源設備12,從源設備12接收多播優(yōu)化答復包21D,并發(fā)送一個加入請求24D給源設備12。源設備12發(fā)送群組<S,G>的多播流26給路由器16D,路由器16D將復制多播流26并且發(fā)送數(shù)據(jù)包給接收機14A和路由器16A。路由器16A然后發(fā)送多播流26給接收機14B。在一項實施中,可以通過一條標簽交換路徑(LSP),比如一條點對多點(P2MP)LSP,發(fā)送多播流26。
以這樣的方式,多播優(yōu)化數(shù)據(jù)(MOD)上行和下行地傳播到本地設備,以允許下游設備智能地為一個特定多播群組選擇最優(yōu)上游設備,因而構(gòu)造出最優(yōu)的多播分發(fā)結(jié)構(gòu)(比如樹和子樹),并且提高了系統(tǒng)10內(nèi)的多播效率。多播優(yōu)化包20、21可以作為如開放式最短路徑優(yōu)先(OSPF)等現(xiàn)有路由協(xié)議的擴展而發(fā)送,或作為現(xiàn)有多播協(xié)議的擴展而發(fā)送,如IGMP,獨立于協(xié)議的多播,距離矢量多播路由協(xié)議(DVMRP),多播OSFP,或多播傳輸協(xié)議(MTP),或作為專門為交換MOD而設計的一個單獨協(xié)議而發(fā)送。只有當多播優(yōu)化數(shù)據(jù)發(fā)送改變,或響應多播動作請求時,這些設備才周期性地發(fā)送多播優(yōu)化包。
例如,多播優(yōu)化數(shù)據(jù)可以指明,位于已經(jīng)加入該多播群組的各個上游設備下游的一個或多個其他設備,多個依賴性的下游設備而且該上游設備是唯一可能為之提供多播群組的多播數(shù)據(jù),多個可能的上游設備,多個可能的下游設備。作為另外一個例子,多播優(yōu)化數(shù)據(jù)也可以指明,從該多播群組到源到各臺上游設備的距離,從各臺上游設備到源的距離,從源到各臺上游設備的延遲,通過該上游設備的多個多播群組,以及通過該上游設備的全部多播帶寬。
關于圖1B,假設接收機14C隨后希望接收與多播流26相關的多播內(nèi)容。如圖1B所示,接收機14C分別發(fā)送多播優(yōu)化包20E和20F給上游設備16A和16B。多播優(yōu)化包20E和20F可以指出,接收機14C有兩臺可為群組<源設備12,群組1>接收多播業(yè)務的潛在上游設備。多播優(yōu)化包20E和20F也可以指出,接收機14C既沒有潛在下游設備,也沒有已加入的下游設備。
作為響應,路由器16A和16B可以各自發(fā)送多播優(yōu)化答復包21E和21F給接收機14C。多播優(yōu)化答復包21E指明,路由器16A有一臺已經(jīng)加入群組的下游設備(即接收機14B)。多播優(yōu)化答復包21F指明,路由器16B并沒有已經(jīng)加入群組的下游設備?;谶@個信息,接收機14C可以智能地選擇一臺可以為該群組接收多播流的上游設備。在這個例子中,接收機14C選擇了路由器16A因為路由器16A已在為該群組接收多播業(yè)務。通過這樣的方式,上游路由器可以避免系統(tǒng)10中不必要的多播數(shù)據(jù)包的復制。作為選擇,接收機14C可以采用上述之外的其他標準。
假設接收機14C選擇了路由器16A,接收機14C將發(fā)送一條加入請求24E給路由器16A。路由器16A將接收機14C加為已加入的下游設備,復制與該特定群組<S,G>相關聯(lián)的多播數(shù)據(jù)流26并發(fā)送這些數(shù)據(jù)包的拷貝給接收機14B和14C。在一些實施中,路由器16A會發(fā)送一條多播優(yōu)化更新消息29A給接收機14B,發(fā)送一條多播優(yōu)化更新消息29B給接收機14D,告知他們在該特定群組<S,G>中,路由器16A目前已有兩臺已加入的下游設備。
關于圖1C,假設接收機14D希望接收與多播流26相關的多播內(nèi)容。如圖1C所示,接收機14C分別發(fā)送多播優(yōu)化包20G和20H給上游設備16B和16C。多播優(yōu)化包20G和20H可以指出,接收機14D有兩臺可為群組<源設備12,群組1>接收多播業(yè)務的潛在上游設備。多播優(yōu)化包20G和20H也可以指出,接收機14D既沒有潛在下游設備,也沒有已加入的下游設備。
或者作為響應,或者在此以前,路由器16B和16C可以各自發(fā)送多播優(yōu)化答復包21G和21H給接收機14D。多播優(yōu)化答復包21G指出,路由器16B有一臺通過一臺路由器16B之外的上游路由器、已經(jīng)加入該有關系的群組的下游設備(即接收機14C)。多播優(yōu)化答復包21H指出,路由器16C并沒有已經(jīng)加入群組的下游設備。
基于這個信息,接收機14D可以智能地選擇路由器16B作為一臺可以為該群組接收多播流的上游設備。此外,接收機14D也可以考慮關于有多播流(沒有顯示)通過路由器16B和16C的其他群組的信息,并且選擇一臺上游路由器以便為系統(tǒng)10提供負載平衡。在這個例子中,接收機14D發(fā)送了一條加入請求24G給路由器16B。
路由器16B會發(fā)送一條MO更新消息29C給接收機14C,指明路由器16B現(xiàn)在有一臺群組<源設備12,群組1>已加入下游設備。接收機14C會將包含在MO更新消息29C內(nèi)的信息,作為一個多播優(yōu)化數(shù)據(jù)保存進數(shù)據(jù)庫。路由器16B會以同前述圖1A中路由器16A類似的方式,將該MO消息和加入請求向上發(fā)送給路由器16E。當路由器16E從路由器16B收到加入請求24J后,路由器16E會發(fā)送一條MO更新消息29D給路由器16A,指明路由器16B現(xiàn)在有一臺群組<源設備12,群組1>的已加入下游設備。路由器16E將該消息向上發(fā)送,并發(fā)送一條加入請求24K給源設備12。源設備12然后發(fā)送屬于群組<源設備12,群組1>的多播流26′給路由器16E,后者發(fā)送多播流26′給路由器16B。路由器16B接著發(fā)送多播流26′給接收機14D。
關于圖1D,假設接收機14A隨后要退出該群組<源設備12,群組1>。如圖1D所示,接收機14A發(fā)送一條退出請求32A給路由器16D,請求退出多播群組<源設備12,群組1>。路由器16D將接收機14A從該群組移除,并停止向接收機14A發(fā)送多播流。
此外,路由器16D發(fā)送一條多播優(yōu)化更新消息29E給路由器16A,指明路由器16D目前只有一臺是該群組<源設備12,群組1>成員的下游設備。關于該特定該多播群組,基于來自路由器16E(圖1C)、指明了路由器16E已在為同一個群組<源設備12,群組1>接收多播數(shù)據(jù)流26′的多播優(yōu)化更新消息29D,路由器16A可以智能地使用該信息,將上游路由器從路由器16D轉(zhuǎn)為路由器16E。因此,路由器16A發(fā)送一條退出請求32B給路由器16D,請求退出該群組,并發(fā)送一條加入請求24L給路由器16E以加入該群組。路由器16E將路由器16A加為群組中的下游設備,并且發(fā)送多播數(shù)據(jù)流26′給路由器16A,最后生成如圖1D所示的一棵新的多播樹。
圖2A是闡明一個多播優(yōu)化數(shù)據(jù)包34的示例性格式的塊圖,該數(shù)據(jù)包34用于一臺下游設備與一臺上游設備共享多播優(yōu)化數(shù)據(jù)??梢酝ㄟ^一個擴展多播協(xié)議或一個擴展路由協(xié)議,使用數(shù)據(jù)包34。此外,也可以通過專為多播優(yōu)化而設計的一個單獨協(xié)議使用數(shù)據(jù)包34。例如,當一臺下游設備準備加入一個群組<S,G>、以共享多播優(yōu)化數(shù)據(jù)(MOD)并從鄰接設備獲取MOD時,它可以向它所有的上游設備發(fā)送數(shù)據(jù)包34。通過這種方法,該下游設備可以智能地選擇一臺上游設備以向其發(fā)送一條加入請求、加入特定多播群組。
圖2A的例子中,數(shù)據(jù)包34有一個包含典型的包源和目的信息的包頭36。例如,包頭36可以包含IP地址,端口,協(xié)議或其他信息。數(shù)據(jù)包34也可以包含一個群組標識域38(ID),該域可以包括一個群組標識符,例如,源設備以及標識出后繼數(shù)據(jù)應該使用的各個多播群組群組號。另一個例子,其中標識符可以是一個多播地址。
MOD域40A-40C(統(tǒng)稱MOD域40)包含一臺下游設備共享幫助優(yōu)化多播傳輸?shù)男畔?。例如,MOD域40A包含一臺下游設備與之相連而且可以接收該特定多播群組多播業(yè)務的上游設備的數(shù)量。MOD域40B包含與發(fā)送該數(shù)據(jù)包34的下游設備相連的下游設備的數(shù)量,這個下游設備可能發(fā)出加入請求以從該多播群組接收多播業(yè)務。MOD域40C包含位于已加入該特定多播群組、發(fā)送該數(shù)據(jù)包34的下游設備下游的設備的數(shù)量。所示的MOD域40D僅是示例性的,而且其他類型的多播優(yōu)化數(shù)據(jù)也可以包括在數(shù)據(jù)包34之內(nèi)。此外,多個多播群組的這個或其他信息可以在單個數(shù)據(jù)包中傳輸。
圖2B是闡明一個示例性多播優(yōu)化答復數(shù)據(jù)包42的塊圖,該數(shù)據(jù)包42用于一臺上游設備與一臺下游設備共享多播優(yōu)化數(shù)據(jù)。接收來自一臺下游設備的數(shù)據(jù)包34(圖2A)可以觸發(fā)接收方上游設備發(fā)送一個其他對應的答復數(shù)據(jù)包42,該數(shù)據(jù)包42包含與這臺上游設備的鄰接設備有關的其他MOD。此外,依照管理員的配置,或是對多播動作請求的響應,一臺上游設備可以周期性發(fā)送數(shù)據(jù)包42。盡管如此,這臺上游設備仍然可以通過與數(shù)據(jù)包34的格式一致的一個或多個數(shù)據(jù)包,與鄰接設備交換多播優(yōu)化信息,以提高多播的效率。
答復數(shù)據(jù)包42包含為答復數(shù)據(jù)包指明源信息和目的信息的包頭44,以及標識所考慮的特定多播群組的群組ID域46。MOD域48A-48C(統(tǒng)稱MOD域48)包含一臺上游設備可以共享、以在網(wǎng)絡內(nèi)幫助最優(yōu)多播樹的選擇與格式化的信息。在這個例子中,MOD域48A包含下游設備的數(shù)目,而為之發(fā)送數(shù)據(jù)包42的上游設備是僅有的能傳遞所標識的多播群組的多播業(yè)務的上游設備(即依賴性下游設備)。MOD域48B包含可能從該上游路由器接收多播流的下游設備的數(shù)目,但這些下游設備亦連接到其他上游路由器并能從其接收其他多播群組的多播流(即非依賴性下游設備)。MOD域48C包含位于發(fā)送數(shù)據(jù)包42、實際上已加入該多播群組的設備的下游的設備的數(shù)目。所示MOD域48僅僅是示例性的,而且其他類型的多播優(yōu)化數(shù)據(jù)也可以包含在數(shù)據(jù)包42內(nèi)。此外,各個多播群組的這樣或那樣的信息可以攜帶在一個單獨的數(shù)據(jù)包內(nèi)。
圖3是闡明一臺接收機在與鄰接上游路由器共享多播優(yōu)化數(shù)據(jù)時運作實例的流程圖,如圖1A-1D內(nèi)任何一臺接收機14。以下將參照接收機14C說明圖3。
初始時,接收機14C希望接收群組<S,G>的一個多播流(通常是響應一個用戶請求),令接收機14C加入該群組(步驟50)。依照合適的“上游”定義,接收機14確定可能的上游路由器(步驟52)。在一些實施中,接收機14C可以計算到源設備最短的一條路徑。也有可能,存在到源的多條等耗路徑,接收機14C可以使用MOD在這些最短路徑中進行選擇。此外,接收機14C可能不會計算一條最短路徑,而是考慮能到源設備的所有可能的路徑。任何情況下,接收機14C總是需要決定向哪臺上游路由器發(fā)送加入請求。
接收機14C基于成本尺度或長度,發(fā)送一個多播優(yōu)化(MO)數(shù)據(jù)包34(圖2A)給位于所有到源的路徑上的每個上游路由器或其一個子集,即上游路由器22A和22B(步驟54)。接下來,接收機14C從每個上游路由器收到一個MO答復數(shù)據(jù)包42(圖2B)(步驟56)。接收機14C可以將包含在這些MO答復數(shù)據(jù)包中的多播優(yōu)化數(shù)據(jù)保存進一個數(shù)據(jù)庫。接收機14C接著基于這些多播優(yōu)化數(shù)據(jù)選擇一臺上游路由器(步驟58)。例如,接收機14C可能考慮一臺上游路由器是否已在接收該群組的多播業(yè)務。另一個例子中,接收機14C可以使用多個不同標準的任意一個為路由器定級16,比如,多播業(yè)務復制的最小化,當前帶寬水準的負載平衡,以及避免路徑遭受通訊延遲。接收機14C發(fā)送一條加入請求給所選中的上游路由器(步驟60),并且從所選中的上游路由器接收多播數(shù)據(jù)包(步驟62)。
圖4是闡明一臺上游路由器在與鄰接設備共享多播優(yōu)化數(shù)據(jù)時運作實例的流程圖,如圖1A-1D內(nèi)任何一臺路由器16A。以下將參照接收機14C說明圖4。路由器16A可以從接收機14B和14C中的一臺或兩臺收到多播優(yōu)化數(shù)據(jù)包34(圖2A)(步驟64)。例如,路由器16A可以從接收機14B收到一個多播優(yōu)化數(shù)據(jù)包,指明接收機14B只有一臺該群組的上游路由器,即接收機14B依賴于路由器16A以接收對應群組的多播內(nèi)容。路由器16A也可以從接收機14C接收到一個多播優(yōu)化數(shù)據(jù)包,指明接收機14C有兩臺該群組的潛在上游路由器。
路由器16A發(fā)送一個多播優(yōu)化答復數(shù)據(jù)包42(圖2B)給接收機14B和14C中的一臺或兩臺(步驟66)。多播優(yōu)化答復數(shù)據(jù)包42可以指明,例如,路由器16A有一臺依賴性的下游設備和一臺非依賴性的下游設備。由此,路由器16A與其他所有下游設備共享它從其每一臺下游設備接收到的多播優(yōu)化數(shù)據(jù)。以這樣的方式,路由器16A促進了系統(tǒng)10內(nèi)的信息交換,以便下游設備可以為接收多播,智能地選擇最優(yōu)上游路由器。
路由器16A可以從一臺接收機接收到一條加入請求(步驟68)。如果路由器16A并沒有在接收被請求群組的多播數(shù)據(jù)包,路由器16A可以將多播優(yōu)化數(shù)據(jù)和加入請求傳播下一個上游路由器。在某些實現(xiàn)中,路由器16A會選擇性地計算到源設備的最短路徑。路由器16A會發(fā)送多播優(yōu)化數(shù)據(jù)包34給其他位于路由器16A上游的路由器,即路由器16D和16E(步驟70),也可以收到來自路由器16D和16E的多播優(yōu)化答復數(shù)據(jù)包42(步驟72)。路由器16A會選擇一臺上游路由器并基于收到的多播優(yōu)化數(shù)據(jù)從那里接收多播內(nèi)容(步驟74),發(fā)送一條加入請求給所選上游路由器(步驟76),并接收來自所選上游路由器的多播數(shù)據(jù)包(步驟78)。
圖5是說明一臺示例性路由器80的塊圖,該路由器依照本發(fā)明的一項實施例來保存、分發(fā)和接收多播優(yōu)化數(shù)據(jù)(MOD)81。路由器80的運行實質(zhì)上類似于圖1A-1D中的路由器16。在一些情況下,路由器80可以是一臺邊際路由器,接收機14可以通過網(wǎng)絡交換機,如DSLAMs或以太網(wǎng)交換機,與路由器80相連。此外,路由器80也可以是一臺并不與接收機14直接相連的中繼路由器。一般而言,路由器80可以接收并且發(fā)送多播優(yōu)化數(shù)據(jù)包和包含MOD81的多播優(yōu)化答復數(shù)據(jù)包。
在一個實施例中,路由器80包括通過入口鏈路84A-84N(“入口鏈路84”)接收數(shù)據(jù)包、以及通過出口鏈路86A-86N(“出口鏈路86”)發(fā)送數(shù)據(jù)包的接口卡82A-82N(“接口卡82”)。接口卡82通過高速交換機88和鏈路90互聯(lián)。例如,交換機88包括交換結(jié)構(gòu),交換開關,一臺可配置的網(wǎng)絡交換機或集線器,以及類似組成。鏈路90包括任意形式的通信通路,比如集成電路內(nèi)的電子通路,外部數(shù)據(jù)總線,光纖鏈路,網(wǎng)絡連接,無線連接,或其他形式的通信通路。接口卡82通過多個接口端口(沒有顯示)與入口鏈路84和出口鏈路86結(jié)合。
路由器80還包括一個控制單元94,該控制單元維護路由信息96以反映當前網(wǎng)絡和其他與路由器80相連的網(wǎng)絡實體的拓撲結(jié)構(gòu)。一般而言,當路由器80通過入口鏈路84的一條接收到一個單播數(shù)據(jù)包時,控制單元94依照路由信息96為該數(shù)據(jù)包確定一個目的地,并基于目的地將該數(shù)據(jù)包從出口鏈路86的一條輸出。
控制單元94維護多播轉(zhuǎn)發(fā)信息98。當路由器80通過入口鏈路84的一條接收到一個多播數(shù)據(jù)包,控制單元94依照多播轉(zhuǎn)發(fā)信息98,將該數(shù)據(jù)包從出口鏈路86的一個鏈路集上轉(zhuǎn)發(fā)出去??刂茊卧?4為如OSPF、LDP、MPLS、IGP等的路由協(xié)議100提供了運行環(huán)境,也為如IGMP等的多播協(xié)議提供了運行環(huán)境。路由器80可以使用多播協(xié)議102來發(fā)送和接收多播動作請求,如加入和退出請求。在其他實施中,其他協(xié)議可以在控制單元94中得以執(zhí)行。
路由協(xié)議100和多播協(xié)議102中的一個或兩個都可以被擴展,用以為優(yōu)化多播而允許多播優(yōu)化數(shù)據(jù)81在其他設備之間往返傳遞。就如這里說明的,該協(xié)議擴展允許可變數(shù)量的MOD域被傳送給其他設備。在其他實施例中,可以確立一個單獨的協(xié)議以交換MOD81。依照這里說明的技術,例如,多個數(shù)量的潛在上游設備、多個數(shù)量的潛在下游設備、多個數(shù)量的已加入的下游設備、多個數(shù)量的依賴性的下游設備、多個數(shù)量的非依賴性的下游設備,或其他MOD都可以被指定。
在圖5的例子中,多播協(xié)議102維護MOD81。路由器80可以使用多播協(xié)議102和路由協(xié)議100,通過出口鏈路86的一條來發(fā)送MOD數(shù)據(jù)包,通過入口鏈路84的一條來接收MOD答復數(shù)據(jù)包,或者,發(fā)送和接收MO更新消息。當路由器80發(fā)送一個與圖2A的MOD數(shù)據(jù)包34相類似的MOD數(shù)據(jù)包時,路由器80可以用來自MOD81的數(shù)據(jù),填充MOD數(shù)據(jù)包的各個域。當路由器80收到一個與圖2B的MOD答復數(shù)據(jù)包42相類似的答復數(shù)據(jù)包時,路由器80可以將包含在MOD答復數(shù)據(jù)包各個域中的信息保存進MOD81??刂茊卧?4可以以一個或多個表、數(shù)據(jù)庫、鏈表、搜索樹、數(shù)據(jù)庫、平面文件或其他任何數(shù)據(jù)結(jié)構(gòu),維護路由信息98、多播轉(zhuǎn)發(fā)信息98和MOD81。
在運行中,當需要確定一臺上游路由器以發(fā)送一條關于一個特定群組的加入請求時,路由器80使用MOD81。尤其,當路由器80需要加入一個群組,路由器80可以發(fā)送和接收包含MOD81的MOD數(shù)據(jù)包和MOD答復數(shù)據(jù)包,以了解確實或可能傳輸給群組里各鄰接設備的多播內(nèi)容。路由器80可以使用MOD81來確定向哪臺上游路由器發(fā)送加入請求。具體地說,路由器80考慮群組的多播內(nèi)容是否已經(jīng)為上游路由器中的一臺所接收。路由器80也可以使用MOD81以便在為接收多播內(nèi)容而選擇一臺上游路由器時,允許對負載平衡的考慮。
圖5所示的路由器80結(jié)構(gòu)僅僅是為了示例的目的。本發(fā)明并不限于這個結(jié)構(gòu)。在其他的實施例中,可以以多種方式配置路由器80。例如,在一項實施例中,控制單元94及其對應的功能可以分布在接口卡82中。在另一項實施例中,控制單元94可以包括一個執(zhí)行路由功能的路由引擎,該引擎維護一個路由信息庫(RIB),比如,路由信息96,也可以包括一個基于轉(zhuǎn)發(fā)(forwarding)信息庫、執(zhí)行數(shù)據(jù)包轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)引擎,該轉(zhuǎn)發(fā)信息庫依照RIB而生成。
控制單元94可以單純以軟件或硬件實現(xiàn),也可以軟件、硬件或固件的組合實現(xiàn)。例如,控制單元94可包括一個或多個執(zhí)行軟件指令的處理器。在這個情況下,控制單元94的各個軟件模塊,比如路由協(xié)議100和多播協(xié)議102,可包括保存在諸如計算機內(nèi)存或硬盤等計算機可讀介質(zhì)上的可執(zhí)行指令。
圖6是闡明保存多播優(yōu)化數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)104實例的塊圖。圖6的例子中,數(shù)據(jù)結(jié)構(gòu)104的實例由接收機14C的控制單元維護。例如,數(shù)據(jù)結(jié)構(gòu)104類似于圖5中控制單元94所維護的MOD81。接收機14C使用MO數(shù)據(jù)包內(nèi)所收到的MOD組建數(shù)據(jù)結(jié)構(gòu)104的各行與各列。數(shù)據(jù)結(jié)構(gòu)104包括指明網(wǎng)絡設備的設備列106,各網(wǎng)絡設備的MOD保存在對應行。數(shù)據(jù)結(jié)構(gòu)104也包括一個源設備列108和一個多播群組列110,這兩列一起指明多播群組<S,G>。
數(shù)據(jù)結(jié)構(gòu)104的列112保存對應設備的潛在上游設備的數(shù)量(“NPU”),列114保存其潛在下游設備的數(shù)量(“NPD”)。列116保存對應設備的已加入的下游設備的數(shù)量(“JD”),列118保存依賴性下游設備的數(shù)量(“NDD”),列120保存非依賴性下游設備的數(shù)量(“NNDD”)。當接收機14C接收到一條MO消息,比如,一個MO數(shù)據(jù)包、一個MO答復數(shù)據(jù)包或一條MO更新消息,接收機14C的控制單元在數(shù)據(jù)結(jié)構(gòu)104中加入一個新行,或更新現(xiàn)有的一行。
圖6的例子中,起始三行對應設備10.1.1.2,在這個例子中是接收機14C的IP地址。第四和第五行對應設備10.1.1.6(路由器16A的IP地址),最后一行對應設備10.1.8.7(路由器16B的IP地址)。第一行對應多播源224.0.0.195(源設備12的多播地址),群組1,第二行對應源224.0.0.195,群組2。<源設備12,群組1>就是在圖1A-1D所討論的多播群組。第三行對應與源224.0.0.200,這是另一臺多播源設備(沒有在圖1A-1D中顯示出來)。
圖6的例子中,接收機14C在數(shù)據(jù)結(jié)構(gòu)104中維護關于自己的MOD。例如,對<源設備12,群組1>和<源設備12,群組2>,接收機14C有兩臺潛在上游設備,沒有潛在下游設備,因此也沒有已加入的下游設備,沒有依賴性或非依賴性下游設備。
接收機14C也通過MO答復數(shù)據(jù)包從路由器16A和16B獲取MOD,這些MOD答復數(shù)據(jù)包是路由器16A和16B作為對MO數(shù)據(jù)包的響應而發(fā)送給接收機14C的。接收機14C將這個MOD保存在數(shù)據(jù)結(jié)構(gòu)104。例如,接收機14C已經(jīng)在第四行保存了對于<源設備12,群組1>而言,路由器16A有兩臺潛在上游設備,兩臺潛在下游設備,一臺已加入的下游設備,一臺依賴性的下游設備和一臺非依賴性下游設備。另一個例子,接收機14C已經(jīng)最后一行保存了對于<源設備12,群組1>而言,路由器16B有一臺潛在上游設備,兩臺潛在下游設備,沒有已加入的下游設備,也沒有依賴性的下游設備,有兩臺非依賴性下游設備。
圖6的數(shù)據(jù)結(jié)構(gòu)104僅僅是示例性的。沒有在這個數(shù)據(jù)結(jié)構(gòu)104實例中顯示的MOD的其他類型,可以由接收機14C保存。如前面已經(jīng)解釋的,雖然以表格的形式進行說明,可以以一個或多個表、數(shù)據(jù)庫、鏈表、搜索樹、數(shù)據(jù)庫、平面文件或其他任何數(shù)據(jù)結(jié)構(gòu)的形式,維護數(shù)據(jù)結(jié)構(gòu)104。
圖7是闡明一個局域網(wǎng)(LAN)環(huán)境126的塊圖,其中一臺源設備通過一個或多個中繼設備134A-134B(統(tǒng)稱中繼設備134)將一個群組的多播數(shù)據(jù)流130加入主干網(wǎng)132。接收機136A-136C(統(tǒng)稱接收機136)可以訪問并共享主干網(wǎng)132上的多播數(shù)據(jù)流130。這里說明的本發(fā)明的原則,很容易就可以被應用于LAN環(huán)境126。例如,接收機136B可以發(fā)送MOD數(shù)據(jù)包給鄰接設備,并從后者接收MOD答復數(shù)據(jù)包以獲取MOD。接收機136B可以使用MOD以更智能化地選擇一臺上游路由器以便加入該群組。例如,在這個情況下,接收機136B可以選擇中繼設備134A以發(fā)送一條加入請求,因為源設備128已在發(fā)送多播數(shù)據(jù)流130給中繼設備134A。通過這樣的方式,源設備128就不需要再將數(shù)據(jù)流的復制注入LAN環(huán)境126。
圖8是闡明計算系統(tǒng)138的另一個實例的塊圖,其中接收機140A-140B(統(tǒng)稱接收機140)為同一個多播群組的多個“實例”發(fā)送多播加入請求142。如以下更加詳細的說明,接收機140和路由器144之間交換的控制信息已擴展來實現(xiàn)實例編號的使用,以允許單個多播群組建立多棵多播樹,每棵采用從源設備146到接收機140不同的路徑。當始發(fā)該群組的多播內(nèi)容的時候,源設備146可以接著使用這些不同的樹,從而允許該源設備使用諸如等耗多徑(ECMP)等原則,實現(xiàn)負載平衡或控制流經(jīng)網(wǎng)絡的內(nèi)容傳遞。
詳細地說,不同實例對應于由單個源設備146確定的一個多播群組的多棵多播樹。為構(gòu)建這些多播樹,接收機140發(fā)送該多播群組的多個加入請求142給在到源設備146的不同路徑上的路由器144A-144F的一個子集。在一項實施例中,為系統(tǒng)138中的每臺設備都配置了一個參數(shù)以指明所要求的實例數(shù)量。一個特定源和多播群組<源S,潛在G>的多個實例的數(shù)量,以N標注。例如,可由一位管理員或軟件代理來配置這些設備。實例的數(shù)量或者可以對網(wǎng)絡中的所有多播群組都相等,也可以以單個群組為基層獨立地確定。作為選擇,這些設備可以相互交換信息以基于系統(tǒng)138的當前拓撲結(jié)構(gòu)為一個多播群組選擇一個最優(yōu)數(shù)量N,也可選擇使用此前說明的多播優(yōu)化數(shù)據(jù)(MOD)協(xié)作選擇N。這些設備上可運行一個發(fā)現(xiàn)協(xié)議,比如多播虛擬專有網(wǎng)(MVPN)協(xié)議,或多播虛擬專有局域網(wǎng)服務(MVPLS)協(xié)議,以驗證每臺設備都已經(jīng)正確地指定了實例的數(shù)量。如果一臺設備不清楚正確的實例數(shù)量,這會導致該設備或者重復接收多播流,或者接收不到該多播群組的多播流。
圖8的例子中,假設<源146,群組1>的N等于3。因此,每臺接收機140會發(fā)送三條加入請求142,每個實例各發(fā)送一條。可以擴展加入請求142以在群組標識符內(nèi)包括實例編號。每臺接收機140確定依照(沿)哪條路徑發(fā)送每條加入請求142。接收機140會嘗試在上游路由器間分發(fā)這些加入請求,以為不同的實例構(gòu)建可選的多播樹。接收機140也可以使用此前說明的多播優(yōu)化技術,以智能地選擇該向哪臺上游路由器發(fā)送每個實例的這些加入請求,例如,將一個特定實例的加入請求發(fā)送給已經(jīng)收到過該實例加入請求的上游路由器。
在這個例子中,接收機140A初始先發(fā)送第一條加入請求142A給路由器144A。加入請求142A請求加入<源146,群組1,實例3>(以下簡稱<S,G,3>)的多播樹。接收機140A也會分別發(fā)送加入請求142B和142C給路由器144B,請求加入<S,G,1>和<S,G,2>。接收機140B會發(fā)送加入請求142D給路由器144A、申請加入<S,G,3>,發(fā)送加入請求142E給路由器144B、申請加入<S,G,1>,發(fā)送加入請求142F給路由器144C、申請加入<S,G,2>。通過這樣的方式,當指定了特定多播群組和源設備時,可以擴展該多播加入動作以包括實例編號。
路由器144A接收<S,G,3>的加入請求142A和142D。路由器144A確定,自己是否已有屬于<S,G,3>的狀態(tài),即路由器144A在多播轉(zhuǎn)發(fā)信息98(圖5)中,是否已有屬于<S,G,3>的條目。換句話說,路由器144A確定它是否已經(jīng)收到過屬于同一個源、群組和實例(這個例子中是<S,G,3>)的加入請求。如果沒有,路由器144A就發(fā)送加入請求142G給一臺上游路由器以加入<S,G,3>。否則,路由器114A就不轉(zhuǎn)發(fā)這條加入請求,因為這是條多余的加入請求而且會導致收到同一個多播內(nèi)容的多個拷貝。通過這樣的方式,路由器144選擇性地轉(zhuǎn)發(fā)加入請求,由此確保接收設備不會重復收到同一個多播內(nèi)容的多個拷貝,盡管對于與同一個群組關聯(lián)的多個實例而言,每臺接收機可能是一個葉節(jié)點。
圖8的例子中,路由器114A選擇路由器144D、轉(zhuǎn)發(fā)給加入請求142G。路由器144D也會依次同樣確定自己是否已有屬于<S,G,3>的狀態(tài),如果沒有,發(fā)送一條<S,G,3>的加入請求142L給源設備146。通過這樣的方式,接收機140A和140B加入該多播群組實例3的多播樹。
類似地,路由器144B接收到<S,G,1>的加入請求142B和142E,<S,G,2>的加入請求142C。路由器144B確定自己已有<S,G,1>和<S,G,2>的狀態(tài),如果沒有,發(fā)送加入請求142H和142J給上游路由器以加入<S,G,1>和<S,G,2>。這里,路由器144B只有一臺上游路由器,因此路由器144B將兩個加入請求都發(fā)送給路由器144E。路由器144E收到這些加入請求后,確定自己是否已有屬于這些實例的狀態(tài),如果沒有,分別發(fā)送加入請求142M和142N給源設備146以加入<S,G,1>和<S,G,2>。通過這樣的方式,接收機140A加入了該多播群組實例1和2的多播樹,接收機140B加入了該多播群組實例1的多播樹。
路由器144C收到加入<S,G,2>的加入請求142F后,確定自己是否有屬于<S,G,2>的狀態(tài),如果沒有,發(fā)送加入請求142K給路由器144F以加入<S,G,2>。路由器144F收到加入請求142K后,確定自己是否有屬于<S,G,2>的狀態(tài),如果沒有,發(fā)送加入請求142P給源設備146以加入<S,G,2>。通過這樣的方式,接收機140B加入了該多播群組實例2的多播樹。接收機140和路由器144可以類似地發(fā)出指定了特定實例的退出請求,以退出一個多播群組的一個實例。
圖9是闡明已經(jīng)分別為多播群組<源146,群組1>的實例3、1、2構(gòu)建了多播樹150A、150B、150C(統(tǒng)稱多播樹150)之后,圖8中系統(tǒng)138的實例的塊圖。
實踐中,當源設備146收到多播群組1的一個多播流時,源設備146選擇多播樹150中的一棵發(fā)送該多播流。例如,源設備146可以使用一個如用于單播等耗多徑(ECMP)的流哈希函數(shù),選擇中實例<S,G,1>、<S,G,2>、<S,G,3>中的一個。作為另外一個例子,源設備146會監(jiān)視網(wǎng)絡138以確定哪棵多播樹只承受最輕微的網(wǎng)絡擁塞,或擁有最大的可用帶寬。
多播樹150不必是相互徹底分離的樹。多播樹150可以部分甚至全部重疊。圖9的例子中,多播樹150B的部分就與多播樹150C的部分相重疊。如果可能,希望盡量擴展這些多播樹、避免重疊,這樣可以讓多播樹遍歷不同的路徑。
典型地,源設備146會使用單獨一棵多播樹來發(fā)送一個多播流里的所有數(shù)據(jù)包,這樣接收機140收到的數(shù)據(jù)包就不必重新排序。然而,在某些實施中,源設備146可能會以循環(huán)分配的方式、使用多個多播樹150來發(fā)送一個多播流里的數(shù)據(jù)包,而接收機140在收到這些數(shù)據(jù)包后也要將其重新排序。無論哪種情況,無論源設備146選擇哪棵多播樹150發(fā)送該多播流,接收機140只會收到該多播流中每個數(shù)據(jù)包的一個拷貝。
假設源設備146選擇了對應于實例1的多播樹,即多播樹150B,以發(fā)送多播內(nèi)容。在這種情況下,源設備146發(fā)送每個數(shù)據(jù)包的一份拷貝給路由器144E。路由器144E復制這些數(shù)據(jù)包,將每個數(shù)據(jù)包的一份拷貝發(fā)給接收機140A,將每個數(shù)據(jù)包的一份拷貝發(fā)給接收機140B。這樣,每臺接收機140只收到該多播流中每個數(shù)據(jù)包的一份拷貝。
例如,如果路由器144E不起作用,源設備146可以停止通過多播樹150B發(fā)送群組1的多播流,并切換到通過多播樹150A發(fā)送該多播流。這樣,源設備146可以無縫地在預先建立的多播樹之間切換,以避免多播中斷,并為網(wǎng)絡138提供改進的多播服務。
圖10是闡明已被擴展以包括實例編號的數(shù)據(jù)包152的示例性多播數(shù)據(jù)包格式的塊圖。例如,數(shù)據(jù)包152可以是一個封裝了一臺加入請求、一條退出請求、一條協(xié)議獨立多播(PIM)hello消息,或其他多播控制消息的IP數(shù)據(jù)包。數(shù)據(jù)包152可用在一個擴展的多播協(xié)議,例如PIM,點對多點(P2MP)標簽分發(fā)協(xié)議(LDP),或為多播優(yōu)化而設計的單獨協(xié)議。接收機140或其他上游設備144(圖8)會為一個多播群組的N個請求的實例的每一個,都發(fā)送一個152數(shù)據(jù)包。
圖10的例子中,數(shù)據(jù)包152包括了包含典型的數(shù)據(jù)包源信息和目的信息的包頭154。例如,包頭154可以包含IP地址、端口、校驗和、協(xié)議或其他信息。數(shù)據(jù)包152也可以包含群組標識域156A-156C(統(tǒng)稱群組標識域156)。源標識域156A包含該多播業(yè)務的源標識符。群組標識域156B包含標識了該群組的群組標識符(比如,一個多播地址)。實例域156C標識了實例編號。類型域158包含了與特定控制消息相關的一個值。
圖11是示范一個系統(tǒng)中接收機、上游路由器和源設備,依照本發(fā)明的原則、構(gòu)建ECMP多播樹的運作實例的流程圖。出于示例的目的,將參照圖8的接收機140A、路由器144A和源設備146說明圖11。
接收機140A收到通知自己一個特定群組的實例數(shù)目N的配置信息(步驟160)。在這個例子中,通過該配置信息將接收機140A配置為對于多播群組<源146,群組1>,實例的數(shù)目是3。一位管理員或軟件代理可以提供這個配置信息給接收機140A,接收機140A也可以使用一個發(fā)現(xiàn)協(xié)議與鄰接設備交換信息以確定實例的最優(yōu)數(shù)目,可以使用此前交換的MOD。
當接收機140A希望接收<源146,群組1>的多播內(nèi)容,比如,可能是對一個用戶的響應,接收機140A將發(fā)送三條加入請求給上游路由器,<源146,群組1>的三個實例每個一條(步驟162)。這些加入請求可與圖10的數(shù)據(jù)包152類似。如果可能,接收機140A會在它的上游路由器之間分發(fā)這些加入請求。接收機140A也可以使用此前說明的多播優(yōu)化技術,與鄰接設備共享多播優(yōu)化數(shù)據(jù)。這樣,接收機140A可以就向哪臺上游路由器發(fā)送這些加入請求,做出更智能的判斷。例如,接收機140A可以發(fā)送與圖2A中的數(shù)據(jù)包34相類似的多播優(yōu)化(MO)數(shù)據(jù)包,但后者包含一個附加域以指定與這些數(shù)據(jù)包相關的實例編號。接收機140A可以為這三個實例的每一個,都發(fā)送這樣一個的MO數(shù)據(jù)包給所有的上游路由器,作為響應,也會從上游路由器那里收到與圖2B中的數(shù)據(jù)包42相類似的MO答復數(shù)據(jù)包,但同樣,后者包含一個附加域以指定與這些數(shù)據(jù)包相關的實例編號。
接收機140A可以接收到來自路由器144A的一個MO答復數(shù)據(jù)包,該數(shù)據(jù)包通知接收機140A路由器144A有屬于<源146,群組1,實例3>的一臺已加入下游設備(即接收機140B),而且接收機140A也可以接收到來自路由器144B的一個MO答復數(shù)據(jù)包,該數(shù)據(jù)包通知接收機140A路由器144B有屬于<源146,群組1,實例1>的一臺已加入下游設備(即接收機140B)。使用這個MOD,接收機140A可以決定,發(fā)送一個加入<S,G,3>的加入請求給路由器114A,發(fā)送一個加入<S,G,1>的加入請求給路由器114B。
路由器114A收到來自它的下游設備的一個或多個加入請求(步驟164)。路由器114A會確定,與在加入請求中指定的實例相對應的狀態(tài)是否已經(jīng)存在,即路由器144A是否已經(jīng)是該實例的多播樹的一部分(步驟166)。如果路由器144A尚沒有該實例的狀態(tài),路由器144A會為改實例在它的多播轉(zhuǎn)發(fā)信息98中創(chuàng)建一個入口條目,并發(fā)送一條加入請求給它的一臺上游鄰接設備(步驟168)。如果路由器144A已有該實例的狀態(tài),路由器144A會增添該下游設備(如接收機140A)以便該群組和該實例的多播內(nèi)容可以傳輸給接收機140A(步驟170)。路由器114A和源設備146之間的其他額外設備可以類似地執(zhí)行164-170的任何步驟。
源設備146會接收到加入<源146,群組1>各N實例的加入請求(步驟170)。以這樣的方式,在接收機140A和源設備146之間可以構(gòu)建多個多播樹。但源設備146收到屬于<源146,群組1>大多播業(yè)務時,源設備146會依照對應當實例選擇多播樹中的一棵,例如通過使用一個單播ECMP流哈希函數(shù)(步驟174),并且通過所選多播樹發(fā)送該多播內(nèi)容(步驟176)。
接收機140和路由器144大致類似與圖5的路由器80。依照本發(fā)明的原則,可以擴展多播協(xié)議102(如PIM)以運行在一個多播群組實例的基礎上。例如,路由器80可以使用多播協(xié)議102來發(fā)送和接收改進的加入和退出請求,以加入或退出一個多播群組的特定實例。多播轉(zhuǎn)發(fā)信息98和MOD81可以包括路由器80所屬的每個多播群組的每個實例入口條目。
以上說明了本發(fā)明的各類實施例。這些實施例和其他的實施方式都在下面的權利要求書的范圍之內(nèi)。
權利要求
1.一種在網(wǎng)絡內(nèi)組成多個多播分布結(jié)構(gòu)的方法,包括在一臺設備,加入來自一個單個源設備的一個多播群組的多個實例N,其中,N個實例的每一個都對應于網(wǎng)絡里該多播群組的一個不同的多播分發(fā)結(jié)構(gòu)。
2.如權利要求1所述的方法,其中所述加入步驟包括為N個實例的每一個,都發(fā)送一條從該設備到位于該設備與該多播群組的源設備之間的多個上游設備的加入請求,其中每條加入請求都要指定所加入的多播群組的N個實例中的一個。
3.如權利要求1所述的方法,進一步包括在多個上游設備之間分發(fā)這些加入請求。
4.如權利要求1所述的方法,進一步包括在該設備指定這個多播群組的N個實例。
5.如權利要求4所述的方法,其中在該設備指定這個多播群組一個多播分發(fā)結(jié)構(gòu)的N個實例,包括使用一個發(fā)現(xiàn)協(xié)議來分發(fā)N個實例。
6.如權利要求5所述的方法,其中所述發(fā)現(xiàn)協(xié)議是多播虛擬專用網(wǎng)MVPN或多播虛擬專用局域網(wǎng)服務MVPLS協(xié)議的一種。
7.如權利要求4所述的方法,其中在該設備指定這個多播群組一個多播分發(fā)結(jié)構(gòu)的N個實例,包括由一位管理員配置N個實例。
8.如權利要求7所述的方法,進一步包括將網(wǎng)絡內(nèi)屬于所有多播群組的N個實例配置為相同。
9.如權利要求7所述的方法,進一步包括獨立地配置網(wǎng)絡內(nèi)每個多播群組的N個實例。
10.如權利要求1所述的方法,其中的設備包括一臺終端用戶接收設備和一臺中繼設備。
11.如權利要求1所述的方法,進一步包括用一臺設備從位于該設備和一個多播群組的源之間的至少兩臺上游設備,分別接收一條消息,其中這條消息包括指定了至少一項選擇一臺上游設備標準的多播優(yōu)化數(shù)據(jù);基于這個多播優(yōu)化數(shù)據(jù),選擇至少兩臺上游設備中至少一個、至多N個實例,以及其中,發(fā)送一條加入請求包括為N個實例的每一個,都發(fā)送從該設備到所選上游設備的加入請求,以便加入該多播群組的N個實例。
12.如權利要求11所述的方法,其中,選擇至少兩臺上游設備中至少一個、至多N個實例,包括針對多播優(yōu)化數(shù)據(jù)應用一個或多個標準,以便為這些上游設備定級,以及其中,用于為上游設備頂級的標準,包括網(wǎng)絡內(nèi)該多播群組的實例的多播業(yè)務復制的最小化,網(wǎng)絡內(nèi)多播業(yè)務的負載平衡,和選擇一條經(jīng)受較短通信延遲到網(wǎng)絡路徑中的一個或多個。
13.如權利要求1所述的方法,其中對應于N個實例的多播分發(fā)結(jié)構(gòu)部分重疊。
14.如權利要求1所述的方法,其中所述加入多個實例,包括使用協(xié)議獨立多播協(xié)議和點對多點標簽分發(fā)協(xié)議中的一個的擴展,加入實例。
15.一種在網(wǎng)絡內(nèi)使用多播分發(fā)結(jié)構(gòu)的方法,包括在源設備,為多播群組選擇該多播群組的N個實例的一個;以及通過對應于所選N個實例中的一個實例的多播分發(fā)結(jié)構(gòu),發(fā)送該多播群組的多播內(nèi)容給該設備。
16.如權利要求15所述的方法,其中在該源設備為該多播群組選擇N個實例的一個,包括使用一個等耗多徑ECMP流哈希函數(shù)來選擇N個實例的一個。
17.如權利要求15所述的方法,進一步包括在該設備指定該多播群組的多個實例N。
18.如權利要求17所述的方法,其中在該設備指定一個多播群組的一個多播分發(fā)結(jié)構(gòu)的N個實例,包括由一位管理員配置N個實例。
19.如權利要求17所述的方法,其中在該設備指定一個多播群組的一個多播分發(fā)結(jié)構(gòu)的多個實例N的一個,包括使用一個發(fā)現(xiàn)協(xié)議以分發(fā)N個實例。
20.一種網(wǎng)絡設備,包括控制單元,其中保存指定實例數(shù)目N的配置數(shù)據(jù);多播協(xié)議,在該控制單元內(nèi)運行,該協(xié)議基于實例編號N,為一個多播群組的N個實例生成N條加入請求,其中每個實例對應于該多播群組的一個不同的多播分發(fā)結(jié)構(gòu),以及其中每條加入請求指定加入的該多播群組的N個實例中不同的一個;以及接口,將加入請求輸出到位于該網(wǎng)絡設備與該多播群組的一臺源設備之間的多個上游設備,以加入該多播群組。
21.如權利要求20所述的網(wǎng)絡設備,其中該控制單元在多個上游設備之間分發(fā)這些加入請求。
22.如權利要求20所述的網(wǎng)絡設備,其中管理員配置該控制單元以指定該多播群組的N個實例。
23.如權利要求20所述的網(wǎng)絡設備,進一步包括在控制單元內(nèi)運行以分發(fā)N個實例的發(fā)現(xiàn)協(xié)議。
24.如權利要求20所述的網(wǎng)絡設備,其中該接口從至少兩臺上游設備接收各自的消息,每條消息包括指定至少一個選擇一臺上游設備標準的多播優(yōu)化數(shù)據(jù),其中該控制單元基于這個多播優(yōu)化數(shù)據(jù),選擇至少兩臺上游設備中至少一個、至多N個實例,并為N個實例的每一個,都產(chǎn)生一條加入請求,以及該接口將這些加入請求輸出到所選上游設備以加入該多播群組的N個實例。
25.如權利要求24所述的網(wǎng)絡設備,其中該控制單元針對該消息的多播優(yōu)化數(shù)據(jù)應用一個或多個標準,選擇至少兩臺上游設備中至少一個、至多N個實例,以便為這些上游設備定級,以及這里,用于為上游設備定級的標準,包括網(wǎng)絡內(nèi)該多播群組的實例的多播業(yè)務復制的最小化,網(wǎng)絡內(nèi)多播業(yè)務的負載平衡,和選擇一條經(jīng)受較短通信延遲到網(wǎng)絡路徑中的一個或多個。
26.如權利要求20所述的網(wǎng)絡設備,其中多播協(xié)議包括協(xié)議獨立多播PIM協(xié)議和點對多點標簽分發(fā)協(xié)議之一。
27.一種系統(tǒng),包括源設備,為多播群組提供多播內(nèi)容;以及網(wǎng)絡設備,其通過位于該網(wǎng)絡設備和該源設備之間的多個上游設備而連接到該源設備,其中該網(wǎng)絡設備為多播群組中N個實例中每個指定的實例發(fā)送一條加入請求給多個上游路由器,其中N個實例中的每個實例對應于該多播群組的一個不同多播分發(fā)結(jié)構(gòu),每條加入請求指定所加入的N個實例中的一個,以及其中該源設備選擇N個實例中的一個,并通過對應于所選實例的多播分發(fā)結(jié)構(gòu),將該多播群組的多播內(nèi)容發(fā)送給網(wǎng)絡設備。
28.如權利要求27所述的系統(tǒng),其中該網(wǎng)絡設備在多個上游設備之間分發(fā)這些加入請求。
29.一種計算機可讀介質(zhì),包括使一個可編程處理器從單臺源設備為一個多播群組指定N個實例的指令,其中N個實例的每一個對應于該多播群組的一個不同多播分發(fā)結(jié)構(gòu);以及使一個可編程處理器為N個實例的每一個,從該設備發(fā)送一條加入請求到位于該設備與源設備之間的多個的上游路由器的指令,其中每條加入請求指定所加入的多播群組的N個實例中的一個。
全文摘要
本技術允許網(wǎng)絡設備為特定的一個多播群組和源設備建立多個多播分發(fā)結(jié)構(gòu)。依照本技術,擴展一個多播協(xié)議以在控制消息中包括一個實例編號,該實例編號對應于該多播群組和源的多個實例中的一個。該網(wǎng)絡設備為該多播群組N個實例的每一個發(fā)送一條加入請求給多個上游路由器。每條加入請求指定所加入的多播群組的實例中的一個。該多播群組的源設備,使用諸如單播等耗多徑(ECMP)哈希算法,選擇N個實例中的一個,并且通過對應于所選實例的多播分發(fā)結(jié)構(gòu),發(fā)送該多播群組的多播內(nèi)容。
文檔編號H04L12/58GK101013948SQ20061014313
公開日2007年8月8日 申請日期2006年11月1日 優(yōu)先權日2006年1月30日
發(fā)明者K·孔佩拉 申請人:瞻博網(wǎng)絡公司