一種能量感知型無線傳感器網(wǎng)絡(luò)跨層式通信協(xié)議
前向鄰居(Forward Vicinage):數(shù)據(jù)傳輸過程中可以成為節(jié)點A下一跳節(jié)點的鄰居。節(jié)點A的所有前向鄰居構(gòu)成它的前向鄰居集;記為FVSA。
后向鄰居(Backward Vicinage):如果節(jié)點A是節(jié)點B的前向鄰居,那么節(jié)點B就稱為節(jié)點A的后向鄰居。節(jié)點A的所有后向鄰居構(gòu)成它的后向鄰居集,記為BVSA。
目的節(jié)點(Termini Node):不需其他節(jié)點路由,可直接將數(shù)據(jù)包發(fā)送給Sink的節(jié)點。
熱度:節(jié)點建立通信鏈路的頻繁程度。
2.2 信道接入
無線信道訪問機制采用IEEE802.11 CSMA/CA機制。需要使用信道的節(jié)點首先偵聽信道是否空閑,如果信道空閑且經(jīng)過一個DIFS時序間隔后仍為空閑狀態(tài),那么發(fā)送節(jié)點直接開始發(fā)送分組數(shù)據(jù);否則發(fā)送節(jié)點一直偵聽信道直至信道最終空閑下來并且超過DIFS時序間隔,此時發(fā)送節(jié)點將啟動退避機制。圖1描述了CSMA/CA機制的基本訪問方式。本文引用地址:http://www.ex-cimer.com/article/158051.htm
2.3 鏈路選擇
當系統(tǒng)布設(shè)完畢進入穩(wěn)定狀態(tài)后,Sink節(jié)點開始廣播HELL0消息,其格式如圖2所示。
該數(shù)據(jù)包共16個字節(jié),其各字段含義如下:
NOP:用來標識采用何種協(xié)議,包括協(xié)議的名稱代碼、版本號等信息;
TID:HELLo消息的來源,因為系統(tǒng)中往往不止一個節(jié)點可直接向Sink發(fā)送數(shù)據(jù);
NOT:該數(shù)據(jù)包被轉(zhuǎn)發(fā)的次數(shù),Sink節(jié)點廣播此消息時該字段為O,每轉(zhuǎn)發(fā)一次,該字段值加1,終節(jié)點發(fā)送時此字段值為1;
TRID:發(fā)出該數(shù)據(jù)包的節(jié)點ID;
EREM:發(fā)出該數(shù)據(jù)包的節(jié)點的當前剩余能量;
HELL0:消息內(nèi)容;
HOT:發(fā)送該消息的節(jié)點“熱度”;
0NM:用來標記每次建立路由,在一次建立路由過程中,消息編碼固定,Sink節(jié)點移動位置或其他情況下需要重建路由時,修改該字段;
SP:用來填補該數(shù)據(jù)包的空余,該字段值為O。
當某個節(jié)點收到此消息后,完成下面動作:
(1)檢測數(shù)據(jù)幀,檢測步驟如下:
①查看數(shù)據(jù)包的消息代碼字段,檢查與上次接收到的協(xié)議編號是否相同(首次接收到判為不同);若相同轉(zhuǎn)步驟③;否則轉(zhuǎn)步驟②;
②清除鄰居列表信息,重新建表;
③查看HELLO消息數(shù)據(jù)包的轉(zhuǎn)發(fā)節(jié)點ID字段,若該節(jié)點已包括在后向鄰居列表中,則丟棄該包;
④將轉(zhuǎn)發(fā)節(jié)點ID添加到前向鄰居列表。
(2)發(fā)送一個名為“COUNTERSIGN”的確認消息數(shù)據(jù)包,消息格式如圖3所示:
該數(shù)據(jù)包共有16個字節(jié),各字段含義如下:
NOP:與HELLO消息的相應(yīng)字段相同;
TRID:產(chǎn)生并發(fā)送該消息的節(jié)點ID;
COUNTERSIGN:消息內(nèi)容;
REIDL:該字段包含了需接收該消息的全部節(jié)點ID;
SP:與HELL0消息的相應(yīng)字段相同。
(3)轉(zhuǎn)發(fā)HELLO消息,其過程為:
①修改轉(zhuǎn)發(fā)次數(shù)字段,給其值加1;
②將轉(zhuǎn)發(fā)節(jié)點ID、“熱度”、剩余能量替換為自己的相應(yīng)值;
③發(fā)送HELLO消息。
(4)接收確認消息,修改其后向鄰居表。
2.4 建立通信鏈路
當某個節(jié)點需要發(fā)送數(shù)據(jù)時,它在自己的前向鄰居中選擇一個節(jié)點作為接收點,其選擇步驟如下:
(1)根據(jù)前向鄰居表內(nèi)各個鄰居的“熱度”,避開比較熱的節(jié)點;
(2)啟用功率管理算法計算最佳傳輸距離范圍;
(3)在最佳傳輸距離范圍內(nèi)選擇剩余能量最大的節(jié)點作為它的下一跳。
2.5 數(shù)據(jù)傳輸
傳感器節(jié)點產(chǎn)生的數(shù)據(jù)包格式如圖4所示,數(shù)據(jù)包中各字段含義如下:
NOP:與HELL0消息相同;
REID:接收該數(shù)據(jù)包的節(jié)點ID;
NOT:表示該數(shù)據(jù)包被發(fā)送的次數(shù);源節(jié)點發(fā)送時該字段值為1;
TRID:發(fā)送該數(shù)據(jù)包的節(jié)點ID;
DATE:數(shù)據(jù)包的內(nèi)容;
SP:補充數(shù)據(jù)包的空余,該字段值為0。
圖4數(shù)據(jù)幀格式數(shù)據(jù)包轉(zhuǎn)發(fā)過程如下:
(1)當某個節(jié)點接收到該數(shù)據(jù)包時,檢測接收節(jié)點ID是否與自己ID一致,若不一致丟棄該包,再檢測發(fā)送節(jié)點ID是否在自己的后向鄰居列表中,若發(fā)送節(jié)點ID不在自己后向鄰居列表中,則丟棄該包。否則接收該包并緩存。
(2)數(shù)據(jù)包被緩存后,該節(jié)點將該數(shù)據(jù)包的接收節(jié)點ID字段替換為它的下一跳ID,將發(fā)送節(jié)點ID字段修改為自己的ID,然后將數(shù)據(jù)包發(fā)送出去。
評論