国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于兩路并發(fā)傳輸?shù)木峦ㄐ?

2016-06-13 08:43郭成城楊劍鋒
傳感器與微系統(tǒng) 2016年3期

胡 然, 郭成城, 楊劍鋒

(1.武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430072;2.63892部隊,河南 洛陽 471003)

?

基于兩路并發(fā)傳輸?shù)木峦ㄐ?

胡然1,2, 郭成城1, 楊劍鋒1

(1.武漢大學(xué) 電子信息學(xué)院,湖北 武漢 430072;2.63892部隊,河南 洛陽 471003)

摘要:針對礦井中無線通信存在的低可靠性、高時延問題,引入兩路并發(fā)機制來提供井下無線通信的可靠性和實時性保證。詳細介紹了在內(nèi)核空間實現(xiàn)雙路徑并發(fā)傳輸?shù)脑O(shè)計思想和實現(xiàn)過程,通過定義專用數(shù)據(jù)結(jié)構(gòu)進行重復(fù)包的排查和丟棄處理,并利用多協(xié)議標(biāo)記交換技術(shù)實現(xiàn)數(shù)據(jù)包的快速轉(zhuǎn)發(fā)。在礦井內(nèi)實地環(huán)境進行了現(xiàn)場測試,測試結(jié)果證明了兩路并發(fā)傳輸方式的可靠性高、時延低。

關(guān)鍵詞:無線網(wǎng)狀網(wǎng); 礦井通信; 兩路并發(fā)傳輸; 丟包率; 多路徑路由

0引言

近年來,隨著現(xiàn)代通信技術(shù)的發(fā)展,越來越多現(xiàn)代化新的通信技術(shù)融入到礦井通信系統(tǒng)中,如,井下WiFi技術(shù)、無線Mesh(wireless mesh networks,WMNs)技術(shù)等。與一般的通信技術(shù)相比,礦井通信技術(shù)對網(wǎng)絡(luò)的帶寬、延時、抖動等性能的要求更高。如何提高網(wǎng)絡(luò)的可靠性和實時性,已經(jīng)成為礦井通信發(fā)展中必須解決的問題。針對這一問題,國內(nèi)外進行了一系列研究。文獻[1]提出了全礦井無線Mesh鏈狀骨干網(wǎng)絡(luò)的全局優(yōu)化,并包括對網(wǎng)絡(luò)路由節(jié)點的部署,通過這種方法優(yōu)化了網(wǎng)絡(luò)節(jié)點的布局。文獻[2]對礦井無線Mesh網(wǎng)系統(tǒng)的性能進行了分析,并分析出TCP傳輸?shù)膮f(xié)議是如何影響礦井無線Mesh網(wǎng)的傳輸性能。文獻[3]則引入了一種基于VoIP的無線Mesh通信網(wǎng)網(wǎng)絡(luò),通過設(shè)計實時控制協(xié)議來降低時延。但文獻[1,2]突出的是對網(wǎng)絡(luò)節(jié)點的優(yōu)化布局,沒有考慮到網(wǎng)絡(luò)突發(fā)中斷的應(yīng)對方式;文獻[3]則只是考慮了時延的需求,沒有考慮到可靠性方面的需求。而在礦井通信中,尤其是在穿脈內(nèi)的通信問題,由于井下現(xiàn)場巷道狹窄,而作業(yè)設(shè)備體積比較龐大,不論是挖掘機還是礦石運輸車輛,作業(yè)中經(jīng)常會占據(jù)整個巷道局部空間,對無線通信信號傳輸?shù)挠绊戄^大。雖然,有文獻提出用環(huán)狀無線Mesh網(wǎng)絡(luò)通過路由切換恢復(fù)通信功能[1,2],但是由于作業(yè)設(shè)備移動頻繁,無線Mesh網(wǎng)路由器會經(jīng)常來回切換路由,每次切換都需幾秒鐘的時間,這嚴(yán)重影響了現(xiàn)場的通信質(zhì)量。文獻[4]采用是多路徑路由的方式,來提高網(wǎng)絡(luò)通信的可靠性。

