一種基于微型無(wú)線(xiàn)傳感網(wǎng)絡(luò )的路由算法
2 RREP 協(xié)議幀格式
RREP 路由應答協(xié)議幀如表3 所示。
4 MSAODV 路由協(xié)議的操作
由于MSAODV 路由協(xié)議是對AODV 協(xié)議的改進(jìn)演化,所以MSAODV 路由協(xié)議的操作 與AODV 路由協(xié)議的操作大同小異,為了清晰起見(jiàn),對MSAODV 協(xié)議的操作做一詳細的介紹 還是有必要的。
4.1 產(chǎn)生路由請求
無(wú)線(xiàn)網(wǎng)絡(luò )中某個(gè)節點(diǎn)需要和網(wǎng)絡(luò )中的另一個(gè)節點(diǎn)通信時(shí),他首先會(huì )查找自己的路由表,以 確定是否有通往該目的節點(diǎn)的有效路由,如果有的話(huà),從對應的目的節點(diǎn)路由表項中取出下一 跳節點(diǎn)地址,然后構造數據包并把該數據包發(fā)往下一節點(diǎn),如果不存在通往目的節點(diǎn)的路由, 那么該節點(diǎn)就要發(fā)起一次路由請求。
4.2 處理和轉發(fā)路由請求
處理和轉發(fā)路由請求是針對源節點(diǎn)和目的節點(diǎn)之間的中間節點(diǎn)而言。這些中間節點(diǎn)可能 不止一個(gè),在他們收到源節點(diǎn)廣播的RREQ 路由請求幀之后,必需處理和轉發(fā)該路由請求幀。
在某個(gè)中間節點(diǎn)接收到源節點(diǎn)廣播或者由其他節點(diǎn)轉發(fā)的RREQ 請求幀后,他首先會(huì )判 定該RREQ 請求幀是否己經(jīng)被成功接收過(guò),判斷的依據就是源節點(diǎn)的IP 地址和廣播ID 號,如 果發(fā)現由源節點(diǎn)和廣播ID 唯一標志的RREQ 請求幀是新的,也就是沒(méi)收到過(guò),就會(huì )根據此 RREQ 請求幀更新自己路由表中對應的項。很顯然,該路由表項的目的節點(diǎn)IP 字段就是是源 節點(diǎn)IP 地址,下一跳IP 地址就是發(fā)送此RREQ 請求幀的節點(diǎn)IP 地址,有可能是源節點(diǎn)也有可 能是另一個(gè)中間節點(diǎn)。接下來(lái)此中間節點(diǎn)判斷該RREQ 請求幀的目的IP 是不是就是自己, 如果是就回送一個(gè)RREP 回應幀,不是就轉發(fā)該RREQ 請求幀。
4.3 產(chǎn)生路由應答
RREQ 經(jīng)過(guò)中間節點(diǎn)的轉發(fā)到達目的節點(diǎn)或者是直接到達目的節點(diǎn)后,目的節點(diǎn)要進(jìn)行 相應的處理。
目的節點(diǎn)收到 RREQ 請求包,首先會(huì )判斷是否已經(jīng)收到過(guò)此請求包,如果沒(méi)有收到過(guò)則更 新自己相應的路由表項,目的節點(diǎn)把該路由表項的目的IP 更新為源節點(diǎn)的IP 地址,下一跳IP 為發(fā)給他RR 衛Q 請求幀的節點(diǎn)IP,目的節點(diǎn)序列號填上源節點(diǎn)的序列號,該序列號在RREQ 請求幀里,跳數直接從RREQ 請求幀里拷貝。在確認請求的節點(diǎn)就是自己后,目的節點(diǎn)要給源 節點(diǎn)發(fā)送一個(gè)RREP 應答幀,接下來(lái)目的節點(diǎn)構造一個(gè)RREP 應答幀并正確初始化該幀。類(lèi) 型字段為2,表示該幀是RREP 應答幀。跳數字段為0,因為是目的節點(diǎn)發(fā)起的RREP 應答幀。 目的節點(diǎn)產(chǎn)生一個(gè)RREP 應答包之前,必需更新自己的序列號,更新值為當前序列號與RREQ 請求包中的目的序列號兩者中的最大值,目的序列號字段被初始化為這個(gè)最大值。源IP 地址 指的是發(fā)起RREQ 請求幀的源節點(diǎn)的IP 地址,而不是指目的節點(diǎn)的IP 地址,同樣的,目的IP 地址就是目的節點(diǎn)的IP 地址,也就是發(fā)起RREP 應答幀的節點(diǎn)IP 地址。
在目的節點(diǎn)構造好 RREP 回應幀后,就要把該幀以單播的形式沿著(zhù)反向路由傳送,他的下 一跳節點(diǎn)IP 地址是發(fā)給他RREQ 請求幀的節點(diǎn)地址,可能是某個(gè)中間節點(diǎn),也可能是源節點(diǎn)。 一切準備就緒,目的節點(diǎn)按照退避算法發(fā)送該幀。
4.4 接收和轉發(fā)路由應答
由于無(wú)線(xiàn)網(wǎng)絡(luò )的特點(diǎn),盡管目的節點(diǎn)是以單播的形式向源節點(diǎn)回送RREP 回應幀,但是網(wǎng) 絡(luò )中的很多節點(diǎn)也能接收到該幀,當然,這些節點(diǎn)只是簡(jiǎn)單的丟棄該幀,只有反向路由上的節 點(diǎn)才會(huì )接收該RREP 回應幀。反向路由上的節點(diǎn)會(huì )沿著(zhù)反向路由順利的把RREP 回應幀傳給 源節點(diǎn),同時(shí)他們也根據此RREP 回應幀建立了前向路由。
該節點(diǎn)下面要完成的工作就是把 該RREP 回應幀轉發(fā)出去。他要知道下一跳節點(diǎn)的IP 地址,以RREP 回應幀中的源節點(diǎn)IP 地址為關(guān)鍵字查找路由表,得到下一跳節點(diǎn)的IP,這個(gè)表項是在建立反向路由時(shí)建立或更新 的。該中間節點(diǎn)在完成上面的步驟后,以退避算法轉發(fā)該RREP 回應幀。與RREQ 請求幀的 轉發(fā)不同,R.REP 回應幀的轉發(fā)是單播的,他不會(huì )像R.REQ 請求幀那樣可能被轉發(fā)多次,所以 R.REP 回應幀的字段里不存在廣播ID。
4.5 新節點(diǎn)加入
無(wú)線(xiàn)傳感器網(wǎng)絡(luò )中的節點(diǎn)在開(kāi)機或重啟之后,會(huì )向網(wǎng)絡(luò )廣播一個(gè)RESET 消息,網(wǎng)絡(luò )中的 其他節點(diǎn)收到此RESET 消息后會(huì )轉發(fā)該幀,最后主節點(diǎn)收到該幀。新節點(diǎn)在RESET 消息幀 里攜帶自己的IP 地址,這樣當主節點(diǎn)收到該幀后就可以知道是哪個(gè)節點(diǎn)重啟。 收到 RESET 消息幀的其他節點(diǎn)首先查找自己的路由表看是否有主節點(diǎn)的IP 地址,如果 有就以單播的形式發(fā)送該幀,反之則繼續廣播此RESET 消息幀。
每個(gè)節點(diǎn)都要保存上一次他 收到的RESET 消息幀中的源節點(diǎn)IP 地址,下次再收到RESET 消息幀首先要比較源IP 地址 是否和保存值相同,相同就不再轉發(fā)該幀,在經(jīng)過(guò)一段時(shí)間后,將保存值清零,這樣就避免了重 復轉發(fā)同一個(gè)RESET 消息幀,又避免了不再轉發(fā)下次的RESET 消息幀。
4.6 其他操作
除了前文描述的產(chǎn)生路由請求、處理和轉發(fā)路由請求、產(chǎn)生路由應答、接收和轉發(fā)路由應答、新節點(diǎn)加入等主要操作外,MSAODV 路由算法余下的操作可以參考第二章介紹的 AODV 路由算法。
5 本文作者創(chuàng )新點(diǎn)
AODV 路由算法應用在無(wú)線(xiàn)傳感器網(wǎng)絡(luò )中有一定的局限性,不能很好得適合無(wú)線(xiàn)傳感器 網(wǎng)絡(luò )的體系結構。以無(wú)線(xiàn)傳感器網(wǎng)絡(luò )與傳統移動(dòng)無(wú)線(xiàn)網(wǎng)著(zhù)重點(diǎn)不同為依據,本文提出了適合 無(wú)線(xiàn)傳感器網(wǎng)絡(luò )的路由算法MSAODV,并詳細敘述分析了MSAODV 路由算法。
評論