顧昊倫, 趙國榮, 姚金博, 高 超
(1. 海軍航空大學(xué)岸防兵學(xué)院, 山東 煙臺(tái) 264001; 2. 國電南瑞科技股份有限公司, 江蘇 南京 211106)
組網(wǎng)導(dǎo)航系統(tǒng)(networked navigation systems, NNSs)是一類以集群運(yùn)動(dòng)體為對(duì)象,以獲取目標(biāo)運(yùn)動(dòng)體實(shí)時(shí)導(dǎo)航信息為核心任務(wù)并將現(xiàn)代導(dǎo)航技術(shù)與無線網(wǎng)絡(luò)技術(shù)相結(jié)合的導(dǎo)航技術(shù)的總和,用以解決諸如衛(wèi)星導(dǎo)航禁用、導(dǎo)航裝備參差不齊等場(chǎng)景下導(dǎo)航體編隊(duì)控制與數(shù)據(jù)共享等問題,最終實(shí)現(xiàn)網(wǎng)絡(luò)內(nèi)導(dǎo)航性能的整體提升[1]。
實(shí)現(xiàn)組網(wǎng)導(dǎo)航的基礎(chǔ)是針對(duì)導(dǎo)航體傳感器網(wǎng)絡(luò)設(shè)計(jì)一套高效的組網(wǎng)通信協(xié)議。其中,媒介訪問控制(medium access control, MAC)協(xié)議位于數(shù)據(jù)鏈路層,是保證NNSs高效利用無線信道的關(guān)鍵機(jī)制。與傳統(tǒng)Ad-hoc網(wǎng)絡(luò)相比,NNSs MAC協(xié)議的設(shè)計(jì)難點(diǎn)[2]為:① 節(jié)點(diǎn)高機(jī)動(dòng)性;② 低通信時(shí)滯與丟包率需求;③ 節(jié)點(diǎn)能量受限更為明顯;④ 接入需求復(fù)雜,服務(wù)類型多樣;⑤ 視距/超視距傳輸需求。
針對(duì)問題④,文獻(xiàn)[3]和文獻(xiàn)[4]分別提出了區(qū)分服務(wù)的低時(shí)延MAC (diffserv-based low-delay MAC, DLD-MAC) 協(xié)議和分布式時(shí)/頻分多信道MAC(distributed time/frequency division multi-channel MAC, DTFMM) 協(xié)議,針對(duì)不同類型服務(wù)對(duì)時(shí)延敏感度和服務(wù)質(zhì)量(quality of service, QoS)的要求差異,設(shè)計(jì)對(duì)應(yīng)的優(yōu)先級(jí)別和服務(wù)方式。針對(duì)問題⑤,文獻(xiàn)[5]利用Multi-hop中繼轉(zhuǎn)發(fā)思想設(shè)計(jì)了隨機(jī)協(xié)作MAC (random cooperative MAC, CoopMAC)協(xié)議,實(shí)現(xiàn)了信息的遠(yuǎn)距傳輸。文獻(xiàn)[6]和文獻(xiàn)[7]則利用定向天線的高增益方向性波束設(shè)計(jì)了雙感知定向MAC(dual sensing directional MAC, DSDMAC)協(xié)議和具備遠(yuǎn)距通信能力的定向MAC(directional MAC with long-range communication ability, DMAC) 協(xié)議,有效提高了空間復(fù)用率,擴(kuò)大了傳輸范圍。但是,上述文獻(xiàn)均未考慮問題①~問題③對(duì)MAC協(xié)議設(shè)計(jì)帶來的影響,尤其是普遍存在于NNSs中的問題①。事實(shí)上,節(jié)點(diǎn)的高速移動(dòng)往往會(huì)加劇問題②和問題③,這使得適用于NNSs的MAC協(xié)議更加復(fù)雜。
針對(duì)問題①~問題③,目前的學(xué)者提出了兩類解決方案,一類是基于無競(jìng)爭的具有移動(dòng)性檢測(cè)的MAC協(xié)議,另一類是基于競(jìng)爭的具有移動(dòng)性檢測(cè)的MAC協(xié)議。無競(jìng)爭的MAC協(xié)議并不適合NNSs這種大規(guī)模組網(wǎng)系統(tǒng)。因此,下文重點(diǎn)闡述基于競(jìng)爭的MAC協(xié)議。
基于競(jìng)爭的具有移動(dòng)性檢測(cè)的MAC協(xié)議通常具有兩種通信管理機(jī)制。第一種機(jī)制的基本思想是同步化某一領(lǐng)域中節(jié)點(diǎn)的活躍/睡眠周期,這種機(jī)制下網(wǎng)絡(luò)被整體分為多個(gè)虛擬簇群,每個(gè)簇群遵循相同的時(shí)間規(guī)劃表。文獻(xiàn)[8]基于此提出了支持移動(dòng)節(jié)點(diǎn)的MAC (mobile-supporting MAC, MS-MAC)協(xié)議,該協(xié)議檢測(cè)移動(dòng)節(jié)點(diǎn)及其鄰節(jié)點(diǎn)交互的同步包的信號(hào)接收強(qiáng)度指示器(received signal strength indicator, RSSI)變化并估計(jì)移動(dòng)節(jié)點(diǎn)的速度。當(dāng)移動(dòng)節(jié)點(diǎn)到達(dá)虛擬簇群邊界時(shí),MS-MAC加快了同步速率,使移動(dòng)節(jié)點(diǎn)能夠迅速更新時(shí)間規(guī)劃表,避免了簇間切換階段長時(shí)間的斷連。但該協(xié)議會(huì)給移動(dòng)節(jié)點(diǎn)及其鄰節(jié)點(diǎn)帶來巨大的開銷,且RSSI本身并不能提供足夠精準(zhǔn)的移動(dòng)性檢測(cè)。文獻(xiàn)[9]針對(duì)文獻(xiàn)[8]中的不足,設(shè)計(jì)了具備速度響應(yīng)的移動(dòng)性感知MAC(mobility-aware speed-respond MAC, MS-SMAC)協(xié)議,改進(jìn)了移動(dòng)性檢測(cè)算法,主動(dòng)響應(yīng)移動(dòng)節(jié)點(diǎn)速度變化,但需要付出額外的開銷,尤其是當(dāng)移動(dòng)節(jié)點(diǎn)數(shù)目增加時(shí),能量節(jié)省率大幅降低。文獻(xiàn)[10]則變換思路,利用簇群的邊界節(jié)點(diǎn)包含相鄰簇群時(shí)間規(guī)劃表這一特點(diǎn),設(shè)計(jì)了支持移動(dòng)節(jié)點(diǎn)的自適應(yīng)MAC(adaptive mobility-supporting MAC, AM-MAC)協(xié)議,實(shí)現(xiàn)了平滑的簇間切換。但該協(xié)議需要移動(dòng)節(jié)點(diǎn)在完成切換前始終保持在邊界節(jié)點(diǎn)區(qū)域,一旦移動(dòng)節(jié)點(diǎn)速度過快,那么極有可能導(dǎo)致切換失敗,且該協(xié)議需要預(yù)定義移動(dòng)節(jié)點(diǎn),并不符合NNSs實(shí)際工作場(chǎng)景。
第二種機(jī)制是具有前導(dǎo)采樣的異步MAC協(xié)議。這類協(xié)議允許節(jié)點(diǎn)單獨(dú)管理自身時(shí)間規(guī)劃表,每次數(shù)據(jù)傳輸前需要進(jìn)行專門的同步過程。文獻(xiàn)[11]基于此思想設(shè)計(jì)了基于任播的支持移動(dòng)節(jié)點(diǎn)的Contiki操作系統(tǒng)下的MAC(mobility-supporting anycast-based ContikiMAC, M-ContikiMAC)協(xié)議,該協(xié)議使用任播傳輸機(jī)制改善數(shù)據(jù)包的突發(fā)傳輸情況。但任播模式可能導(dǎo)致數(shù)據(jù)包重復(fù)以及確認(rèn)包沖突。文獻(xiàn)[12]針對(duì)文獻(xiàn)[11]的缺點(diǎn),提出了移動(dòng)性增強(qiáng)的Contiki操作系統(tǒng)下的MAC(mobility-enhanced ContikiMAC, ME-ContikiMAC)協(xié)議,解決了數(shù)據(jù)包重復(fù)以及確認(rèn)包沖突的問題。但如果移動(dòng)節(jié)點(diǎn)速度過快,其將多次改變目標(biāo)接收機(jī),導(dǎo)致網(wǎng)絡(luò)內(nèi)大量節(jié)點(diǎn)重新連接,大大降低了能量節(jié)省率。文獻(xiàn)[13]則設(shè)計(jì)了一種新的鄰居發(fā)現(xiàn)機(jī)制,并以此提出了支持移動(dòng)節(jié)點(diǎn)的適用于物聯(lián)網(wǎng)和無線傳感器網(wǎng)絡(luò)突發(fā)流量的MAC(mobility-supporting MAC sheme for bursty traffic in IoT and WSNs, MobIQ)協(xié)議,實(shí)現(xiàn)了數(shù)據(jù)包突發(fā)傳輸情況下目標(biāo)節(jié)點(diǎn)的高效切換。但該協(xié)議仍未解決確認(rèn)包沖突的問題,且上述文獻(xiàn)均明確指出移動(dòng)節(jié)點(diǎn)不能參與路由過程,這與NNSs實(shí)際工作場(chǎng)景不符。事實(shí)上,具有前導(dǎo)采樣的異步MAC協(xié)議由于異步特性,導(dǎo)致其在NNSs這種高度動(dòng)態(tài)的環(huán)境中復(fù)雜度增加,通信時(shí)滯更為明顯[14]。
本文綜合考慮上述文獻(xiàn)中的優(yōu)缺點(diǎn),力求在針對(duì)NNSs設(shè)計(jì)的CRTCC路由協(xié)議基礎(chǔ)上,設(shè)計(jì)一套適用于NNSs的GN-MAC協(xié)議,旨在解決以下5個(gè)問題:① 通過路由層構(gòu)建交叉路由樹的過程協(xié)作定義節(jié)點(diǎn)級(jí)別,完成MAC層自適應(yīng)虛擬分簇,使移動(dòng)節(jié)點(diǎn)實(shí)現(xiàn)平滑的簇間切換;② 通過定義GN-MAC包格式,引入路由層的路徑信息;③ 通過設(shè)計(jì)一種改進(jìn)型移動(dòng)性檢測(cè)算法,為移動(dòng)節(jié)點(diǎn)提供自主且精確的移動(dòng)性檢測(cè);④ 通過設(shè)計(jì)基于優(yōu)先級(jí)的競(jìng)爭機(jī)制區(qū)分各級(jí)別節(jié)點(diǎn)訪問媒介的優(yōu)先級(jí),減小通信時(shí)滯并提高能量節(jié)省率;⑤ 通過設(shè)計(jì)多信道通信方案提高吞吐量,進(jìn)一步減小通信時(shí)滯,解決數(shù)據(jù)包突發(fā)傳輸情況下的信道占用問題。
NNSs網(wǎng)絡(luò)模型基本設(shè)置參考CRTCC路由協(xié)議中的規(guī)定。設(shè)NNSs共有N個(gè)節(jié)點(diǎn),1個(gè)匯聚節(jié)點(diǎn),其中移動(dòng)節(jié)點(diǎn)的個(gè)數(shù)為M(M≤N)。節(jié)點(diǎn)測(cè)距方式為基于信號(hào)到達(dá)時(shí)間法(time of arrival, TOA)的組網(wǎng)測(cè)距[15],解算導(dǎo)航信息采取三維球面定位算法[16]和四元數(shù)無跡卡爾曼濾波(unscented Kalman filter, UKF)姿態(tài)估計(jì)算法[17]。初始時(shí)刻前,網(wǎng)絡(luò)內(nèi)所有節(jié)點(diǎn)通過文獻(xiàn)[18]設(shè)計(jì)的NNSs通信協(xié)議獲取了初始導(dǎo)航信息并建立了網(wǎng)絡(luò)空間局部坐標(biāo)系。設(shè)局部坐標(biāo)系下x軸范圍[0,X],y軸范圍[0,Y],z軸范圍[0,Z]。
CRTCC路由協(xié)議規(guī)劃了移動(dòng)匯聚節(jié)點(diǎn)的路徑,創(chuàng)建了以移動(dòng)匯聚節(jié)點(diǎn)為中心的交叉區(qū)域并構(gòu)建了交叉路由樹,而對(duì)于交叉區(qū)域外的節(jié)點(diǎn)制定了適用于NNSs的簇頭選取策略,構(gòu)建了鏈?zhǔn)酱厝航Y(jié)構(gòu),完成了數(shù)據(jù)傳遞路徑的規(guī)劃。GN-MAC與CRTCC的融合主要體現(xiàn)在:① GN-MAC包中加入CRTCC的路由信息,包括CRTCC所決定的下一跳節(jié)點(diǎn)ID號(hào)以及TOA測(cè)距所需時(shí)間戳(time stamp, TS);② GN-MAC進(jìn)行節(jié)點(diǎn)分級(jí)時(shí)考慮了CRTCC中交叉路由樹的特殊地位;③ GN-MAC規(guī)定了路由上的節(jié)點(diǎn)享有更高優(yōu)先級(jí)去訪問媒介;④ GN-MAC針對(duì)路由樹上的節(jié)點(diǎn)采取了不同的簇間切換策略。
GN-MAC包格式以采取超時(shí)策略的MAC協(xié)議(timeout MCA, T-MAC)包格式[19]為基礎(chǔ)進(jìn)行修改,具體定義如圖1所示。其中,GN-MAC包相對(duì)于T-MAC:① 報(bào)頭均新添一個(gè)4位的Node_LV字段,用于標(biāo)識(shí)每個(gè)節(jié)點(diǎn)的級(jí)別,從而確定哪些節(jié)點(diǎn)能夠優(yōu)先訪問媒介并允許與移動(dòng)節(jié)點(diǎn)協(xié)作實(shí)現(xiàn)高效的通信管理和平滑的簇間切換;② 增加了切換請(qǐng)求(handover request, HReq)和切換同步(handover synchronization, HSyn)兩種控制包,用于實(shí)現(xiàn)移動(dòng)節(jié)點(diǎn)平滑的簇間切換;③ Syn、HReq和HSyn中新添了一個(gè)16位的TS字段,使得同步化階段能夠完成TOA測(cè)距,從而確保CRTCC路由協(xié)議正常運(yùn)作;④ Syn和HSyn中的Schedules字段是動(dòng)態(tài)擴(kuò)展的,一個(gè)節(jié)點(diǎn)允許包含最多4種不同的時(shí)間規(guī)劃表,每種以20位進(jìn)行編碼;④ RTS中加入一個(gè)16位正交信道可用狀態(tài)(statuses of orthogonal channels available, SOCA)字段,CTS中加入一個(gè)4位的數(shù)據(jù)信道(data channel, DC)字段,發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)通過這兩個(gè)字段協(xié)商決定用于發(fā)送數(shù)據(jù)包的信道;⑥ RTS和CTS中均增加一個(gè)16位的NT_hop字段,用于標(biāo)識(shí)CRTCC路由協(xié)議所規(guī)劃的路徑中下一跳節(jié)點(diǎn)的ID號(hào),該節(jié)點(diǎn)一旦接收/偵聽到RTS/CTS包,將以最高優(yōu)先級(jí)主動(dòng)競(jìng)爭發(fā)送FRTS(future-RTS)包;⑦ FRTS中新添一個(gè)16位的未來數(shù)據(jù)傳輸時(shí)間(time of future data transmission, TxTime_F)字段,發(fā)送節(jié)點(diǎn)使用該字段告知預(yù)期的接收節(jié)點(diǎn)計(jì)劃的未來數(shù)據(jù)傳輸時(shí)間,從而保證接收節(jié)點(diǎn)能夠在特定的時(shí)間保持活躍,以接收發(fā)送節(jié)點(diǎn)傳輸?shù)目刂瓢蛿?shù)據(jù)包。
GN-MAC協(xié)議算法主要由5部分組成,分別為同步化及節(jié)點(diǎn)分級(jí)算法、移動(dòng)性檢測(cè)算法、簇間切換算法、基于優(yōu)先級(jí)的競(jìng)爭算法、多信道算法。
GN-MAC采取節(jié)點(diǎn)周期性睡眠機(jī)制節(jié)省能量,若要保證節(jié)點(diǎn)之間能夠完成通信,必須使發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)遵循相同的睡眠/活躍時(shí)間規(guī)劃表。下文將首先完成同步化及節(jié)點(diǎn)分級(jí)。
算法 1同步化及節(jié)點(diǎn)分級(jí)
步驟 1匯聚節(jié)點(diǎn)立刻創(chuàng)建自身時(shí)間規(guī)劃表,初始化Syn包中TS,將Syn包中的Node_LV置為Sink,隨后廣播Syn包,與此同時(shí),網(wǎng)絡(luò)內(nèi)其余節(jié)點(diǎn)中有一部分被隨機(jī)指定為簇首(cluster head, CH),同樣立刻創(chuàng)建自身時(shí)間規(guī)劃表,并將Syn包中的Node_LV置為CH,初始化TS,隨后廣播Syn包;
步驟 2剩余節(jié)點(diǎn)偵聽Syn包,一旦接收到來自Sink或CH的Syn包,該節(jié)點(diǎn)采取其時(shí)間規(guī)劃表,更新TS,完成TOA測(cè)距,將自身定義為普通節(jié)點(diǎn)(normal node, NN),隨后將其Syn包繼續(xù)轉(zhuǎn)播;
步驟 3不斷重復(fù)步驟2的過程,如果某一個(gè)節(jié)點(diǎn)在一定的偵聽期間內(nèi)沒有接收到任何Syn包,則將其認(rèn)為是CH,初始化TS及Node_LV,隨后立刻廣播其Syn包;
步驟 4第一輪同步過程中,路由層同步進(jìn)行交叉區(qū)域構(gòu)建與路由樹生成,GN-MAC將重新定義路由樹上節(jié)點(diǎn)的Syn包,將其Node_LV定義為路由樹節(jié)點(diǎn)(node in routing tree, RT);
步驟 5所有節(jié)點(diǎn)全部更新完時(shí)間規(guī)劃表后,遵循相同時(shí)間規(guī)劃表的節(jié)點(diǎn)形成一個(gè)虛擬簇群,對(duì)于具有多個(gè)不同時(shí)間規(guī)劃表的節(jié)點(diǎn),首先確認(rèn)其Node_LV是否為RT,若不是,則將其定義為一級(jí)邊界節(jié)點(diǎn)(LV1 boarder node, BN1),該節(jié)點(diǎn)的第一個(gè)時(shí)間規(guī)劃表定義為主時(shí)間規(guī)劃表,其余時(shí)間規(guī)劃表按照對(duì)應(yīng)接收的Syn包的RSSI值降序排列,隨后廣播Syn包;
步驟 6接收到BN1廣播的Syn包的節(jié)點(diǎn),同樣確認(rèn)其Node_LV是否為RT,若不是,則將其定義為二級(jí)邊界節(jié)點(diǎn)(BN2),其主時(shí)間規(guī)劃表保持原先的不變,次時(shí)間規(guī)劃表采取距離其最近的BN1的第一個(gè)次時(shí)間規(guī)劃表,隨后廣播Syn包;
步驟 7接收到BN2廣播的Syn包的節(jié)點(diǎn),同樣確認(rèn)其Node_LV是否為RT,若不是,則將其定義為三級(jí)邊界節(jié)點(diǎn)(BN3),其主時(shí)間規(guī)劃表保持原先的不變,次時(shí)間規(guī)劃表采取距離其最近的BN2的次時(shí)間規(guī)劃表;
步驟 8Sink再次廣播其Syn包,其余節(jié)點(diǎn)一旦接受/偵聽到來自Sink或RT節(jié)點(diǎn)的Syn包,確認(rèn)其Node_LV是否為RT,如果是,則重新采取Sink的主時(shí)間規(guī)劃表作為自身的主時(shí)間規(guī)劃表,隨后廣播Syn包,直到所有RT節(jié)點(diǎn)完成主時(shí)間規(guī)劃表的更新。
至此,算法1完成了同步化并定義了7種節(jié)點(diǎn)級(jí)別(Sink、RT、BN1、BN2、BN3、CH、NN),對(duì)于Sink和RT節(jié)點(diǎn),無論是快速還是慢速移動(dòng)節(jié)點(diǎn)都將迅速切換其時(shí)間規(guī)劃表,以實(shí)現(xiàn)數(shù)據(jù)包迅速傳遞至Sink,對(duì)于BN1、BN2和BN3,移動(dòng)節(jié)點(diǎn)也將采取不同的切換策略。此外,Sink和RT節(jié)點(diǎn)相對(duì)于其他級(jí)別的節(jié)點(diǎn)也將享有更高的優(yōu)先級(jí)去訪問媒介,上述內(nèi)容均在下文設(shè)計(jì)的算法中得以體現(xiàn)。
網(wǎng)絡(luò)進(jìn)入移動(dòng)性檢測(cè)階段后需要GN-MAC提供一個(gè)足夠精準(zhǔn)且不需要額外硬件、能量或帶寬資源的移動(dòng)性檢測(cè)算法。由于TOA測(cè)距需要承擔(dān)NNSs導(dǎo)航信息解算的任務(wù),且TOA測(cè)距為追求精度常在硬件或軟件上增加濾波器,因此TOA測(cè)距不適合額外承擔(dān)移動(dòng)性檢測(cè)的任務(wù)。下文將利用RSSI和鏈路質(zhì)量指示(link quality indicator, LQI)[20]設(shè)計(jì)一種精準(zhǔn)高效的移動(dòng)性檢測(cè)算法。
算法 2移動(dòng)性檢測(cè)
步驟 1節(jié)點(diǎn)偵聽媒介,同時(shí)轉(zhuǎn)步驟10,若一段時(shí)間內(nèi)接收/偵聽到一個(gè)GN-MAC包,則轉(zhuǎn)步驟2,否則繼續(xù)偵聽媒介;
步驟 2判斷該GN-MAC包的發(fā)送者是否已經(jīng)存在于鄰居列表中,若已經(jīng)存在,則轉(zhuǎn)步驟3,否則將該鄰居節(jié)點(diǎn)信息加入鄰居列表,并轉(zhuǎn)步驟12,這里鄰居列表是所有節(jié)點(diǎn)均會(huì)維護(hù)的,其中記錄了發(fā)送者的ID號(hào)以及接收的最新GN-MAC包的RSSI、LQI和TS;
步驟 3判斷最新接收的GN-MAC包RSSI與LQI是否分別大于閾值thr1與thr2,若大于,則轉(zhuǎn)步驟四,否則返回步驟1。thr1與thr2分別代表RSSI和LQI的最大容許變化值,需要根據(jù)目標(biāo)環(huán)境中的經(jīng)驗(yàn)測(cè)量值來預(yù)定義;
步驟 4利用文獻(xiàn)[21]所提對(duì)數(shù)正態(tài)陰影模型估計(jì)節(jié)點(diǎn)距離變化Δd并根據(jù)TS計(jì)算移動(dòng)速度v,Δd表達(dá)式如下:
Δd=ω1ΔdRSSI+ω2ΔdLQI
(1)
其中,ω1和ω2分別為基于RSSI的距離估計(jì)ΔdRSSI和基于LQI的距離估計(jì)ΔdLQI的權(quán)重,且滿足ω1+ω2=1;
步驟 5更新鄰居列表中對(duì)應(yīng)ID號(hào)的信息,判斷計(jì)時(shí)器T1是否已經(jīng)觸發(fā),若已經(jīng)觸發(fā),則直接進(jìn)入步驟6,否則觸發(fā)T1,令計(jì)數(shù)器C1=0,再進(jìn)入步驟6;
步驟 6C1=C1+1,判斷C1是否大于閾值thrC1,若是,則轉(zhuǎn)步驟7,否則返回步驟1,thrC1代表了判斷節(jié)點(diǎn)移動(dòng)性的嚴(yán)格程度,為了防止移動(dòng)節(jié)點(diǎn)周圍的靜止鄰居節(jié)點(diǎn)被誤認(rèn)為是移動(dòng)的,thrC1必須大于等于2;
步驟 7判斷計(jì)時(shí)器T3是否被觸發(fā),若已經(jīng)觸發(fā),則取消T3并重新觸發(fā)T3,否則觸發(fā)T3;
步驟 8根據(jù)v的大小改變?cè)摴?jié)點(diǎn)的Node_LV,標(biāo)識(shí)該節(jié)點(diǎn)的移動(dòng)性,移動(dòng)性級(jí)別共3種,分別為一級(jí)移動(dòng)節(jié)點(diǎn)(level 1 move node, MN1)、MN2、MN3,代表低速移動(dòng)、中速移動(dòng)、高速移動(dòng);
步驟 9C1=0,C2=0,取消T1、T2,返回步驟1;
步驟 10遍歷該節(jié)點(diǎn)鄰居列表,將一段時(shí)間內(nèi)沒有更新的鄰居節(jié)點(diǎn)從鄰居列表中刪除,轉(zhuǎn)步驟12;
步驟 11判斷計(jì)時(shí)器T3是否超時(shí),若超時(shí),則令v=0,返回步驟9;
步驟 12判斷計(jì)時(shí)器T2是否已經(jīng)觸發(fā),若已經(jīng)觸發(fā),則直接進(jìn)入步驟13,否則先觸發(fā)T2,令計(jì)數(shù)器C2=0,再進(jìn)入步驟13;
步驟 13C2=C2+1,判斷C2是否大于閾值thrC2,若是,則轉(zhuǎn)步驟7,否則返回步驟1, thrC2代表了判斷節(jié)點(diǎn)移動(dòng)性的嚴(yán)格程度,為了防止移動(dòng)節(jié)點(diǎn)周圍的靜止鄰居節(jié)點(diǎn)被誤認(rèn)為是移動(dòng)的,thrC2必須大于等于2。
至此,算法2完成了任意一個(gè)節(jié)點(diǎn)的實(shí)時(shí)自主移動(dòng)性檢測(cè),其中涉及了兩個(gè)計(jì)數(shù)器C1、C2,3個(gè)計(jì)時(shí)器T1、T2、T3。C1與T1協(xié)作完成了基于RSSI和LQI的移動(dòng)性檢測(cè)過程,C2和T2是考慮了網(wǎng)絡(luò)中長時(shí)間缺乏數(shù)據(jù)流量的情況下,協(xié)作完成了基于分析鄰居節(jié)點(diǎn)變化的移動(dòng)性檢測(cè)過程。C1實(shí)際上計(jì)的是動(dòng)態(tài)鏈路的個(gè)數(shù),C2實(shí)際上計(jì)的是鄰居節(jié)點(diǎn)變化的次數(shù)。T3則是實(shí)現(xiàn)實(shí)時(shí)檢測(cè)節(jié)點(diǎn)移動(dòng)性的計(jì)時(shí)器,T3超時(shí)意味著該移動(dòng)節(jié)點(diǎn)一段時(shí)間內(nèi)沒有再次被認(rèn)定為移動(dòng)節(jié)點(diǎn),實(shí)際就是該節(jié)點(diǎn)從移動(dòng)狀態(tài)變?yōu)殪o止?fàn)顟B(tài)。需要特別說明的是,T1或T2一旦超時(shí),將會(huì)自動(dòng)重置C1=0或者C2=0并取消自身,然后重新偵聽媒介。算法2流程圖如圖2所示。
算法1和算法2一共確立了10種節(jié)點(diǎn)級(jí)別(MN3、MN2、MN1、Sink、RT、BN1、BN2、BN3、CH、NN),前3種是移動(dòng)節(jié)點(diǎn)。當(dāng)移動(dòng)節(jié)點(diǎn)從一個(gè)虛擬簇群移動(dòng)到另一個(gè)虛擬簇群時(shí),將依靠BN同時(shí)遵循這兩個(gè)虛擬簇群時(shí)間規(guī)劃表的特性完成平滑的簇間切換。需要特別說明的是,移動(dòng)節(jié)點(diǎn)一旦移動(dòng)到Sink與RT節(jié)點(diǎn)附近,那么無論其速度快慢,將直接采取Sink和RT的主時(shí)間規(guī)劃表,從而完成數(shù)據(jù)向匯聚節(jié)點(diǎn)的快速傳輸。
算法 3簇間切換
步驟 1節(jié)點(diǎn)偵聽媒介,若MN接收到來自Sink、RT、BN的Syn包,則轉(zhuǎn)步驟2,若MN接收/偵聽到Sink、RT、BN除Syn包的任意一種GN-MAC包,則轉(zhuǎn)步驟3,若Sink、RT、BN接收/偵聽到來自MN的任意一種GN-MAC包,則轉(zhuǎn)步驟4;
步驟 2若Syn包(或HSyn包)中Node_LV為Sink或RT,則無論自身處于何種MN級(jí)別,直接轉(zhuǎn)步驟8,若Node_LV為BN1,則轉(zhuǎn)步驟7,若Node_LV為BN2,則轉(zhuǎn)步驟6,若Node_LV為BN3,則轉(zhuǎn)步驟5;
步驟 3MN向Sink、RT、BN發(fā)送HReq包, Sink、RT、BN接收到HReq包后將會(huì)立刻響應(yīng)HSyn包,其中包含簇間切換所需時(shí)間規(guī)劃表,MN一旦接收到HSyn包,轉(zhuǎn)步驟2;
步驟 4Sink、RT、BN立刻向MN發(fā)送HSyn包,MN一旦接收到HSyn包,轉(zhuǎn)步驟2;
步驟 5判斷自身Node_LV是否為MN3,若是,則轉(zhuǎn)步驟8,否則返回步驟1;
步驟 6判斷自身Node_LV是否為MN3或MN2,若是,則轉(zhuǎn)步驟8,否則返回步驟1;
步驟 7判斷自身Node_LV是否為MN3或MN2或MN1,若是,則轉(zhuǎn)步驟8,否則返回步驟1;
步驟 8MN遵循Syn包(或HSyn包)中第一個(gè)次級(jí)時(shí)間規(guī)劃表及其原主時(shí)間規(guī)劃表,同時(shí)觸發(fā)計(jì)時(shí)器T4,轉(zhuǎn)步驟9;
步驟 9判斷T4是否超時(shí),若超時(shí),則刪除自身所有時(shí)間規(guī)劃表,返回步驟1,否則轉(zhuǎn)步驟10;
步驟 10持續(xù)偵聽媒介,若在一定時(shí)間間隔內(nèi),MN先后接收到來自Sink或RT的Syn包和BN的Syn包,說明MN正在遠(yuǎn)離交叉區(qū)域,轉(zhuǎn)步驟11,若MN先后受到來自不同等級(jí)BN的Syn包,且BN等級(jí)由小到大,說明MN正在向新簇群內(nèi)部移動(dòng),轉(zhuǎn)步驟12,若接收到來自CH或NN的Syn包,則轉(zhuǎn)步驟13;
步驟 11將BN的時(shí)間規(guī)劃表加入自身時(shí)間規(guī)劃表,刪除原主時(shí)間規(guī)劃表,取消T4,返回步驟1;
步驟 12刪除未使用的時(shí)間規(guī)劃表,取消T4,返回步驟1;
步驟 13清除所有時(shí)間規(guī)劃表,采取CH或NN的時(shí)間規(guī)劃表,取消T4,返回步驟1。
至此,算法3完成了基于節(jié)點(diǎn)級(jí)別的最優(yōu)簇間切換決策過程。其中,步驟1、步驟3、步驟4規(guī)定了MN開始進(jìn)行簇間切換的3種情況;步驟2、步驟5、步驟6、步驟7為基于節(jié)點(diǎn)級(jí)別的簇間切換機(jī)制;步驟8~步驟13實(shí)際上考慮了MN完成簇間切換后,長時(shí)間遵循兩種以上時(shí)間規(guī)劃表將導(dǎo)致能量浪費(fèi)的情況,制定了移除舊時(shí)間規(guī)劃表的機(jī)制。需要特別說明的是,在移除舊時(shí)間規(guī)劃表機(jī)制中,一旦MN判斷出自身正在遠(yuǎn)離交叉區(qū)域,那么將直接刪除原先采用的Sink和RT的主時(shí)間規(guī)劃表,轉(zhuǎn)而采用來自BN的Syn包中的時(shí)間規(guī)劃表。這樣做是為了防止MN下一個(gè)偵聽周期內(nèi)又接收/偵聽到來自Sink或RT的GN-MAC包,導(dǎo)致MN誤認(rèn)為自身正在進(jìn)入交叉區(qū)域,從而使得MN在下次簇間切換前一直保持Sink與RT的主時(shí)間規(guī)劃表,造成能量浪費(fèi)。算法3流程圖如圖3所示。
GN-MAC幀結(jié)構(gòu)由活躍周期與睡眠周期組成。活躍周期包括同步周期PSyn、RTS/CTS周期PRTS/CTS、FRTS周期PFRTS以及可能存在的數(shù)據(jù)傳輸和確認(rèn)(DATA/ACK)周期PDATA/ACK?;钴S周期表達(dá)式為
Pawake=f(t)PSyn+n1(PRTS/CTS+PFRTS)+n2(PDATA/ACK)
(2)
式中:f(t)為周期性脈沖函數(shù);n1≥1,n2≥0,n1、n2均為整數(shù)。
PSyn、PRTS/CTS、PFRTS和PDATA/ACK除了傳輸各自周期對(duì)應(yīng)的數(shù)據(jù)包以外,還涉及到競(jìng)爭時(shí)間CT以及短幀間隔時(shí)間TSIFS。這些周期與CT、TSIFS以及傳輸各類GN-MAC包的時(shí)間TX之間的關(guān)系如下所示:
PSyn?max CTSyn+TXSyn
(3)
PRTS/CTS=CTRTS+TXRTS+TSIFS+TXCTS
(4)
PFRTS≥max CTFRTS+TXFRTS
(5)
PDATA/ACK=TSIFS+TXDATA+TSIFS+TACK
(6)
式中:CTSyn和CTFRTS均是由空閑信道評(píng)估(clear channel assessment, CCA)時(shí)間TCCA以及隨機(jī)退避時(shí)間Tr組成,且兩者表達(dá)式如下所示:
max CTSyn=max CTFRTS=TCCA+maxTr
(7)
需要特別說明的是,為了提高能量節(jié)省率,避免與任何潛在的鄰居節(jié)點(diǎn)發(fā)生誤通信,節(jié)點(diǎn)進(jìn)入PRTS/CTS后,若沒有再次收到任何GN-MAC包,將自動(dòng)進(jìn)入睡眠狀態(tài)。這一段時(shí)間定義為超時(shí)時(shí)間To。To必須至少能夠包含PFRTS,這樣才能使節(jié)點(diǎn)確認(rèn)在該幀內(nèi)沒有需要傳輸給自己的GN-MAC包,GN-MAC幀結(jié)構(gòu)示意圖如圖4所示。因此,To表達(dá)式如下所示:
To=maxPRTS/CTS+PFRTS
(8)
下文將分別在PRTS/CTS和PDATA/ACK內(nèi)設(shè)計(jì)基于優(yōu)先級(jí)的競(jìng)爭算法以及多信道算法。
算法 4基于優(yōu)先級(jí)的競(jìng)爭
定義5個(gè)優(yōu)先級(jí)別,由低到高依次為r1、r2、r3、r4、r5。r1對(duì)應(yīng)BN、CH和NN,r2對(duì)應(yīng)Sink和RT,r3對(duì)應(yīng)MN1,r4對(duì)應(yīng)MN2,r5對(duì)應(yīng)MN3。基于優(yōu)先級(jí)的競(jìng)爭算法重新設(shè)計(jì)PRTS/CTS,引入5段slot,按時(shí)間先后順序?qū)?yīng)不同的優(yōu)先級(jí)別,分別記為s5、s4、s3、s2、s1。低等級(jí)的節(jié)點(diǎn)需要等待直到屬于自己的slot才能夠準(zhǔn)備發(fā)送RTS/CTS包,定義這段等待時(shí)間為Tw。
s1~s5的時(shí)間間隔并不相同,其中,s5、s4、s3時(shí)間間隔相同,其表達(dá)式如下所示:
(9)
s2表達(dá)式如下所示:
(10)
s1表達(dá)式如下所示:
s1=TCCA+3maxTr
(11)
式(9)與式(10)中,TXRTS/2的含義是:在下一段slot之前,低優(yōu)先級(jí)的節(jié)點(diǎn)需要偵聽一個(gè)最小位以檢測(cè)媒介是否繁忙,并相應(yīng)地放棄預(yù)留媒介,因此高優(yōu)先級(jí)的slot至少得包含TXRTS/2時(shí)間段,而s1由于是最低級(jí)別的slot,不需要包含TXRTS/2時(shí)間段。需要特別說明的是,由于引入了TXRTS/2時(shí)間段,高優(yōu)先級(jí)節(jié)點(diǎn)若在PRTS/CTS內(nèi)未能成功發(fā)送RTS包,則其可以重新占用低優(yōu)先級(jí)節(jié)點(diǎn)預(yù)留的媒介,只需等待偵聽到低優(yōu)先級(jí)節(jié)點(diǎn)發(fā)送RTS包后立刻發(fā)送自身RTS包即可。式(10)與式(11)中多倍的maxTr項(xiàng)含義是:NNSs中非MN節(jié)點(diǎn)的個(gè)數(shù)可能遠(yuǎn)遠(yuǎn)大于MN節(jié)點(diǎn)的個(gè)數(shù),因此需要更長的maxTr,由此也可得r3、r4、r5優(yōu)先級(jí)別的節(jié)點(diǎn)CTRTS表達(dá)式如下所示:
CTRTS=Pw+TCCA+Tr,Tr∈[0,maxTr]
(12)
r2優(yōu)先級(jí)別的節(jié)點(diǎn)CTRTS表達(dá)式如下所示:
CTRTS=Pw+TCCA+Tr,Tr∈[0,2maxTr]
(13)
r1優(yōu)先級(jí)別節(jié)點(diǎn)的CTRTS表達(dá)式如下所示:
CTRTS=Pw+TCCA+Tr,Tr∈[0,3maxTr]
(14)
綜合上述內(nèi)容,可得max CTRTS實(shí)際就是r1級(jí)別節(jié)點(diǎn)發(fā)送RTS/CTS包的情況,其表達(dá)式如下所示:
max CTRTS=s1+s2+s3+s4+s5
(15)
重新設(shè)計(jì)的PRTS/CTS如圖5所示,其中圖5(a)為r3、r4、r5優(yōu)先級(jí)別節(jié)點(diǎn)的PRTS/CTS(以r4級(jí)別為例),圖5(b)為r2優(yōu)先級(jí)別節(jié)點(diǎn)的PRTS/CTS,圖5(c)為r1優(yōu)先級(jí)別節(jié)點(diǎn)的PRTS/CTS。
算法 5多信道數(shù)據(jù)傳輸
GN-MAC利用IEEE802.15.4規(guī)定的2.4 GHz頻帶內(nèi)的16個(gè)正交信道[22],將第一個(gè)信道定義為控制信道(control channel, CC),在其上交換所有的GN-MAC控制包,其余15個(gè)信道全部定義為數(shù)據(jù)信道(data channel, DC)。每個(gè)節(jié)點(diǎn)維護(hù)一個(gè)SOCA,主要包括信道定義、編號(hào)及狀態(tài),如圖6所示。當(dāng)一個(gè)新的幀開始時(shí),節(jié)點(diǎn)將初始化所有信狀態(tài)為0,代表所有信道空閑可用。若一個(gè)節(jié)點(diǎn)所有數(shù)據(jù)信道狀態(tài)都被標(biāo)記為1,則代表當(dāng)前所有信道都處于忙碌預(yù)留狀態(tài),該節(jié)點(diǎn)自動(dòng)將其DATA/ACK推遲至下一幀。每一幀內(nèi),發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)都將協(xié)商決定一個(gè)空閑可用的信道完成DATA/ACK,協(xié)商決定結(jié)果將由接收節(jié)點(diǎn)通過CTS包告知發(fā)送節(jié)點(diǎn),其余鄰節(jié)點(diǎn)通過偵聽CTS包得到選用的DC并將該DC狀態(tài)置為1。單播DATA包具體過程將在第2.5節(jié)詳細(xì)闡述。
有兩種特殊情況需要說明,一是從節(jié)能和降低時(shí)滯的角度出發(fā),若需要傳輸?shù)腄ATA包的大小非常小,那么可以跳過RTS/CTS直接在CC上傳輸該DATA包,一旦傳輸完成,鄰節(jié)點(diǎn)將繼續(xù)正常偵聽媒介,等待是否有發(fā)送節(jié)點(diǎn)競(jìng)爭發(fā)送RTS包。二是從避免沖突的角度出發(fā),GN-MAC處理廣播DATA包時(shí),同樣不采用RTS/CTS而直接在CC上廣播DATA包,一旦廣播完成,鄰節(jié)點(diǎn)繼續(xù)正常偵聽媒介,等待是否仍有需要發(fā)送的RTS包。
考慮在同一單跳鄰域中多個(gè)發(fā)送節(jié)點(diǎn)競(jìng)爭發(fā)送RTS包的情形。節(jié)點(diǎn)在PSyn內(nèi)完成同步,隨后,所有想發(fā)送DATA包的節(jié)點(diǎn)都將在PRTS/CTS內(nèi)基于算法4完成競(jìng)爭,競(jìng)爭成功的節(jié)點(diǎn)將向預(yù)期接收節(jié)點(diǎn)發(fā)送包含其SOCA的RTS包,接收節(jié)點(diǎn)將自身的SOCA與RTS包中的SOCA進(jìn)行比較,從狀態(tài)為0的DC中隨機(jī)挑選出一個(gè),并加入CTS包中的DC字段,反饋給發(fā)送節(jié)點(diǎn)。與此同時(shí),其余鄰節(jié)點(diǎn)偵聽RTS/CTS包,從中確定將要進(jìn)行的DATA/ACK所選擇的DC,改變各自SOCA中對(duì)應(yīng)DC的狀態(tài)。
接下來,所有節(jié)點(diǎn)進(jìn)入PFRTS,同時(shí)在各自的CC上偵聽潛在的FRTS包。若節(jié)點(diǎn)想要發(fā)送DATA包,則將在該P(yáng)FRTS內(nèi)發(fā)送FRTS包,其中包含了TxTime_F,預(yù)期的接收節(jié)點(diǎn)將通過TxTime_F字段在未來某一時(shí)刻與發(fā)送節(jié)點(diǎn)同時(shí)活躍以接收發(fā)送節(jié)點(diǎn)的RTS包。
在一幀間隔內(nèi),需特別說明以下幾點(diǎn)原則。
原則 1決定FRTS包中的TxTime_F字段時(shí)有兩種情況,一是FRTS包的發(fā)送節(jié)點(diǎn)和接收節(jié)點(diǎn)均不是當(dāng)前將要進(jìn)行DATA/ACK的節(jié)點(diǎn),那么這兩個(gè)節(jié)點(diǎn)將在PFRTS后立刻競(jìng)爭發(fā)送RTS包并在完成競(jìng)爭后再次經(jīng)歷一個(gè)PFRTS,偵聽是否有需要發(fā)送數(shù)據(jù)的節(jié)點(diǎn),隨后完成DATA/ACK;二是FRTS包的發(fā)送節(jié)點(diǎn)或接收節(jié)點(diǎn)是當(dāng)前將要進(jìn)行DATA/ACK的節(jié)點(diǎn),那么這兩個(gè)節(jié)點(diǎn)將基于接收/偵聽到的RTS/CTS包中的網(wǎng)絡(luò)分配矢量(network allocation vector, NAV)字段,規(guī)劃當(dāng)前幀的未來某一時(shí)刻使兩個(gè)節(jié)點(diǎn)同時(shí)活躍完成RTS/CTS過程。
原則 2其余鄰節(jié)點(diǎn)在偵聽RTS/CTS的過程中,將自身ID與其中的NT_hop字段進(jìn)行比較,如果自身是路由層所決定的下一跳節(jié)點(diǎn),那么其將在PFRTS內(nèi)以最高優(yōu)先級(jí)主動(dòng)競(jìng)爭發(fā)送FRTS包。
原則 3節(jié)點(diǎn)在一幀內(nèi)既可以發(fā)送FRTS包,也可以接收另一個(gè)FRTS包,甚至可以接收多個(gè)FRTS包,其余所有處于活躍狀態(tài)的鄰節(jié)點(diǎn)都將偵聽到這些FRTS包。當(dāng)一個(gè)節(jié)點(diǎn)需要接收多個(gè)FRTS包時(shí),發(fā)送節(jié)點(diǎn)將在PFRTS內(nèi)按照節(jié)點(diǎn)優(yōu)先級(jí)以及原則2進(jìn)行競(jìng)爭,然后再根據(jù)原則1中所述原則規(guī)劃TxTime_F。其余需要發(fā)送的FRTS包將在該幀內(nèi)的下一次活躍期間繼續(xù)競(jìng)爭。這里的競(jìng)爭需要將節(jié)點(diǎn)分為兩類,一類是發(fā)送/接收節(jié)點(diǎn)均不是當(dāng)前將要進(jìn)行DATA/ACK的節(jié)點(diǎn),另一類是接收節(jié)點(diǎn)是當(dāng)前將要進(jìn)行DATA/ACK的節(jié)點(diǎn)。如果存在多組第一類情況的節(jié)點(diǎn)競(jìng)爭發(fā)送FRTS包,則按照發(fā)送節(jié)點(diǎn)優(yōu)先級(jí)順序在PFRTS后依次完成各自的數(shù)據(jù)傳輸過程。
原則 4按照原則3最后所述原則,每一幀開始時(shí)刻有可能出現(xiàn)多組節(jié)點(diǎn)進(jìn)行DATA/ACK,因此規(guī)劃節(jié)點(diǎn)下一次活躍時(shí)必須遵循在此之前所有DATA/ACK完成這一原則。此外,節(jié)點(diǎn)每次成功競(jìng)爭到發(fā)送FRTS包時(shí),都將檢查該幀剩余時(shí)間能否足夠包含未來數(shù)據(jù)傳輸?shù)恼麄€(gè)活躍周期,若不能,則節(jié)點(diǎn)主動(dòng)放棄發(fā)送FRTS包并進(jìn)入睡眠狀態(tài),等待下一幀開始重新競(jìng)爭發(fā)送FRTS包。
GN-MAC在多節(jié)點(diǎn)競(jìng)爭情形下單播DATA包完整過程示例如圖7所示。
本文將利用Matlab進(jìn)行仿真,記網(wǎng)絡(luò)區(qū)域大小為200 m×200 m×200 m,N=100,有效數(shù)據(jù)傳輸速率為300 kbps,發(fā)送/接收模式功耗為50 mW,偵聽模式功耗為1 mW,睡眠模式功耗為0.01 mW。每次仿真持續(xù)時(shí)間為600 s,一幀間隔為600 ms。
為確定最優(yōu)PFRTS大小,在上述網(wǎng)絡(luò)區(qū)域中,選取10 m×10 m×10 m范圍內(nèi)6個(gè)節(jié)點(diǎn),該6個(gè)節(jié)點(diǎn)屬于同一單跳鄰域,且Node_LV均為NN。考慮3種情景,分別假設(shè)發(fā)送節(jié)點(diǎn)個(gè)數(shù)為1、2和4個(gè),每個(gè)發(fā)送節(jié)點(diǎn)周期性地挑選一個(gè)隨機(jī)鄰節(jié)點(diǎn)作為其預(yù)期的接收節(jié)點(diǎn),數(shù)據(jù)包生成速率為 1 Pkt/s。
對(duì)于每種情景,均令PFRTS分別等于0 ms,1 ms,…,10 ms,每個(gè)PFRTS值都進(jìn)行10次仿真,研究每次數(shù)據(jù)包成功被接受時(shí)的平均數(shù)據(jù)包投遞率(packet delivery ratio, PDR)和平均能耗(10次仿真結(jié)果的平均值)。仿真結(jié)果如圖8所示。
由圖8可知:① 對(duì)于只有1個(gè)發(fā)送節(jié)點(diǎn)的情況,PDR隨PFRTS增大幾乎不變,這是因?yàn)闆]有其他節(jié)點(diǎn)與其進(jìn)行競(jìng)爭,與此同時(shí)平均能耗逐漸增大,這是因?yàn)楣?jié)點(diǎn)在PFRTS內(nèi)需花費(fèi)額外的能量完成偵聽;② 對(duì)于多發(fā)送節(jié)點(diǎn)的情況,若PFRTS比較小,則PDR損失很大,這是因?yàn)槎喙?jié)點(diǎn)競(jìng)爭使得在短PFRTS內(nèi),節(jié)點(diǎn)很難完成未來數(shù)據(jù)傳輸?shù)囊?guī)劃,然而隨著PFRTS增大,PDR并不是無限增大,而是增大到接近只有1個(gè)發(fā)送節(jié)點(diǎn)的情況就穩(wěn)定下來,此時(shí)多節(jié)點(diǎn)在PFRTS內(nèi)均能完成未來數(shù)據(jù)的規(guī)劃;③ 對(duì)于多發(fā)送節(jié)點(diǎn)的情況,若PFRTS=0,則能耗將非常大,這是因?yàn)闆]有規(guī)劃的競(jìng)爭將會(huì)導(dǎo)致多節(jié)點(diǎn)長期處于活躍狀態(tài),然而隨著PFRTS增大,能耗將迅速減小,直到到達(dá)一個(gè)最小值后再緩慢增大,這是因?yàn)榇藭r(shí)PDR已經(jīng)趨于穩(wěn)定,PFRTS的進(jìn)一步增大將會(huì)導(dǎo)致節(jié)點(diǎn)花費(fèi)更多的能量完成偵聽。
綜上所述,盡管多發(fā)送節(jié)點(diǎn)時(shí)能耗會(huì)隨著PFRTS增大而緩慢增大,但因增大速度緩慢,主要考慮PDR大小的影響,因此令PFRTS=7 ms。
下面將選取節(jié)能異步QoS MAC(energy-efficient asynchronous QoS MAC, AQSen-MAC)協(xié)議[23]、具有快速移動(dòng)性自適應(yīng)能力的MAC(fast-mobility adaptive MAC, FM-MAC)協(xié)議[24]與GN-MAC進(jìn)行比較,原因是兩者均考慮了能量與通信時(shí)滯的問題,且均考慮了節(jié)點(diǎn)移動(dòng)的影響。假設(shè)數(shù)據(jù)包生成率仍為1 Pkt/s,DATA包大小為100 bytes,同一條件的仿真仍然反復(fù)進(jìn)行10次以求得所需評(píng)價(jià)指標(biāo)的平均值。
網(wǎng)絡(luò)內(nèi)隨機(jī)指定任意節(jié)點(diǎn)為MN,被選中成為MN的節(jié)點(diǎn)在網(wǎng)絡(luò)范圍內(nèi)沿隨機(jī)方向作往復(fù)直線運(yùn)動(dòng)。設(shè)MN個(gè)數(shù)為5個(gè),分別令移動(dòng)速度取5 m/s、10 m/s、15 m/s、…、50 m/s,其中,5~10 m/s對(duì)應(yīng)低速移動(dòng)場(chǎng)景,15~40 m/s對(duì)應(yīng)中速移動(dòng)場(chǎng)景,45~50 m/s對(duì)應(yīng)高速移動(dòng)場(chǎng)景。則4種MAC協(xié)議下MN的平均PDR、平均時(shí)滯以及平均能耗隨移動(dòng)速度的變化趨勢(shì)如圖9所示。設(shè)MN移動(dòng)速度恒為5 m/s,分別令MN個(gè)數(shù)取5、10、15、…、50,則4種MAC協(xié)議下MN的平均PDR、平均時(shí)滯以及平均能耗隨MN個(gè)數(shù)的變化趨勢(shì)如圖10所示。
由圖9和圖10可知:① AQSen-MAC協(xié)議中MN在低移動(dòng)速度以及MN數(shù)目較小的情況下,相較于其他兩種協(xié)議能夠獲得較高的PDR和較低的能耗。但由于其異步特性,隨著移動(dòng)速度的增加或者M(jìn)N個(gè)數(shù)的增加,數(shù)據(jù)包沖突越來越顯著,PDR將會(huì)逐漸降低,能耗也會(huì)逐漸增高,并且幅度越來越大,最終性能將不如其他兩種協(xié)議。② AQSen-MAC協(xié)議中MN的通信時(shí)滯較大,尤其是高速移動(dòng)的情景下,MN反復(fù)改變其接收節(jié)點(diǎn),造成大量時(shí)延現(xiàn)象,甚至導(dǎo)致丟包率急劇增大。③ FM-MAC由于采取了快速移動(dòng)自適應(yīng)的算法,MN在高速移動(dòng)或MN數(shù)目較大的情況下,性能優(yōu)于AQSen-MAC,且由于其不需要與路由協(xié)議進(jìn)行交聯(lián),FM-MAC包相對(duì)于GN-MAC包設(shè)計(jì)簡單,協(xié)議相較于GN-MAC也省去了交聯(lián)部分,因此FM-MAC在低移動(dòng)速度和MN數(shù)目較小的情況下,性能與GN-MAC幾乎一致,甚至在通信時(shí)滯這一方面要優(yōu)于GN-MAC。但隨著MN移動(dòng)速度增加或者M(jìn)N數(shù)目的增加,FM-MAC性能逐漸降低,最終性能將不如GN-MAC。④ GN-MAC盡管在低移動(dòng)速度和MN數(shù)目較小的情況下,性能不一定優(yōu)于其他兩種協(xié)議,但在高速移動(dòng)或MN數(shù)目較多的情況下,性能將優(yōu)于其余兩種協(xié)議,這符合NNSs節(jié)點(diǎn)高速移動(dòng)及多節(jié)點(diǎn)機(jī)動(dòng)的應(yīng)用情景。
本文重點(diǎn)設(shè)計(jì)了5個(gè)算法來構(gòu)成GN-MAC協(xié)議。同步化及節(jié)點(diǎn)分級(jí)首先奠定了其余算法的基礎(chǔ);移動(dòng)性檢測(cè)完成了高效且精準(zhǔn)的節(jié)點(diǎn)移動(dòng)性確認(rèn)和分級(jí),減小了節(jié)點(diǎn)移動(dòng)性檢測(cè)時(shí)的能耗及時(shí)滯;簇間切換完成了MN時(shí)間規(guī)劃表的平滑切換,避免了節(jié)點(diǎn)簇間移動(dòng)導(dǎo)致的長時(shí)間斷連和偵聽現(xiàn)象,進(jìn)一步減小能耗與時(shí)滯;基于優(yōu)先級(jí)的競(jìng)爭以及多信道通信使得GN-MAC性能更為優(yōu)異;最后通過與AQSen-MAC協(xié)議和FM-MAC協(xié)議仿真比較,驗(yàn)證了算法的有效性。