兩路并發(fā)機制是多路徑路由中的一種,但是它不是將信息進行分割傳輸,而是將信息復(fù)制成兩份,沿兩條不同路徑發(fā)送到目標(biāo)節(jié)點,如果一條路徑出現(xiàn)問題,也能保證信息沿另一條路徑順利到達目標(biāo)節(jié)點[5]。所以,兩路并發(fā)機制相比多路徑路由而言會有更高的可靠性[6]。因此,本文采用兩路并發(fā)的傳輸方式來解決這一問題。

1基本方案

穿脈內(nèi)的兩路無線傳輸方式如圖1所示。

圖1 兩路并發(fā)傳輸示意圖Fig 1 Diagram of dual path concurrent transmission

具體的解決思想是:無線終端仍采用單路無線接入方式將信息發(fā)送給無線Mesh路由器節(jié)點,該節(jié)點路由器再將數(shù)據(jù)信息通過兩條不同的無線路徑傳入主干網(wǎng),經(jīng)主干網(wǎng)傳遞到接收此數(shù)據(jù)的終端所在的目標(biāo)節(jié)點路由器,目標(biāo)路由器將數(shù)據(jù)發(fā)送給終端設(shè)備,并負責(zé)去除后續(xù)重復(fù)接收的數(shù)據(jù)。這樣,既可以保證可靠性,也可以保證實時性[7]。為實現(xiàn)上述目標(biāo),本文對兩路并發(fā)機制進行了研究和實驗。圖2給出了兩路并發(fā)傳輸系統(tǒng)的整體框架。

圖2 系統(tǒng)實現(xiàn)框架Fig 2 Implementation framework of system

從圖2看出,將通過修改路由器的內(nèi)核程序?qū)崿F(xiàn)兩路并發(fā)功能,全部修改工作均在網(wǎng)絡(luò)層完成。

2兩路并發(fā)傳輸?shù)脑O(shè)計與實現(xiàn)

2.1方案設(shè)計

本文的實驗中,采用選擇兩條節(jié)點不相交路徑的并發(fā)方式,并采用分配不同信道的方式避免無線Mesh網(wǎng)絡(luò)中無線鏈路間的同頻干擾[8]。由于井下穿脈內(nèi)布設(shè)的路由器節(jié)點很少,且實際應(yīng)用中布點的位置基本固定,所以,本文的實驗均采用手工配置方式完成路由選擇。

正常情況下,數(shù)據(jù)包到達路由器后,通過查找路由表,從某一個網(wǎng)絡(luò)接口轉(zhuǎn)發(fā)出去。而本文需要將同一份數(shù)據(jù)從路由器的兩個接口同時發(fā)送出去,即實現(xiàn)數(shù)據(jù)的并發(fā)傳輸,這就需要對Linux內(nèi)核中的網(wǎng)絡(luò)協(xié)議代碼進行適當(dāng)?shù)男薷腫9]。當(dāng)然,并不是所有的路由器都必須有數(shù)據(jù)并發(fā)功能,只需要在靠近終端設(shè)備的路由器上做數(shù)據(jù)并發(fā)處理,中間的路由器只需做正常的轉(zhuǎn)發(fā)。數(shù)據(jù)并發(fā)傳輸模塊的實現(xiàn)流程如圖3所示。

圖3 路由器上并發(fā)傳輸流程圖Fig 3 Concurrent transmission flowchart on router

1)數(shù)據(jù)包的接收過程

當(dāng)數(shù)據(jù)到達Linux路由器時,路由器會調(diào)用網(wǎng)卡的驅(qū)動程序,將幀封裝成sk_buff結(jié)構(gòu),通過netif_rx( )函數(shù)將數(shù)據(jù)存放在系統(tǒng)的接受隊列中。系統(tǒng)通過軟中斷net_rx_action()函數(shù)從隊列中取數(shù)據(jù)傳給ip_rcv( )函數(shù)(IP層的接收函數(shù))作進一步處理。

ip_rcv( )函數(shù)會統(tǒng)計收到包的總數(shù),按照RFC1122的要求檢查數(shù)據(jù)包的IP首部長度、IP協(xié)議版本、檢驗和、總長度是否正確,丟棄那些錯誤的數(shù)據(jù)包。接著數(shù)據(jù)包流向ip_rcv_finish( )。

