謝英輝,彭維捷,陶志勇
(1.長沙民政職業技術學院 軟件學院,湖南 長沙 410004;2.長沙商貿旅游學院,湖南 長沙 410004)
作為一種新興的信息采集技術,無線傳感網絡(Wireless Sensor Networks,WSNs)具有組織、部署便捷等優勢[1-2]。目前,WSNs已在多個領域內廣泛使用,如健康醫療,野外環境監測。WSNs內節點感測環境數據,再將數據傳輸至匯聚節點,進而監測環境。
不失一般性,多數WSNs內節點的能量和通信能力有限,這阻止了大型網絡內節點與匯聚節點直接通信。因此,多數節點需通過多跳方式才能將數據傳輸匯聚節點。在這種場景下,如何建立能耗低的路由成為WSNs一項挑戰工作。
盡管降低節點能耗是WSNs的一項重要工作,但是數據傳輸率以及安全問題也不容忽視。文獻[3-5]討論了如何降低WSNs的能耗問題。例如,文獻[5]提出基于總能量成本的分布式能耗均衡路由(Distributed Energy Balanced Routing,DEBR)。DEBR路由依據從源節點至匯聚節點的總能量成本決策路由。除了能耗和數據傳輸率問題外,安全也是WSNs不容忽視的問題。然而,現存的多數研究工作只單獨地考慮三個問題中某一個問題,或者兩個,它們并沒有同時考慮這三個問題。
此外,由于生物智能算法在解決復雜系統問題的優勢,其被廣泛應用于WSNs領域,其中蟻群算法得到較廣泛的應用。例如,文獻[6]針對信息中心網絡,提出基于是蟻群的路由算法。通過相鄰節點間的數據相似性、興趣螞蟻隊列長度等因素,計算轉發概率模型,并利用輪盤賭模型選擇興趣螞蟻轉發接口;文獻[7]將量子蟻群算法引入簇間路由,充分利用蟻群算法在全局尋優和收斂速度的方面的優勢,搜索最短路徑。
受上述文獻的啟發,本文考慮數據傳輸率以及節點的信任問題,提出基于蟻群算法的能耗均衡的安全路由ACES。主要工作可歸納如下:①在構建路由時,不僅考慮能耗,還考慮了安全和數據傳輸率。而現存的多數路由并沒有考慮這三個因素;②采用蟻群算法構建路由,利用節點的能量、信任值和位置信息融入蟻群算法中的狀態轉移函數、信息素啟發函數和信息素的更新函數中,使尋徑螞蟻能夠在能耗均衡和保證路由安全的基礎上,快速建立安全路由;③建立仿真平臺,分析ACES路由防御了泛洪攻擊、黑洞攻擊能力以及能耗和數據傳輸率。
在二維監測區域?1×?2內隨機部署n個節點和一個匯聚節點。所有節點是靜止的,不能移動。每個節點具有自己的唯一的ID號,令si表示第i個節點的ID號。令Einit表示節點的初始能量,且所有節點初始能量相同。假定匯聚節點有足夠的能量。網絡內所有節點均擁有匯聚節點的位置信息。
令Ni表示節點si的一跳鄰居節點集,其定義如式(1)所示:

式中,R表示節點的通信半徑;d(si,sj)表示節點si與節點sj間的歐式距離。
WSNs中的節點在感測、處理和通信(傳輸數據和接收數據)環節均消耗節點能量,其中傳輸和接收數據消耗節點的大部分能量。由于感測和處理數據與路由無關,本文僅考慮節點在通信環節所消耗的能量。
引用文獻[8-10]相同的能量消耗模型,如圖1所示。節點傳輸m比特數據所消耗的能量ETx(m,d):

圖1 能量消耗模型

式中,Eelec表示發射電路處理1比特數據所消耗的能量;d0表示的閾值,其定義如式(3)所示:

式中,εfs、εamp表示在自由空間信道模型、多徑衰落信道模型下功率放大電路處理1比特數據所消耗的能量;
節點接收m比特數據所消耗的能量ERx(m):

WSNs以輪為單位進行操作。在每一輪,節點先感測事件,再將事件數據傳輸至匯聚節點。對于某一個節點而言,節點可能是感測此事件的源節點,也可能是轉發此事件數據的轉發節點。在這兩種情況中,節點均需要消耗能量。
假定節點傳輸的數據尺寸固定,每個數據包的大小為m比特。節點si在第r輪時的剩余能量為:

