王 永 濤,黃 翠,黃 維,梁 俐,陳 躍 威
(1.貴州省水利科學(xué)研究院,貴州 貴陽 550002; 2.貴州農(nóng)業(yè)職業(yè)學(xué)院,貴州 貴陽 551400; 3.貴州東峰自動化科技有限公司,貴州 貴陽 550002)
灌區(qū)信息監(jiān)測站網(wǎng)建設(shè)點多、面廣,存在交通不便、施工困難等不利因素影響,極大地制約了灌區(qū)信息化的發(fā)展應(yīng)用水平。目前貴州省大型灌區(qū)的管理決策一般是以人工經(jīng)驗為主,并沒有準確全面感知作物水、肥狀況、生長狀態(tài)和環(huán)境參數(shù)。無線傳感器網(wǎng)絡(luò)具有成本低、網(wǎng)絡(luò)結(jié)構(gòu)靈活、數(shù)據(jù)傳輸距離遠等特點,為水利信息化提供了有力的技術(shù)支撐。RMAC無線傳感器網(wǎng)絡(luò)通訊協(xié)議能夠盡可能地減小節(jié)點的能量消耗和延長整個網(wǎng)絡(luò)的生命周期,但同時也存在許多不足。本文在此基礎(chǔ)上,提出了改進型的E-RMAC協(xié)議,并進行了仿真。為初步形成以物聯(lián)網(wǎng)為基礎(chǔ),無線傳感器網(wǎng)絡(luò)為支撐、自動化技術(shù)為手段、高效節(jié)水灌溉技術(shù)為核心的技術(shù)體系提供了重要支撐。可實現(xiàn)作物生長最佳條件的精準調(diào)控,達到增產(chǎn)、改善品質(zhì)、調(diào)節(jié)生育期、節(jié)水節(jié)肥、減少環(huán)境污染、提高經(jīng)濟效益的目的[1]。
具有占空比的MAC協(xié)議能夠有效解決無線傳感器通信網(wǎng)絡(luò)能量有限的難題,在單周期內(nèi)實現(xiàn)多跳傳輸?shù)腞MAC(the Routing enhanced MAC protocol)協(xié)議是其中最為典型的無線傳感MAC協(xié)議。該協(xié)議是 Shu Du, Amit Kumar Saha, David B.Johnson于2007年提出的,很好地實現(xiàn)了節(jié)點能量的高效性,大大降低了節(jié)點間端到端的傳輸延遲時間,同時提高了節(jié)點的吞吐量。RMAC應(yīng)用了跨層思想,由路由層信息獲知下一跳傳輸節(jié)點的地址。協(xié)議將整個傳輸周期分為:同步期(SYNC),數(shù)據(jù)時段(DATA),睡眠時段(SLEEP)。在同步期所有節(jié)點實現(xiàn)全網(wǎng)同步,在數(shù)據(jù)時段節(jié)點實現(xiàn)通信信道預(yù)約,睡眠期節(jié)點可以實現(xiàn)數(shù)據(jù)包傳輸。這樣一來,通過提前預(yù)約信道,大大降低了節(jié)點因競爭信道造成的能量消耗,同時降低了節(jié)點發(fā)送數(shù)據(jù)報時的碰撞概率[2]。
信道預(yù)約時RMAC會在數(shù)據(jù)時段內(nèi)向其下游節(jié)點發(fā)送一個先導(dǎo)控制幀PION(Pioneer Control Frame)實現(xiàn)預(yù)約通信。PION幀代替了SMAC的RTS/CTS控制幀,且能在一個數(shù)據(jù)時段內(nèi)實現(xiàn)多跳傳輸。PION幀起到兩方面作用:① 向它的下游節(jié)點發(fā)送請求通信的請求信息,如SMAC的RTS;② 向它的上游節(jié)點回送確認通信的確認信息,如SMAC的CTS幀。將兩種控制功能集中于一個幀中,在多跳轉(zhuǎn)發(fā)中效率比較高[3]。在睡眠時段,節(jié)點開始發(fā)送數(shù)據(jù)包,節(jié)點完成任務(wù)就進入睡眠狀態(tài),如果節(jié)點沒有任務(wù)也進入睡眠狀態(tài)。
與RTS和CTS幀不同的是,PION幀的字段不僅包含了本地節(jié)點地址、上游節(jié)點的地址、下游節(jié)點的地址、包傳輸需要時間的域值,還包含了跨層信息:數(shù)據(jù)包傳輸?shù)淖罱K目的地址,以及PION在傳輸路徑上已經(jīng)轉(zhuǎn)發(fā)的跳數(shù)。其中最終目的地址是由網(wǎng)絡(luò)層傳輸?shù)模垂?jié)點在產(chǎn)生PION幀時將PION轉(zhuǎn)發(fā)跳數(shù)置為0。
當源節(jié)點S有數(shù)據(jù)要發(fā)送給目的節(jié)點D時,在DATA時段節(jié)點S在退避窗口CW中隨機選擇一個退避值,完成退避后再經(jīng)過DIFS時段確定信道空閑后開始向節(jié)點A發(fā)送一個PION幀,其中A是S的下一跳節(jié)點。當A接收到S發(fā)送的PION幀后,如果A不是數(shù)據(jù)包傳輸?shù)淖罱K目的地,A就構(gòu)建新的PION幀。首先,A通過網(wǎng)絡(luò)層獲取數(shù)據(jù)包當前傳輸?shù)南乱惶?jié)點地址,并將PION轉(zhuǎn)發(fā)跳計數(shù)器值加1,記錄上一跳節(jié)點地址和目的地址后經(jīng)由SIFS時段(SIFS用于節(jié)點從傳輸或接收狀態(tài)的狀態(tài)轉(zhuǎn)換和數(shù)據(jù)處理)開始傳輸自己的PION幀。此時的PION幀代表兩層含義:① 對節(jié)點S的請求確認,如同SMAC的RTS的功能;② 對下一跳節(jié)點B的傳輸請求,如同SMAC的CTS的功能。與其它協(xié)議不同的是,當S接收到A發(fā)送的PION幀后并不立即發(fā)送數(shù)據(jù)包而是等到本周期的睡眠時段開始傳輸數(shù)據(jù)包。一個周期的數(shù)據(jù)時段只用于建立確切的數(shù)據(jù)傳輸調(diào)度的PION幀的發(fā)送與接收,數(shù)據(jù)包只在睡眠時段傳輸,PION幀在傳輸路徑上不斷地向下傳輸,直到PION傳輸?shù)侥康墓?jié)點或者本周期的數(shù)據(jù)時段結(jié)束為止[4-5]。
如果節(jié)點在數(shù)據(jù)時段完成了信道預(yù)約,所有數(shù)據(jù)包將在睡眠時段實現(xiàn)傳輸。在睡眠初始時段,節(jié)點會變?yōu)樗郀顟B(tài),每個節(jié)點會根據(jù)接收到的上游節(jié)點的PION幀信息獲知自己什么時候處于活動狀態(tài),協(xié)同完成數(shù)據(jù)包的轉(zhuǎn)發(fā)[6]。
當A將 PION幀發(fā)送出去且S接收到了之后,就在當前工作周期下的睡眠時段開始數(shù)據(jù)包的傳遞,在睡眠時段的相應(yīng)時間里A就可以接收數(shù)據(jù)包,A收到后就向S發(fā)送已經(jīng)收到包的回復(fù)信息ACK幀,S就立即進入節(jié)能狀態(tài)睡眠模式。如果A成功完成了下一跳節(jié)點B的通信請求,就會把數(shù)據(jù)包傳給B節(jié)點。如果B發(fā)送了確認信息ACK幀且A收到后就立即進入睡眠狀態(tài),這樣的過程一直持續(xù)至包發(fā)送到目的地或者在數(shù)據(jù)時段內(nèi)傳輸?shù)揭粋€節(jié)點失敗后,接收到它下游節(jié)點發(fā)給它的回復(fù)后,PION幀停止發(fā)送數(shù)據(jù)包,此情況下,節(jié)點會保存數(shù)據(jù)包。到下一工作周期的數(shù)據(jù)時段,節(jié)點會向其下一跳節(jié)點發(fā)送新的PION幀,并置PION轉(zhuǎn)發(fā)跳計數(shù)器值為0,在睡眠時段再傳輸數(shù)據(jù)包。如此的進程會被重復(fù)執(zhí)行直到數(shù)據(jù)包傳輸?shù)侥康牡亍?/p>
在上述過程中,節(jié)點適時清醒時刻的計算是通過PION幀中的轉(zhuǎn)發(fā)跳計數(shù)器值得到的,假如一個節(jié)點是此次PION轉(zhuǎn)發(fā)路徑中的第i跳節(jié)點,則其清醒時刻為
Twakeup(i) = (i-1)(durDATA+SIFS+durACK+SIFS)
(1)
式中,durDATA和durACK分別代表了發(fā)送獨個數(shù)據(jù)包和獨個ACK幀的時間長度,假如整個網(wǎng)絡(luò)施行的是同規(guī)格的包,則durDATA為一確定值,否則,應(yīng)在PION幀中相應(yīng)的字段里記錄包的尺度,以便整個傳輸路徑上的所有節(jié)點能計算出正確的清醒時刻[7]。
為了避免包的碰撞,RMAC采用了802.11體系的虛擬載波偵聽思想來設(shè)定網(wǎng)絡(luò)分配矢量NAV(Network Allocation Vector)[8]。但是有別于現(xiàn)有其它的網(wǎng)絡(luò)分配適量,這個網(wǎng)絡(luò)分配矢量是一個時間段,相鄰節(jié)點如果串聽到該節(jié)點的PION幀,ACK幀會計算一個時間段,并在相應(yīng)的時間段節(jié)點處于睡眠模式。
如果C和A是鄰居關(guān)系,為了避免在A節(jié)點處發(fā)生碰撞,那么在A節(jié)點接收數(shù)據(jù)包時C節(jié)點不能發(fā)送任何數(shù)據(jù)包。因此,如果C無意中接收到A傳給B的PION幀,C將會設(shè)置出相應(yīng)的3個時間段到NAV中。
(1) 回復(fù)完成的PION幀時隙段:[now,now+durPION],durPION表示發(fā)送一個PION需要開銷的時間。這個時隙段用于確保在A接收B發(fā)送的確認PION幀時C不會發(fā)送任何數(shù)據(jù)包。
(2) 數(shù)據(jù)包發(fā)送時隙段:[tdatastart,tdataend],tdatastart的值是C根據(jù)下一次睡眠時間再綜合A的Twakeup時間得來的,tdataend=tdatastart+durDATA。這個時隙段可以保證在S給A發(fā)送數(shù)據(jù)包時,C不會發(fā)送任何數(shù)據(jù)包,以免干擾A的接收。
(3) 接收成功報告時隙段:[tackstart,tackend],其中tackstart=durDATA+durACK+3SIFS+tdataend,tackend=tackstart+durACK,其中durACK是發(fā)送ACK支配的時間。這個時隙段能保證A在接收B發(fā)送的ACK幀時,C不會發(fā)送任何數(shù)據(jù)包。
C設(shè)置好NAV時間段后,如果接收到其它節(jié)點發(fā)送的PION幀,且轉(zhuǎn)發(fā)時間與已設(shè)定好的NAV不沖突的話,C就會向其上游節(jié)點發(fā)出確認PION幀;如果時間上有沖突,C就不向其上游節(jié)點發(fā)送確認PION幀,其上游節(jié)點會在下一個工作周期的數(shù)據(jù)時段向C重發(fā)PION幀[9]。
如果在數(shù)據(jù)時段某個節(jié)點丟失一個PION幀,則發(fā)送該PION幀的節(jié)點就收不到其下游節(jié)點發(fā)送的確認PION幀,在睡眠期,上游節(jié)點就不會發(fā)送數(shù)據(jù)包給下游節(jié)點。在此情形下,節(jié)點只有在下個工作周期的數(shù)據(jù)時段重新向下游節(jié)點發(fā)送一個新的PION幀。但是,如果下游節(jié)點不知道其上游節(jié)點沒有接收到自己發(fā)送的確認幀,下游節(jié)點會在睡眠時段一直處于接收狀態(tài),無形之中浪費一部分能量。更為嚴重的是,先導(dǎo)控制幀已經(jīng)在下游節(jié)點傳輸了很多跳,這會導(dǎo)致多數(shù)節(jié)點因等待參與數(shù)據(jù)傳輸而浪費大量能量。RMAC協(xié)議采用超時機制實現(xiàn)了節(jié)點自動進入睡眠模式[10]。
如果在睡眠模式下節(jié)點丟失了數(shù)據(jù)包或者ACK確認幀,在本周期內(nèi)沒有重傳機制實施重傳,節(jié)點只有在下個周期的數(shù)據(jù)時段開始新的信道預(yù)約,完成數(shù)據(jù)包的發(fā)送。
通過對RMAC協(xié)議的詳細分析,發(fā)現(xiàn)有下列問題亟需解決以進一步優(yōu)化協(xié)議的性能。① 數(shù)據(jù)時段的利用率不可靠;② 幀傳輸丟失處理的低效;③ 不可避免存在的能量消耗和傳輸延遲。在RMAC協(xié)議原來工作機制上,本文提出了新的單周期高效多跳傳輸?shù)腅-RMAC(Efficiency-RMAC)協(xié)議,該協(xié)議采用了重傳機制,在信道預(yù)約階段采用了單次重傳機制,在數(shù)據(jù)包發(fā)送階段采用了多次重傳機制[11]。
E-RMAC協(xié)議數(shù)據(jù)時段的工作機制為:S為源節(jié)點,A是S的下游節(jié)點,如果S接收到A發(fā)送的確認PION幀,S跳過時隙段T轉(zhuǎn)為節(jié)能的睡眠模式。如果B成功地把確認PION幀傳輸給了A,A就會立即進入T時隙段,再如果發(fā)生了超時就立即進行睡眠模式,此時,T時間段為預(yù)先設(shè)定的一定值且小于durPION。如果B接收到A發(fā)送的PION幀卻沒接收到C發(fā)送的確認PION幀,則B進入T時間段,此時T時長為durPION,執(zhí)行完T時間段并不進入睡眠狀態(tài).而是在C所對應(yīng)的T時間段內(nèi)向C重發(fā)PION幀,發(fā)完P(guān)ION幀后立即進入睡眠狀態(tài),此時的轉(zhuǎn)發(fā)跳計數(shù)器值不累加。如果D成功地把確認PION幀傳輸給了A,此時在T時隙段內(nèi)C成功接收完B另一次傳輸?shù)腜ION幀后馬上進入睡眠模式。假如D發(fā)送的確認PION幀被C接收失敗了,那么經(jīng)過SIFS后重新傳輸PION幀到D,這個時候D發(fā)送PION幀后進入T時隙段。這樣的過程執(zhí)行下去直到PION被運送到目的節(jié)點或者數(shù)據(jù)時段宣告結(jié)束時停止[12]。
為了盡可能實現(xiàn)數(shù)據(jù)包在單一周期內(nèi)可靠的傳輸,E-RMAC采用了多跳傳輸模式,并且源節(jié)點和在數(shù)據(jù)時段未成功接收到下游節(jié)點發(fā)送的PION幀的節(jié)點以及最終目的節(jié)點都不執(zhí)行時隙段T。此處T分兩種情況取值:一個是定值;另一個是durDATA。
通過NAV排除隱含干擾節(jié)點的情況。A接收S傳輸?shù)臄?shù)據(jù)包,S會收到A傳輸?shù)腁CK,當A獲得了數(shù)據(jù)包,確認包ACK被正確接收后S馬上進入睡眠模式。在T時間段若發(fā)生超時,A就向B發(fā)送數(shù)據(jù)包,B運用公式Twakeup推算出合適的活動時刻參與A之間的通信,A接收到ACK后進入睡眠模式。
如上所述,在T時隙段中發(fā)生超時B就對C發(fā)送數(shù)據(jù)包。如果B對C傳輸包失敗了,那么C反過來不向B發(fā)送確認包ACK,同時啟動T時隙段。接下來在ACK時隙段內(nèi)B沒收到由C傳輸?shù)腁CK,B就經(jīng)過SIFS后啟動T時隙段,該時隙段用于向C重發(fā)數(shù)據(jù)包,之后又是B等待C的ACK。在這個過程中,B重發(fā)的數(shù)據(jù)包對C成功后,C就對B傳輸ACK,B轉(zhuǎn)入睡眠模式,通信成功。C啟動下一次T時隙段超時,C對D發(fā)送數(shù)據(jù)包。在前一過程中,D會處于等待通信狀態(tài)直到自己偵聽到C傳輸給B的ACK。當C獲得了D的ACK后,則轉(zhuǎn)入睡眠模式。如果D非本次通信的目的處,那么節(jié)點間的協(xié)調(diào)通信過程始終不會終止,直到在數(shù)據(jù)時段內(nèi),節(jié)點沒能夠接收到下游節(jié)點傳輸?shù)拇_認PION幀或者傳輸目的成功就終止所有通信。
2.4.1Twakeup算法
E-RMAC的Twakeup由數(shù)據(jù)時段和睡眠時段共同協(xié)同完成作用,頭節(jié)點和其相鄰節(jié)點的Twakeup只與數(shù)據(jù)時段有關(guān)聯(lián),除此之外所有非所述節(jié)點還與睡眠時段有很大關(guān)系。其中, PION已成功傳輸?shù)奶鴶?shù)和是否需要重發(fā)PION決定了節(jié)點在數(shù)據(jù)時段的睡眠時間。
Tsleep1=TDATA-[CW+DISF+2·durPION+2·SIFS]
(2)
Tsleep2=TDATA-[CW+DIFS+4·durPION+3·SIFS]
(3)
Tsleep3=TDATA-[CW+DIFS+ (i+2)·(durPION+
SIFS) +T]
(4)
Tsleep4=TDATA-[CW+DIFS+ (i+4)·durPION+ (i+
3)·SIFS]
(5)
式(2)~(3)表示的是源節(jié)點不需要重發(fā)PION和需要重發(fā)PION時的睡眠時間;式(4)~(5)表示的是PION已經(jīng)成功傳輸跳數(shù)大于等于1的節(jié)點,其在沒必要和渴望再一次發(fā)送PION時的睡眠時間。
節(jié)點處于睡眠狀態(tài)下剛開始時的時段睡眠時間:
Tsleep5= (i-1)·(durDATA+durACK+3·SIFS+T)
(6)
節(jié)點處于合適的時刻Twakeup(i)是根據(jù)式(2)~(6)得到的。睡眠時段節(jié)點處于活動狀態(tài)后且一直保持此狀態(tài),直至確定已經(jīng)成功收到上游節(jié)點傳輸?shù)臄?shù)據(jù)包且把數(shù)據(jù)包傳輸?shù)较掠喂?jié)點后才轉(zhuǎn)入睡眠模式。
2.4.2 NAV算法
E-RMAC與RMAC的計算方法相似,假如D與B的關(guān)系是鄰節(jié)點關(guān)系,則相應(yīng)的NAV時間段設(shè)置如下。
(1) 發(fā)送與接收PION幀時間段為:[now,now+2·durPION],當D旁聽到B傳輸?shù)紺的信道預(yù)約幀后,設(shè)置該時間段。這個時間段主要是使D處于閑置狀態(tài)時正確接受B與C、A之間發(fā)送的控制幀。
(2) 數(shù)據(jù)傳輸時間段為:[tdatastart,tdataend],其中tdatastart的值由下一個休息時間和B的Twakeup時間計算得到,tdataend=tdatastart+2·durDATA+3·SIFS+durACK,在這個時隙段內(nèi)D必須處于空閑狀態(tài)。
與RMAC不同的是,此處D走完上面過程后必須偵聽大約durACK長的時隙段,如果在此時間段D收到了B發(fā)送的數(shù)據(jù)則沒必要再設(shè)置下一個新的數(shù)據(jù)傳輸時間段;如果在此時間段B傳輸?shù)拇_認幀被D收到了或者D沒有接收到B傳輸?shù)娜魏螏瑒tD需要重設(shè)置下一個數(shù)據(jù)時間段。
下一個新的數(shù)據(jù)時隙段為:tdatastartnext=tdataend+durACK+SIFS,tdataendnext=tdatastartnext+durDATA,執(zhí)行完新的時間段后D還需要再監(jiān)聽durACK時間段,重復(fù)上面的過程。
(3)確認幀時隙段為:[tackstart,tackend],與RMAC不同的是處于tdataend時D必須進行durACK的時長的偵聽監(jiān)測,得出以下情況:
假如B傳輸?shù)腄ATA正好被D旁聽到了,相應(yīng)設(shè)置ACK時隙段:tackstart=tdataend+durDATA+SIFS,tackend=tdatastart+durACK,當上面設(shè)置的時間段都走完了后D還要走完SIFS再接著偵聽T大小的時隙段,倘若D在上面這個時間里面并沒有感知到B的所有幀,D就不會計算新的ACK時隙段,換言之,D就要做出相反的行為設(shè)置對應(yīng)的時隙段。
如果B成功發(fā)送給D它的ACK確認幀,D就會等待2·SIFS+T的時間后繼續(xù)偵聽;倘若B發(fā)送的DATA被D旁聽到了,則ACK時間段設(shè)置方法和第一種情況類似;如果接收到B發(fā)送的ACK則重復(fù)經(jīng)由2·SIFS+T后繼續(xù)偵聽的過程,根據(jù)偵聽結(jié)果作出判斷。
若D并未接受到B傳輸?shù)乃袔?,就需要D等待2·SIFS+T后持續(xù)偵聽,根據(jù)偵聽結(jié)果按第一或者第二種情況設(shè)置相應(yīng)的ACK時間段[13]。
實驗采用NS2仿真平臺進行仿真,NS2模擬過程大致分三大部分。首先添加需要模擬協(xié)議的代碼。該步驟需要在NS2里面的許多文件中添加相應(yīng)的程序塊和持續(xù)的調(diào)試,本文主要是通過make和make clean命令實現(xiàn),針對出現(xiàn)的問題不斷修改。在修改和添加代碼時,不僅要修改源代碼,還要修改OTCL代碼。添加完代碼后需要編寫Tcl文件,該文件的后綴名是.tcl,主要用于事件驅(qū)動、環(huán)境設(shè)置、通信協(xié)議的添加、通信時間設(shè)置、節(jié)點發(fā)送包的數(shù)量及速率、仿真數(shù)據(jù)的收集等。最后完成仿真數(shù)據(jù)的分析,NS2中通過awk程序可提取本文需要的數(shù)據(jù),最后通過畫圖軟件繪制出仿真結(jié)果圖。通過讀圖觀察分析出協(xié)議的性能,包括傳輸時延、網(wǎng)絡(luò)吞吐量、時間抖動等性能[14]。NS2網(wǎng)絡(luò)模擬基本流程如圖1所示。
為了對比,本文在相同的仿真環(huán)境下實施了SMAC、RMAC和E-RMAC仿真。其中SMAC采用了非自適應(yīng)載波偵聽機制,為了排除節(jié)點同步造成的影響,假定所有協(xié)議在實驗開始前節(jié)點已實現(xiàn)了同步。仿真拓撲為鏈狀(Chain)和十字交叉狀(Cross)[15]。鏈狀拓撲實現(xiàn)總共24跳節(jié)點間等間隔依次分布,十字交叉狀拓撲實現(xiàn)的是兩個24跳的鏈狀拓撲相互交叉分布,具體如圖2和圖3所示,仿真參數(shù)如下。
圖1 NS2網(wǎng)絡(luò)模擬基本流程Fig.1 Basic flow chart of NS2 network simulation
圖2 鏈狀拓撲
Fig.2 Chain topology
圖3 十字交叉狀拓撲Fig.3 Crossed topology
由于SMAC是基于競爭性協(xié)議,采用的是單周期內(nèi)單跳傳輸。本周期內(nèi)數(shù)據(jù)沒傳輸完,只能在下個周期繼續(xù)競爭信道再傳輸,因而從圖3可以看出在兩種拓撲下其時延最大。由于RMAC采用的是提前預(yù)約通信,在一個周期內(nèi)能進行多跳傳輸,這樣大大降低了數(shù)據(jù)包的時延。從圖中看到RMAC與SMAC相比傳輸效率明顯提高了,平均提高了約4.3倍。由于E-RMAC完善了RMAC的丟幀處理功能,保證了包在每個周期盡可能的傳輸。從圖4可以看出,在兩種拓撲下包的傳輸時延E-RMAC均優(yōu)于RMAC,大約平均提高了46%。
圖4 包的傳輸時延Fig.4 Transmission delay of packets
如圖5所示,隨著網(wǎng)絡(luò)cbr流的增加,整個網(wǎng)絡(luò)的競爭增大,SMAC的吞吐量趨于一固定值且遠小于RMAC和E-RMAC。
圖5 網(wǎng)絡(luò)端到端平均吞吐量Fig.5 Average throughput of network end-to-end
RMAC的多跳傳輸機制在一定程度上緩解了網(wǎng)絡(luò)競爭,增大了吞吐量。由于E-RMAC在多跳傳輸?shù)幕A(chǔ)上實現(xiàn)了丟包重傳機制,增加了每個周期包的成功傳輸概率,尤其在十字交叉拓撲中吞吐量遠優(yōu)于SMAC和RMAC。
RMAC協(xié)議采用的是提前預(yù)約信道,在單周期內(nèi)實現(xiàn)數(shù)據(jù)包多跳傳輸,大大提高了數(shù)據(jù)包的轉(zhuǎn)發(fā)速率,特別適合一些基于事件驅(qū)動的無線網(wǎng)絡(luò)環(huán)境應(yīng)用。但其處理包丟失的缺陷導(dǎo)致了其存在一定的不完整性。不管從預(yù)約信道還是從數(shù)據(jù)包傳輸上講,一旦發(fā)生包的丟失,將會導(dǎo)致很多節(jié)點浪費一部分能量用于等待接收數(shù)據(jù)包。若該事件發(fā)生在大的網(wǎng)絡(luò)中,將會浪費更多的能量,如果將其用于基于事件驅(qū)動的無線網(wǎng)絡(luò)中,其會大大延遲報告事件的發(fā)送,勢必會造成很大的危害。
本文方法改進了丟包處理策略,保證了預(yù)約包和數(shù)據(jù)包在單周期內(nèi)盡可能的發(fā)送與接收。從協(xié)議效率上來講,不管是網(wǎng)絡(luò)數(shù)據(jù)包成功發(fā)送流量還是所有節(jié)點的能耗都有所提高。通過仿真圖可以看到,在復(fù)雜的拓撲中E-RMAC協(xié)議的性能更優(yōu)越。因此,本文研究的E-RMAC協(xié)議應(yīng)用于大范圍的監(jiān)測網(wǎng)意義較大。在大網(wǎng)絡(luò)、多節(jié)點的大型灌區(qū)信息化建設(shè)應(yīng)用中能大大降低布網(wǎng)成本,實現(xiàn)經(jīng)濟性和實效性,提高灌區(qū)信息化的發(fā)展應(yīng)用水平。