2. 相關工作
2.3 鄰居資訊式廣播
鄰居資訊式廣播[41],主要是透過蒐集鄰居的資訊,並將鄰居資訊做為廣播決策的 依據。在無線隨建網路中,節點之間會周期性地交換 Hello 封包,用以確認鄰居節點是 否存活或是否於傳遞範圍內。鄰居資訊式廣播透過平時交換 Hello 封包時,將鄰居資訊 [15]夾帶在 Hello 封包中進行交換。鄰居資訊式廣播蒐集的資訊深度不一,可能為一層 (1-hop)鄰居資訊、二層(2-hop)鄰居資訊,或是更多層的鄰居資訊;一層的鄰居資訊,即 是節點訊息傳播範圍內的節點,二層的鄰居資訊,則是在 Hello 封包中加入自己的鄰居 列表,因此每一個節點可以得知其鄰居的鄰居列表。大多數的鄰居資訊廣播模式,主要 使用二層鄰居資訊進行節點的過濾。
2.3.1 自我修剪泛流式 自我修剪泛流式 自我修剪泛流式 自我修剪泛流式(Flooding with Self-pruning)
自我修剪泛流式廣播[14]為最簡單的鄰居資訊廣播方法,主要使用一層的鄰居資訊。
當節點收到廣播訊息時,會將自己的鄰居資訊放入封包,並進行廣播,當其他節點收到 封包時,可以比對自己的鄰居列表與封包中的鄰居列表,進而得知是否尚有節點未被涵 蓋,來決定是否轉送封包。
2.3.2 可調變廣播演算法 可調變廣播演算法 可調變廣播演算法 可調變廣播演算法(Scalable Broadcast Algorithm, SBA)
可調變廣播演算法(SBA)[25]屬於鄰居資訊廣播的一種,在可調變廣播演算法中,
需使用二層的鄰居資訊。節點與節點之間,透過 Hello 封包來交換鄰居資訊。當節點收
到廣播訊息時,會先檢查此訊息是否已接收並廣播過,若是新的訊息,則會進入 RAD 的等待時間,在等待時間內會持續地接受重複的廣播封包,並更新由封包中取得的鄰居 資訊,等到 RAD 時間結束後,比對自己的鄰居列表是否已全部被涵蓋,若未完全被涵 蓋,則進行廣播;若已完全被涵蓋,則不廣播。
2.3.3 多點傳輸 多點傳輸 多點傳輸 多點傳輸演算法 演算法 演算法(Multipoint Relaying) 演算法
多點傳輸演算法[12][30]需使用二層的鄰居資訊,比起 SBA 在 RAD 等待時間蒐集 鄰居資訊的方式,多點傳輸演算法則是在廣播時,指定部分鄰居進行廣播的動作。當節 點廣播訊息時,會從鄰居列表中,挑選部分的鄰居成為 Multipoint relays (MPRs)節點,
僅有被指定為 MPRs 的節點在收到封包時,可繼續轉送封包,其餘節點則只接收封包而 不廣播。在多點傳輸演算法中,如何挑選 MPRs 節點極為重要。在[30]中採用的方式主 要是從第二層鄰居列表中,挑選可於 1-hop 內涵蓋到的節點為 MPRs 節點,若這些節點 無法涵蓋所有的第二層鄰居,再從第一層鄰居中挑選可以涵蓋其餘第二層鄰居的節點,
直到 MPRs 可以涵蓋所有第二層鄰居為止。
2.3.4 支配 支配 支配 支配修剪 修剪 修剪式 修剪 式 式(Dominant Pruning, DP) 式
Dominant Pruning[14]亦屬於鄰居資訊廣播法的一種,需利用二層的鄰居資訊,主要 的概念與多點傳輸演算法相似。與多點傳輸演算法的差異在於挑選欲傳送的節點時,是 透過 Greedy set cover 演算法去計算需由哪些鄰居節點進行廣播,可由最少的節點覆蓋 第二層的鄰居節點。當鄰居節點收到封包時,僅有封包中有標註需廣播的節點進行廣播,
其他節點則不廣播。
2.3.5 連通支配集廣播演算法 連通支配集廣播演算法 連通支配集廣播演算法 連通支配集廣播演算法(CDS-Based Broadcast Algorithm)
連通支配集廣播演算法[26]主要是利用連通支配集(Connected Dominating Set, CDS)
[2][9][42]演算法來計算較佳的轉發節點。藉由連通支配集演算法,所有的節點可以被歸 到一個群組中,或是群組邊緣與其他群組連接的節點。而找出最小連通支配集(MCDS) 則可以找出最佳化的最少節點,涵蓋最大的範圍。然而,要計算連通支配集,需要有全 體的網路節點資訊,且連通支配集問題為一 NP-Complete 問題,雖然有近似解,但於節 點所需蒐集的資訊與計算的負擔極重。
2.3.6 戳記式演算法 戳記式演算法 戳記式演算法 戳記式演算法
戳記式演算法[44][45]屬於鄰居資訊式廣播法的一種,可細分為三種,依蒐集與利 用的鄰居資訊深度,又分為基本戳記法、進階戳記法及混合戳記法。基本戳記法主要是 將路徑上接收並廣播封包的節點資訊加入到封包中,防止廣播來源節點收到重複的訊息。
進階戳記法則是將第一層鄰居資訊加入到封包中後廣播,進階戳記法具有與自我剪修泛 流式同樣的效果。混合戳記則是將蒐集到的鄰居資訊,與廣播目標節點的第一層鄰居比 較,若目標節點的第一層鄰居,存著在一個或多個節點已涵蓋在蒐集到的鄰居資訊中,
表示有其他節點也會廣播訊息給目標節點,因此判斷是否需要進行廣播的動作。本文的 預先戳記法主要是改良戳記式演算法,因此將會在下一章中詳盡地說明戳記式演算法。
3. 戳記式演算法 戳記式演算法 戳記式演算法 戳記式演算法
在本章節中,我們將會介紹戳記式演算法在廣播時的訊息傳遞模擬,並在下一章中,
提出預先戳記法進行比較。在進行說明前,我們假設存在一個網路節點拓撲關係圖 G,
此拓撲關係圖將適用於無線網路與有線網路。拓撲中的每個節點記為 V,節點之間的傳 送範圍如果能互相涵蓋,並建立一個傳輸路徑,則以 E 來標示該路徑,節點之間可能 因為防火牆、網域或其他因素,雖然在覆蓋範圍內,但卻不一定互為鄰居,只有單向的 通道可傳輸。藉由上述的規則,我們得到一個 G(V,E)的拓樸圖。在此拓撲中的每一個節 點,擁有唯一的編號,記為 IDv。而當前節點傳送範圍所涵蓋到的範圍內的其他節點,
我們稱之為鄰居(Neighbor),並以 N(v)表示之。
0 1
2
3
4
5 6
7
0
1 2
3 4
5 6
7
圖圖
圖圖 3-1 八節點拓撲圖八節點拓撲圖八節點拓撲圖八節點拓撲圖
我們以上述的規則建立一個八個節點的無線網路傳輸圖,並將可傳送的路徑連接後,
移除節點的傳輸範圍,形成一個八個節點的拓撲結構,其中節點 5 與節點 6 之間為單向 連接,圖 3-1 表示之。
從圖 3-1 的拓撲結構中,我們可以得知以其中的連結關係為
我們將以此拓撲結構,同時表達有線網路與無線網路兩種情境下的訊息傳遞,然而,
兩者之間其實存在著差異。第一,在有線網路中,封包可以將欲廣播的節點訊息加入到 header 中,其他非廣播目標的節點可以透過 header 的資訊,在發送訊息時可過濾掉。而 無線網路中,當一個節點進行廣播時,其涵蓋範圍內的所有節點都會接收到訊息,因此 在無線網路中,主要目標是讓最少的節點進行廣播,以達到節省冗餘廣播封包的效果。
第二,在有線網路中,由於節點在發送時會先過濾掉已經被傳遞過的節點,因此當一個 節點收到訊息後,會拋棄後來接收到的同樣訊息。而在無線網路中,當一個節點收到訊 息時,會有一小段時間的間隔,去接收其他節點傳送過來的封包,並更新封包的資訊,
同時也會更新 Stamp 欄位。在說明戳記法與預先戳記法時,我們將會分別說明上述兩點 帶來的影響。