茍平章,原 晨,張 芬
(西北師范大學計算機科學與工程學院,甘肅 蘭州 730070)
隨著無線傳感器網(wǎng)絡(luò)WSNs(Wireless Sensor Networks)[1]的普及,其數(shù)據(jù)類型逐步多樣化,應(yīng)用場景逐步增多,網(wǎng)絡(luò)對路由協(xié)議服務(wù)質(zhì)量QoS(Quality of Service)[2]的要求也逐漸提高。但是,傳統(tǒng)WSNs的局限性使得QoS路由也面臨諸多問題,如節(jié)點能量受限的特性使得節(jié)點無法進行大量復(fù)雜的QoS指標參數(shù)計算;節(jié)點處理數(shù)據(jù)的能力和存儲空間有限,導(dǎo)致網(wǎng)絡(luò)QoS無法進一步提高;無法根據(jù)不同QoS需求實時動態(tài)地調(diào)整網(wǎng)絡(luò)路由;路由協(xié)議多為分布式,通過鄰居節(jié)點信息交換來計算路徑,導(dǎo)致路由算法僅在局部能得到最優(yōu)結(jié)果,進而影響網(wǎng)絡(luò)QoS。因此,如何有效地提高網(wǎng)絡(luò)QoS仍然是一個具有挑戰(zhàn)性的問題。另一方面,在WSNs路由領(lǐng)域中,為提高能量效率,研究人員提出基于分簇原理的層次型路由。LEACH(Low Energy Adaptive Clustering Hierarchy)協(xié)議[3]是最早的分簇路由協(xié)議,能有效降低節(jié)點能耗,延長網(wǎng)絡(luò)生命周期,但隨機性的簇頭選舉策略導(dǎo)致節(jié)點能耗不均衡。為緩解能量黑洞的現(xiàn)象,EEUC(Energy-Efficient Uneven Clustering)協(xié)議[4]通過節(jié)點競爭半徑公式將網(wǎng)絡(luò)分為大小不同的簇,平衡各簇頭間的能量消耗,但簇頭算法仍然采取隨機的方式,導(dǎo)致簇無法達到最優(yōu)。CRIPSO(Clustering Routing protocol based on Improved PSO algorithm)[5]通過優(yōu)化粒子群優(yōu)化算法的慣性系數(shù)和學習因子,平衡算法的全局搜索與局部探索能力,選舉出能量和位置合理的簇頭節(jié)點。
軟件定義網(wǎng)絡(luò)SDN (Software Defined Network)[6]是一種新型網(wǎng)絡(luò)架構(gòu),是網(wǎng)絡(luò)虛擬化的一種實現(xiàn)方式。SDN通過分離控制平面和數(shù)據(jù)平面以及開放通信協(xié)議,打破了傳統(tǒng)網(wǎng)絡(luò)設(shè)備的封閉性[7]。其整體框架分為應(yīng)用層、控制層和數(shù)據(jù)層,應(yīng)用層包含各種網(wǎng)絡(luò)業(yè)務(wù),給用戶提供實現(xiàn)和部署網(wǎng)絡(luò)應(yīng)用的接口;控制層通過網(wǎng)絡(luò)狀態(tài)信息,獲取網(wǎng)絡(luò)拓撲與視圖,制定并下發(fā)數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則;數(shù)據(jù)層負責數(shù)據(jù)的處理、轉(zhuǎn)發(fā)和狀態(tài)的搜集[8]。將SDN與WSNs相結(jié)合,形成的軟件定義無線傳感器網(wǎng)絡(luò)SDWSN (Software Defined Wireless Sensor Network)將成為下一代WSNs技術(shù)探索的主流方向[9]。Luo等人[10]結(jié)合WSNs應(yīng)用需求,提出基于SDN的Sensor OpenFlow架構(gòu),旨在對SDWSN南向接口協(xié)議進行標準化,通過啟用傳感器節(jié)點的可編程性,增強網(wǎng)絡(luò)控制。Gante等人[11]提出一種新型的基于SDN的WSNs基站架構(gòu),傳感器節(jié)點不必做出路由決策,而由網(wǎng)絡(luò)管理員通過控制器提供的全網(wǎng)拓撲視圖做出最佳決策,提高傳輸效率并減少節(jié)點能耗。文獻[12]提出擾動粒子群優(yōu)化的SDWSN路由算法tPSOEB (extremum disturbed Particle Swarm Optimization based Energy-Balanced routing protocols),采用SDN集中式的計算方式,通過引入擾動改進粒子群優(yōu)化算法的搜索性能,進行簇頭選舉與非均勻分簇。
隨著SDWSN理論逐漸成熟,針對網(wǎng)絡(luò)QoS的路由策略也逐漸應(yīng)用其中。文獻[13]提出一種軟件定義的WSNs控制器實現(xiàn)方式,采用基于模糊邏輯算法和貝葉斯推理的方案,確定WSNs中合適的端到端QoS路徑。Dio等人[14]為了提高網(wǎng)絡(luò)QoS,通過對節(jié)點擁塞狀態(tài)和數(shù)據(jù)等級的劃分設(shè)置不同的丟包率,提升了網(wǎng)絡(luò)性能,但未涉及到路由協(xié)議。為了解決SDWSN中的路由節(jié)能問題,文獻[15]提出一種集中式路由算法IA-EERA(Interference-Aware Energy-Efficient Routing Algorithm),同時考慮鏈路QoS和負載平衡問題,以延長網(wǎng)絡(luò)生命周期。文獻[16]提出一種QoS路徑選擇和資源關(guān)聯(lián)方案Q-PSR (QoS Path Selection and Resource-associating),用于自適應(yīng)負載平衡和智能資源控制,實現(xiàn)最佳網(wǎng)絡(luò)性能。
在上述研究基礎(chǔ)上,本文提出一種基于軟件定義的無線傳感器網(wǎng)絡(luò)非均勻分簇QoS路由算法SDNUCQS(Software-Defined Non-Uniform Clustering QoS routing algorithm)。初始階段,控制器執(zhí)行全網(wǎng)拓撲發(fā)現(xiàn)及信息收集過程,建立網(wǎng)絡(luò)拓撲圖,獲取所需的網(wǎng)絡(luò)信息。分簇階段,控制器以節(jié)點能量、節(jié)點間距離、傳輸時延和傳輸丟失率為指標,采用熵權(quán)法競選出針對QoS的高質(zhì)量簇頭,根據(jù)競爭半徑公式將網(wǎng)絡(luò)分成大小不同的簇。簇間路由階段,利用交叉分類法將所要傳輸?shù)臄?shù)據(jù)以時延和丟失率為參數(shù)分為不同種類。對于有QoS需求的數(shù)據(jù),采用Dijkstra算法計算最佳路徑;對于無QoS需求的普通數(shù)據(jù),先計算節(jié)點負載度,并以此為參數(shù),采用Dijkstra算法計算最佳路徑,達到網(wǎng)絡(luò)負載均衡的目的。
SDWSN中控制器部署方式有3種,分別為單控制器部署、水平多控制器部署和層次化多控制器部署。本文采用水平多控制器部署方式中的SDN-WISE(Software Defined Networking solution for WIreless SEnsor networks)[17]體系結(jié)構(gòu)實現(xiàn)WSNs的SDN化。SDN-WISE體系結(jié)構(gòu)如圖1所示。
Figure 1 SDN-WISE architecture 圖1 SDN-WISE體系結(jié)構(gòu)
圖1的SDN-WISE體系中,基于IEEE 802.15.4和MAC(Multiple Access Channel)層構(gòu)建傳感器節(jié)點,Sink節(jié)點與控制器之間設(shè)計有適配器,用來格式化傳輸?shù)臄?shù)據(jù)。FWD(ForWarDing)為轉(zhuǎn)發(fā)層,按照WISE流表中的指示處理匹配成功的數(shù)據(jù)包。網(wǎng)內(nèi)數(shù)據(jù)包處理層INPP (In-Network Packet Processing)用于進行數(shù)據(jù)融合或處理數(shù)據(jù)包。TD(Topology Discovery)層用來維護鄰居節(jié)點列表,輔助控制器進行拓撲發(fā)現(xiàn)??刂茖又?,WISE-VISOR受控制器管理,用于提取網(wǎng)絡(luò)資源,以便不同管理策略或邏輯網(wǎng)絡(luò)可在同一物理設(shè)備上執(zhí)行??刂破骱蚖ISE-VISOR共同決定網(wǎng)絡(luò)邏輯。節(jié)點根據(jù)流表匹配結(jié)果進行數(shù)據(jù)包轉(zhuǎn)發(fā)。流表由3部分組成:用于數(shù)據(jù)包匹配的匹配域(Matching Rule)、用于統(tǒng)計匹配數(shù)據(jù)包個數(shù)的統(tǒng)計域(Statistics)和用于展示匹配數(shù)據(jù)包處理方式的操作域(Action)。節(jié)點流表圖如圖2所示。
Figure 2 Structure of flow table 圖2 流表結(jié)構(gòu)
本文WSNs模型由傳感器控制服務(wù)器、Sink節(jié)點,以及隨機分布在M×M大小的檢測區(qū)域中的N個傳感器節(jié)點組成。相關(guān)網(wǎng)絡(luò)模型約束為:
假設(shè)1所有傳感器節(jié)點隨機分配在檢測區(qū)域內(nèi),并且其位置在整個生命周期中不會發(fā)生改變,與Sink節(jié)點和控制器的關(guān)系位置同樣也是固定的。
假設(shè)2所有傳感器節(jié)點具有相同的初始能量,每個節(jié)點擁有唯一的ID標識,均有機會充當簇頭。
假設(shè)3節(jié)點的發(fā)射功率能夠根據(jù)傳輸距離自動調(diào)整。
假設(shè)4傳感器控制服務(wù)器僅有一個且能量不做限制。
能耗模型采用經(jīng)典的無線傳輸能量消耗模型[18],如圖3所示,當傳輸kbit數(shù)據(jù)時,發(fā)送端的能耗為傳輸電路消耗和信號放大電路消耗;接收端能耗為信號接收電路能耗。
Figure 3 Energy consumption model圖3 能量消耗模型
根據(jù)發(fā)送節(jié)點和接收節(jié)點之間的距離,采用自由空間和多路徑衰減模型,節(jié)點發(fā)送kbit數(shù)據(jù)到距離為d的節(jié)點消耗的能量如式(1)所示:
(1)
其中,Eelec表示接收或發(fā)送數(shù)據(jù)時的電路功率消耗系數(shù),εfs為自由空間模型的放大倍數(shù),εmp為多路徑傳輸模型的放大倍數(shù),d為節(jié)點間距離,d0為通信距離分界值,其計算如式(2)所示:
(2)
節(jié)點接收kbit數(shù)據(jù)消耗的能量如式(3)所示:
ERx(k)=kEelec
(3)
SDNUCQS算法包括拓撲發(fā)現(xiàn)階段、簇的形成階段、簇間路由建立和數(shù)據(jù)傳輸4個階段。拓撲發(fā)現(xiàn)階段,控制器獲取網(wǎng)絡(luò)拓撲圖及其他所需信息。簇的形成階段,采用熵權(quán)法,結(jié)合QoS指標,競選出針對網(wǎng)絡(luò)QoS的高質(zhì)量簇頭,并進行非均勻分簇。簇間路由階段,控制器根據(jù)時延和丟失率將數(shù)據(jù)分類,對不同數(shù)據(jù)有針對性地制定最佳傳輸路徑,并下發(fā)流表。數(shù)據(jù)傳輸階段,簇頭收集簇內(nèi)節(jié)點數(shù)據(jù)并按照流表規(guī)則進行數(shù)據(jù)傳輸。
在網(wǎng)絡(luò)初始化階段,控制器需要進行拓撲發(fā)現(xiàn)和信息收集流程,其目的在于獲取網(wǎng)絡(luò)數(shù)據(jù)平面拓撲圖及其他信息(網(wǎng)絡(luò)QoS指標、節(jié)點剩余能量)??刂破魍ㄟ^Sink節(jié)點下發(fā)拓撲發(fā)現(xiàn)包(TD),TD信息包括節(jié)點剩余能量,與Sink節(jié)點間的距離,以及端到端QoS參數(shù)(包括時延和數(shù)據(jù)丟失率)信息等。
圖4所示為拓撲發(fā)現(xiàn)過程,節(jié)點A廣播TD(A),節(jié)點B接收到TD(A)后,首先將A的剩余能量、QoS參數(shù)等信息保存起來,并將A加入至其鄰居節(jié)點列表中;其次比較A和B到Sink節(jié)點的跳數(shù)大小,若A到Sink節(jié)點的跳數(shù)大于B的,則B到Sink節(jié)點的跳數(shù)為A的加一,并規(guī)定B到Sink節(jié)點的下一跳為A;最后B廣播TD(B)。通過此流程直至全網(wǎng)節(jié)點皆完成廣播,將所有數(shù)據(jù)發(fā)送至Sink節(jié)點,最終Sink節(jié)點將數(shù)據(jù)發(fā)送至控制器??刂破鞯玫綌?shù)據(jù)后,建立全網(wǎng)拓撲圖并擁有節(jié)點剩余能量、節(jié)點間距離、鄰居節(jié)點列表和QoS參數(shù)。
Figure 4 Process of topology discovery 圖4 拓撲發(fā)現(xiàn)過程
熵權(quán)法是一種客觀賦權(quán)法,依賴于數(shù)據(jù)本身的離散程度。傳統(tǒng)分簇路由的簇頭選舉多為多指標加權(quán)和的形式,人為確定各數(shù)據(jù)指標的權(quán)重大小,使數(shù)據(jù)所占比重缺乏客觀性,導(dǎo)致理論上選舉出的簇頭與實際最優(yōu)簇頭存在偏差。本文結(jié)合QoS指標,采用熵權(quán)法進行簇頭選舉,對數(shù)據(jù)進行客觀度量。簇頭選舉流程包括數(shù)據(jù)指標分析、節(jié)點評估、簇頭確定和分簇4個階段。
3.2.1 數(shù)據(jù)指標分析
通過剩余能量、平均向心距離、平均向心鏈路連通度和平均向心端到端時延4個數(shù)據(jù)指標對節(jié)點進行評估。
假設(shè)節(jié)點競爭半徑范圍內(nèi)有n個節(jié)點,而每個節(jié)點有4個指標,則第i個節(jié)點的第m個指標可描述為xim(i=1,2,…,n;m=1,2,3,4)。
(1) 節(jié)點剩余能量。剩余能量越高,越容易成為簇頭。設(shè)競爭半徑內(nèi)第i個節(jié)點的剩余能量為xi1=Ere(i),Ere(i)為第i個節(jié)點的剩余能量。
(2) 平均向心距離指競爭半徑內(nèi)其他節(jié)點與該節(jié)點之間距離的平均值。該值越小,越容易成為簇頭。第i個節(jié)點的平均向心距離如式(4)所示:
(4)
其中,d(i,j)表示第i個節(jié)點和第j個節(jié)點間的距離。
(3) 平均向心鏈路連通度表示競爭半徑內(nèi)其他節(jié)點向該節(jié)點傳輸數(shù)據(jù)完整率的平均值。平均值越高,該節(jié)點越容易成為簇頭。競爭半徑內(nèi)第i個節(jié)點的平均向心鏈路連通度如式(5)所示:
(5)
其中,s(j,i)和f(j,i)分別為第j個節(jié)點向第i個節(jié)點發(fā)送數(shù)據(jù)包成功到達的大小和發(fā)送數(shù)據(jù)包的大小。
(4) 平均向心端到端時延指節(jié)點競爭半徑內(nèi)其他節(jié)點向該節(jié)點傳輸數(shù)據(jù)端到端時延平均值。該值越低,節(jié)點越容易成為簇頭。競爭半徑內(nèi)第i個節(jié)點單位數(shù)據(jù)傳輸時延如式(6)所示:
(6)
其中,t(j,i)表示第j個節(jié)點向第i個節(jié)點發(fā)送1 bit數(shù)據(jù)所用時間。
3.2.2 節(jié)點評估
使用熵權(quán)法對節(jié)點指標進行計算,得到節(jié)點綜合實力。具體步驟如下所示:
步驟1指標歸一化處理。指標分為正向指標和負向指標,正向指標數(shù)值越高越好,負向指標數(shù)值越低越好,因此,對于正向指標和負向指標需要采用不同的算法進行數(shù)據(jù)標準化處理。
剩余能量和平均向心鏈路連通度是正向指標,正向指標歸一化公式如式(7)所示:
(7)
平均向心距離和單位數(shù)據(jù)傳輸時延為負向指標,負向指標歸一化公式如式(8)所示:
(8)
其中,x′im表示經(jīng)過歸一化處理后第i個節(jié)點的第m個指標值,xim為第i個節(jié)點的第m個指標,min(xim)和max(xim)分別為指標函數(shù)最小值和最大值。
步驟2計算各個指標下,每個樣本的數(shù)據(jù)分析指標占總指標的比重。競爭半徑內(nèi)第i個節(jié)點的第m個指標所占總指標比重如式(9)所示:
i=1,2,…,n;m=1,2,3,4
(9)
步驟3計算各個指標的熵值。第m項指標的熵值如式(10)所示:
(10)
步驟4計算各指標信息熵冗余度,如式(11)所示:
Dm=1-Em,m=1,2,3,4
(11)
步驟5計算各指標的權(quán)重,如式(12)所示:
(12)
步驟6通過指標數(shù)值及權(quán)重,計算各節(jié)點的綜合實力S。競爭半徑內(nèi)第i個節(jié)點的綜合實力Si如式(13)所示:
(13)
3.2.3 簇頭確定及分簇
在SDWSN中分簇流程由控制服務(wù)器完成,極大地節(jié)省了節(jié)點能耗,具體流程如下所示:
步驟1節(jié)點競爭半徑的確定。為緩解網(wǎng)絡(luò)“熱區(qū)”問題,本文采用文獻[4]的節(jié)點競爭半徑計算公式,如式(14)所示:
(14)
控制器按照式(14)計算每個節(jié)點的競爭半徑,并為其維護一個鄰居列表NL(Neighboor List),用來保存競爭半徑內(nèi)的節(jié)點ID。
步驟2節(jié)點評估??刂破魍ㄟ^上述熵權(quán)法流程依次計算每個競爭半徑內(nèi)所有節(jié)點的綜合實力S,并計算各個節(jié)點成為簇頭的優(yōu)先級,如式(15)所示:
(15)
其中,pri(i)表示節(jié)點si的優(yōu)先級,NLi為節(jié)點si鄰居列表,n(NLi)表示節(jié)點si鄰居節(jié)點個數(shù),S(i)表示節(jié)點si通過熵權(quán)法計算后的節(jié)點綜合實力。
步驟3簇頭確定??刂破鞲鶕?jù)計算得到的節(jié)點優(yōu)先級從大到小排序,得到簇頭競選列表CHC(Cluster Head Competition list),并建立簇頭列表CH(Cluster Head list),依次將CHC中節(jié)點ID放入CH中,每放進去一個,則刪除存在于CHC中的鄰居節(jié)點,直到CHC為空。對于同時屬于多個簇的節(jié)點,則選擇距離最近的簇頭加入該簇,最后所有節(jié)點有且僅有一個歸屬簇,至此分簇完成。
步驟4下發(fā)分簇規(guī)則??刂破饔嬎愕玫酱仡^及簇成員集合后,將簇成員信息發(fā)送到對應(yīng)簇頭,簇頭收到信息后生成對應(yīng)流表項,并生成簇成員通知信息,發(fā)送到簇內(nèi)各節(jié)點。
簇間路由階段,根據(jù)時延和丟失率將數(shù)據(jù)分類,控制器針對不同類型數(shù)據(jù)制定路由策略。
3.3.1 數(shù)據(jù)分類
利用交叉分類法,依據(jù)傳輸時延和丟失率,將數(shù)據(jù)分為4類,如表1所示,其中前3類為QoS需求數(shù)據(jù),第4類是普通數(shù)據(jù)。表1中0代表不敏感,1代表敏感。
Table 1 Data classification
3.3.2 有QoS需求數(shù)據(jù)的路由
由表1可知QoS數(shù)據(jù)分為3類:時延敏感型數(shù)據(jù)、丟失率敏感型數(shù)據(jù)、時延和丟失率均敏感型數(shù)據(jù)。
對于時延敏感型數(shù)據(jù),控制器根據(jù)簇頭信息建立網(wǎng)絡(luò)拓撲結(jié)構(gòu),結(jié)合鏈路信息得到每條鏈路的端到端時延,以時延為鏈路權(quán)值,通過Dijkstra算法計算每個簇頭節(jié)點到Sink節(jié)點的最佳路徑,如式(16)所示:
rtime(i,e)=argsmin∑r(h,j)∈rs(i,e)T(r(h,j))
(16)
其中,rtime(i,e)表示節(jié)點si到Snik節(jié)點時延敏感型數(shù)據(jù)傳輸?shù)淖罴崖窂?,rs(i,e)表示節(jié)點si至Sink節(jié)點的路徑集合,r(h,j)表示相鄰節(jié)點sh和sj的路徑,T()表示鏈路時延。
對于丟失率敏感型數(shù)據(jù),控制器同樣建立網(wǎng)絡(luò)拓撲結(jié)構(gòu),并得到每條鏈路的傳輸丟失率,但由于丟失率為乘性系數(shù),應(yīng)先取對數(shù)后再采用Dijkstra算法計算路徑,如式(17)所示:
rloss(i,e)=argsmin∑r(h,j)∈rs(i,e)lnL(r(h,j))
(17)
其中,rloss(i,e)表示節(jié)點si至Sink節(jié)點丟失率敏感型數(shù)據(jù)的最佳路徑,L()表示鏈路傳輸丟失率。
對于時延和丟失率均敏感型數(shù)據(jù),為了對鏈路的時延和丟失率分配客觀權(quán)重,控制器首先使用熵權(quán)法,以鏈路端到端時延和傳輸丟失率作為數(shù)據(jù)指標,計算出網(wǎng)絡(luò)中每條鏈路的綜合得分;其次以鏈路得分為度量,采用Dijkstra算法計算出節(jié)點到達Sink節(jié)點的最佳路徑。
具體流程如下所示:
步驟1控制器建立有向連通圖,得到全網(wǎng)中簇頭節(jié)點間的b條鏈路,將各鏈路端到端時延和傳輸丟失率作為數(shù)據(jù)指標,設(shè)第a條鏈路的端到端時延和傳輸丟失率分別表示為xa1和xa2。
步驟2對指標進行歸一化處理。時延和丟失率均為負向指標,使用式(9)處理指標數(shù)據(jù)。設(shè)歸一化后,第a條鏈路的時延和丟失率分別為x′a1和x′a2。
步驟3通過熵權(quán)法計算,第a條鏈路綜合得分通過式(18)計算得到,綜合得分越高,鏈路越適合傳輸數(shù)據(jù)。
SCa=x′a1W1+x′a2W2,a=1,2,…,b
(18)
其中,W1表示熵權(quán)法計算出的時延權(quán)重,W2表示丟失率權(quán)重。
為了表達清晰,將式(18)重新定義為節(jié)點sz向節(jié)點su傳輸數(shù)據(jù)的鏈路得分:
SC(z,u)=W1t(z,u)+W2l(z,u)
(19)
其中,t(z,u)和l(z,u)分別表示歸一化處理后節(jié)點sz和su之間的鏈路時延和丟失率指標值。
步驟4路徑計算。因為鏈路得分越高,越適合作為傳輸路徑,因此控制器以鏈路得分的倒數(shù)為度量,采用Dijkstra算法計算,路徑公式如式(20)所示:
(20)
其中,rQoS(i,e)表示對時延和丟失率均敏感型數(shù)據(jù)的節(jié)點si至Sink節(jié)點的最佳路徑,p(i,e)表示節(jié)點si和Sink節(jié)點間路徑上的節(jié)點集合,SC(z,u)表示相鄰節(jié)點sz和su的鏈路得分。
3.3.3 無QoS需求普通數(shù)據(jù)的路由
對于無QoS需求的普通節(jié)點,為了使全網(wǎng)節(jié)點能耗均衡,延長網(wǎng)絡(luò)生命周期,通過式(21)計算節(jié)點負載度。節(jié)點負載度表示數(shù)據(jù)傳輸時接收節(jié)點相對于發(fā)送節(jié)點的工作負載大小,負載越大,則該接收節(jié)點越不適合作為下一跳節(jié)點。
(21)
其中,Cj(o)為節(jié)點sj相對于節(jié)點so的節(jié)點負載度;d(o,j)為節(jié)點so與節(jié)點sj之間的距離;dave表示網(wǎng)絡(luò)中鄰居簇頭節(jié)點間距離的平均值,2節(jié)點距離越大,發(fā)送節(jié)點傳輸數(shù)據(jù)需要消耗的能量就越多,接收節(jié)點相對于發(fā)送節(jié)點來說負擔就越重,負載度就越高;Ej表示節(jié)點sj當前能量,Eave表示整個網(wǎng)絡(luò)中簇頭節(jié)點的平均能量;Ase和Are分別表示過去的t時間內(nèi)節(jié)點sj發(fā)送和接收的數(shù)據(jù)量;α、β、γ分別表示3個影響因素的權(quán)重大小且α+β+γ=1。
控制器根據(jù)網(wǎng)絡(luò)拓撲,建立有向連通圖,采用Dijkstra算法,以節(jié)點負載度為鏈路權(quán)值,計算每個簇頭節(jié)點的最優(yōu)傳輸路徑。路徑公式如式(22)所示:
rcom(i,e)=argpmin∑si,sj∈p(i,e)Cj(i)
(22)
其中,rcom(i,e)表示針對普通數(shù)據(jù)的節(jié)點si至Sink節(jié)點的最佳路徑,節(jié)點so與節(jié)點sj為相鄰節(jié)點。
控制器進行路由計算后,下發(fā)流表至所有簇頭節(jié)點,流表中包含了針對不同類型數(shù)據(jù)在傳輸時下一跳節(jié)點的地址等。當感知節(jié)點有數(shù)據(jù)需要傳輸時,首先將數(shù)據(jù)包發(fā)送到自己的簇頭節(jié)點;然后簇頭節(jié)點對接收到的數(shù)據(jù)包進行匹配,確定該數(shù)據(jù)包的類型后,根據(jù)流表規(guī)則向下一跳簇頭節(jié)點發(fā)送該數(shù)據(jù)包,直至到達Sink節(jié)點;最后Sink節(jié)點將數(shù)據(jù)打包后統(tǒng)一發(fā)送至控制器。
本文算法通過上述4個階段周期性進行,但為了避免頻繁分簇,SDNUCQS在每一輪全局分簇后進行輪局部簇頭更新。首先,在分簇階段完成后,控制器通過3.2節(jié)中的熵權(quán)法計算各個簇內(nèi)每個節(jié)點相對于該簇所有節(jié)點的綜合實力S,如果節(jié)點綜合實力大于δ倍的當前簇頭節(jié)點綜合實力,則該節(jié)點可作為預(yù)備簇頭。一個簇內(nèi)預(yù)備簇頭的個數(shù)即該簇局部簇頭更新的次數(shù)。全網(wǎng)簇頭更新次數(shù)是所有簇的簇頭更新次數(shù)的平均值,如式(23)所示:
(23)
其中,kj為第j個簇的簇頭更新次數(shù),num為全網(wǎng)中簇的總數(shù)。
SDNUCQS算法流程圖如圖5所示。
Figure 5 Flow chart of SDNUCQS algorithm 圖5 算法流程圖
本文從全網(wǎng)簇頭能耗、端到端平均時延、平均傳輸丟失率和網(wǎng)絡(luò)生命周期4個方面進行仿真,以驗證SDNUCQS算法的性能,參數(shù)如表2所示。
Table 2 Simulation parameter
Figure 6 Number of cluster heads formed圖6 簇頭形成數(shù)量
為了驗證基于熵權(quán)法的簇頭選舉和非均勻分簇的有效性,選取若干輪,統(tǒng)計分簇結(jié)束后至下一輪分簇前,簇頭平均能耗,將SDNUCQS同LEACH、EEUC、CRIPSO和tPSOEB進行比較,仿真結(jié)果如圖7所示。
Figure 7 Cluster head energy consumption圖7 簇頭能耗
EEUC、CRIPSO、tPSOEB和SDNUCQS同LEACH相比較,因其采用多跳路由且非均勻分簇,簇頭能耗明顯降低,且波動較小。EEUC采用節(jié)點競爭半徑公式實現(xiàn)非均勻分簇,避免能量空洞,平衡且降低簇頭能耗。CRIPSO通過粒子群優(yōu)化算法選舉出能量和位置更加合理的簇頭節(jié)點,簇頭能耗相比于EEUC進一步降低了。而tPSOEB同樣采用基于粒子群優(yōu)化算法的簇頭選舉策略,但其采用SDN框架,簇頭無需路由計算等能量消耗,相比CRIPSO進一步降低了能耗。本文的SDNUCQS基于SDN框架,采用熵權(quán)法進行簇頭選舉并進行非均勻分簇,簇頭能耗大小與tPSOEB較為接近且偏低。
圖8為SDNUCQS的不同路由算法時延情況。rout1、rout2、rout3和rout4分別為時延敏感型數(shù)據(jù)、丟失率敏感型數(shù)據(jù)、時延和丟失率均敏感型數(shù)據(jù)和普通數(shù)據(jù)的路由。
Figure 8 End-to-end delay圖8 端到端時延
所有路由算法時延均隨運行時間而增加。rout1和rout3傳輸?shù)臄?shù)據(jù)均對時延敏感,其路由計算中時延低于其他2個的;由于rout3以時延和丟失率共同作為參數(shù),因此時延略高于rout1的。而rout2和rout4路由計算不考慮時延,則時延較高,但由于rout4為普通數(shù)據(jù)路由,以節(jié)點負載度為參數(shù)計算路徑,節(jié)點負載度低,間接性導(dǎo)致時延低,因此rout4時延略低于rout2的。rout1相較于rout2和rout4,傳輸時延平均降低29.62%和26.44%,rout3相較于rout2和rout4,傳輸時延平均降低25.57%和22.21%,由此可知SDNUCQS針對時延敏感型數(shù)據(jù),能夠顯著降低端到端時延,提高網(wǎng)絡(luò)QoS。
圖9為SDNUCQS不同路由數(shù)據(jù)丟失率情況,指標設(shè)置同圖8。
Figure 9 Loss rate圖9 丟失率
rout2和rout3丟失率明顯低于rout1和rout4的,因為其路由計算均以丟失率為參數(shù),得到傳輸丟失率最低的路徑,而rout3同時考慮時延參數(shù),丟失率略高于rout2的。rout1僅考慮時延參數(shù),所以傳輸丟失率高,rout4為普通數(shù)據(jù)路由,以節(jié)點負載度為參數(shù),丟失率和rout1的接近。rout2與rout3傳輸丟失率區(qū)間分別為[0.24%,0.42%]和[0.43%,0.58%],而rout1和rout4傳輸丟失率區(qū)間分別為[1.60%,1.75%]和[1.42%,1.68%],可知SDNUCQS針對丟失率敏感型數(shù)據(jù),能夠顯著降低傳輸丟失率。
圖10為SDNUCQS針對普通數(shù)據(jù)的路由以及LEACH、EEUC、CRIPSO和tPSOEB的網(wǎng)絡(luò)存活節(jié)點數(shù)量變化情況,從中可以比較網(wǎng)絡(luò)生命周期。
Figure 10 Network life cycle圖10 網(wǎng)絡(luò)生命周期
LEACH的存活節(jié)點數(shù)下降最快,在425輪左右節(jié)點全部死亡,EEUC采用非均勻分簇緩解網(wǎng)絡(luò)“熱區(qū)”問題,有效延長了網(wǎng)絡(luò)生命周期;CRIPSO利用粒子群優(yōu)化算法選擇更加合理的簇頭節(jié)點,平衡簇頭能耗,延長生命周期;而tPSOEB和SDNUCQS利用SDN框架,節(jié)點無需路由計算,進一步降低了簇頭能耗,SDNUCQS根據(jù)節(jié)點負載度計算路徑,均衡節(jié)點能耗,延長網(wǎng)絡(luò)生命周期。SDNUCQS相比于LEACH、EEUC、CRIPSO和tPSOEB網(wǎng)絡(luò)生命周期分別延長了50.58%,21.28%,13.70%和5.54%,由此可知SDNUCQS能夠平衡節(jié)點能耗,極大延長網(wǎng)絡(luò)生命周期。
本文提出一種基于軟件定義的無線傳感器網(wǎng)絡(luò)非均勻分簇QoS路由算法SDNUCQS。簇頭選舉采用熵權(quán)法,結(jié)合QoS指標,競選出針對網(wǎng)絡(luò)QoS的高質(zhì)量簇頭。為緩解網(wǎng)絡(luò)熱區(qū)問題,對網(wǎng)絡(luò)進行非均勻分簇,平衡簇頭節(jié)點能耗。路由階段,首先按照時延和丟失率對數(shù)據(jù)分類,然后控制器針對不同數(shù)據(jù)計算路由。仿真結(jié)果表明,SDNUCQS在分簇方面能有效提高簇頭質(zhì)量,降低簇頭能耗;在路由方面能夠顯著提高網(wǎng)絡(luò)QoS并且延長網(wǎng)絡(luò)生命周期。雖然本文算法在仿真中具有較好的性能,但應(yīng)用于大規(guī)模網(wǎng)絡(luò)中的效果有待考量,下一步將進一步改進算法,使其在大規(guī)模網(wǎng)絡(luò)環(huán)境中也能發(fā)揮優(yōu)勢。