ip_rcv_finish()函數(shù)調(diào)用ip_route_input()來查找路由信息,判斷需要進行IP轉(zhuǎn)發(fā)還是直接傳給本機的上層協(xié)議。如果數(shù)據(jù)包需要轉(zhuǎn)發(fā)dst_input()函數(shù)指針指向ip_forward()。

2)數(shù)據(jù)包的轉(zhuǎn)發(fā)過程

ip_forward()函數(shù)把TTL值減1,更新檢驗和,接著是ip_forward_finish()進行相關(guān)處理,然后調(diào)用ip_output()函數(shù)。

ip_output()函數(shù)對IP層發(fā)送申請數(shù)進行統(tǒng)計,把需要通過的網(wǎng)絡(luò)接口存放在skb→dev中,并將skb→protocol初始化為ETH_P_IP,即為以太網(wǎng)上的IP包。接著調(diào)用ip_finish_output()根據(jù)需要進行IP分片,然后ip_finish_output2()函數(shù)調(diào)用neigh_resolve_output()進行ARP解析將MAC地址拷貝到數(shù)據(jù)包中,最后調(diào)用dev_queue_xmit()函數(shù)到達硬件層[10]。

3)數(shù)據(jù)包的并發(fā)

上層的協(xié)議調(diào)用dev_queue_xmit( )以套接字緩沖區(qū)(struct sk_buff *skb)的形式來發(fā)送數(shù)據(jù)包。網(wǎng)絡(luò)設(shè)備由skb→dev指定。dev_queue_xmit( )首先將skb加入Qdisc隊列(q→enqueue(skb,q)),本文根據(jù)從用戶空間傳入的規(guī)則,在出隊的時候?qū)木W(wǎng)卡1發(fā)出去的數(shù)據(jù)skb克隆(skb_clone( ))一份skb2,把skb2發(fā)送到網(wǎng)卡2上,然后修改skb2的目的MAC地址和源MAC地址,再調(diào)用網(wǎng)卡2的驅(qū)動程序就可以把數(shù)據(jù)發(fā)送到下一跳路由器了[11]。這樣,帶有相同數(shù)據(jù)部分的skb和skb2同時發(fā)送到了兩個不同的下一跳,即實現(xiàn)了數(shù)據(jù)沿著多條路徑并發(fā)傳出去。

2.2具體實現(xiàn)

無線Mesh網(wǎng)中鏈路失效只是偶爾發(fā)生,大部分時間幾條路徑都能正常傳輸數(shù)據(jù),這樣接收端可能收到較多的重復(fù)數(shù)據(jù)包,不但增加了接收端的處理負擔(dān),而且可能重復(fù)對設(shè)備進行同樣的操作,引發(fā)錯誤[12]。因此,必須在接收端進行重復(fù)包的處理。

由于接收設(shè)備的網(wǎng)絡(luò)協(xié)議不能修改,本文對重復(fù)數(shù)據(jù)包的處理是在靠近接收端的Linux路由器上實現(xiàn)的。Linux路由器將需要轉(zhuǎn)發(fā)到相同目的地、之前已經(jīng)轉(zhuǎn)發(fā)過的數(shù)據(jù)包丟棄,目的節(jié)點就不會收到重復(fù)的數(shù)據(jù)包。這就需要對經(jīng)過路由器的數(shù)據(jù)包做唯一的標(biāo)識[13]。

為了區(qū)分收到的數(shù)據(jù)包是否重復(fù),必須對每個數(shù)據(jù)包做唯一的標(biāo)識。IP首部中16位的標(biāo)識字段(identification,ID),是一個計數(shù)器,用來產(chǎn)生數(shù)據(jù)包的標(biāo)識,每發(fā)送一個IP數(shù)據(jù)包,IP層都要把計數(shù)器加1,這樣IP數(shù)據(jù)包的標(biāo)識是按次序增加的[14]。本文就是采用IP包的ID作為唯一標(biāo)識。

為了檢測是否出現(xiàn)重復(fù)數(shù)據(jù)包,本文在Linux內(nèi)核中定義了一種新的數(shù)據(jù)結(jié)構(gòu),如圖4所示,將數(shù)據(jù)包的標(biāo)識緩存起來。

