一種支持網絡編碼的組播路由協議的制作方法
【專利摘要】本發明涉及一種支持網絡編碼的組播路由協議,在由一組支持網絡編碼的路由器所構成的自治系統網絡中,通過運行求取從源節點到每個終端發現若干條邊不相交的最短路徑的路由算法,來建立所有鏈路開銷總和最小的組播連接;源節點還對組播連接的路徑上的每臺路由器運行基于組播網絡編碼向量分配的編碼函數指派算法,來確定各個路由器處理組播報文時應當使用的編碼系數及轉發規則。本發明能夠建立更優化的組播連接,提高組播網絡的容量,實現帶寬的有效利用。
【專利說明】一種支持網絡編碼的組播路由協議
【技術領域】
[0001]本發明特別涉及一種支持網絡編碼的組播路由協議。
【背景技術】
[0002]目前,網絡上的通信模式發生了新的變化:早期以支持點對點的通信(Unicast)為主,例如電話、文件傳輸、網頁瀏覽等;后來,點對多點的通信(Multicast)開始流行,例如視頻會議、直播電視、應用層組播、互動游戲等。網絡業務的類型也從低帶寬型向高帶寬型發展,例如近年來涌現了視頻、音頻、照片等各種高碼率業務。這些新變化導致了用戶對網絡帶寬競爭的加劇。隨著用戶規模的增長,這種帶寬的競爭將進一步被激化。如何有效地使用帶寬,成為目前急需解決的熱點問題之一。
[0003]網絡編碼(Network Coding)為帶寬的節省提供了一個有效的手段。2000年電氣和電子工程師協會的刊物(IEEE Transactions)的一篇論文中指出,網絡編碼使得網絡節點對于報文(Packet)不僅可以進行傳統的“存儲、轉發”操作,還可以進行編碼操作,這樣可以提高組播網絡的容量。與此同時,網絡節點上的處理能力與存儲容量也在快速地增長,為網絡編碼的實行提供了很有利的硬件條件:除了用于報文存儲、轉發的資源以外,還剩下很豐富的其它資源,足以執行網絡編碼。近年來,許多研究者已經把目光轉移到如何利用網絡編碼來達到帶寬的有效利用。
[0004]最初,許多研究者主要考慮在由端節點所組成的應用層組播網絡上實行網絡編碼。這樣能利用端節點本身的計算和存儲能力,但是卻不能達到很高的網絡容量。主要是因為端節點一般無法清楚地知道底層的物理網絡拓撲,從而無法建立很優的組播連接(Multicast Connection)。為了消除這個障礙,作者在前期的一個工作中提出了在由路由器組成的網絡上實行網絡編碼。這種設計不同于應用層上的網絡編碼,它可以使網絡容量更加接近理論上界。它是指允許路由器對接收到的IP報文的載荷進行編碼、封裝,然后把新產生的報文發送出去。也就是,網絡編碼執行在路由器上,而不是在端節點上。由于很清楚地知道底層的拓撲,路由器可以建立更優的組播連接。然而,要實現路由器上的網絡編碼,有較大挑戰。需要建立新的組網方法、路由協議、路由器結構等。
【發明內容】
[0005]本發明的目的在于提供一種支持網絡編碼的組播路由協議,能夠在路由器組成的網絡上實行網絡編碼,建立優化的組播連接,提高組播網絡的容量,實現帶寬的有效利用。
[0006]為了到達上述目的,本發明的技術方案是提供一種支持網絡編碼的組播路由協議,應用于由一組支持網絡編碼的路由器所構成的自治系統網絡,通過運行路由算法來求取從源節點s到每個終端t發現h條邊不相交的最短路徑,從而建立所有鏈路開銷總和最小的組播連接;
[0007]設源節點是與一個組的源主機相連的源路由器;終端是與一個組的接收主機相連的路由器;τ是一個非空的接收節點集;i為變量;所述組播路由協議的路由算法中,為每個終端ti e T,分別維護以下的兩個數據結構和一個變量:
[0008]一個集合Pi,包含了從源節點s到終端\的邊不相交的路徑;
[0009]一個二維矩陣Wi [N] [N],包含了拓撲圖G中的所有邊,但是不包含集合Pi的路徑上的所有邊;N是路由器集合V中的節點數;其中的一個元素WiU] [k],j e N、k e N表示從節點\到節點Vk的有向鏈路上的開銷值,如果從節點\到節點Vk的有向鏈路是集合Pi的路徑上的一條邊時,WiU] [k]設置為無窮大;
[0010]變量hi,是集合Pi中的邊不相交的路徑個數。
[0011]優選地,所述組播路由協議的路由算法,包含以下過程:
[0012]進行主循環,如果有變量i,使hi〈h,則繼續主循環,否則退出主循環;h是一個預先指定的常數;
[0013]在主循環之內進行的第一循環中,在二維矩陣Wi [N] [N]中查找從源節點s到每個終端ti e T的最短路徑,從查找到的最短路徑中選擇最短的一條路徑(s,…,tm)加入到集合Pm中,再使變量hm的數值加I ;tm是路徑(s,…,tm)的終端節點;
[0014]在主循環之內進行的第二循環中,將路徑(S,…,tm)上的所有邊的開銷值設置為無窮大,從二維矩陣Wm[N ] [N]中刪除該路徑(S,…,tm)上的所有邊;
[0015]在主循環之內進行的第三循環中,對于除了終端節點k之外的每個終端& e τ,設置二維矩陣Wm[N] [N]中的路徑(S,…,tm)上的每條邊的開銷值為O ;
[0016]之后,所述主循環輸出到達每個終端ti e T的路徑的集合Pi。
[0017]優選地,由主循環輸出的路徑作為組播連接的路徑,對該路徑上的每臺路由器運行編碼函數的指派算法,來確定各個路由器處理組播報文時應當使用的編碼系數及轉發規則;
[0018]編碼函數的指派算法包含進行組播網絡的編碼向量分配的以下過程:
[0019]確定組播網絡的最小子樹圖,依據最小子樹圖中子樹的個數,并確保每個編碼子樹至少具有k個父子樹;確定網絡編碼的符號域并生成相應的編碼向量,從源節點到接收節點,依次分配給不同的源節點和編碼點,每一編碼點將所獲得的編碼向量傳遞給子樹中的其他點,并且使每一接收節點η條輸入邊的全局編碼向量中任意k個線性無關。
[0020]優選地,作為源節點的源路由器將編碼系數及轉發規則,沿著以該源路由器為根的最小生成樹,發布至組播連接上所有其他的路由器,使其他的路由器根據各自保存的編碼系數及轉發規則對組播報文進行相應處理直到組播連接結束;
[0021]當組播連接結束時,當源路由器收到與之連接的源主機發送的組播停止請求時,或者當源路由器在最近發送的組播報文之后設定的定時器超時時,所述源路由器沿著最小生成樹發布停止請求,使最小生成樹上的任意一個路由器將所保存的編碼系數及轉發規則刪除。
[0022]優選地,組播連接過程中,源主機向組播連接發送組播報文的過程如下:
[0023]源主機把組播報文P發送到與之直接相連的源路由器;源路由器把組播報文P的載荷分割為字節數相等的多個片段,根據網絡編碼協議將多個片段對應封裝形成多個IP報文,并沿著源路由器與接收路由器之間多條不相交的路徑,分別發送所述IP報文至接收路由器;
[0024]組播連接上的任意一臺路由器收到任意一個IP報文時,根據收到的IP報文中的網絡編碼協議字段及該路由器保存的編碼系數及轉發規則,對收到的IP報文的載荷進行編碼并重新封裝形成新的IP報文,并根據轉發規則發送新的IP報文;
[0025]組播連接上的任意一臺路由器所連接的主機屬于組播報文P對應的組的成員時,該路由器執行解碼,從而根據其接收到的由組播報文P衍生的IP報文來恢復出原始的組播報文P。
[0026]優選地,組播連接過程中,所述自治系統網絡中與主機連接的路由器,根據其收到的該主機加入或退出一個組時向該路由器發送的報告,來更新該路由器內存中的組成員關系表;
[0027]所述路由器還構造表示有組成員更新的更新報文,并沿著以該路由器為根的最小生成樹,向自治系統網絡中所有其他的路由器發送所述更新報文,使其他的路由器對各自內存中的組成員關系表進行更新;
[0028]所述更新報文記載有在組成員關系表中加入或刪除一個組,或者在一個組中加入或刪除一個主機的更新情況。
[0029]優選地,所述源路由器在收到所在組中有組成員更新的更新報文后,更新內存中的組成員關系表,并發布組播停止請求使組播連接上所有其他的路由器刪除各自保存的編碼系數及轉發規則;而且,所述源路由器重新執行路由算法及編碼函數的指派算法,來建立一個新的組播連接并形成相應的新的編碼系數及轉發規則,并發送新的編碼系數及轉發規則至新的組播連接上的所有其他路由器。
[0030]優選地,所述自治系統網絡中的任意一臺路由器,周期性地通過每個端口分別發送問候報文,并接收與其直接連接的鄰居路由器發送的應答報文,來判斷所述鄰居路由器的可達性。
[0031]優選地,所述自治系統網絡中的任意一臺路由器,其構造表示該路由器所在鏈路最新狀態的鏈路更新報文,并通過洪泛方式發送該鏈路更新報文至自治系統網絡中所有其他的路由器;所述鏈路更新報文的存活時間為任意兩臺路由器之間的最大跳數;
[0032]其他的路由器根據收到的鏈路更新報文,來更新各自存放自治系統網絡內部所有鏈路最新狀態的數據庫,并進一步通過洪泛方式發送該鏈路更新報文至各自的鄰居路由器。
[0033]本發明的另一個技術方案是提供一種基于支持網絡編碼的組播路由協議實現的組播方法,其包含以下過程:
[0034]在由一組支持網絡編碼的路由器所構成的自治系統網絡中,通過運行求取從源節點到每個終端發現若干條邊不相交的最短路徑的路由算法,來建立所有鏈路開銷總和最小的組播連接;
[0035]作為源節點的源路由器,對組播連接的路徑上的每臺路由器運行基于組播網絡編碼向量分配的編碼函數指派算法,來確定各個路由器處理組播報文時應當使用的編碼系數及轉發規則,并沿著以該源路由器為根的最小生成樹發布;
[0036]組播連接過程中,源路由器將源主機向其發送的組播報文分割,并根據網絡編碼協議封裝后,沿著源路由器與接收路由器之間多條不相交的路徑分別發送封裝后的多個報文;
[0037]組播連接的路徑上的任意一臺路由器根據網絡編碼協議字段及該路由器保存的編碼系數及轉發規則,對收到的報文進行直接存儲轉發、或編碼后重新封裝并轉發、或解碼并將恢復出的組播報文發送至接收主機;
[0038]源路由器在組播連接結束時,會沿著最小生成樹發布組播停止請求,使最小生成樹上的任意一個路由器將各自保存的編碼系數及轉發規則刪除。
[0039]綜上所述,本發明提供的支持網絡編碼的組播路由協議,能夠在路由器組成的自治系統網絡上實現組播開銷最小化并進行網絡編碼,從而建立優化的組播連接,提高組播網絡的容量,實現帶寬的有效利用。本發明的新組播路由協議完全在路由器執行,而對于任何一臺用戶電腦都是透明的。任何一臺用戶電腦都不需要知道在網絡層上所執行的新組播路由協議。
【專利附圖】
【附圖說明】
[0040]圖1是本發明的路由協議中進行路由器鄰居發現過程的示意圖;
[0041]圖2是本發明的路由協議中路由算法的流程圖。
【具體實施方式】
[0042]本發明提供的一種支持網絡編碼的新路由協議(CODERP),是域內路由協議,即只能用在一個自治系統(AS, Autonomous System)之內進行路由選擇。如果沒有特殊的聲明,則下文中所說的網絡都是指在一個自治系統AS之內的由一組支持網絡編碼的路由器所構成的網絡。一個AS是指在一個地理區域之內的由一個組織或機構統一管理的一組路由器所組成的有界網絡,其中每臺路由器都擁有一致的路由協議。
[0043]本發明所述的路由協議,包含以下部分:鄰居(Neighbor)的發現與鏈路狀態(Link State)的測量;AS內鏈路狀態更新的洪泛(Flooding);組成員關系(Group Member)的維護與發布;基于網絡編碼的組播連接建立;網絡編碼報文的傳輸。
[0044]1、鄰居的發現與鏈路狀態的測量;
[0045]如圖1所示,當一臺路由器加電運行之后,它需要知道它的各個鄰居是否可達(Reachable)。為此,它向它的每一個端口發出一個問候報文(Hello Packet),其存活時間(TTL, Time To Live)為1,表明它最遠只能到達直接連接的鄰居。當一個鄰居收到問候報文,它就返回一個應答報文(ACK Packet)。根據應答報文是否收到,路由器就可以確定它的各個鄰居的可達性。它啟動一個定時器,如果在定時器超時之前收到應答報文,則可以認為鄰居可達,否則就是不可達。每臺路由器在運行過程中,還需要每隔一個固定的時間、周期性地向它的各個鄰居發送問候報文,以確定最近是否有鄰居停止運行或啟動運行。
[0046]同時,根據應答報文的收到時間,路由器還可以計算到任何一個鄰居的延時。為了取得精確的延時值,路由器可以發送多次問候報文,最后計算平均延時。利用其它測量方法,還可以獲得鏈路的帶寬、距離、能量等數據。
[0047]2、鏈路狀態更新在AS內部的洪泛發布;
[0048]當一臺路由器所連接的某條鏈路的狀態改變時,它就構造一個報文,把這條鏈路的最新狀態信息裝入進去,并通過洪泛的方式發送給AS內的所有其它路由器。報文的TTL設為AS內任意兩臺路由器之間的最大跳數。這樣既能保證所有其它路由器都收到這種報文,又能減少溢出到AS之外的報文數量。[0049]當其它任何一臺路由器收到這種報文之后,就立即更新內存中的鏈路狀態數據庫,重新構造一個AS內部的新拓撲圖,并繼續以洪泛的方式把更新報文轉發給它的所有鄰居。這里,鏈路狀態數據庫是指用于存放AS內部的所有鏈路的最新狀態的庫,其格式如表I所示,其中Rl、R2等代表路由器。而拓撲圖是指一個由若干結點和若干邊所構成的網絡圖,其中結點代表路由器,邊代表鏈路,邊上的數值代表鏈路的開銷(例如延遲、帶寬等)。由于采用洪泛更新,所以AS內所有路由器的鏈路狀態數據庫和拓撲圖總是完全同步的。
[0050]下文中,除非特別聲明,節點都只是指路由器而不是主機,終端或終端節點都是指與一個組的接收主機相連的路由器。拓撲圖G是指由AS內所有路由器所組成的圖,不包括與路由器相連的主機。
[0051]表1鏈路狀態數據庫的格式
【權利要求】
1.一種支持網絡編碼的組播路由協議,其特征在于,應用于由一組支持網絡編碼的路由器所構成的自治系統網絡,通過運行路由算法來求取從源節點S到每個終端t發現h條邊不相交的最短路徑,從而建立所有鏈路開銷總和最小的組播連接; 設源節點是與一個組的源主機相連的源路由器;終端是與一個組的接收主機相連的路由器;T是一個非空的接收節點集;i為變量;所述組播路由協議的路由算法中,為每個終端ti e T,分別維護以下的兩個數據結構和一個變量: 一個集合Pi,包含了從源節點s到終端\的邊不相交的路徑; 一個二維矩陣Wi [N] [N],包含了拓撲圖G中的所有邊,但是不包含集合Pi的路徑上的所有邊;N是路由器集合V中的節點數;其中的一個元素WiU] [k],j e N、k e N表示從節點Vj到節點vk的有向鏈路上的開銷值,如果從節點\到節點Vk的有向鏈路是集合Pi的路徑上的一條邊時,WiU] [k]設置為無窮大; 變量hi;是集合Pi中的邊不相交的路徑個數。
2.如權利要求1所述的組播路由協議,其特征在于, 所述組播路由協議的路由算法,包含以下過程: 進行主循環,如果有變量i,使hi〈h,則繼續主循環,否則退出主循環;h是一個預先指定的常數; 在主循環之內進行的第一循環中,在二維矩陣WJN] [N]中查找從源節點s到每個終端h e T的最短路徑,從查找到的最短路徑中選擇最短的一條路徑(s,…,tm)加入到集合Pm中,再使變量匕的數值加I ;tm是路徑(s,…,tm)的終端節點; 在主循環之內進行的第二循環中,將路徑(s,…,tm)上的所有邊的開銷值設置為無窮大,從二維矩陣Wm[N] [N]中刪除該路徑(S,…,tm)上的所有邊; 在主循環之內進行的第三循環中,對于除了終端節點1之外的每個終端\ e T,設置二維矩陣Wm[N] [N]中的路徑(s,…,tm)上的每條邊的開銷值為O ; 之后,所述主循環輸出到達每個終端\ e T的路徑的集合Pp
3.如權利要求2所述的組播路由協議,其特征在于, 由主循環輸出的路徑作為組播連接的路徑,對該路徑上的每臺路由器運行編碼函數的指派算法,來確定各個路由器處理組播報文時應當使用的編碼系數及轉發規則; 編碼函數的指派算法包含進行組播網絡的編碼向量分配的以下過程: 確定組播網絡的最小子樹圖,依據最小子樹圖中子樹的個數,并確保每個編碼子樹至少具有k個父子樹;確定網絡編碼的符號域并生成相應的編碼向量,從源節點到接收節點,依次分配給不同的源節點和編碼點,每一編碼點將所獲得的編碼向量傳遞給子樹中的其他點,并且使每一接收節點η條輸入邊的全局編碼向量中任意k個線性無關。
4.如權利要求3所述的組播路由協議,其特征在于, 作為源節點的源路由器將編碼系數及轉發規則,沿著以該源路由器為根的最小生成樹,發布至組播連接上所有其他的路由器,使其他的路由器根據各自保存的編碼系數及轉發規則對組播報文進行相應處理直到組播連接結束; 當組播連接結束時,當源路由器收到與之連接的源主機發送的組播停止請求時,或者當源路由器在最近發送的組播報文之后設定的定時器超時時,所述源路由器沿著最小生成樹發布停止請求,使最小生成樹上的任意一個路由器將所保存的編碼系數及轉發規則刪除。
5.如權利要求4所述的組播路由協議,其特征在于, 組播連接過程中,源主機向組播連接發送組播報文的過程如下: 源主機把組播報文P發送到與之直接相連的源路由器;源路由器把組播報文P的載荷分割為字節數相等的多個片段,根據網絡編碼協議將多個片段對應封裝形成多個IP報文,并沿著源路由器與接收路由器之間多條不相交的路徑,分別發送所述IP報文至接收路由器; 組播連接上的任意一臺路由器收到任意一個IP報文時,根據收到的IP報文中的網絡編碼協議字段及該路由器保存的編碼系數及轉發規則,對收到的IP報文的載荷進行編碼并重新封裝形成新的IP報文,并根據轉發規則發送新的IP報文; 組播連接上的任意一臺路由器所連接的主機屬于組播報文P對應的組的成員時,該路由器執行解碼,從而根據其接收到的由組播報文P衍生的IP報文來恢復出原始的組播報文P。
6.如權利要求 4所述的組播路由協議,其特征在于, 組播連接過程中,所述自治系統網絡中與主機連接的路由器,根據其收到的該主機加入或退出一個組時向該路由器發送的報告,來更新該路由器內存中的組成員關系表; 所述路由器還構造表示有組成員更新的更新報文,并沿著以該路由器為根的最小生成樹,向自治系統網絡中所有其他的路由器發送所述更新報文,使其他的路由器對各自內存中的組成員關系表進行更新; 所述更新報文記載有在組成員關系表中加入或刪除一個組,或者在一個組中加入或刪除一個主機的更新情況。
7.如權利要求6所述的組播路由協議,其特征在于, 所述源路由器在收到所在組中有組成員更新的更新報文后,更新內存中的組成員關系表,并發布組播停止請求使組播連接上所有其他的路由器刪除各自保存的編碼系數及轉發規則;而且,所述源路由器重新執行路由算法及編碼函數的指派算法,來建立一個新的組播連接并形成相應的新的編碼系數及轉發規則,并發送新的編碼系數及轉發規則至新的組播連接上的所有其他路由器。
8.如權利要求1所述的組播路由協議,其特征在于, 所述自治系統網絡中的任意一臺路由器,周期性地通過每個端口分別發送問候報文,并接收與其直接連接的鄰居路由器發送的應答報文,來判斷所述鄰居路由器的可達性。
9.如權利要求1所述的組播路由協議,其特征在于, 所述自治系統網絡中的任意一臺路由器,其構造表示該路由器所在鏈路最新狀態的鏈路更新報文,并通過洪泛方式發送該鏈路更新報文至自治系統網絡中所有其他的路由器;所述鏈路更新報文的存活時間為任意兩臺路由器之間的最大跳數; 其他的路由器根據收到的鏈路更新報文,來更新各自存放自治系統網絡內部所有鏈路最新狀態的數據庫,并進一步通過洪泛方式發送該鏈路更新報文至各自的鄰居路由器。
10.一種基于支持網絡編碼的組播路由協議實現的組播方法,其特征在于,包 含以下過程: 在由一組支持網絡編碼的路由器所構成的自治系統網絡中,通過運行求取從源節點到每個終端發現若干條邊不相交的最短路徑的路由算法,來建立所有鏈路開銷總和最小的組播連接; 作為源節點的源路由器,對組播連接的路徑上的每臺路由器運行基于組播網絡編碼向量分配的編碼函數指派算法,來確定各個路由器處理組播報文時應當使用的編碼系數及轉發規則,并沿著以該源路由器為根的最小生成樹發布;組播連接過程中,源路由器將源主機向其發送的組播報文分割,并根據網絡編碼協議封裝后,沿著源路由器與接收路由器之間多條不相交的路徑分別發送封裝后的多個報文;組播連接的路徑上的任意一臺路由器根據網絡編碼協議字段及該路由器保存的編碼系數及轉發規則,對收到的報文進行直接存儲轉發、或編碼后重新封裝并轉發、或解碼并將恢復出的組播報文 發送至接收主機; 源路由器在組播連接結束時,會沿著最小生成樹發布組播停止請求,使最小生成樹上的任意一個路由器將各自保存的編碼系數及轉發規則刪除。
【文檔編號】H04L12/761GK103986661SQ201410240778
【公開日】2014年8月13日 申請日期:2014年5月30日 優先權日:2014年5月30日
【發明者】林珉 申請人:上海珉智信息科技有限公司