第三章 能量分散擇路演算法
3.2 能量分散演算法設計
3.2.2 最佳路徑的選擇
AODV 演算法決定路徑的方式是選擇最少跳躍數的路徑。因為要選擇最少 的跳躍數,所以在廣播 RREQ 封包的過程中,當目標節點或是中繼節點第一次 接收到來源節點廣播的 RREQ 封包時,就認定這條 RREQ 封包經過的路徑為最 短路徑。因此,當目標節點或是中繼節點收到一次 RREQ 封包之後,就不再處 理之後接收到的同一個 RREQ 封包。但 DER 演算法首先考量剩餘電池能量,因 此不能跟 AODV 演算法一樣只記錄第一次收到 RREQ 封包的路徑。必須持續對 之後收到的 RREQ 封包做處理與記錄路徑的工作。
在 DER 演算法中,當接收到同一個 RREQ 封包時,會先判斷傳送這一條
RREQ 封包的路徑是否有比較好的剩餘電池能量狀況,如果有比之前儲存在單一 擇路表單內的路徑有比較充足的剩餘電池能量,那就會把這一條路徑視為通往來 源節點的最佳路徑,並儲存在單一擇路表單之內。接著進行 3.2.1 節敘述的動作,
最後再次把 RREQ 封包廣播出去,讓之後的中繼節點也知道現在有這一條比較 好的路徑可以選擇。這裡要注意的是,RREQ 封包資訊的更改,是在判斷路徑好
壞之後,也就是說在判斷路徑好壞的時候,是還沒有考慮到本身剩餘電池能量的 問題,而是只有考慮路徑的其他節點。如果沒有比之前儲存在單一擇路表單內的 路徑有比較充足的剩餘電池能量,那就會把這一條路徑視為比較差的路徑,是不 可能會被目標節點選擇的,因此直接取消這一個 RREQ 封包。
由圖 3-2 可以觀察到,當中繼節點 B 第一次收到來自中繼節點 C 的 RREQ 封包,由於是第一次收到這個 RREQ 封包,所以把路徑的資訊儲存下來。並更 改在 RREQ 封包內有關路徑剩餘電池能量的資訊,最後再廣播這個 RREQ 封包 出去。當中繼節點 B 接著收到來自中繼節點 D 的 RREQ 封包,發現這一條路徑 的剩餘電池能量狀況比之前儲存的路徑還要良好,就會把之前儲存的路徑刪掉,
並儲存這一條新的路徑,再更改在 RREQ 封包內有關路徑剩餘電池能量的資訊,
最後在廣播這個 RREQ 封包出去。重複動作,可以發現中繼節點 A 與目標節點 都會做路徑的更新,只儲存最佳路徑。因此藉由這種方式,網路中所有節點都可 以得到通往來源節點的最佳路徑。
圖 3-2 DER 演算法的 RREQ 封包傳遞方式
另外要注意,用上述敘述的演算法,也可以避免擇路迴圈(Route Loop)的情 況。以二點間的擇路迴圈為例,在圖 3-2 中,當中繼節點收到來自中繼節點 C 的
RREQ 封包,把這一條路徑的資訊存在單一擇路表單內,這裡稱為路徑 1。接著 繼節點 B 傳送 RREQ 封包給中繼節點 A,中繼節點 A 再傳送 RREQ 封包給中繼 節點 B,因此中繼節點 B 就會認為這一條路徑是另一條可能可以使用的路徑,開 始路徑剩餘電池能量的判斷,這裡稱為路徑 2。我們可以發現,如果中繼節點 A 或中繼節點 B 的電池剩餘能量狀況比路徑 2 的其他節點都還要差,由於路徑 1 沒有經過中繼節點 A 與中繼節點 B,所以透過 RREQ 封包內的資訊,中繼節點 B 就會認為路徑 2 的電池剩餘能量狀況比路徑 1 還差,並消除這個 RREQ 封包。
如果中繼節點 A 與中繼節點 B 的電池剩餘能量狀況不會比路徑 2 的其他節點都 還要差,所以在路徑 1 跟路徑 2 上,電池剩餘能量最差的中繼節點會是在路徑中
做單一擇路表單的更改。由此可以發現,擇路迴圈的現象會很自然的被解決。利 用同樣的分析方式,就可以發現三點以上的擇路迴圈問題也都不會產生。