龍昭華,李 吳,蔣貴全
(重慶郵電大學(xué)計算機科學(xué)與技術(shù)學(xué)院,重慶 400065)
無線傳感器網(wǎng)絡(luò)[1](WSNs)是一種多跳的無線網(wǎng)絡(luò),由大量的低速率、低功耗、具有感應(yīng)功能的嵌入式設(shè)備組成,用來監(jiān)測比如溫度、濕度、振動、地震、事件等。在傳感器節(jié)點能量和處理能力受到限制的前提下,為網(wǎng)絡(luò)中的數(shù)據(jù)傳輸提供可靠的傳輸控制協(xié)議,保證獲取的信息有效是無線傳感器網(wǎng)絡(luò)需要解決的基本問題。
現(xiàn)有的無線傳感器網(wǎng)絡(luò)傳輸控制協(xié)議可以分為兩類:解決擁塞控制,如 ESRT 協(xié)議[2],BGR 協(xié)議[3]等;解決質(zhì)量保證,如 RBC 協(xié)議[4],GRAB 協(xié)議[5]等。這些協(xié)議主要在傳輸層上做研究,一定程度上限制了傳輸控制性能。本文對Ad Hoc網(wǎng)絡(luò)中一種隱式逐跳的跨層擁塞控制協(xié)議進行改進,并將其用于處理無線傳感器網(wǎng)絡(luò)中的傳輸控制問題。仿真實驗表明:改進后算法能夠在保持能量有效性的同時,提高傳輸控制質(zhì)量。
文獻[6]介紹了Ad Hoc網(wǎng)絡(luò)中一種隱式逐跳的擁塞控制協(xié)議。但是鑒于Ad Hoc網(wǎng)絡(luò)和無線傳感器網(wǎng)絡(luò)的差異,必須對Ad Hoc網(wǎng)絡(luò)中這種協(xié)議做適當(dāng)?shù)男薷牟拍軌蜻m用于無線傳感器網(wǎng)絡(luò)。
Ad Hoc網(wǎng)絡(luò)中隱式逐跳擁塞控制協(xié)議基本思想是:鏈路是雙向通信,在一條鏈路中有源節(jié)點A、中間節(jié)點B、目的節(jié)點C三個節(jié)點。協(xié)議需要改進的原因:
1)中間節(jié)點B發(fā)出的信息,A和C都能收到,如果節(jié)點A監(jiān)測到自己發(fā)出去的數(shù)據(jù),那么認為A發(fā)出的數(shù)據(jù)包已經(jīng)成功發(fā)送到下一跳節(jié)點B,通過隱式的確認,減少網(wǎng)絡(luò)中的數(shù)據(jù)包轉(zhuǎn)發(fā)的數(shù)量。但在無線傳感器網(wǎng)絡(luò)中節(jié)點B也要采集數(shù)據(jù),處理后轉(zhuǎn)發(fā)的數(shù)據(jù)包,節(jié)點A不一定能識別,在整個鏈路中會引發(fā)大量的數(shù)據(jù)重傳,導(dǎo)致網(wǎng)絡(luò)擁塞。
2)Ad Hoc網(wǎng)絡(luò)的拓撲結(jié)構(gòu)是在不斷變化的,不穩(wěn)定的路由會導(dǎo)致網(wǎng)絡(luò)鏈路的中斷、數(shù)據(jù)包丟失,所以,很難保證傳輸可靠性。
3)協(xié)議[6]通過監(jiān)測數(shù)據(jù)包是否轉(zhuǎn)發(fā)來顯示網(wǎng)絡(luò)的擁塞狀況,通過注入數(shù)據(jù)包速率解決擁塞,在無線傳感器網(wǎng)絡(luò)中是不夠的。為了保證網(wǎng)絡(luò)消息的及時性和有效性,必須引入更加合理的擁塞解決機制。
已有無線傳感器網(wǎng)絡(luò)傳輸協(xié)議中,有些通過顯示確認保證數(shù)據(jù)包的成功轉(zhuǎn)發(fā),如Siphon協(xié)議[7],其缺點是發(fā)送顯示的確認包不僅會消耗大量的能量,而且會占用信道,降低了網(wǎng)絡(luò)的吞吐量。跨層協(xié)議,如HCCC協(xié)議[8]、HCCC協(xié)議在解決擁塞時,MAC層需要一直監(jiān)測信道的占用情況,消耗了大量能量,而且缺失可靠性。本文設(shè)計了一種無線傳感器網(wǎng)絡(luò)的隱式逐跳的擁塞控制算法。對以上算法做如下改進,包括路由維護、隱式確認機制、擁塞處理機制。
1.2.1 路由維護
無線傳感器網(wǎng)絡(luò)的擁塞不是發(fā)生在一條鏈路或者某一個單獨的節(jié)點,而是空間的[6]。節(jié)點發(fā)出的信息鄰居節(jié)點都能接收到,為了防止無線傳感器網(wǎng)絡(luò)中的泛洪出現(xiàn),本文中每一跳節(jié)點都知道本地節(jié)點最優(yōu)路徑的源節(jié)點和目的節(jié)點,當(dāng)收到的數(shù)據(jù)包目的節(jié)點不是自身的時候,節(jié)點不予響應(yīng),保持休眠狀態(tài)。數(shù)據(jù)包的包頭格式如圖1所示。算法具體實現(xiàn)時,每個數(shù)據(jù)包的源節(jié)點有1個,目的節(jié)點有2個,方便實現(xiàn)隱式確認;擁塞警告通過擁塞度量測定發(fā)給上游區(qū)節(jié)點。
圖1 數(shù)據(jù)包包頭信息Fig 1 Data packet header information
1.2.2 隱式確認機制
無線傳感器網(wǎng)絡(luò)中的每一跳節(jié)點都會采集數(shù)據(jù),簡單監(jiān)測數(shù)據(jù)包轉(zhuǎn)發(fā)不能實現(xiàn)隱式確認,為了實現(xiàn)隱式確認,引入了相對信息熵,計算2個節(jié)點之間的信息相關(guān)程度,通過信息的相關(guān)程度來識別包的轉(zhuǎn)發(fā)是否成功。圖2所示的是無線傳感器網(wǎng)絡(luò)中隱式確認機制原理流程圖。
圖2 無線傳感器網(wǎng)絡(luò)中隱式確認機制Fig 2 Implicit acknowledgment mechanism in WSNs
為了方便理解,引入了信息論中的一些概念,無線傳感器網(wǎng)絡(luò)的事件模型抽象為信息熵理論數(shù)學(xué)模型如下:引用香農(nóng)公式[9],用節(jié)點信息熵H(x)來計算發(fā)出和接收數(shù)據(jù)的平均信息量,如公式(1)所示
其中,E為概率的統(tǒng)計平均值,q表示ai(i=1,2,…,q-1,q)的取值有q種可能;P(ai)為字符ai出現(xiàn)的概率,H(x)表征了數(shù)據(jù)的統(tǒng)計特征,是總體平均不確定性的量度(bit/數(shù)據(jù)包)。式(1)中的單位取決于對數(shù)函數(shù)的底數(shù)。本文取對數(shù)函數(shù)底數(shù)為2,即表示計算產(chǎn)生1 bit的信息量,不僅方便處理器識別處理,而且不會消耗很多能量。
通過以上方法計算節(jié)點A與節(jié)點B發(fā)送的數(shù)據(jù)包的信息量,然后進行比較,用數(shù)學(xué)公式節(jié)點相對信息熵表示
相對信息熵U(A‖B)用于計算任意2個數(shù)據(jù)包之間信息熵的差異大小,它的物理意義是2組概率分布之間的差異程度。計算相對信息熵U(A‖B)的值,這個值越小,表明2組概率分布越接近,這2個節(jié)點之間的數(shù)據(jù)相似程度越大。在本文中,U(A‖B)≤0.5,2個數(shù)據(jù)包中的信息至少有50%相同,證明A,B節(jié)點之間通信成功,隱式的確認在無線傳感器網(wǎng)絡(luò)中實現(xiàn)。
1.2.3 擁塞處理機制
在文獻[6]中,主要通過調(diào)節(jié)注入數(shù)據(jù)包的速率解決擁塞。無線傳感器網(wǎng)絡(luò)需要采集實時有效數(shù)據(jù),為了保證傳輸?shù)膶崟r性,需要傳輸層和MAC層協(xié)調(diào)合作,加快數(shù)據(jù)包的轉(zhuǎn)發(fā),從而快速解決擁塞,分為擁塞檢測和快速擁塞處理2個階段。
1)擁塞檢測
本文中,假設(shè)每個節(jié)點只能存放3個數(shù)據(jù)包:一個是轉(zhuǎn)發(fā)出去但還沒有收到隱式確認的數(shù)據(jù)包;一個是上游節(jié)點發(fā)出,節(jié)點已經(jīng)收到但沒有轉(zhuǎn)發(fā)出去的數(shù)據(jù)包;最后一個用來接收下游節(jié)點反饋包,用來計算節(jié)點之間信息相關(guān)程度。
節(jié)點收不到下游節(jié)點的確認,無法確認數(shù)據(jù)轉(zhuǎn)發(fā)成功。緩存中已經(jīng)轉(zhuǎn)發(fā)的數(shù)據(jù)包丟棄受阻,長時間收不到下游節(jié)點的確認會導(dǎo)致本地節(jié)點重復(fù)發(fā)送探測包,導(dǎo)致網(wǎng)絡(luò)的局部擁塞。規(guī)定當(dāng)?shù)诙伟l(fā)送探測包下游節(jié)點仍然處于contention狀態(tài),則判斷網(wǎng)絡(luò)已經(jīng)發(fā)生了擁塞。接著發(fā)出的RFA探測包中,將會加入擁塞警告提示,這個帶有擁塞警告ACK包會以逐跳的方式通知上游區(qū)節(jié)點,提示網(wǎng)絡(luò)出現(xiàn)亞健康,直到擁塞解決。ACK包只有包頭,消耗能量少,具體實現(xiàn)流程如圖3所示。
圖3 擁塞檢測機制Fig 3 Congestion detection mechanism
2)快速擁塞處理
在無線傳感器網(wǎng)絡(luò)中為了提高傳輸質(zhì)量,還必須加快擁塞區(qū)節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù)包的速度。本文通過MAC層、路由層的合作來加快擁塞區(qū)域節(jié)點接入信道的幾率。
無線傳感器網(wǎng)絡(luò)中,同一時刻只允許一個設(shè)備占用信道。中間節(jié)點接收到擁塞警告后,立刻增大本地信道接入窗口,減少自己競?cè)胄诺赖膸茁?,把信道留給擁塞區(qū)節(jié)點,讓其快速接入信道,加速轉(zhuǎn)發(fā)數(shù)據(jù)包。通過MAC層的合作,來降低擁塞處理的時間,擁塞盡快解決,具體方法如下:
1)路由層檢測ACK包頭中距離擁塞區(qū)域的跳數(shù);
2)MAC層訪問信道采用CSMA/CA機制競爭信道,根據(jù)距離擁塞區(qū)域的跳數(shù),決定在[0,2BE-1]范圍內(nèi)產(chǎn)生一個等待時間,來減少節(jié)點同時發(fā)送數(shù)據(jù)造成碰撞的可能;
3)收到擁塞警告的節(jié)點將自己的BE值增大,越靠近擁塞區(qū)域節(jié)點的BE值越小,擁塞區(qū)域節(jié)點BE值根據(jù)擁塞情況,以同樣方法設(shè)置,使得擁塞區(qū)域等待時間最短,接入信道幾率最快,確保數(shù)據(jù)包快速轉(zhuǎn)發(fā),快速解決擁塞。
為了驗證本算法的性能,用Matlab做仿真實驗,選取經(jīng)典的ESRT協(xié)議和HCCC協(xié)議作對比?,F(xiàn)在將本文的仿真場景設(shè)置如下:
1)選取100個節(jié)點均勻布局在180m×180m的正方形區(qū)域內(nèi),目的節(jié)點放在監(jiān)測區(qū)域的邊界上。
2)每個節(jié)點通信距離為20 m,干擾距離為45 m,任意2個相鄰節(jié)點間的距離都是20 m,鏈路是開環(huán)的。
3)采用靜態(tài)路由,最佳路由已經(jīng)確立。節(jié)點每單位時間發(fā)送10個數(shù)據(jù)包,每個數(shù)據(jù)包大小為32 byte,節(jié)點緩存中存放3個數(shù)據(jù)包。
圖4描述了仿真過程中的網(wǎng)絡(luò)傳輸延遲,從圖中可以看出:ESRT和HCCC下的網(wǎng)絡(luò)傳輸延遲得到了一定的控制,本文中每個緩存中只有3個數(shù)據(jù)包,數(shù)據(jù)包在網(wǎng)絡(luò)中停留的時間非常短,加上隱式確認轉(zhuǎn)發(fā)和有效的擁塞解決機制,大大降低了數(shù)據(jù)包在緩沖區(qū)內(nèi)的平均等待時間,減少了在網(wǎng)絡(luò)中的傳輸延遲。
圖4 網(wǎng)絡(luò)傳輸延遲比較Fig 4 Comparison of network transmission delay
圖5描述了仿真過程中的丟包率,丟包主要因為擁塞和信道不穩(wěn)定產(chǎn)生的,本文控制緩存中的數(shù)據(jù)包的數(shù)量為3個,如果確認數(shù)據(jù)成功轉(zhuǎn)發(fā),那么緩存立即清空。發(fā)生擁塞后,通過擁塞警告通知上游節(jié)點減少注入擁塞區(qū)的數(shù)據(jù)包,加快擁塞區(qū)數(shù)據(jù)包轉(zhuǎn)發(fā),網(wǎng)絡(luò)始終保持在一個比較良性的狀態(tài),發(fā)生擁塞的可能大大降低;基于相對信息熵的隱式確認機制,防止丟包。從圖中可以看出:與經(jīng)典的ESRT協(xié)議和HCCC協(xié)議比較,本算法的丟包率始終保持在很小的百分比率,不到上述協(xié)議的1/5。
圖5 網(wǎng)絡(luò)丟包率的比較Fig 5 Comparison of network packet loss rate
圖6描述了仿真過程中的網(wǎng)絡(luò)吞吐量,在本文中采用RFA探測包和相對信息熵結(jié)合降低重傳,減少不必要的數(shù)據(jù)包轉(zhuǎn)發(fā),較好的擁塞解決機制確保了網(wǎng)絡(luò)的良好狀況,由圖可以看到:當(dāng)網(wǎng)絡(luò)的吞吐量達到一個最佳點的時候,HCCC協(xié)議和ESRT協(xié)議都不能保持最優(yōu)的網(wǎng)絡(luò)吞吐量,而本協(xié)議能一直保持下去。
圖6 網(wǎng)絡(luò)吞吐量的比較Fig 6 Comparison of network throughput
本文在無線傳感器網(wǎng)絡(luò)中提出了一種隱式逐跳跨層合作的傳輸控制算法,通過路由層傳輸層MAC層相互合作,解決無線傳感器網(wǎng)絡(luò)中的傳輸控制問題,在一定程度上有效地提高了網(wǎng)絡(luò)服務(wù)的質(zhì)量,但是設(shè)計思想還不夠全面和成熟,無線傳感器網(wǎng)絡(luò)具有特殊的用途和特定的應(yīng)用場景,設(shè)計完整的傳輸控制協(xié)議,要從整個無線傳感器網(wǎng)絡(luò)的各個層次考慮,比如:根據(jù)應(yīng)用層來選擇優(yōu)先需要傳輸?shù)臄?shù)據(jù)來提高網(wǎng)絡(luò)的有效性等,還需要做很多工作。
[1] 于宏毅,李 鷗,張效義.無線傳感器網(wǎng)絡(luò)理論技術(shù)與實現(xiàn)[M].北京:國防工業(yè)出版社,2008.
[2] Akan O B,Akyildiz I F.Event-to-sink reliable transport in wire-[J].IEEE/ACM Transactions on Networking,2005,13(5):1003 -1016.
[3] Gulluccio L,Campbell A T,Palozzo S.CONCERT:Aggregationbased congestion control for sensor networks[C]∥Proc of the 3rd ACM Conf on Embedded Networked Sensor Systems(Sen-Sys),San Diego:ACM ,2005:274 -275.
[4] Zhang H W,Arora A,Choi Y R,et al.Reliable bursty convergecast in wireless sensor networks[C]∥Urbana-Champaign:ACM,2005:266276.
[5] Ye F,Zhong G,Lu S W,et al.Gradient broadcast:A robust data delivery protocol for large scale sensor networks[J].ACM Wireless Networks,2005,11(3):285 -298.
[6] Euermann B,Lochert C,Mauve M.Implicit hop-by-hop congestion control in wireless multihop networks[J].Ad Hoc Networks,2008,6(2):260 -286.
[7] Wan Y C,Eisenman S B,Campbell A T,et al.Siphon:Overload traffic management using multi-radio virtual sinks in sensor networks[C]∥Proc of the 3rd ACM Conference on Embedded Networked Sensor Systems(SenSys),San Diego:ACM,2005:116 -129.
[8] 吳國偉,張 巖.無線傳感器網(wǎng)絡(luò)中逐跳跨層擁塞控制[J].計算機工程,2010,36(16):108 -109.
[9] 傅祖蕓.信息論:基礎(chǔ)理論與應(yīng)用[M].北京:電子工業(yè)出版社,2010.