第一章 緒論
1.2 研究動機
在無線網路環境中傳送封包可以使用 geographic routing[7][8][21],做法 是每個節點可以從位置服務器(location service)或全球定位系統(GPS)知道 自己在網路中的座標位置,且能透過 location service system 知道目的點 (destination node)位置,每次持有資料封包的節點(稱為發送點)要決定中繼 點(relay node)時,主要仰賴 greedy forwarding (GF)來決定,發送點從自己 的鄰居點當中,選擇離目的地最近的鄰居點當下個中繼點,依此傳送直
圖 1-1 local minimum problem 的示意圖,D 表示目的點,虛線圓 表示D 的傳輸範圍,v 表示發送點,u 表示 v 的前一鄰居點,w1 和w2
表示v 的其他鄰居點。當封包以 greedy forwarding 方式要在 v 選擇下個 中繼點時,|vD |皆小於|w1D |和|w2D |,greedy forwarding 失敗
當資料封包的傳送的過程遇到 local minimum,就要改用補救方法來解 決 local minimum,將 greedy forwarding 換成 recovery routing,recovery routing 的運作方式可以分為兩種種類,分別是以 planar graph 圖形相關的 face routing[7] 和幾何圖形(如 twisting triangle[9][10]和 curve stick[11] )相 關的 rotation sweep algorithm。Face routing 在選擇中繼點前,要事先假設 有相鄰節點的位置資訊來建立出 planar subgraph,然後依照右手定則(逆 時針方向),讓封包沿著 planar subgraph 傳送,可以避免封包只在特定幾 個節點間相互傳送,形成 routing loop,最常使用 relative neighborhood graph (RNG)[7]和 gabriel graph (GG) [7]來建立出 planar subgraph。Rotation sweep algorithm 是給定兩傳輸範圍交集而成的 Reuleaux triangle[9](如圖1-2綠色線條區域所示)或是傳輸半徑的圓弧 Curve stick(圖1-2棕色線條所
示),接著利用這些幾何圖形和旋轉方向 sweep 周圍的區域,將 sweep 到 的第一個節點視為要選擇的中繼點。這方法的好處在可以減少所走的節 點數且能確保封包傳送繞徑路線的正確性[9]。當資料封包所在的中繼點
到目的地的距離已經小於 stuck node 到目的地的距離,就會跳離 recovery routing,讓封包依 greedy forwarding 繼續傳送。
圖 1-2 Reuleaux triangle 和 curve stick 示意圖,v 是發送點,u 為 v 的前一點 hv為v 執行 rotation sweep with curve stick 後的 start sweep point
Beaconless geographic routing(BLR)沿用 geographic routing 的原理 [3][4][12],也同樣讓每個節點知道自己的座標位置及起始點知道目的點 的位置,但不同的是因為 geographic routing 都是假設節點都有相鄰鄰居 點的位置資訊,所以能夠由發送點決定封包的下個中繼點,而 BLR 是沒 有相鄰的鄰居點位置,只能由發送點的周圍節點各自競爭當中繼點,所 以必須進一步針對 MAC contention 和 Routing 的 cross-layer 的規則設計,
為此 BLR 加入了 request to send (RTS) 和 clear to send (CTS) 跟 contention mechanism,RTS 作用是負責讓發送點將相關路由資訊送給鄰居點讓他們 去競爭,CTS 作用是在特定等待接收時間內回傳給發送點,contention mechanism 是為了要讓節點知道什麼時間點 (contention latency 或 timer) 要 回傳 CTS 封包給發送點,通常是設計成一條規約式子讓鄰居點計算 timer,稱為 delay function,delay function 可以將距離、區域優先度、角
度和最大等待時間等因素考慮進來所形成的,當 delay function 計算出來 的 timer 越小,表示節點會越快傳 CTS 封包給發送點。
首先 Beaconless geographic routing 在 greedy forwarding 方法裡,發送點 會廣播 RTS 封包給周圍鄰居點,鄰居點從 RTS 封包知道目的節點座標位 置後開始計算自己的 timer,距離目的點越近的鄰居點 timer 要越小,當發 送點收到第一個 CTS 封包回傳後,就會立刻將資料(DATA)封包送過去,
形成 RTS-CTS-DATA 的傳送模式。當傳送過程中遇到 local minimum 問 題,就換成執行補救方法 recovery routing,可是無法跟 geographic routing 一樣有足夠的鄰居點資訊建出 planar subgraph,但是可以利用 RTS 封包讓 鄰居點利用 rotation sweep algorithm 的方式,各自計算 timer,發送點依然 可以從收到第一個 CTS 封包後,直接將資料封包送給回傳此 CTS 封包的 UDA)。在這假設下 Beaconless geographic routing 利用 RTS/CTS 的方法傳 送封包,在發送點能避免同時收到多個 CTS 封包,因為在第一個鄰居節 點送 CTS 封包給發送點過程中,其他還沒送 CTS 封包的鄰居點會聽到此 傳輸的 CTS 封包,因而取消傳送 CTS 封包給發送點的規劃。可是這種環 境假設雖然很完美但在現實下卻是不成立的,因為節點一定會因為障礙
物干擾、訊號衰弱或是移動物等因素,導致每個節點的傳輸半徑都不相 同,因此我們讓每個節點和節點間收到的訊號強度(signal power)依據訊號 衰變來決定節點是否相連,形成一個不完美的連接環境稱為 non-UDA。
non-UDA 的連接環境已經不存在固定的傳輸半徑,除了在 OSI layer 3 常見的 crossing link[4][7] 和 edge intersection[11]的問題外,還有一個問題 是 hidden node 的問題,尤其是在 recovery routing 中,當 BLR 利用 rota-tion sweep algorithm 的方式,發送點在一定範圍內廣播 RTS 封包給每個鄰 居點,範圍內存在有節點和發送點相近卻沒有和發送點直接相連,使這 點無法收到 RTS 封包計算 timer,導致傳送過程中,發送點傳送的中繼點 可能不是真正 timer 最小的節點。而在 OSI layer 2則是會碰到傳統的 hid-den terminal 的問題,因為發送點使用 RTS/CTS 機制同時廣播給多個鄰居 點,會因為第一個鄰居點發送 CTS 封包時,其他也等著送 CTS 封包的節 點可能當中有部分不在 carrier sense 範圍內,所以無法互聽(overhear)到,
所以也回傳 CTS 封包給發送點,以致於同時有兩個以上的 CTS 封包抵達 發送點造成 collision,使這次的 RTS/CTS 廣播失敗。