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