最新的毛片基地免费,国产国语一级毛片,免费国产成人高清在线电影,中天堂国产日韩欧美,中国国产aa一级毛片,国产va欧美va在线观看,成人不卡在线

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

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

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