麻豆精品无码国产在线播放,国产亚洲精品成人AA片新蒲金,国模无码大尺度一区二区三区,神马免费午夜福利剧场

一種工業無線網狀網絡的數據傳輸方法

文檔序號:7974453閱讀:263來源:國知局

專利名稱::一種工業無線網狀網絡的數據傳輸方法
技術領域
:本發明涉及無線通信網絡中的路由
技術領域
,尤其是涉及一種工業無線網狀網絡的數據傳輸方法。
背景技術
:無線網狀網(WirelessMeshNetwork,WMN)也稱無線Mesh網,是基于無線信道進行網絡通信傳輸的。由于受衰落、干擾、多徑效應、阻隔等影響,無線鏈路常常會發生臨時性的誤碼率增高或中斷故障,這種現象有時持續時間較短(幾十秒),有時持續時間較長(幾分鐘)。參見劉乃安.無線局域網(WLAN)——原理、技術與應用[M].西安西安電子科技大學出版社,2004:8。無線網絡系統會因無線鏈路的不穩定導致網絡的整體傳輸性能下降,特別是對傳輸時延和可靠性都有較高要求的一些應用(如工業控制網絡),現有的無線網絡技術顯得力不從心。無線Mesh網絡中,網絡節點移動性較低或不移動(主要是終端移動),網絡拓撲呈網狀結構。因此,可以有針對性地利用節點間存在的多條傳輸路徑來提高傳輸的可靠性和實時性,從而降低無線鏈路不穩定的負面影響。同時,采用多路徑傳輸可以獲得更多的帶寬,間接地減少了端到端的數據傳輸延遲。目前,已有的多路徑路由技術的目標有兩個,一是利用冗余鏈路進行網絡保護;二是通過優化流量分布來緩解網絡擁塞。這方面的研究已有較多,相關的學術論文也不少。IETF專門成立了多路徑傳輸控制協議(MPTCP)工作組,致力于解決MPTCP體系結構、擁塞控制、路由、安全等方面的問題。參見王毅、廖曉菊、潘澤友,多路徑傳輸控制協議綜述,信息與電子工程,2011年第9卷第1期,711頁。由于無線網絡的特殊性,故在較多的研究中使用了多路徑路由機制來提高傳輸性能。這些多徑路由協議是針對無線自組織網——Adhoc中節點的高移動性,以及拓撲結構的多變性設計的。針對網絡故障恢復,IP網絡中常采用基于分離路徑的方法,另外,也有基于冗余樹的方法、基于保護環的方法。多拓撲路由(multi-topologyrouting,MTR)可以實現拓撲級的鏈路備份和流量分路徑傳遞,可以靈活地映射不同類型的流量到不同的子拓撲上,確保業務的開展。因此,近幾年有關MTR的研究得到較快發展。但是,已有的多路徑研究都是針對一般網絡系統特性展開的(如hternet),缺少針對工業控制網絡應用特點的專門研究。工業控制網絡系統有其自身的傳輸要求,特別是對檢測數據和控制指令的傳輸有很強的時效性和可靠性要求,如果使用用戶數據報協議UDP,無線鏈路的不穩定會導致一些重要數據的丟失;而使用傳輸控制協議TCP雖然不會丟失數據,但重傳時延不能滿足所需的實時性要求。同時,工業網絡系統中也需要傳輸現場的監視畫面信息、語音信息、以及常規的文本信息。無線工業網絡在實際應用中有廣泛的應用領域,如不適宜布線的惡劣環境、對移動設備的監測和控制等。因此,要想將無線Mesh網絡應用到工業控制領域,首先需要解決的就是無線網絡傳輸中實時性和可靠性相結合的保證機制問題。
發明內容針對上述無線Mesh網絡與工業控制應用結合所面臨的問題,本發明設計一種新的基于無線Mesh網絡的數據傳輸方法,在網絡層提供數據包傳輸過程中實時性和可靠性相結合的支持,最大限度地滿足工業控制應用對網絡通信的要求。本發明的技術方案為一種工業無線網狀網絡的數據傳輸方法,將無線網狀網絡中所需傳輸的數據分為兩大類,第一類數據包括現場設備運行中的檢測信號和控制現場設備動作的指令信號;第二類數據包括現場視頻、語音、圖片和文本;對第一類數據采用多路徑進行傳輸,具體實現方式如下,從一個無線網狀網的原始網絡拓撲圖中搜索出多棵支撐樹,從多棵支撐樹中選出若干條并發路徑,利用所有并發路徑同時傳遞同一個數據包;在連接接收終端的路由器上對重復的數據包進行處理;所述處理方式為,由路由器將需要轉發到相同目的地且之前已經轉發過的數據包丟棄;對第二類數據采用單路徑進行傳輸,具體實現方式如下,以無線網狀網絡中的每個節點為源搜索其到其它所有節點的最短路徑樹,根據最短路徑樹確定每條節點的常規路由表;從一個無線網狀網的原始網絡拓撲圖中搜索出多棵支撐樹,每棵支撐樹對不包含在其中的鏈路提供保護,根據支撐樹得到備份路由表,并保存在各節點上;按照常規路由表采用單路徑傳輸數據包;當檢測到某條無線鏈路失效時,立即切換到備份路由表繼續傳輸數據包。而且,搜索支撐樹或最短路徑樹的具體方式如下,對于無線網狀網的原始網絡拓撲圖,利用路由轉發樹生成算法找到一棵樹Tl,對于原始網絡拓撲圖中不屬于樹Tl的邊均由樹Tl提供保護;如果從原始網絡拓撲圖中刪除樹Tl中所有的邊,剩余的拓撲圖仍為連通圖,則將剩余的拓撲圖邊信息作為輸入,再次運行路由轉發樹生成算法,得到樹T2,樹T2對樹Tl中所有的邊進行保護;如果從原始網絡拓撲圖中刪除樹Tl中所有的邊,剩余的拓撲圖為非連通圖,則從樹Tl中挑選出保持整個拓撲圖連通所必需的邊,刪除樹Tl中其他的邊,在此基礎上再運行路由轉發樹生成算法,得到樹T2,樹T2保護樹Tl中被刪除的所有邊;再從原始網絡拓撲圖中刪除樹Tl中尚未被保護的邊,重復類似的選擇過程,直到原始網絡拓撲圖中所有的邊都有相對應保護它的樹為止。而且,搜索支撐樹時,路由轉發樹生成算法采用kruskal算法;搜索最短路徑樹時,路由轉發樹生成算法采用Dijkstra算法。而且,從多棵支撐樹中選出若干條并發路徑的具體方式如下,每一棵支撐樹中,都確定了任一源目節點對間的一條路徑;設支撐樹數目為k,k棵支撐樹中提供的共k條路徑構成路徑集合P;首先兩兩對比各路徑經過的中間節點,若無相同的中間節點,則路徑為節點不相交路徑,從路徑集合P中選出兩條節點不相交路徑作為并發路徑;若路徑集合P不存在兩條節點不相交路徑,則尋找兩條鏈路不相交路徑,若找到兩條只有公共節點但無公共邊的鏈路不相交路徑,則以此兩條路徑作為并發路徑。本發明是針對無線網狀網絡應用于工業控制通信而提出的技術方案,將不同類型的數據信息通過不同的路由轉發方式在網絡中傳遞,從而提供不同的服務質量保證。本發明提供方案的效果為一是對可靠性和實時性要求都高的數據,采用由多條不同的路徑并行發送的方式,來保證數據傳遞的成功率,避免因某條無線鏈路出現問題而導致的數據重傳,也就是盡可能一次傳遞成功;二是對容忍少量丟失或時間不敏感的數據,采用前攝性路由機制,預先為每個節點都計算好某條無線鏈路故障時的備份路徑方案,一旦檢測到鏈路故障,就切換到可以提供鏈路保護的備份路由模式工作,實現快速故障恢復。圖1為kruskal算法的流程圖。圖2為kruskal算法根據輸入拓撲生成支撐樹的示例圖。圖3為本發明實施例的生成多支撐樹流程圖。圖4為本發明實施例的單棵樹路徑搜索流程圖。圖5為本發明實施例的多樹中并發路徑搜索流程圖。圖6為本發明實施例的sockets結構體示意圖。圖7為本發明實施例的數據包重復處理流程圖。具體實施例方式本發明是針對無線網狀網絡應用于工業控制通信而提出的技術方案,重點考慮了將不同類型的數據信息通過不同的路由轉發方式在網絡中傳遞,從而提供不同的服務質量保證。本發明提供方法的目標為一是對可靠性和實時性要求都高的數據,采用由多條不同的路徑并行發送的方式,來保證數據傳遞的成功率,避免因某條無線鏈路出現問題而導致的數據重傳,也就是盡可能一次傳遞成功;二是對容忍少量丟失或時間不敏感的數據,采用前攝式路由機制,即預先為每個節點都計算好某條無線鏈路故障時的備份路徑方案,一旦檢測到鏈路故障,就切換到可以提供鏈路保護的備份路由模式工作,實現快速故障恢復。因此,實施例進行以下操作1)將網絡所需傳輸的數據分為兩大類,一類為現場設備運行中的檢測信號和控制設備動作的指令數據,其對傳輸的實時性和可靠性都要求較高;另一類為現場視頻、語音,以及一般的圖片和文本數據。2)對第一類數據采用多路徑并發路由傳輸機制,利用多條路徑同時傳遞同一個數據包(對周期性的檢測數據和操作發出的控制指令來說,通常只需若干比特即可)。這樣即使個別無線路徑出現問題,仍可以通過其他路徑保證一個數據或指令在許可的時延內傳遞到接收設備,從而避免因出錯或丟失造成的重傳,確保實時性和可靠性的兼顧。由于這類數據包很小,即使采用多條路徑并發傳輸同一個包,對網絡負荷產生的影響也不大。實施例實現方式為,從一個無線網狀網的原始網絡拓撲圖中搜索出多棵支撐樹,從多棵支撐樹中選出若干條并發路徑,利用所有并發路徑同時傳遞同一個數據包;在連接接收終端的路由器上對重復的數據包進行處理;所述處理方式為,由路由器將需要轉發到相同目的地且之前已經轉發過的數據包丟棄。3)對第二類數據仍采用單路徑路由傳輸機制,利用多拓撲方法為每條無線鏈路確定備選的故障切換子拓撲,一旦檢測到某條鏈路故障(不能探測到鄰居的響應消息),則立即切換到已選定的備份子拓撲繼續后續的數據傳輸,實現快速重路由,盡量減少鏈路故障造成的丟包損失。實施例實現為,以無線網狀網絡中的每個節點為源搜索其到其它所有節點的最短路徑樹,根據最短路徑樹確定每條節點的常規路由表;從一個無線網狀網的原始網絡拓撲圖中搜索出多棵支撐樹,每棵支撐樹對不包含在其中的鏈路提供保護,根據支撐樹得到備份路由表,并保存在各節點上;按照常規路由表采用單路徑傳輸數據包;當檢測到某條無線鏈路失效時,立即切換到備份路由表繼續傳輸數據包。對于數據分類的方法與常規的數據流分類方法類似,主要是在終端設備上根據分組頭部的信息(如IP地址、端口號、協議類型等)來區分,同時加入分類后的標記。由于分類內容不屬于本發明中的路由機制,路由機制只是針對不同標記的分組采取不同的路由轉發策略,故在此不再詳細介紹分類方法。另外,對一個具體網絡的物理拓撲結構的發現也不屬于本發明的研究內容(這屬于網絡拓撲發現研究的有關內容)。所以,后續都是在已知網絡拓撲結構的條件下,討論傳輸路徑的發現策略和形成機制。本發明實施例路由算法選擇的路徑均基于支撐樹或最短路徑樹確定,單棵路由轉發樹的生成采用的是圖論中現有的kruskal算法和Dijkstra算法。下面,分別介紹實施例中實現路由機制的核心內容,即基于kruskal算法的多支撐樹生成算法、并發路徑的選擇算法和多拓撲快速重路由算法。1.多支撐樹生成算法本發明的路由機制,首先要從一個網狀網絡的原始拓撲中尋找多棵支撐樹,再從這些支撐樹中選擇所需的傳輸路徑。每一棵支撐樹的生成都是利用kruskal算法實現的,只是輸出的結果(即生成的子拓撲圖)不一樣。下面介紹kruakal算法,以及利用該算法搜索出所需支撐樹的步驟。1)支撐樹的生成算法——kruskal算法(kruskal算法是圖論中生成樹的經典算法為便于實施參考起見,本發明提供說明如下kruskal算法從網絡拓撲中獲得單棵支撐樹,保證每次產生的支撐樹均為所輸入連通圖的一棵最小支撐樹。Kruskal算法是一種貪心算法,對于一個含有η個節點的網絡拓撲圖,kruskal算法從原始網絡圖的邊中,每次選擇代價或權值最小的邊,并且要保證所選擇的邊不構成環路,直到選擇出了n-1條邊,形成一棵覆蓋所有節點的生成樹,算法終止。圖1給出的是kruskal算法的流程圖,S用來記錄生成樹的邊,初始化S為空集,算法描述如下Stepl設置i,j索引值,i=0,j=l;將網絡中所有的邊按權值由小到大升序排列,設為ι、2、θβ構成邊集合;Step2判斷集合S中邊的數目是否為n-1,即判斷i是否等于n_l;若為n_l,則輸出S,算法結束;不為n-1,則到乂印3;Step3選擇邊集合中權值最小的邊(即當前的e」),判斷邊e」與集合S中現有的邊是否構成環路,即SU{ej}是否構成回路。是則從邊集合中取出邊epj=j+l,考慮下一條權值最小的邊,直到選擇了與集合S中現有邊不構成環路且權值最小的邊為止。否則,記錄已加入的邊的數目i=i+l,將選擇的邊添加到集合S中,S卩ai=ej,S=SU{aj,從邊集合中取出邊6ej;j=j+l,轉乂印2。判斷邊ej與集合S中現有的邊是否構成環路,具體可以通過邊e」的兩個端點是否都在集合S現有邊構成的節點集合中進行判斷。U表示加入子集運算圖2中給出的為利用kruskal算法得到支撐樹的例子,對于給定的原始網絡拓撲圖,有5個節點V”V2,V3>V4,V5,7條鏈路ei、e2、e3、e4、e5、e6、e7,對鏈路按照權重由小到大的順序進行排列,假設為E={ei、e2、e3、e4、e5、e6、e7}。S初始時為空集,依次從E中取邊加入S中,第一次選擇邊e1;S={ej;第二次選擇e2,%與S中的邊不構成環路,故S={e^e2};第三次選擇邊%,%與S中的邊不構成環路,則S={ei、%、e3};第四次依次考慮邊%、e5,均與S中的邊構成環路,考慮e6,%與S中現有邊不構成環路,故S={e1,e2,e3>e6},n=5,|S|=n_l,算法結束,最小支撐樹形成。2)多支撐樹生成算法為便于實施參考起見,本發明提供實施例設計的多支撐樹生成方法如下由于樹的任意兩點之間只有唯一的一條路徑,所以,計算出支撐樹后不再需要其他路徑搜索算法,直接提取任意兩節點之間的路徑即可。針對本發明的設計目標,即通過多條不同的路徑同時發送第一類數據來確保檢測數據和指令信息的實時性和可靠性,通過備份的冗余路徑為第二類數據提供快速重路由切換保護。這些都需要找出多條路徑,也就需要找出不同的多個生成樹,從多顆樹中分別選取不同的合適路徑來實現并發和備份功能。下面介紹多棵支撐樹搜索算法。由于是針對無線鏈路提供可靠性保護,也就是在網狀的圖中對邊的冗余保護。而一個網狀圖的支撐樹可以有許多,所以,以及選擇什么樣的支撐樹遵循以下規則規則一、最終確定的多棵支撐樹必須保證原始網絡拓撲圖中的每一條邊,至少在選出的某一棵支撐樹中不被包含。規則二、當原始網絡拓撲圖中所有的邊都被包含于某棵選出的支撐樹后,不再選擇更多的支撐樹,算法終止。規則一確保了網絡中任意一條無線鏈路出現問題時,都有可供使用的備份路徑,即可以從不包含該鏈路對應邊的支撐樹中選擇路徑。規則二確定了所需使用的支撐樹的個數。本發明利用有限棵支撐樹即可對網絡中的鏈路實現全備份,針對η個節點,m條邊的網絡拓撲,在極端的情況(環形拓撲)需要m個備份拓撲,也即至多需要m棵支撐樹即可完成備份。對網絡最小節點度數滿足一定要求的拓撲結構來說,需要的支撐樹個數比較少,如對于超歐拉圖,只需找出兩棵鏈路不相交的支撐樹即可。相關的研究表明,絕大多數的網絡都只需5飛棵支撐樹就可以實現對全部鏈路進行備份的要求。可參見AmundK.AudumF.H.etal.FastRecoveryfromLinkFailuresusingResilientRoutingLayers.Proceedingsofthe10thIEEESymposiumonComputersandCommunications(ISCC2005)。選擇最短路徑樹的規則相同。本發明進一步提出,多棵支撐樹或最短路徑樹的選擇方式(1)對于初始輸入的鄰接矩陣(原始網絡拓撲圖),利用路由轉發樹生成算法找到一棵樹Tl,對于原始網絡拓撲圖中不屬于樹Tl的邊均由樹Tl提供保護,即當這些非樹Tl中的邊中某一條出現故障無法順利傳輸數據時,樹樹Tl中仍有路徑連接所有節點,利用樹Tl中的路徑即可避開故障鏈路。路由轉發樹生成算法為支撐樹生成算法(如kruskal算法)或最短路徑樹生成算法(如Dijkstra算法)。(2)如果從原始網絡拓撲圖中刪除樹Tl中所有的邊,剩余的拓撲圖仍為連通圖,則將剩余的拓撲圖邊信息作為輸入,再次運行路由轉發樹生成算法,得到樹T2。故樹T2可對樹Tl中所有的邊進行備份保護,也即只需兩棵樹就可以滿足的前面給出的規則。(3)如果從原始網絡拓撲圖中刪除樹Tl中所有的邊,剩余的拓撲圖為非連通圖,則需要從樹Tl中挑選出保持整個拓撲圖連通所必需的邊,刪除樹Tl中其他的邊,在此基礎上再運行路由轉發樹生成算法,得到樹T2。樹T2可以保護樹Tl中被刪除的所有邊。再從原始網絡拓撲圖中刪除樹Tl中尚未被保護的邊(前面為保持連通性而保留的邊),重復類似的選擇過程,直到原始網絡拓撲圖中所有的邊都有相對應保護它的備份樹為止。由于本發明只針對不存在割邊的網絡拓撲(單條無備選路徑的邊),則對于兩個不連通的子分量,在被保護的割邊集合中,必定能找到單一的一條邊,即可使子連通分量連ο實施例基于kruskal算法設計了多支撐樹生成算法,圖3給出了多支撐樹生成算法的流程圖,算法描述中涉及的符號說明如下G(N,A)表示原始網絡拓撲圖,N表示原始網絡拓撲圖的節點集合,A表示原始網絡拓撲圖的邊集合;improtect表示未被保護的邊集合,cutedge是網絡中割邊構成的集合,backtopo表示備份拓撲(即生成的各支撐樹邊信息集合),T為每次用kruskal算法生成的支撐樹,addedge表示為使網絡恢復連通性可添加的邊集合,E表示當前輸入kruskal算法的邊,subpart表示不連通網絡各子部分的集合。算法中C=C1\C2操作表示C集合是從Cl集合中刪除C2集合得到的;T=krUSkal(E)表示對于輸入的邊集合E,利用kruskal算法得到支撐樹T。參見圖3,算法的具體步驟如下Stepl輸入原始網絡拓撲圖的帶權鄰接矩陣adjmat,初始化Unprotect=A,backtopo=NULL(空),E=A0Step2判斷網絡中是否存在割邊。對于任意邊eeA,刪除e,從任意節點出發若能訪問網絡中所有節點,則e不為割邊,否則e為割邊;若發現割邊,則報警,告知管理員需對網絡拓撲進行重新布置。St印3利用kruskal算法計算出最小支撐樹T=kruskal(E),支撐樹T對邊集合A中不被其包含的邊進呆護,貝1Junprotect=unprotectΠΤ,backtopo=backtopoUT0Π表示從子集中去除,U表示加入子集運算。Mep4:更新當前的邊集合Ε,即從原始網絡拓撲圖的邊集合A中刪除未被保護的邊集合unprotect,E=A\unprotect0St印5判斷原始網絡拓撲圖的節點集合N與St印4所得邊集合E構成的網絡G’(N,E)是否連通。選擇節點集合N中任意節點V,從節點ν出發若不能訪問網絡G’中所有節點,則網絡G’不連通,轉乂印6,通過執行乂印68確定各不連通分量,在被保護邊集合(由邊集合A中不屬于邊集合unprotect的邊構成)中選擇邊添加到邊集合E中,使各分量連通;否則網絡G’連通,轉乂印9。St印6找到網絡G’的各不連通分量,即各子部分,保存在集合subpart中;子部分的尋找方法為,對于任意節點νeN,從該節點出發能訪問的所有邊和節點構成一個子部分subl,從網絡G’中刪除子部分subl中的所有元素,任選一個節點,從該節點開始訪問到的所有邊和節點為子部分siA2…重復這樣的操作,直到找到所有子部分,將其保存在集合subpart中。St印7從集合subpart中任選兩個子部分,從原始網絡拓撲圖的邊集合A中選擇能使此兩個子部分連通的邊,選擇權值最小的邊添加到邊集合addedge中,重復此操作,直至網絡G’變為連通網絡。St印8:E=E+addedge。St印9利用kruskal算法計算出最小支撐樹T=kruskal(Ε),unprotect=unprotectΠΤ,backtopo=backtopoUΤ。St印10:判斷未被保護的邊集合improtect是否為空,是則多支撐樹生成算法結束;否則轉St印4。選擇了多顆支撐樹,就可以直接基于這些樹來確定所需的傳輸路徑。對于本發明的多路徑并發傳輸和路徑備份這兩種針對兩類數據的應用來說,只需從不同的樹中分別選擇出不同的路徑即可。3)鏈路權值的確定在本發明實施例中,以鏈路失效率作為鏈路的權值,上述支撐樹算法都力圖尋找鏈路權值最小的生成樹(可靠性最高的樹)作為選擇的支撐樹。鏈路失效率的獲得方法屬于現有技術,為便于實施參考起見,本發明提供描述如下。設網絡中鏈路數目為|e|,進行無線鏈路質量測量的總時間長度為τ(大約為幾十個小時),將T劃分為N個時隙(slot),每個slot的時間長度為、(大約為幾秒),代表短期無線鏈路的質量統計時段,其中包含若干個測得的鏈路質量指標數據。計算在[j*、,(j+l)*tj時段內(j取值為0,1,2···Ν-1),鏈路Li的質量測度指標(PDR)的數學期望E(Rij)和方差D(Rij),這樣得到所有鏈路的IEI*Ν個短期質量指標的數字特征。對|EI*Ν組指標數據(E(Rij)和D(Rij)),分別計算總體的數學期望E(R)和方差D(R),并參照此確定數學期望的閾值Eth和方差的閾值Dtl^gE(Rij)大于Eth,且D(Rij)小于Dth,則此鏈路!^在對應的時段j內被認為是質量好的,沒有失效,否則,此鏈路被認為是失效的。將具體的質量指標統計值轉換為統一的布爾類型數據,對每條鏈路Li生成鏈路狀態N元組Ai={an,ai2,…aiN},如果對應第j個timeslot時鏈路質量被認為是好的,則尸1,否則^=0,該數組作為后面網絡部署與路由選擇等工作中鏈路選擇的依據。對單條鏈1路Li而言,在整個測量時間段內的鏈路平均失效概率可表示為Pri^hl-ii,。Ni-ν2.并發路徑選擇算法基于生成的多顆支撐樹,在每一棵支撐樹中,都確定了任一源目節點對間的一條路徑。對于G(Ν,Α)代表的原始網絡拓撲圖,η=|Ν|表示網絡中節點數,m=|A|表示網絡中鏈路數。對于原始網絡拓撲圖G,利用多支撐樹算法生成支撐樹T1,T2,……,示節點i和節點j間的鏈路,對于源目節點對(s,t),在生成的h棵支撐樹中,存在q條路徑,集合P=(P1,P2,……,PtJ表示路徑集合,從q條路徑中,可選擇k條節點不相交或者鏈路不相交的并發路徑,源目節點對(s,t)間的數據,將同時在這k條路徑上發送。源目節點對(s,t)中,s表示源節點,t表示目的節點。在實際應用中,一般采用兩條并發路徑,并且,優先選擇節點不相交的路徑。實施例提出從多棵支撐樹中選出若干條并發路徑的具體方式如下每一棵支撐樹中,都確定了任一源目節點對間的一條路徑;設支撐樹數目為k,k棵支撐樹中提供的共k條路徑構成路徑集合P;首先兩兩對比各路徑經過的中間節點,若無相同的中間節點,則路徑為節點不相交路徑,從路徑集合P中選出兩條節點不相交路徑作為并發路徑;若路徑集合P不存在兩條節點不相交路徑,則尋找兩條鏈路不相交路徑,若找到兩條只有公共節點但無公共邊的鏈路不相交路徑,則以此兩條路徑作為并發路徑。根據選出的這兩條并發路徑,具體配置兩條不同的MPLS標記交換路徑,即可應用到實際數據傳輸中。1)單樹中路徑搜索算法單樹中路徑搜索算法是現有技術中一種對樹中節點的搜索方法,為便于實施參考起見,本發明提供說明如下根據生成的支撐樹,需要尋找到源目節點對間的唯一路徑。生成的支撐樹T中,記錄了存在于樹中的邊信息,假設源目節點對(s,t)利用支撐樹T上路徑發送數據,因為每一棵支撐樹上任意節點對間有且僅有一條路徑,選擇源節點s為根節點,對于支撐樹,除根節點s外每個節點有唯一的父親節點,根據支撐樹T中信息,從節點s開始,與節點s連接的任意節點V,其父親節點均為s,即parent(ν)=s,對于任意節點v,尋找與其相連的節點w(排除其父親節點),則parent(w)=v,依次類推,直到找到目的節點t,則從目的節點t沿著節點t的父親節點依次搜索各節點的父親節點,直到源節點s,即找到了源目節點對(s,t)間的唯一路徑。假設在支撐樹中,邊的保存形式為(Vie%),其中Vi…為邊。的兩個端點,則對于有η個節點的樹T,存在n-1條邊,可表示為T={(Voe1V1),……,(Vi^.),……,(VlrfeiriVlri)}。從支撐樹中尋找源目節點對(s,t)間路徑的流程圖如圖4所示,算法具體描述如下其中path為尋找到的邊及節點集合,parent(ν)表示節點ν在支撐樹中的父親節點,CurNodeSet為當前需要尋找孩子節點的節點集合,nextSet為下一次需要進行處理的節點集合,childSet為孩子節點集合。Stepl:path=null,對于所有屬于原始網絡拓撲圖的節點集合N的節點v,parent(ν)=null,CurNodeSet=S,nextSet=null,childSet=null;Step2在支撐樹T中找到節點集合CurNodekt中節點的孩子節點,對于任意的節點CurNode-CurNodekt,遍歷支撐樹T中所有的邊。設當前遍歷到的邊為e,其兩個端點為Vpvp^iVi=CurNodeJlJchildSet=chiIdSetUVj,nextSet=nextSet+Vj,T=T-(VjeVj),iHA步驟乂印3;否則判斷是否Vj=CurNode,是則childSet=chil(KetUVi,nextSet=nextSet+Vi,然后T=T-(VieVj),進入步驟乂印3。否貝丨」,當Vj=CurNode不成立時,從支撐樹T所有的邊中取下一未考慮的邊重復相同操作,直到有邊的端點Vi=CurNode或Vj=CurNode;Step3對于任意的節點νcchildSet,parent(ν)=CurNode,CurNodeSet=nextSet;乂印4判斷支撐樹T是否為空,否則轉st印2,取下一未考慮的節點CurNode-CurNodeSet;是則進入st印5;Step5v^t,v2=parent(V1Xpath=PathUCv2Gv1),V2GV1表示節點V2禾口V1之間的邊;Step6判斷V2是否等于源節點s,是則算法結束,否則V1=V2,轉到st印5。2)多樹中并發路徑搜索算法本發明設計了與多支撐樹算法相配套的多樹中并發路徑搜索算法,具體實現如下利用上述在單樹中尋找源目節點對(s,t)間路徑的方法,對于多支撐樹算法生成的多棵支撐樹集合,可以找到多條路徑,用路徑集合I^athHP1,P2,……Pk}表示,根據源目節點對和路徑集合,尋找兩條并發路徑的算法流程圖如圖5所示,下面給出算法的具體步驟,其中disPath表示最終得到的不相交路徑集合。Stepl設i=l,j=i+l,disPath=null;St印2對于路徑集合I^ath內的路SPi中任意節點νePi(ν*s,ν*t),遍歷路徑集合I^ath內的另一條路徑&中節點,即對于任意節點wePp判斷是否v=w,否則?1與?」為節點不相交路徑,disPath={Pi,P」},算法結束,是則j=j+l;St印3判斷j是否大于k,否則轉到st印2,取路徑集合I^ath內的下一條路徑Pj進行同樣處理,是則i=i+l;St印4判斷i是否大于k,否則到st印2,取路徑集合I^ath內的下一條路徑Pi進行同樣處理,是則無法找到兩條節點不相交集合,進入st印5開始尋找鏈路不相交集合;Step5:i=l,j=i+l;St印6對于路徑集合I^ath內的路徑Pi中任意的邊eePi,遍歷路徑集合I^ath內的另一條路徑P」中節點,即對于任意邊a€Pp判斷是否e=a,如果否,則路徑P」與路徑P」為鏈路不相交路徑,則disPath={Pi,P」},算法結束,是則j=j+l;St印7如果j是否大于k,否則到st印6取路徑集合I^ath內的下一條路徑Pj進行同樣處理,,是則i=i+l;StepS判斷i是否大于k,否則到st印6取路徑集合I^ath內的下一條路徑Pi進行同樣處理,,是則即無法找到節點不相交或者鏈路不相交鏈路,輸出報警提示。3)重復數據包的處理WMN中鏈路失效只是偶爾發生,采用多路徑并行發送的數據包在大部分情況下均會成功到達接收端,接收端可能收到較多的重復數據包。這不但增加了接收端的處理負擔,而且可能重復對設備進行同樣的操作,引發錯誤,因此,必須在接收端進行重復包的處理。本發明采用在連接接收終端的路由器上對數據包進行重復處理,路由器將需要轉發到相同目的地、之前已經轉發過的數據包丟棄,目的終端就不會收到重復的數據包。這就需要對經過目的端路由器的數據包做唯一的標識。為了區分收到的數據包是否重復,就必須對每個數據包做唯一的標識,之后收到的數據包與這個標識進行對比。由于TCP提供面向連接的、可靠的字節流服務,協議中每個報文段都有自己的序號,可以做到傳輸時無丟失、無差錯、無時序、無重復。所以,本發明實施例中只考慮對UDP和ICMP(Internet控制報文協議)數據包做標識。IP首部中16位的標識字段(Identification,ID),是一個計數器,用來產生數據包的標識。當IP協議(因特網協議)發送數據包的時候,它將該計數器的當前值封裝發到11數據包的標識字段中。當數據包的長度超過物理網絡的最大傳輸單元MTU而必須分片傳輸時,這個標識字段被復制到所有分片的數據包的標識字段中。接收端把具有相同的標識字段的數據包片重組成原來的數據包。在大多數伯克利派生出來的系統中,每發送一個IP數據包,IP層都要把計數器加1,這樣IP數據包的標識是按次序增加的。對檢測信號和指令數據,數據包長度均很小,不需要分片,故本發明實施例采用IP包的標識字段ID作為唯一標記符。為了檢測是否出現重復數據包,本發明實施例定義了一種新的數據結構S0Cket_s,如圖6所示,將數據包的標識緩存起來。在S0Cket_S{}結構(struct)中,為了便于查找和管理將來自于同一個套接字(socket)的id緩存在一個Hash(哈希)鏈表中。不同的socket通過next指針(structsocket_s*next)鏈接在一起。圖6中src_ip為源IP地址,src_port為源端口號,id[]為指針數組(*表示數組中的每個元素都是一個“指針”),指向多個存儲id的鏈表,node_link_len[]為各條鏈表的長度。flag標志反映當前socket(數據包)是否活躍,timer為定時器,Node_id_link{}表示網絡中每個節點id的數據結構。當數據包到達靠近接收端的路由器時,路由器就開始判斷以前是否收到過這個數據包,接著進行相關處理,重復處理的流程如圖7所示。Stepl數據包到達時,從包頭中提取出源IP地址src_ip,源端口號src_port和包標識號src_id;Mep2在socket鏈表中,查看該數據包是否存在,找到則轉step3,不存在則轉step7;St印3更新定時器;St印4查找id鏈表,判斷是否找到當前id,是則轉st印5,否則轉st印6;St印5丟棄當前數據包,釋放掉內存,處理過程完成;St印6將包標識號src_id插入到id鏈表中,轉st印9;St印7將本數據包信息添加到socket鏈表,將包標識號src_id添加到id鏈表;St印8初始化定時器;St印9將數據包交上層處理,重復處理過程結束。4)基于MPLS的快速轉發對前面選出的多條并發路徑,利用多協議標記交換(MPLS)技術,預先建立好多條所需的并發快捷交換路徑,從而提高實際應用中對檢測數據和控制指令傳輸的實時性保證。而對其他數據信息,則采用一般的IP路由轉發方式傳遞。MPLS為無連接網絡提供面向連接的服務,采用第二層的交換技術,可確保實時性要求高的數據按照預先建立的快捷通道傳遞。相關研究表明,在網絡負載較重時,基于MPLS的網絡傳輸性能要明顯好于基于一般IP路由的情況。可參見劉廣義,MPLS流量工程技術研究,清華大學博士論文,2004年。結合前面的多路徑并發策略,即多條快捷路徑同時傳輸同一份數據信息,本發明可提供實時性與可靠性相結合的傳輸保證,以滿足工業控制應用對無線網絡在傳輸性能上的要求。3.多拓撲快速重路由算法如前面所述,對一般的數據信息(非檢測數據或控制指令)需要采用基于IP路由表的網絡傳遞方式。為提高網絡鏈路利用率和可靠性,本發明采用基于多拓撲靜態路由表的快速重路由方式實現對常規數據報文的路由和轉發。本發明采用為每個網絡接入節點(無線Mesh網路由器)獨立計算各自所需路由表的方式,即以每個節點為源計算其到其它所有節點的最短路徑樹。使用有源樹代替前面多路徑并發時使用的共享樹的目的,是為了盡量避免將網絡流量過于集中于某幾條鏈路,造成有些鏈路負擔過重,而其它一些鏈路時常空閑的情況。特別是針對工業應用中的實時視頻監控業務,其流量比較大,且始終持續不斷。合理地分布這類業務流量,對提高網絡性能有很大幫助。1)路由表生成算法每個節點轉發路徑的計算與前面的多路徑并發路徑的計算過程很相似,只是用經典的Dijkstra算法代替Kruskal算法。利用類似多支撐樹生成算法的st印2-steplO,如連通性判斷、連通性保證等,并重復使用Dijkstra算法得到對EdgeST中各邊進行保護的多棵備份最短路徑樹。依據這些樹,分別生成可對不同邊實施保護的路由表。Dijkstra(迪杰斯特拉)算法是典型的單源最短路徑算法,用于計算一個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴展,直到擴展到終點為止,實施時參考相關文獻即可。為便于實施參考起見,提供路由表的生成過程如下G(N,A)表示原始網絡拓撲圖,N表示原始網絡拓撲圖的節點集合,A表示原始網絡拓撲圖的邊集合;improtect表示未被保護的邊集合,cutedge是網絡中割邊構成的集合,backtopo表示備份拓撲(即生成的各支撐樹邊信息集合),addedge表示為使網絡恢復連通性可添加的邊集合,E表示當前輸入Dijkstra算法的邊集合,subpart表示不連通網絡各子部分的集合。算法中C=C1\C2操作表示C集合是從Cl集合中刪除C2集合得到的;ST=Dijkstra(E)表示對于輸入的邊集合E,利用Dijkstra算法得到最短路徑樹T。最短路徑樹ST中的邊集合表示為EdgeST;基于最短路徑樹ST生成通常狀態使用的路由表,可提供對所有不在最短路徑樹ST中的邊的保護。參見圖3,算法的具體步驟如下Stepl初始化Unprotect=EdgeST,backtopo=NULL。St印2判斷網絡中是否存在割邊。對于任意邊eeA,刪除e,從任意節點出發若能訪問網絡中所有節點,則e不為割邊,否則e為割邊;若發現割邊,則報警,告知管理員需對網絡拓撲進行重新布置。St印3利用Dijkstra算法計算出最小支撐樹ST=Dijkstra(E),最短路徑樹ST對邊集合A中不被其包含的邊進行保護,則unprotect=unprotectΠΤ,backtopo=backtopoUΤ。Π表示從子集中去除,U表示加入子集運算。Mep4:更新當前的邊集合Ε,即從原始網絡拓撲圖的邊集合A中刪除未被保護的邊集合unprotect,E=A\unprotect0St印5判斷原始網絡拓撲圖的節點集合N與St印4所得邊集合E構成的網絡G’(N,E)是否連通。選擇節點集合N中任意節點v,從節點ν出發若不能訪問網絡G’中所有節點,則網絡G’不連通,轉乂印6,通過執行乂印68確定各不連通分量,在被保護邊集合13(由邊集合A中不屬于邊集合improtect的邊構成)中選擇邊添加到邊集合E中,使各分量連通;否則網絡G’連通,轉乂印9。St印6找到網絡G’的各不連通分量,即各子部分,保存在集合subpart中;子部分的尋找方法為,對于任意節點νΞN,從該節點出發能訪問的所有邊和節點構成一個子部分subl,從網絡G’中刪除子部分subl中的所有元素,任選一個節點,從該節點開始訪問到的所有邊和節點為子部分siA2…重復這樣的操作,直到找到所有子部分,將其保存在集合subpart中。St印7從集合subpart中任選兩個子部分,從原始網絡拓撲圖的邊集合A中選擇能使此兩個子部分連通的邊,選擇權值最小的邊添加到邊集合addedge中,重復此操作,直至網絡G’變為連通網絡。St印8:E=E+addedge。St印9利用Dijkstra算法計算出最小支撐樹T=Dijkstra(E),unprotect=unprotectΠΤ,backtopo=backtopoUΤ。Stepll判斷未被保護的邊集合improtect是否為空,是則多支撐樹生成算法結束;否則轉St印4。以上路由表的生成算法中St印2乂印10類似多支撐樹生成算法的step2-stepl0如連通性判斷、連通性保證等,并重復使用Dijkstra算法得到對EdgeST中各邊進行保護的多棵備份最短路徑樹。依據這些樹,分別生成可對不同邊實施保護的路由表。每個節點的常規路由表和備份路由表均在管理機上計算,管理機將生成的各子拓撲對應的路由表發送到各節點上,則在網絡中的每個節點上,都保存了與最短路徑樹對應的路由表以及最短路徑樹上各邊失效后將采用的路由表,其形式為<e,table〉,表示當收到鏈路e失效的通知時,利用table表查找路由信息。在網絡無故障的情況下,各節點利用常規路由表發送信息;一旦檢測到某條鏈路失效,各節點立即切換到對失效鏈路進行保護的相關路由表,進行故障的快速恢復。雖然需要對所有節點逐一計算路由表,但由于本發明實施例使用的是離線計算方式,并且,工業控制網絡不會特別大(一般幾十個節點或上百個節點已算是較大的網絡了),所以,該方法實際中是可行的。2)鏈路失效檢測鏈路失效探測。各路由器直接通過ICMPping包進行鏈路失效的檢測,相鄰的路由器之間周期性地(如20ms—次,參數可調)發送ICMPping請求包檢測鏈路,如果一段時間內(如70ms,參數可調)沒有收到ping響應則認為鏈路失效。鏈路失效檢測的方法可以有許多具體實現機制,可以利用現有技術實現,故在此不再做詳細論述。3)路由表切換路由表切換首先由發現鏈路失效的節點觸發,該節點使用特定的UDP數據包將失效鏈路(邊)的信息以泛洪方式通知所有鄰居節點;各節點收到鏈路失效通知時,檢測<e,table>信息,在對應的table表中查找下一跳。這其中主要需解決如何將鏈路失效消息通知給所有其他節點。本發明實施例中,由于各個節點根據保存的路由表是以自身為源的最短路徑樹所生成的,并且,在得到鏈路失效通知時才會查找對失效鏈路進行保護所需的路由表,故檢測到鏈路失效的路由器需要將鏈路失效消息在全網范圍內進行通告。本發明實施例采用泛洪的方式散播鏈路失效消息。每個路由器在未收到某鏈路已恢復的消息時,均會保存收到的鏈路故障消息。假設需要傳輸的消息鏈路失效消息為m,在鏈路失效消息報文中,設置其TTL值為網絡直徑的值(該值可由管理機下發給路由器),監測到消息m的路由器Rl向所有鄰居路由器發送m消息,收到m消息的路由器R2對m的具體操作如下Stepl路由器R2查找是否已收到過該消息,是則丟棄m;否則轉st印2。Step2路由器R2在本地保存消息m。Step3路由器R2判斷消息m的TTL值是否為0,否,將m發送到除Rl以為的所有鄰居路由器;是,不對消息進行轉發。路由器Rl監測到鏈路恢復后,將鏈路恢復消息按照同樣的方式進行泛洪,各路由器收到鏈路恢復消息后即刪除本地保存的鏈路失效消息,數據包即按照初始路由進行轉發。以上實施例僅供說明本發明之用,而非對本發明的限制,有關
技術領域
的技術人員,在不脫離本發明的精神和范圍的情況下,還可以做出各種變換或變型。因此,所有等同的技術方案,都落入本發明的保護范圍。權利要求1.一種工業無線網狀網絡的數據傳輸方法,其特征在于將無線網狀網絡中所需傳輸的數據分為兩大類,第一類數據包括現場設備運行中的檢測信號和控制現場設備動作的指令信號;第二類數據包括現場視頻、語音、圖片和文本;對第一類數據采用多路徑進行傳輸,具體實現方式如下,從一個無線網狀網的原始網絡拓撲圖中搜索出多棵支撐樹,從多棵支撐樹中選出若干條并發路徑,利用所有并發路徑同時傳遞同一個數據包;在連接接收終端的路由器上對重復的數據包進行處理;所述處理方式為,由路由器將需要轉發到相同目的地且之前已經轉發過的數據包丟棄;對第二類數據采用單路徑進行傳輸,具體實現方式如下,以無線網狀網絡中的每個節點為源搜索其到其它所有節點的最短路徑樹,根據最短路徑樹確定每條節點的常規路由表;從一個無線網狀網的原始網絡拓撲圖中搜索出多棵支撐樹,每棵支撐樹對不包含在其中的鏈路提供保護,根據支撐樹得到備份路由表,并保存在各節點上;按照常規路由表采用單路徑傳輸數據包;當檢測到某條無線鏈路失效時,立即切換到備份路由表繼續傳輸數據包。2.如權利要求1所述工業無線網狀網絡的數據傳輸方法,其特征在于搜索支撐樹或最短路徑樹的具體方式如下,對于無線網狀網的原始網絡拓撲圖,利用路由轉發樹生成算法找到一棵樹Tl,對于原始網絡拓撲圖中不屬于樹Tl的邊均由樹Tl提供保護;如果從原始網絡拓撲圖中刪除樹Tl中所有的邊,剩余的拓撲圖仍為連通圖,則將剩余的拓撲圖邊信息作為輸入,再次運行路由轉發樹生成算法,得到樹T2,樹T2對樹Tl中所有的邊進行保護;如果從原始網絡拓撲圖中刪除樹Tl中所有的邊,剩余的拓撲圖為非連通圖,則從樹Tl中挑選出保持整個拓撲圖連通所必需的邊,刪除樹Tl中其他的邊,在此基礎上再運行路由轉發樹生成算法,得到樹T2,樹T2保護樹Tl中被刪除的所有邊;再從原始網絡拓撲圖中刪除樹Tl中尚未被保護的邊,重復類似的選擇過程,直到原始網絡拓撲圖中所有的邊都有相對應保護它的樹為止。3.如權利要求2所述工業無線網狀網絡的數據傳輸方法,其特征在于搜索支撐樹時,路由轉發樹生成算法采用kruskal算法;搜索最短路徑樹時,路由轉發樹生成算法采用Dijkstra算法。4.如權利要求2或3所述工業無線網狀網絡的數據傳輸方法,其特征在于從多棵支撐樹中選出若干條并發路徑的具體方式如下,每一棵支撐樹中,都確定了任一源目節點對間的一條路徑;設支撐樹數目為k,k棵支撐樹中提供的共k條路徑構成路徑集合P;首先兩兩對比各路徑經過的中間節點,若無相同的中間節點,則路徑為節點不相交路徑,從路徑集合P中選出兩條節點不相交路徑作為并發路徑;若路徑集合P不存在兩條節點不相交路徑,則尋找兩條鏈路不相交路徑,若找到兩條只有公共節點但無公共邊的鏈路不相交路徑,則以此兩條路徑作為并發路徑。全文摘要本發明涉及一種工業無線網狀網絡的數據傳輸方法,對丟失率和傳輸時延都很敏感的數據信息提供快速可靠的傳輸路徑,設計了并發多路徑生成算法;同時,對其他數據信息提供用以快速故障恢復的備份路由表,設計了備份路徑的生成算法。應用本發明技術方案能夠避免個別無線鏈路故障產生的負面影響,通過不同類型的數據信息通過不同的路由轉發方式在網絡中傳遞,提供了不同的服務質量保證。文檔編號H04W40/02GK102395172SQ20111036234公開日2012年3月28日申請日期2011年11月16日優先權日2011年11月16日發明者席志方,徐俊,李乘義,楊劍峰,郭成城申請人:武漢大學
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
主站蜘蛛池模板: 剑川县| 广州市| 禹州市| 惠水县| 清镇市| 黄龙县| 鹤峰县| 来安县| 灌云县| 疏勒县| 江孜县| 正宁县| 信阳市| 肃宁县| 云阳县| 庆安县| 靖西县| 娄烦县| 望城县| 紫阳县| 南安市| 聂荣县| 海兴县| 伊金霍洛旗| 信宜市| 定兴县| 林州市| 库车县| 凉城县| 仁化县| 邛崃市| 成都市| 沙坪坝区| 阜城县| 奉化市| 田阳县| 简阳市| 灵石县| 大田县| 长汀县| 丰县|