林 勇
(重慶電子工程職業學院通信工程學院,重慶 401331)
目前,無線傳感網絡WSNs(Wireless Sensor Networks)在各領域廣泛使用[1]。WSNs內傳感節點實時地感測數據,然后,將數據傳輸至基站,再由基站將數據傳輸至控制中心,進而實現對數據的監測。因此,數據收集成為WSNs的關鍵。在WSNs的所有應用場景中,數據流量服從匯聚格局,即所有節點均向基站傳輸數據[2]。
網絡內的節點扮演了兩個角色:①向基站傳輸感測數據;②協助其他節點,向基站轉發數據。因此,在基站鄰近區域就很容易形成流量瓶頸現象。即基站附近的節點,相比于其他節點,承擔了更多的轉發數據任務(高負載)[3]。然而,由于傳感節點能量、存儲容量有限,在高負載流量環境下,形成流量擁塞問題,傳感節點的隊列存儲區不能滿足增長的流量要求,這就容易形成隊列溢出,最終導致數據包丟失。
通常,采用負載平衡路由協議處理流量擁塞問題。這些協議常采用鏈路質量、接入時延等動態路由指標,并利用這些路由指標平衡網絡流量。為此,本文提出基于鏈路質量和隊列時延的混合路由QDLQR。QDLQR路由引用動態的路由指標平衡網絡流量。
本節利用數據包隊列時延和期望傳輸次數建立混合路由指標,再依據此指標構建通往基站的路由。

對于每個出隊列的數據包,節點就計算它的停留時間。為了能夠實時地統計數據包隊列時延[5],節點統計最近10個數據包的停留時間,并將其的平均值作為數據包隊列時延PQD(Packet Queueing Delay),如式(1)所示。
(1)
式中:Di表示節點Si的數據包隊列時延PQD。而m表示最近出隊列的數據包數,且m≤10。當節點在出隊的數據包少于10時,m<10,如圖1所示[6]。隊列緩沖區具有10個單元,且最多可容納10個數據包。當信道空閑時,數據包就出列,傳輸至信道上。

圖1 數據包隊列示意圖
由于無線媒介的共享特性,無線鏈路存在不可靠性,這也就導致數據包傳輸的碰撞和干擾。因此,在大多數情況下,節點需要多次重傳傳輸才能完成數據包的傳輸。傳輸次數越多,表明鏈路質量越差。通常,引用期望傳輸次數ETX(Expected Transmission Count)估計鏈路質量。
作為路由指標,ETX等于節點成功傳輸一個數據包所需的重傳次數。依據IEEE 802.15.4的無碰撞的多載波監聽CSMA/CA(Carrier Sense Multiple Access with Collision Avoidance)協議,每個數據包允許重傳的最大次數為4。一旦超過4次,仍未成功傳輸,則直接將數據包丟棄。
QDLQR協議也引用ETX指標估計鏈路質量。每條鏈路的ETX等于每傳輸一個數據包所需的傳輸次數[7]。由于傳輸方向是雙向的,每條路由的ETX等于每條鏈路(正、反向鏈路)的ETX總和。例如,若一個由2跳構成的路由,如果它的數據包傳輸成功率為100%,則其ETX值為3。若它的數據包傳輸成功率降低至50%,則其ETX值為6。
因此,可將鏈路的ETX定義為:
(2)
式中:df表示數據發送傳輸成功率,dr表示數據接收率。如圖2所示,節點A、B構成一條鏈路linkA,B。其中df表示從節點A傳輸至節點B的傳輸成功率,相應地,dr表示節點A接收來自節點B的成功率。

圖2 節點A與節點B間的鏈路
為了計算df和dr,節點周期地廣播探測包。每個探測包內嵌入了自己和鄰居節點所所接收的探測包數。依據所發送的探測包數以及鄰居節點所成功接收的探測包數,便可計算單向數據傳輸成功率r(t):
(3)
式中:x表示鄰居節點實際接收的數據包數,而count(A)表示節點A傳輸的數據包數。
接下來,以圖2為例分析節點A如何計算df和dr。假定A在一段時間內發送的探測包數為count(A)。節點B周期地廣播探測包,其包含它從各鄰居節點所接收的探測包Packetprobe。當節點接收了來自節點B廣播的Packetprobe,則就知道節點B接收幾個由自己發送的探測包,即x值。最后,就可依據式(3)計算df。類似地,由于各節點都是周期地廣播探測包,節點A也能夠知道在一定時間內應從節點B所接收的探測包數。再依據從節點B實際接收的探測包數,便可計算dr。最終,可依據式(2)計算鏈路linkA,B的ETX。
為了更好地選擇下一跳轉發節點,QDLQR路由將隊列時延和鏈路質量進行融合,構成新的路由指標。隊列時延反映了節點自身的流量負載問題。隊列時延越大,表明節點負載越嚴重。而ETX反映了鏈路質量。ETX越大,鏈路質量越差。為此,引用混合路由指標Com_rout,其定義如式(4)所示:
Com_rout=αD+βETX
(4)
式中:α、β分別表示隊列時延、ETX的權重系數。從式(4)可知,對于任意一個節點,它的混合路由指標越大,由它構建的鏈路質量就越差。
當節點(假定節點i)需要傳輸數據包時,它就計算一跳鄰居節點內每個節點的混合路由指標。假定節點i的一跳鄰居節點集為Ni。節點i從Ni中選擇具有最小的Com_rout、且大于1的節點作為下一跳轉發節點,如式(5)所示:
(5)
式中:Com_rout(i)表示節點i的混合路由指標。而|Ni|表示鄰居節點集Ni的節點數。通過式(5)選擇具有最小的混合路由指標的節點(假定為節點k)作為下一跳轉發節點。
每個數據包源節點依據式(5)選擇下一跳轉發節點,進而構成數據傳輸路由。如圖3所示,各節點先周期地交互探測包,就能得到每個節點的混合路由指標,例如節點B的Com_rout(B)=3,而節點C的混合路由指標為4。