圖4 緩存數(shù)據(jù)包標(biāo)識的結(jié)構(gòu)Fig 4 Structure of cache data packet identity

在socket_s{}結(jié)構(gòu)中,為了便于查找和管理將來自于同一個套接字(socket)的ID緩存在一個Hash鏈表中。不同的socket通過next指針(struct socket_s *next)鏈接在一起。上圖中src_ip為源IP地址,src_port為源端口,id[]為指針數(shù)組,指向多個存儲ID的鏈表,node_link_len[]為各條鏈表的長度。flag標(biāo)志反映當(dāng)前socket是否活躍,timer為定時器。

當(dāng)數(shù)據(jù)包到達靠近接收端的路由器時,路由器就開始判斷以前是否收到過這個數(shù)據(jù)包,接著進行相關(guān)處理,其流程如圖5。

圖5 重復(fù)包處理流程Fig 5 Flow chart of repeat data packet processing

由于工業(yè)環(huán)境中對數(shù)據(jù)傳輸?shù)膶崟r性有較高的要求,必須采取一些措施來減小端到端的時延。本次實驗對象井下穿脈語音通信,在生產(chǎn)作業(yè)期間,經(jīng)常會因現(xiàn)場的特殊情況,需要井下、地面進行協(xié)調(diào)聯(lián)絡(luò),因此,保證語音數(shù)據(jù)包的快速轉(zhuǎn)發(fā),使通信信號傳輸暢通是十分必要的。

本文在Linux路由器上采用多協(xié)議標(biāo)記交換(multi-protocol label switching,MPLS)技術(shù)來減小時延,實現(xiàn)數(shù)據(jù)包的快速轉(zhuǎn)發(fā)[15]。

Linux系統(tǒng)內(nèi)核沒有提供對MPLS的支持,本文給內(nèi)核打MPLS相關(guān)的補丁,然后重新編譯內(nèi)核,選上MPLS的有關(guān)項目[16]。新的內(nèi)核啟動后加載MPLS模塊即可支持MPLS。還要擴展用戶空間的工具Iproute,增加"mpls"命令,將加標(biāo)簽、標(biāo)記交換、去除標(biāo)簽等參數(shù)傳入內(nèi)核中。

3實驗測試與結(jié)果分析

3.1快速轉(zhuǎn)發(fā)實驗

實驗采用的網(wǎng)絡(luò)拓撲如圖6所示。

圖6 MPLS轉(zhuǎn)發(fā)實驗網(wǎng)絡(luò)拓撲圖Fig 6 Topological graph of MPLS forwarding experiment network

圖中,R1,R2,R3,R4為具有MPLS功能的Linux路由器,R1和R4為邊緣路由器負責(zé)添加標(biāo)記和去除標(biāo)記;R2和R3進行標(biāo)記交換。PC1和PC2為普通臺式機。

分別測量IP轉(zhuǎn)發(fā)和采用MPLS轉(zhuǎn)發(fā)時,PC1到PC2的往返時延(RTT)。使用ICMP ping包各測量50次得到以下數(shù)據(jù),如表1所示。

表1 往返時延統(tǒng)計

從表1中的數(shù)據(jù)可以看出,采用MPLS技術(shù)進行數(shù)據(jù)包轉(zhuǎn)發(fā)可以在一定程度上減少轉(zhuǎn)發(fā)所花費的時間。

3.2雙路徑并發(fā)傳輸實驗

實驗采用的組網(wǎng)拓撲結(jié)構(gòu)和配置的參數(shù)信息如圖7所示。

圖7 實驗網(wǎng)拓撲與參數(shù)Fig 7 Experimental network topology and parameters

整個實驗分別對三項內(nèi)容進行測試:

1)測試數(shù)據(jù)并行發(fā)送和重復(fù)包處理功能

只開啟R1的數(shù)據(jù)并發(fā)功能,操作命令如下:

從PC1向PC2發(fā)ICMP ping包,得到數(shù)據(jù),如圖8所示。

圖8 PC1 ping PC2結(jié)果Fig 8 Result of PC1 ping PC2