式中,REi(r-1)表示在第r-1輪時節點si的剩余能量;表示節點si在第r輪時所消耗的能量。
由于信道的無線特性,WSNs網絡容易遭受多類攻擊,如sibyel攻擊、黑洞攻擊[11]、泛洪攻擊、女巫攻擊。本文考慮泛洪攻擊和黑洞攻擊。在泛洪攻擊中,攻擊節點產生大量的數據,導致其他節點需消耗大量的能量傳輸數據包;在黑洞攻擊中,攻擊節點不積極轉發數據包,擁有更多的剩余能量。擁有的剩余能量越多,攻擊節點越容易成為轉發節點。因此,泛洪攻擊減少了網絡壽命,而黑洞攻擊丟失了數據包。
蟻群算法是由Dorigo M根據自然界螞蟻覓食行為而形成的優化算法[6]。螞蟻利用分泌信息素構建尋覓食物的最優路徑。分泌的信息素越高,被吸引到尋徑路徑中的螞蟻數就越多。蟻群算法將螞蟻劃分為兩類:尋徑螞蟻和回退螞蟻。尋徑螞蟻是指從源節點開始尋找至目的節點路徑的螞蟻;回退螞蟻是依據最優路徑,從目的節點返回源節點的螞蟻,如圖2所示[12]。

圖2 螞蟻尋徑示意圖
蟻群算法主要由狀態轉移函數、信息素啟發函數和信息素更新函數決定。ACES路由利用節點能量、距離以及節點信任值對這些函數進行改進,進而在能耗平衡的基礎上,防御泛洪攻擊和黑洞攻擊。
假定在WSNs內部署n個節點,u個螞蟻。尋徑螞蟻ゐ從源節點出發,利用狀態轉移函數計算下一跳節點。尋徑螞蟻ゐ利用自主探索,通過多跳到達匯聚節點。然后,由回退螞蟻ゐ′沿著具有最大濃度信息素的路徑回到源節點,完成一次尋徑過程。
假定尋徑螞蟻ゐ目前位于節點si的處。螞蟻ゐ依據式(6)選擇下一跳節點sj:

式中,τij表示節點si與節點sj鏈路上的信息素;ηij表示節點si與節點sj鏈路上的信息素啟發值函數,其定義下文式(12)所示。
為了更好地均衡能量消耗,在選擇下一跳轉發節點時,考慮了節點的剩余能量信息。Eij表示了節點si與節點sj的剩余能量差值的百分比,其定義如式(7)所示:

式中,Einit表示網絡內所有節點的初始能量;Ej和Ei分別表示節點sj和節點si的剩余能量。
式(6)中r表示螞蟻ゐ在選擇下一跳節點時所產生的0至1的隨機數。若產生的隨機數r小于閾值r0,則螞蟻ゐ就從鄰居集中選擇具有最大[τij]α[ηij]β[Eij]γ值的節點作為下一跳,其中α、β、γ分別表示τij、ηij、Eij的權重系數。
若隨機數q大于閾值q0,則尋徑螞蟻ゐ就計算節點sj被選為下一跳節點的概率pij:

觀察式(6)可知,信息素啟發函數ηij對螞蟻ゐ所構建的路徑有重要的影響。ACES路由將從距離、能量和節點信任度三方面計算ηij值。當螞蟻ゐ目前位于節點si處時,就計算的ηij值。先計算節點sj的選擇度(Selectivity Value of Node,SVN):

DTVj的定義如式(10)所示。從節點sj所接收的數據包數和其所轉發的數據包數,計算節點DTVj值:

式中,λ1和λ2為權重系數;下標r表示當前執行的輪數;pr表示節點sj所接收的數據包數;pg表示節點sj所產生的數據包數;pt表示節點sj所傳輸的數據包數;pmax表示節點sj可以傳輸的最大數據包數,其定義如式(11)所示:

式中,Psize表示數據包尺寸。本文假定數據包數的尺寸固定,且為m比特。
最后,依據式(12)計算信息素啟發函數ηij:

一旦尋徑螞蟻ゐ達到了匯聚節點,就沿著已建立的路徑返回,并依據式(13)更新中間節點的信息素濃度:

式中,iter表示當前迭代的次數;ρ表示信息素的揮發系數,且ρ∈(0,1)。Δτij表示節點si與節點sj間信息素的增量,其定義如式(14)所示:

