亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種工業(yè)無線網(wǎng)狀網(wǎng)絡(luò)的數(shù)據(jù)傳輸方法

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

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