圖3 數據傳輸示意圖
如圖3所示,數據包攜帶節點A只有一個鄰居節點,因此,只能選擇節點B作為下一跳轉發節點,然后,節點B從它的鄰居集NB={C,D}中選擇具有最低混合路由指標的節點作為下一數據包轉發節點,因此,節點C成為下一跳。以此類推,最終便形成{A,B,C,E,F}路由。
為了更好地分析QDLQR協議,利用Cooja仿真器[8]建立仿真平臺[9]。引用IEEE 802.15.4協議作為物理層協議,并依據CSMA/CA策略接入媒介[10-11]。
選擇引用ETX指標的RPL協議和基于最小跳數[12]的HopCount路由作為參照,并分析它們的數據包傳遞率、隊列溢出和端到端傳輸時延性能。同時考查式(4)的α、β值對QDLQR性能的影響,考慮三種情況:①α=0.75,β=0.25;②α=0.5,β=0.5;③α=0.25,β=0.75。這三種情況分別標記為QDLQR_0.75、QDLQR_0.5、QDLQR_0.25。每次實驗獨立重復20次,取平均值作為最終的實驗數據。
數據包傳遞率是指由基站所接收的數據包數與網絡內總體產生的數據包數之比。本次實驗分析QDLQR、RPL和HopCount協議的數據包傳遞率,同時考慮低流量、高流量兩類場景。前者為每個節點每秒產生1個數據包(1 packet/second/node),后者指每個節點每秒產生10個數據包(10 packet/second/node)。
圖4顯示了各協議在低流量、高流量場景下的數據包傳遞率,且節點數從10、20、40和60變化。從圖4(a)可知,在低流量環境下,所有協議的數據包傳遞率相近,而QDLQR協議的數據包傳遞率并不明顯。原因在于:在低流量環境下,無線媒介的多數時間是空閑的,負載平衡路由對數據包傳遞率的影響甚少。

圖4 數據包傳遞率
然而,當流量增加后,相比于RPL和HopCount協議,QDLQR協議的數據包傳遞率得到有效地提升。而RPL協議的數據包傳遞率優于HopCount協議,原因在于HopCount協議采用靜態的路由指標,這就無法平衡節點間負載,使得部分節點遭遇擁塞、隊列溢出,最終降低了數據包丟失。而RPL協議引用動態的路由指標,但它也不足以平衡負載,難以避免因隊列溢出而丟失數據包的現象。
此外,相比QDLQR_0.5和QDLQR_0.25,QDLQR_0.75協議獲取最高的數據包傳遞率。原因在于:當α=0.75,意味著隊列時延在混合路由指標中的比重更大,這有利于避免擁塞路徑,提高了數據傳輸的有效性。
網絡擁塞的一個負面影響就是隊列溢出,這增加大了數據包丟失率。為此,分析QDLQR協議在隊列溢出方面的性能。由于只可能在高流量環境下,才可能出現隊列溢出的現象。
因此,本次實現分析了每個節點每秒產生10個數據包(10 packet/second/node)、每個節點每秒產生5個數據包(5 packet/second/node)兩種高流量的環境,因隊列溢出導致數據包丟失的比例(以下簡稱溢出-丟失率),實驗數據如圖5所示。

圖5 隊列溢出對數據包丟失的影響
從圖5可知,相比于其他協議,QDLQR協議的溢出-丟失率很小。在最糟糕的情況,QDLQR協議的溢出-丟失率也只有1%。原因在于:QDLQR協議能夠有效地平衡各跳路由間的流量負載,避免部分節點承擔高負載的情況。而HopCount協議的溢出-丟失率很高,這主要是因為它采用了靜態路由指標。
最后分析QDLQR協議的端到端傳輸時延,其等于數據包從源節點傳輸至基站的時間。為此,本次實驗環境的參數如下:節點數為40,流量分別為1 packet/second/node和10 packet/second/node,實驗數據如圖6所示。

圖6 端到端傳輸時延
從圖6可知,各協議的時延在不同跳數環境下的相近,HopCount協議的時延略低于其他協議。相比于,RPL和HopCount協議的時延低于QDLQR協議,原因在于:RPL和HopCount協議因隊列溢出而丟失了較多數據包,這就降低了那些未丟失數據包的傳輸時延。
針對無線傳感網絡的數據收集問題,提出基于隊列時延和鏈路質量的WSNs路由QDLQR。QDLQR協議充分考慮了數據包隊列時延,并依據ETX評估鏈路質量,再通過融合隊列時延和鏈路質量,構建新的路由指標。最后,通過此路由指標構建路由。仿真數據表明,提出的QDLQR路由有效地降低數據包丟失率。