呂洪武,高 棟
(長春工業(yè)大學計算機科學與工程學院,長春 130012)
無線傳感器網(wǎng)絡(Wireless Sensor Networks,WSNs)技術發(fā)展十分迅速,已經(jīng)被應用到人們?nèi)粘5纳a(chǎn)生活中[1]。無線傳感器網(wǎng)絡由大量的傳感器節(jié)點構成,通過這些傳感器節(jié)點構成傳感器網(wǎng)絡系統(tǒng),從而獲取監(jiān)控區(qū)域的各類信息。由于節(jié)點所處環(huán)境惡劣,并且自身能量有限,導致整個傳感器網(wǎng)絡極易受到攻擊,且十分脆弱。因此,設計一種能量高效且保證信息傳輸安全的路由協(xié)議十分必要。
LEACH協(xié)議是十分經(jīng)典且極具代表性的路由協(xié)議,通過簇的建立階段和傳輸數(shù)據(jù)的穩(wěn)定階段完成節(jié)點到基站的數(shù)據(jù)傳輸[2]。但是LEACH 協(xié)議仍然在抵御惡意節(jié)點攻擊,并且在分簇數(shù)量和簇頭選擇機制上存在不足。針對這些問題,國內(nèi)外很多學者提出了很多改進措施。其中文獻[3]依據(jù)簇頭規(guī)模、能量和簇頭到基站的距離來構建不同大小的簇;然后設置不定長針的結構來確保各節(jié)點傳輸數(shù)據(jù)次數(shù)相同;最后設計簇間距離的特定值,使簇頭節(jié)點以恰當?shù)膯?、多跳方式與基站進行通信。文獻[4]設計了新的簇頭選擇和更新過程,首先計算選舉的簇頭的閾值,通過設置閾值建立了更加合理的簇頭選舉方式,有效減少了選舉簇頭的能量消耗。文獻[5]首先計算出剩余能量因子和距離因子,然后通過對多徑衰落模型的考慮,將節(jié)點分布區(qū)域進行劃分,在不同環(huán)境內(nèi)設置不同的權重因子,不同區(qū)域設置不同的修正系數(shù),有效延長了網(wǎng)絡的生存時間。文獻[6]通過改進貝葉斯公式計算直接信任值,采用基于過濾機制的間接信任模型,然后引入改進粒子群算法,在選擇簇頭和下一跳節(jié)點時,充分考慮了網(wǎng)絡安全因素、能量因素和距離均衡因素這3個方面。文獻[7]首先通過節(jié)點剩余能量、節(jié)點通信數(shù)據(jù)和通信帶寬,從多個角度建立信任,對網(wǎng)絡內(nèi)各節(jié)點進行評估;然后通過設置信任閾值進行簇頭選取,同時引入螢火蟲算法進行分簇;最后設計恰當?shù)拇亻g傳輸方式。
針對前述問題,提出一種基于模糊控制和節(jié)點可信的安全分簇路由協(xié)議(Secure clustering routing protocol based on fuzzy control and node trust,SCRPFT),首先通過多維度的計算獲得節(jié)點的直接信任值、間接信任值;然后設計一種兩輸入—輸出的模糊控制系統(tǒng),以節(jié)點的直接信任值和間接信任值為輸入,輸出節(jié)點的綜合信任值,同時將獲得的綜合信任值、節(jié)點中心度、節(jié)點剩余能量作為第二層模糊控制系統(tǒng)的輸入,輸出“成為簇頭的機會”值;最后通過計算最優(yōu)簇數(shù)k值,降低迭代過程中的能量消耗。保證了網(wǎng)絡的安全性,提高了網(wǎng)絡的生存周期。
1.1.1 直接信任值
直接信任值是通過該節(jié)點與鄰居節(jié)點直接通信的行為數(shù)據(jù)獲取的信任評估值,每個鄰居節(jié)點都可以求出相應的直接信任值。
節(jié)點i第t次迭代時對其鄰居j的直接信任值見式(1):
(1)
(2)
式中λ為衰減因子。當節(jié)點前期擁有較高信任值時,一旦節(jié)點變?yōu)閻阂夤?jié)點,惡意行為在直接信任值上將表現(xiàn)得不明顯,因此引入衰減因子后,會適當降低歷史信任值對直接信任值的影響。
(3)
(4)
(5)
式中:Qreceive_messagej為節(jié)點i檢測到節(jié)點j接收數(shù)據(jù)包的數(shù)量;Qsend_messagej為節(jié)點i檢測到節(jié)點j發(fā)送數(shù)據(jù)包的數(shù)量;Rt表示節(jié)點j接收數(shù)據(jù)包占數(shù)據(jù)包總量的比例;St表示節(jié)點j發(fā)送數(shù)據(jù)包占數(shù)據(jù)包總量的比例[8]。
1.1.2 間接信任值
間接信任值是由兩節(jié)點的共同鄰居節(jié)點對評估節(jié)點的直接信任值求得,節(jié)點i需要獲取集合Bh中所有節(jié)點對節(jié)點j的直接信任值,Bh為節(jié)點i和節(jié)點j的共同鄰居節(jié)點的集合。節(jié)點u為Bh中的任一節(jié)點,節(jié)點i對節(jié)點j的間接信任值為
(6)
1.1.3 綜合信任值
綜合信任值通過模糊控制系統(tǒng)求得,以直接信任值、間接信任值為輸入,輸出節(jié)點的綜合信任值。最后通過重心法解模糊化獲取具體數(shù)值。
其中,直接信任值的模糊語言變量分別為“高”“中”“低”,對應為{high,medium,low},其中“高”“低”采用梯形隸屬度函數(shù),“中”采用三角形隸屬度函數(shù)。間接信任值的模糊語言變量分別為“高”“中”“低”,對應為{high,medium,low},其中“高”“低”兩種變量采用梯形隸屬度函數(shù),“中”采用三角形隸屬度函數(shù)。綜合信任值模糊語言變量有5種,分別為“高”“較高”“中”“較低”“低”對應為{high,medium high,medium,medium low,low},其中“高”“低”兩種變量采用梯形隸屬度函數(shù),其余變量設置采用三角形隸屬度函數(shù)。模糊規(guī)則見表1。
表1 模糊規(guī)則表
1.2.1 簇頭的選擇
由于LEACH協(xié)議分簇的數(shù)量是隨機的,會增加網(wǎng)絡的能量消耗,因此引入Gap Statistic算法。通過計算事先分好的簇ci的簇內(nèi)平均距離之和來確定最優(yōu)簇數(shù)。間隔統(tǒng)計量的定義方式見(7)~(8):
GGapn(k)=En(log(Wk))-log(Wk),
(7)
(8)
式中:m為個體數(shù)量;k為最優(yōu)聚類數(shù);Dr為所有聚類內(nèi)個體間的距離平方總和;Wk為所有聚類平均離差程度之和;En(log(Wk))為對log(Wk)使用蒙特卡洛模擬產(chǎn)生的數(shù)學期望。最終找到使Gap Statistic能夠取得最大值時k的值就是所求的最優(yōu)簇數(shù)。
為解決LEACH協(xié)議簇頭選舉過于隨機的問題,SCRPFT充分考慮節(jié)點剩余能量、節(jié)點中心度、節(jié)點綜合信任值這3個方面,使網(wǎng)絡更加可靠,能量消耗更加均勻,提高網(wǎng)絡生存時長。通過建立3輸入1輸出的模糊控制系統(tǒng),將節(jié)點剩余能量、節(jié)點中心度、節(jié)點綜合信任值作為輸入,輸出“成為簇頭的機會”值。其中剩余能量的模糊語言變量為“高”“中”“低”,分別對應為{high,medium,low},其中“高”“低”兩種變量采用梯形隸屬度函數(shù),“中”采用三角形隸屬度函數(shù)。節(jié)點中心度語言變量為“高”“中”“低”,分別對應為{high,medium,low},其中“高”“低”兩種變量采用梯形隸屬度函數(shù),“中”采用三角形隸屬度函數(shù)。綜合信任值的模糊語言變量為“高”“中”“低”,分別對應為{high,medium,low},其中“高”“低”兩種變量采用梯形隸屬度函數(shù),“中”采用三角形隸屬度函數(shù)。成為簇頭的機會模糊語言變量有7種,分別為“非常高”“高”“較高”“中”“較低”“低”“非常低”,對應為{very high,high,rather high,medium,rather low,low,very low},其中“非常高”“非常低”兩種變量采用梯形隸屬度函數(shù),剩余變量設置采用三角形隸屬度函數(shù)。在對各節(jié)點“成為簇頭的機會”值排序后,選出前k個值大的節(jié)點作為簇頭。模糊規(guī)則表見表2。
表2 模糊規(guī)則表
1.2.2 簇的形成
依據(jù)最優(yōu)簇數(shù)完成簇頭選舉后,簇頭節(jié)點向整個網(wǎng)絡廣播自己已經(jīng)成為簇頭的消息。在接收到各簇頭節(jié)點的消息后,非簇頭節(jié)點根據(jù)自己距各簇頭節(jié)點的距離,選擇距離自己最近的簇頭,并加入該簇。簇形成后,簇頭采用 TDMA 方式為簇中的每個節(jié)點分配時隙,然后簇內(nèi)各節(jié)點按照順序向簇頭傳輸數(shù)據(jù)[9]。
為分析算法的性能,使用Matlab R2020a進行仿真分析,并與LEACH和文獻[10]提出的算法LEACH-AD進行對比。部分參數(shù)見表3,其余參數(shù)與文獻[10]保持一致。測試平臺為:Intel core i5-7 200u cpu、2.71 GHz主頻、4 GB內(nèi)存的pc以及Windows 10(64位)操作系統(tǒng),實驗選擇的攻擊類型主要以選擇性轉發(fā)攻擊為主。假設惡意節(jié)點隨機分布在網(wǎng)絡中,設置網(wǎng)絡中惡意節(jié)點的數(shù)量為所部署所有節(jié)點的10%,設置惡意節(jié)點丟棄數(shù)據(jù)包的概率為70%[11]。
表3 仿真參數(shù)
圖1為3種算法中網(wǎng)絡能量消耗隨迭代次數(shù)變化的對比結果,LEACH的能量消耗最快,由于LEACH的簇頭選擇方案和惡意節(jié)點的攻擊,使所有節(jié)點都參與到網(wǎng)絡中,在1 200輪左右就消耗完了整個網(wǎng)絡的能量。而LEACH-AD考慮到了節(jié)點剩余能量的問題,使網(wǎng)絡能量消耗略有改善,但是在惡意節(jié)點的作用下,網(wǎng)絡能量依然在1 400輪左右被消耗殆盡。而SCRPFT不僅網(wǎng)絡消耗均勻,而且合理地規(guī)劃了各節(jié)點所承擔的負載,使網(wǎng)絡能耗更加高效。
圖1 能量消耗
圖2為3種算法中網(wǎng)絡剩余節(jié)點數(shù)量隨迭代次數(shù)變化的對比結果,每次迭代中,剩余節(jié)點愈多,代表著基站能收到的環(huán)境數(shù)據(jù)越多,因此,剩余節(jié)點的多少也代表著網(wǎng)絡性能的好壞。在400輪左右,3種算法的剩余節(jié)點數(shù)量還比較相似,在這之后,LEACH、LEACH-AD這兩種算法的剩余節(jié)點數(shù)量迅速降低,由于SCRPFT的網(wǎng)絡能量消耗更加均勻,所以網(wǎng)絡內(nèi)節(jié)點死亡緩慢。
圖2 剩余節(jié)點數(shù)
圖3為3種算法中丟包率隨惡意節(jié)點數(shù)量增加變化的對比結果,丟包率是評價網(wǎng)絡是否可靠的參數(shù)之一。由圖3可知,隨著惡意節(jié)點數(shù)量的增加,即惡意節(jié)點占網(wǎng)絡總節(jié)點的比重增加,3種算法的丟包率都呈現(xiàn)上漲的趨勢,對于沒有考慮節(jié)點安全性的LEACH、LEACH-AD,丟包率迅速增加。而多角度考慮節(jié)點信任的SCRPFT與前兩者相比則低了很多,從沒有惡意節(jié)點到有10個惡意節(jié)點,SCRPFT的丟包率只增加了11.5%。
圖3 丟包率
本文針對無線傳感器網(wǎng)絡經(jīng)典的分簇路由協(xié)議LEACH中存在的安全性低、網(wǎng)絡生存短的問題,提出一種基于模糊控制和節(jié)點可信的安全分簇路由協(xié)議。首先通過節(jié)點的通信行為計算出節(jié)點的直接信任值、間接信任值;然后建立了一個雙層模糊控制系統(tǒng),將直接信任值和間接信任值作為第一層2輸入1輸出的模糊控制系統(tǒng)的輸入、輸出節(jié)點的綜合信任值;同時再將求得的綜合信任值、節(jié)點中心度、節(jié)點剩余能量作為第二層模糊控制系統(tǒng)的輸入,輸出為“成為簇頭的機會”值。通過篩選成為簇頭的節(jié)點,使惡意節(jié)點能夠被及時剔除,節(jié)點負載更加合理,保證了網(wǎng)絡的安全性,提高了網(wǎng)絡的生存周期。