式中,Q為一個常數;τij的值在τmin和τmax之間變化,且τmin>0。在迭代中,如果τij小于τmin,則將當前τij賦予τmin,即τmin←τij;如果τij大于τmax,則將當前τij賦予τmax,即τmax←τij。
首先,先對各項參數進行初始化。將初始信息素濃度設置為零,即τij(0)=0。令Nmax表示最大的迭代次數。用iter表示記錄迭代次數。然后,隨機部署u個螞蟻。每只螞蟻進行迭代。先計算狀態轉移函數,將滿足要求的節點加入節點集中,再依據式(13)對信息素更新。最后,通過判斷是否達到迭代次數,若達到迭代次數,就結束,否則就進入下一次迭代環節,具體流程如圖3所示。

圖3 ACES路由流程
利用MATLAB 2016a軟件建立仿真平臺,分析ACES路由的性能。在400 m×400 m方形區域內隨機部署100至400個節點,一個匯聚節點位于區域中心,其位置為(200,200)。攻擊節點比例從5%至30%變化,最大的迭代次數為30,即Nmax=30。具體的仿真參數如表1所示。

表1 仿真參數
為了更好地分析ACES路由的性能,選擇DEBR路由和文獻[13]提出的EENC路由進行參照,并分析它們的網絡壽命和數據包傳遞率性能。其中網絡壽命是指網絡內有10%的節點能量消耗殆盡時所運行的輪數。
首先,分析攻擊節點數對網絡壽命的影響,其中總的節點數為100個(n=100),攻擊節點比例從5%至30%變化。
圖4給出了DEBR路由,EENC路由和ACES路由的網絡壽命隨攻擊節點數的變化情況。從圖4可知,攻擊節點數增加,使這三個路由的網絡壽命呈下降趨勢。此外,相比于DEBR路由和EENC路由,ACES路由的網絡壽命得到提升。例如,在攻擊節點比例為10%時,DEBR路由和EENC路由的網絡壽命約為760輪和865輪。而ACES路由的網絡壽命達到915輪。

圖4 攻擊節點數對網絡壽命的影響
圖5給出了節點數對網絡壽命的影響,其中攻擊節點比例為20%,節點數從100至400變化。從圖可知,在攻擊節點數一定的情況下,節點數的增加有利于網絡壽命的增加。原因在于:節點數越多,網絡內總體能量越多,若路由能夠均衡節點的能耗,就能夠延長網絡壽命。相比于DEBR路由和EENC路由,ACES路由的網絡壽命得到較大提升。這歸功于:ACES路由利用蟻群算法構建路由時,平衡了節點能耗,且禁止能耗低的節點參與路由。

圖5 節點數對網絡壽命的影響
首先分析攻擊節點數對數據包傳遞率的影響,其中總的節點數為100個(n=100),攻擊節點比例從5%至30%變化,如圖6所示。

圖6 攻擊節點數對數據包傳遞率的影響
從圖6可知,ACES路由和EENC路由的數據包傳遞率隨攻擊節點數的增加而下降,但DEBR路由的數據包傳遞率隨攻擊節點數的增加而上升。原因在于:ACES路由和EENC路由均禁止攻擊節點參與路由。當攻擊節點比例增加,只有更少部分的正常節點靠近源節點。這就使得這些正常節點需要轉發或者存儲數據包。當無空間存儲或者轉發數據包時,節點就只能丟棄數據包,最終降低了數據包傳遞率。
而DEBR路由并沒有識別攻擊節點的行為。對于所有攻擊節點而言,相比丟失數據包行為,產生數據包的行為占主導。這就會使得DEBR路由選擇攻擊節點作為源節點,其產生了更多數據包,這就提高了數據包傳遞率。
最后,分析節點數對數據包傳遞率的影響,其中攻擊節點比例為20%,節點數從100至400變化,如圖7所示。

圖7 節點數對數據包傳遞率的影響
從圖7可知,當攻擊節點比例固定的情況下,數據包傳遞率隨節點數的增加而增加。原因在于:節點數越多,擁有更多節點分擔傳輸數據的任務,減少了節點能耗,釋放了節點空間,這有利于數據包傳遞率的提高。此外,相比于DEBR路由和EENC路由,提出的ACES路由的數據包傳遞率得到較大的提升。在節點數從100至400區間變化,ACES路由的數據包傳遞率保持在96%以上。
針對WSNs的能量消耗及安全問題,提出基于蟻群算法的能耗均衡的安全路由ACES。ACES路由利用蟻群算法解決復雜問題的能力,建立源節點至匯聚節點路徑。通過利用節點的剩余能量,距離以及信任值對蟻群算法的信息素更新函數、狀態轉移以及信息素的啟發算法進行優化,使信任值低的節點,能耗低的節點不參與路由,提高路由的穩定性及安全性。仿真結果表明,提出的ACES路由延長了網絡壽命,提高了數據包傳遞率。