碼,最后將解碼后的單包提交IP層進行路由或是交付。
[0023] 本發明的有益效果:本發明針對無線網絡中可編碼數據流的調度問題,當多條業 務流存在不同的時延要求時,保證這些時延要求的情況下提高吞吐量。尤其是考慮的數據 流條件多,編碼結構全,提供的解決方案也更完善。尤其是當多條業務流存在不同的時延要 求時,保證這些時延要求的情況下提高吞吐量。
[0024] 現有技術或給出了啟發式算法,研究了編碼數據流端到端時延,或只研究單跳網 絡,沒有考慮到數據流差異性的時延要求。而本發明考慮的數據流條件多,網絡拓撲靈活, 提供的解決方案也更完善。能夠利用網絡中大量存在的成對流間編碼機會,有效的降低多 組單播數據流的時延,提高網絡的吞吐量。可以為無線自組織網中對服務質量有較高要求 的應用提供高效、有保證的支持。
【附圖說明】
[0025] 圖I:hello數據格式;
[0026] 圖2 :編碼頭部格式;
[0027] 圖3:21個節點拓撲圖;
[0028] 圖4 :吞吐量變化曲線;其中圖4 (a)為三種協議在網絡總流量的變化下,所有被目 的節點接收的數據包吞吐量。圖4(b)為三種協議在網絡總流量的變化下,所有被目的節點 及時接收的數據吞吐量。
[0029] 圖5顯示了三種協議的效用性能曲線。其中圖5 (a)為三種協議在網絡總流量的變 化下,所有被目的節點接收的數據包權重和。圖5(b)為三種協議在網絡總流量的變化下, 所有被目的節點及時接收的數據包權重和。
[0030] 圖6顯示了三種協議的時延性能曲線。其中圖6(a)為三種協議在網絡總流量的 變化下,所有被目的節點接收的數據包平均時延。圖6(b)為三種協議在網絡總流量的變化 下,目的節點接收到的超時數據包的平均時延。
[0031] 具體實施方法
[0032] 本發明為IP與MAC中間層協議,命名為PTCS(Pairwise-codingTimeConstraint Scheduling)。PTCS可分為3個階段:編碼機會發現,分組調度和分組編碼。我們采用一種 有效的編碼路由發現策略,能夠利用數據流的兩跳路由信息來獲取編碼機會,同時保持較 低的計算開銷。我們建立兩跳路由表發現編碼機會,用一個編碼關系表將結果保存下來。 我們為中間節點上緩存的每條數據流都建立一條隊列。這個隊列記錄下每條數據流中數 據包的信息,包括數據包權重,數據包到達時間,數據流時延約束和隊列長度。編碼關系表 和隊列信息將成為協議中調度策略的輸入,而調度策略最終輸出當前緩存數據包的發送順 序,最后由中間節點按順序逐次發送數據包,如果數據包需要編碼,則由編碼模塊對數據包 進行編碼后發送。
[0033] 階段一:編碼機會發現策略
[0034] PTCS的首要模塊是編碼機會發現機制,它能夠利用節點的一跳鄰居信息和兩跳鄰 居信息來挖掘數據流間的成對編碼關系。對于先應式路由協議,如DSDV和0SLR,由于鄰居 表已知,所以每個節點能夠很容易的知道自己的一跳和兩跳鄰居。對于反應式路由協議,如 A0DV,我們采用董超等人提出的方法,讓每個節點利用Hello報文廣播自己的一跳鄰居信 息給鄰居。這種方法的優點是局部的鄰居和拓撲信息不擴散到全網中,在不增加過多計算 開銷和網絡開銷的情況下,每個節點就能獲取到兩跳鄰居信息。其Hello報文的設計如圖1 所示,灰色保留字段中保存發送節點的一跳鄰居個數,Hello報文的末尾則添加了每個一跳 鄰居的地址,和經過該鄰居能到達的目的節點地址。每個節點都有一個一跳鄰居表,其中每 個一跳鄰居又有一個指向自己鄰居表指針,即該節點的兩跳鄰居表。收到鄰居的Hello報 文后,節點就更新自己的一跳鄰居表和兩跳鄰居表。如圖1示。
[0035] 我們將利用數據流的上下游節點信息以及中間節點的一跳和兩跳鄰居信息來判 斷一對數據流是否存在編碼關系。對于中間節點R處的兩條數據流匕和f2,他們的編碼關 系判斷過程如下。我們令符號PHa1}表示數據流fi關于R的上一跳節點,PHa2)表示數據流 關于R的上兩跳節點,NH(1,u表示數據流fi關于R的下一跳節點。相對的,我們有PH(2, 表示數據流f2關于R的上一跳節點,PHfe2)表示數據流f2關于R的上兩跳節點,NHfel)表示 數據流關于R的下一跳節點。同時,我們還令符號N(node)表示節點node的鄰居節點, 若有Iiode1GN(node2),就表示節點Iiode1是節點node2的鄰居節點。
[0036] 我們將編碼關系判斷過程抽象成兩個條件:
[0037] 條件一:檢查的上游路徑與f2的下游路徑是否有交匯。我們有三個等式:
[0038] PH(1,1}=NH(2,1);PH(1,1}GN(NH(2,1}) ;PH(1,2)gN(NH_)?
[0039] 若滿足三個等式中的一個,我們認為條件一被滿足。
[0040] 條件二:
[0041] 檢查f2的上游路徑與f:的下游路徑是否有交匯。我們也有三個等式:
[0042] PH(2i1)=NH(1i1);PH(2i1)gNH(lil);PH_{2,2}GN(NH(M)).
[0043] 若滿足三個等式中的一個,我們認為條件二被滿足。
[0044] 當兩個條件都被滿足時,我們認為數據流匕和f2之間存在編碼關系。
[0045] 我們將中間節點R收到的數據包,分別緩存到我們為每個數據流建立的隊列中。 每條隊列都要記錄下對應數據流的源節點、目的節點、下一跳地址、權重大小、時延要求、數 據包個數等信息,還要保存指向數據包列表的指針。每當一個數據包進入節點R時,我們首 先檢查這個數據流的隊列是否存在。若隊列存在,直接將該數據包加入隊列中的數據包列 表,同時隊列信息中數據包個數記錄加1。若不存在,則為這個數據流新建一個隊列,同時利 用隊列信息以及編碼判斷條件來檢查這條數據流和已入隊的數據流是否存在編碼關系。
[0046] 階段二:分組調度
[0047] PTCS的第二大模塊是分組的調度,它能根據數據流的編碼關系、權重、時延、隊列 長度等信息給出一個最優數據包發送順序。我們定義一個調度區間為T個發送時隙,即在 這段時間內我們可以發送出去T個數據包。在每個調度區間的開始,我們統計隊列中記錄 的數據流信息,如編碼關系、權重、時延、隊列長度,對最大化在時延到達之前發送數據包的 權重和問題進行形式化。
[0048] 我們將經過中間結點的數據流分為兩個集合,集合匕中數據流沒有編碼關系,為 單流,集合Pc中都是有編碼關系的編碼對。以圖2中的模型為例,PS= {l,6,7},Pe= {(2, 3),(4, 5)}.對于一條單流fk,能被成功轉發的數據包為單包,個數SSk,對于有編碼關系的 編碼有序對(i,j),且滿足i〈j,被成功轉發的編碼數據包個數定義為DpfJP匕中未被編 碼就轉發的數據包叫做余包,其個數分別定義為民和Rj.在我們的問題模型中,有R