第三章 研究方法
3.4 廣播封包的整合管理(Broadcast Packet Integration)
國
立 政 治 大 學
‧
Na tiona
l Ch engchi University
路徑回復處理的執行時機,可分成三種封包傳遞時的錯誤情況,第一種是在與下一 個節點傳輸封包過程中,在資料連結層發生中斷(例如 MAC 層發生碰撞)而導致錯誤;
第二種是原來路徑中的下一個節點離開了目前節點的通信範圍,封包因而無法傳遞;最 後一種則是在開始傳遞封包之前,繞徑模組就無法找到路徑的情形。當整合架構偵測到 這些情況發生時,便對該資料封包進行路徑選擇的程序,如圖 3.7。
圖 3.7 三種封包傳遞時錯誤的路徑回復處理。
資料回復的過程中,需要注意的是避免封包無窮地嘗試不同的繞徑方法,造成系統 無謂的負擔,所以我們可以加上時間限制,或是在資料封包中,加入繞徑方法的紀錄欄 位(data routing record),對於已經曾使用過的繞徑方法,就不需要重複嘗試。
3.4 廣播封包的整合管理(Broadcast Packet Integration)
某些繞徑封包是以廣播的方式與其他鄰近節點交換路徑資料,這些封包的資料量都 不大,但卻因為連鎖廣播的效應,大量的封包往往還是會造成所謂廣播風暴(broadcast
Non-real-time packet queue (before timeout) Link layer error
detection callback function
Original route is broken
Path selection process
‧
國立 政 治 大 學
‧
Na tiona
l Ch engchi University
storm)的問題。雖然,[18]學者提出幾種控制封包散播(flooding)的模式,來減少非必要 的廣播,以及競爭、碰撞等問題,但當數個不同繞徑協定模組同時都需要發出廣播封包 時,還是會增加廣播風暴的風險。所以,我們提出一種避免廣播封包因多重繞徑協定而 增加的管理方法,就是將不同協定的廣播封包組合起來,成為一個組合的封包列車 (packet train)。經過組合的封包,數量與原來單一繞徑協定所發出的信號封包(廣播至附 近通訊範圍內的所有節點)相當。繞徑整合層的廣播封包列車(Integrated Broadcast Packet Train)的欄位格式如圖 3.8,表頭欄位(IBPT header)用來識別封包,另外還有一個欄位記 錄組合封包的數量。其中任何不同類型的繞徑封包在封包列車裡,只能出現一次。
IBPT header Count of routing
packets Routing packet 1 Routing packet 2 …
圖 3.8 整合式廣播封包列車(packet train)的格式。
來自不同模組的繞徑封包,當準備向外廣播之前,會先經過繞徑整合層,由繞徑整 合層先放入一個佇列中,等待一段時間,讓其他繞徑封包若是在這段時間也需要廣播時 , 能被整裝在單一的封包列車,再一併發出。相關的演算法,如圖 3.9 中的虛擬碼所示,
當繞徑模組將封包往下層傳送時,會先呼叫繞徑整合層的廣播封包處理流程(broadcast packet process),該程序會搜尋目前在佇列裡,是否還有空位的封包列車,然後將封包封 裝後,放入佇列中,並且為了讓佇列的長度不致拖延繞徑封包的時效性,我們設定 Max_IBPT 的值為 5,就是佇列當中最多只有 5 個等待中的繞徑封包列車。此外,模組 中也有個計時器,用來對佇列裡的封包列車做處理,將封裝後的列車在一定的時間內傳 送出去。為了讓繞徑封包能盡量具即時性,我們設定每 0.1 秒檢查封包佇列。
‧
NRP = new routing packet
IBPT = integrated broadcast packet train BPTQ = broadcast packet train queue
// while receiving routing packet from routing module Procedure RMILReceiveRP argument: NRP
If find first vacant IBPT in BPTQ Then Pack NRP in IBPT
Else
Pack NRP in new IBPT Append IBPT in BPTQ End if
// pump BPTQ
While (first IBPT in BPTQ is not vacant) || (number of BPTQ >
Max_IBPT )
Remove first IBPT from BPTQ Send IBPT
End while
// periodically called by system timer Procedure CheckBPTQTimeout
If LastBPTID == (ID of first IBPT in BPTQ) Then Remove first IBPT from BPTQ
Send IBPT
‧
國立 政 治 大 學
‧
Na tiona
l Ch engchi University
收到封包列車後的節點,再根據廣播封包列車的表頭,將信號封包拆解,還原成各 自的繞徑協定封包,再轉交由各資料模組來處理這些資料封包,如圖 3.10。
圖 3.10 收到廣播封包列車後的處理程序。