同時,在路由器R3上用tcpdump抓到以下數(shù)據(jù),見圖9所示。

圖9 R3的抓包結(jié)果Fig 9 Packet capturing result of R3

開啟R3的重復(fù)處理功能一段時間,然后,再關(guān)閉重復(fù)處理功能,PC2上得到以下數(shù)據(jù),見圖10所示。

圖10 PC1 ping PC2開關(guān)重復(fù)處理功能結(jié)果Fig 10 Result of switch repeatedly processing on PC1 ping PC2

從上面的數(shù)據(jù)可以看出:R3的兩個接口(eth0,eth1)均收到PC1向PC2發(fā)的、相同的ping請求包,并且都轉(zhuǎn)發(fā)給PC2,PC2發(fā)回了ping響應(yīng),PC1上收到重復(fù)包(有DUP標(biāo)記);當(dāng)開啟R3的重復(fù)處理功能,PC1沒有收到PC2的重復(fù)響應(yīng)包。由此可知,R1實現(xiàn)了數(shù)據(jù)并發(fā),R3完成了重復(fù)處理。

2)測試網(wǎng)絡(luò)的可靠性和實時性

本次的可靠性和實時性測試主要針對語音通信質(zhì)量進行,直接在兩臺筆記本上運行Windows的NetMeeting程序,通過觀察收發(fā)效果來檢驗網(wǎng)絡(luò)的可靠性和實時性。

具體測試時,分別采用切斷路由器2或者路由器4的電源,以及在機車運行通過復(fù)雜環(huán)境時持續(xù)通話的方式進行實驗。測試結(jié)果表明,收發(fā)包始終都能正常進行,并且丟包率較低。

3)單路與兩路并發(fā)傳輸成功率

分別統(tǒng)計單路和兩路并發(fā)的傳輸成功率:每次PC1向PC2發(fā)100個ICMP ping包,兩種情況各測3次。結(jié)果如圖11所示。

圖11 數(shù)據(jù)傳輸成功率Fig 11 Success rate of data transmission

很明顯,雙路并發(fā)的成功率明顯高于單路傳輸,與設(shè)計目標(biāo)一致。

從以上三個實驗結(jié)果來看,將兩路并發(fā)機制引入到礦井通信系統(tǒng)中能夠有效減小路由切換帶來的延遲影響,快速轉(zhuǎn)發(fā)機制,能夠保證通信系統(tǒng)的實時性要求,通過重復(fù)包處理流程,減小了冗余信息。在實際傳輸過程中,雙路并發(fā)的數(shù)據(jù)傳輸成功率也明顯高于單路傳輸,這就說明將雙路并發(fā)機制引入到礦井通信系統(tǒng)是可行的,能夠有效地提高整個系統(tǒng)的可靠性和實時性。

4結(jié)束語

本文研究了井下通信系統(tǒng)中的無線傳輸?shù)奶攸c,在其基礎(chǔ)上引入了雙路并發(fā)機制。整篇文章詳細給出了實驗過程和結(jié)果,在實現(xiàn)過程中,采用了兩條不相交路徑同時發(fā)送的傳輸方式,通過定義專用數(shù)據(jù)結(jié)構(gòu)進行重復(fù)包的排查和丟棄處理,并利用多協(xié)議標(biāo)記交換技術(shù)實現(xiàn)數(shù)據(jù)包的快速轉(zhuǎn)發(fā)過程。最后在礦井內(nèi)實地環(huán)境進行了現(xiàn)場測試,測試結(jié)果證明了兩路并發(fā)傳輸方式的可行性和時效性。本文只是考慮了路由切換時的延遲問題,沒有考慮路由節(jié)點的損壞和通信鏈路的中斷時的解決方法,在后續(xù)研究工作中,將進一步研究通過多拓撲路由切換來提高井下通信系統(tǒng)安全性和容災(zāi)能力。

參考文獻:

[1]Domenico Sicignno,Danilo Tardioli.Real-time wireless multi-hop protocol in underground voice communication[J].Ad Hoc Networks,2011(1):1-13.

