• 沒有找到結果。

3. 戳記式廣播傳遞機制

3.3 混合戳記(Hybrid Stamping)

在圖 3-3中不難發現,進階戳記法這樣的傳送方式還是有多餘的訊息被傳送,也就 是當兩個節點有著相同且尚未傳送鄰居時,它們都會發送訊息給這個尚未傳送過的鄰居 節點而造成冗贅的情形,因此我們便思考是否有辦法改善這樣的情形。

首先想到的是,若欲傳送給相同點的兩個節點,都知道對方會傳送給自己將要傳送 的節點,則此兩節點再擇其一者來進行傳送,便可以省去不必要的冗贅重複訊息。但如 何使兩個節點互相知道它們將會傳給相同的節點,這便是混合戳記法的關鍵。構思以後 發現其實這個想法並不難做到,因為在非結構化同儕式網路架構中,節點與節點間平常 的時候就會利用簡單的封包測試(Hello)來互相確認與鄰居的連結是否還存在。利用這 點,平常互相通訊時就將節點自己的鄰居資訊傳送給鄰居,如此一來每個節點皆可獲得 鄰居節點的鄰居資訊。有了這些資訊,欲傳送給相同節點的兩個節點便可透過這個相同

的點來發現對方的存在,在這裡它們會比較自己與對方節點編號大小,然後由編號較小 的節點來進行傳送的動作。

Algorithm 3 為混合戳記法的虛擬碼,在這個方法中 id(n)需透過 Hello 封包得知 id(n) 鄰居的所有鄰居連結狀況然後記錄於 nodeinfo 中,如 id(n)的第 i 個鄰居 neighbori所有 的鄰居連結狀況會記錄於 id(n)的 nodeinfoi 裡。由於混合戳記法是由進階戳記法與 Neighbor pruning 所混合而成的,因此大多數的步驟皆承襲進階戳記法,主要差別在於 發送給鄰居 neighbori前會多做一個將訊息 m 的 stamp 欄位與 nodeinfoi比對的動作,若 比對後發現兩者並無符合,則正常發送廣播訊息;若比對時發現有 nodeinfoi 在 stamp 欄位裡出現,則代表將要發送的節點 neighbori 有別的節點可能送過,在這裡我們將比

Algorithm 3 Hybrid stamp

1: if node id(n)received a message m then 2: msgexist ← false

較 id(n)與這個可能傳送給 neighbori的節點編號的大小,id(n)編號較小的話則由 id(n)負 責傳送,反之則代表另一個節點已負責傳送,便不再做發送的動作。

圖 3-4 混合戳記法廣播訊息的路徑圖

同樣以圖 3-1為例,id(A)向id(B)發出帶有id(A)、id(C)戳記資訊的廣播訊息,同時 也向id(C)發出帶有id(A)、id(B) 戳記資訊的廣播訊息。id(B)收到來自id(A)的訊息後,由 於id(A)在訊息的戳記欄位中有被記錄,則不再廣播給id(A)節點,而id(D)節點沒有在訊 息的戳記中,所以檢查id(D)的鄰居是否有被記錄在戳記欄,然而發現id(C)是id(D)的鄰 居,也同時被記錄於訊息的戳記欄中,但id(B)與id(C)比較後發現id(B)的編號較小,因 此id(B)仍然負責傳送。同時間,id(C)也收到了來自id(A)的訊息,同樣地,id(A)有被記 錄於戳記欄中所以不回傳給id(A),而檢查id(D)的鄰居時發現id(B)是id(D)的鄰居且存在 於訊息的戳記欄位中,經由判斷結果發現id(C)的編號較id(B)節點小,因此傳送給id(D) 廣播訊息的任務則會由id(B)負責,所以id(C)就不再加以傳送。id(D)收到來自id(B)的訊 息後,由於id(A)id(B)id(C)三個鄰居的資訊皆有紀錄於戳記欄位中,便不再做任何 傳送動作,因此整個網路的廣播到此就算完成了,傳送路徑如圖 3-4所示。

回顧一下先前的方法,利用基本戳記法時需要 5 次的訊息傳送;在進階戳記法中,

則需要 4 次訊息傳送,而混合戳記法下所傳送的廣播訊息僅需 3 次,也是四節點結構網 路最少廣播的傳送數量,成功取得最好效果。比起泛流式廣播法,訊息傳遞總數由 9

個大幅下降成 3 個,改善程度高達 66%。

相關文件