[2]Chakchouk N,Hamdaoui B.Traffic and interference aware sche-duling for multiradio multichannel wireless mesh networks[J].IEEE Transactions on Vehicular Technology,2011,60(2):555-565.

[3]Israel Cidon,Raphael Rom.Analysis of multi-path routing[J].IEEE/ACM Transactions on Networding,1999,7(6):885-896.

[4]郝志強.井下無線通信網(wǎng)絡(luò)的設(shè)計與實踐[D].武漢:武漢大學(xué),2013.

[5]伍鵬飛.無線Mesh網(wǎng)快速可靠傳輸機制的設(shè)計與實現(xiàn)[D].武漢:武漢大學(xué),2010.

[6]張洋.無線Mesh網(wǎng)絡(luò)管理系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:武漢大學(xué),2011.

[7]Kodialam M,Nandagopal T.The effect of interference on the capacity of multihop wireless networks[C]∥2004 Proceedings of International Symposium on Information Theory,ISIT 2004,IEEE,2004:472.

[8]Liu T,Liao W.Interference-aware QoS routing for multi-rate multi-radio multi-channel IEEE 802.11 wireless mesh network-s[J].IEEE Transactions on Wireless Communications,2009,8(1):166-175.

[9]Balachandran K,Kadaba S R,Nanda S.Channel quality estimation and rate adaption for cellular mobile radio[J].IEEE J Sel Areas Commun,1999,17(7): 1244-1256.

[10] Goldsmith A,Chua S G.Adaptive coded modulation for fading channels[J].IEEE Transactions on Communications,1998,46(5):595-602.

[11] Pham P P,Perreau S.Performance analysis of reactive shortest path and multipath routing mechanism with load balance[C]∥Twenty-Second Annual Joint Conference of the IEEE Computer and Communications,IINFOCOM 2003,IEEE Societies,2003: 251-259.

[12] Tao M,Lu D,Yang J.An adaptive energy-aware multi-path routing protocol with load balance for wireless sensor networks[J].Wireless Personal Communications,2012,63(4):823-846.

[13] 張小強.基于多信道多接口無線Mesh網(wǎng)絡(luò)研究[D].西安: 西安電子科技大學(xué),2012.

[14] 時超.Mesh網(wǎng)絡(luò)中的多信道協(xié)議研究[D].西安: 西安電子科技大學(xué),2011.

[15] Chakchouk N,Hamdaoui B.Traffic and interference aware sche-duling for multiradio multichannel wireless mesh networks[J].IEEE Transactions on Vehicular Technology,2011,60(2):555-565.

[16] 張文安.網(wǎng)絡(luò)化控制系統(tǒng)的時延與丟包問題研究[D].杭州: 浙江工業(yè)大學(xué),2010.

Underground communication based on dual path concurrent transmission*

HU Ran1,2, GUO Cheng-cheng1, YANG Jian-feng1

(1.School of Electronic Information,Wuhan University,Wuhan 430072,China;2.No.63892 Forces of PLA,Luoyang 471003,China)

Abstract:Aiming at problems of low reliability and high delay of wireless communication exists in coalmine,introduce a dual path concurrent transmission mechanism to realize real time and reliability of communication.Introduce design idea and realization process of double path concurrent transmission in kernel space in detail,by defining special data structure for investigation and discard of repeated packets,and use MPLS technology to realize fast forwarding of data packets.Field environmental test is carried out in mine,and the test results prove the dual path concurrent transmission mode has high reliability and low time delay.

Key words:wireless mesh networks(WSNs); communication in mine; dual path concurrent transmission; packet loss rate; multipath routing

DOI:10.13873/J.1000—9787(2016)03—0032—05

收稿日期:2015—06—08

*基金項目:國家高技術(shù)研究發(fā)展“863”計劃資助項目(2012AA010904);四川省科技計劃資助項目(2013GZ0016);成都大學(xué)項目(20804)

中圖分類號:TP 393

文獻標(biāo)識碼:A

文章編號:1000—9787(2016)03—0032—05

作者簡介:

胡然(1986-),男,湖北鐘祥人,碩士,工程師,主要研究方向為Mesh網(wǎng)絡(luò)與無線工業(yè)控制網(wǎng)絡(luò)。