國立臺中教育大學資訊工程學系碩士論文
車載無線網路中應用賽局理論之
延遲感知轉送機制
Delay-Aware Routing based on
Game Theory in Vehicular
Wireless Networks
指導教授:王讚彬 教授
研究生:蘇建豪 撰
中華民國一百零二年六月
I
致謝
首先,我要誠摯的感謝我的指導教授王讚彬老師。在研究所的兩年中,老師不僅 在研究及學業上給我充足的建議與指導,也時常教導我們在做人處事上應有的道理。 不管是在簡報技巧或是實驗研究上,老師總是能以簡明易懂的方法解決我的難題,讓 我在這兩年能夠進步許多,非常感謝王讚彬老師對我的付出。我也要感謝口試委員嚴 力行老師、黃秀芬老師以及詹益禎老師提供寶貴的建議,讓本論文能更加完整。 在研究所這兩年,我也很感謝學長們:裕其學長、舜斌學長、浩均學長等,在課 業上的問題時常麻煩你們,你們也不厭其煩的為我解惑,特別是裕其學長,在學業及 生活方面都幫了我許多忙,即使畢業後接到我的電話,也都耐心解答我的問題。學長 所留下來的研究資料同樣很有參考價值,在 NS2 模擬研究的部分幫了我許多忙,使我 可以少走許多彎路;還還有我的同學們:佩珊、元愷、中正、辰勳、英麟、則齊、效 維、育彰,感謝你們提供我日常生活的照應;特別是佩珊,一手包辦實驗室各大小事 務,並時常提醒我疏漏的事項,提供我許多生活上的幫助,兩年間感謝妳的幫忙。我 也要感謝實驗室的學弟妹們,冠嵐、景霖;還有其他實驗室的學弟妹們,非常感謝你 們。 最後,我要感謝我的父母親,提供的支持及照料我才能完成碩士學位,我還要感 謝我的朋友們,忍受我急躁的個性,並提供我許多不時的幫助,有大家的幫忙我才能 順利完成碩士學業;在此,我要再一次感謝我的家人與師長同學,感謝你們一路陪我 走來,萬分感謝。另外,也感謝所有關心我的人,謝謝你們。 民國 102 年 6 月 網路與通訊實驗室 蘇建豪II
摘要
車載無線網路中的節點具有高移動性的特色,使車載無線網路拓樸改變快速,容易產生無 線連線斷斷續續的問題。而現今在車載網路中傳遞訊息的方式通常經由廣播,廣播方法的缺點 是容易使封包集中在特定節點與路徑上,可能會造成網路擁塞而帶來高傳輸延遲。為了改善無 線環境中傳輸延遲的問題,我們需要一個合適的路由方法來選擇封包傳輸路徑。且在無線環境 中可能會存在有自私節點,自私節點會降低整體網路的效能與訊息傳輸的可靠度。 本 論 文主 要 著重 在 車 載 無 線網 路 中的 路 由路 徑 選擇 與 抑止 自 私行 為 ,我 們 提出 了 Delay-aware Routing based on Game-Theory (DARGT) 方法來尋找合適的路由路徑,以改善封包的傳送延遲,並提出 delay utility function 計算路徑的總 cost。潛藏網路中的自私節點可能會因 為拒絕合作而造成網路整體效能降低,為了解決自私節點的問題,我們結合賽局理論提出一個 傳輸賽局,經由設計節點間信賴值交換的方法來鼓勵環境中的節點合作。最後,我們利用 NS2 模擬器進行模擬實驗。模擬結果顯示,我們所提出的 DARGT 方法能夠有效的抑止節點進行自 私行為,並降低車載無線網路中訊息傳輸的延遲時間。
III
Abstract
In vehicular ad-hoc networks (VANET), the network topology changes rapidly because node
moves at high speed, which may easily cause wireless connection intermittent. So far, the major
method of packet transmission in VANET is via broadcasts. However, the broadcast commonly
caused packets entering on particular nodes, which may result in heavy congestion and delay. To
solve this problem, a suitable routing method is necessary. Also there may be selfish nodes in the
wireless environment, which actually bring down the overall performance.
The goal of this thesis aims to solve the route selection and selfish behavior problem in
VANET. We propose Delay-aware Routing based on Game-Theory (DARGT) to find out an
applicable path for packet delivery and to reduce the transmission delay. We also propose the Delay-
utility function to calculate the total path cost. The selfish behavior in wireless environment can
result in serious performance degradation due to the lack of cooperation. In order to solve selfish
node problem, we present a forwarding game. By giving nodes a trust value as reward, we expected
that utility exchange can encourage the node to cooperation. Finally, we used NS2 network simulator
to perform the experiment. Simulation results indicated that DARGT can efficiently arrest the selfish
behavior of nodes. Furthermore, DARGT can also reduce the packet transmission delay in vehicular
wireless networks.
IV
目錄
摘要---I Abstract---III 目錄---IV 表目錄---VI 圖目錄---VII 第一章 緒論---1 5.1 前言---1 5.2 研究動機與目的---3 5.3 論文架構---4 第二章 背景與相關研究---5 2.1 車載無線網路簡介---5 2.2 路由協定簡介---8 2.3 賽局理論簡介---10 2.3.1. 賽局的定義與架構---11 2.4 相關研究---132.4.1. Game theory based load-balancing routing---13
2.4.2. Cooperative Game-Theory Model for Bandwidth Allocation ---14
第三章 Delay-Aware Routing based on Game Theory(DARGT)---15
3.1 問題描述---16
3.2 DARGT: phase 1 (Route-discovery)---16
3.2.1. Delay-Aware Routing---19
3.3 DARGT: phase 2 (Forwarding game)---19
3.4 Trust design---20
V
第四章 Delay-Aware Routing based on Game Theory 之系統實作---26
4.1 NS2 模組介紹---27
4.2 AODV 函數說明---29
4.3 DARGT route discovery 實作---33
4.4 DARGT forwarding game 實作---41
4.4.1. 建立 Trust table---42 4.4.2. 自私節點設定---43 4.4.3. 信賴值變動---45 第五章 實驗結果與模擬分析---48 5.1 NS2 網路模擬軟體介紹---48 5.2 實驗模擬環境及參數設定---49 5.2.1. Freeway model---50
5.2.2. Simulation parameters setting---51
5.3 performance metric---52
5.4 實驗模擬與數據分析---54
5.4.1. 實驗自私節點設定---54
5.4.2. Simulation 0 : Impact of speed on delay (n=20-100)---54
5.4.3. Simulation 1 : Impact of selfish behavior on delay ( n20- n80)---57
5.4.4. Simulation 1 :不同自私節點比例對延遲的影響(0%、5%、10% selfish node)65 5.4.5. Simulation 2 :動態自私節點的影響( N20、N40)---69 5.4.6. Simulation 2 :封包到達率---74 第六章 結論與未來工作---78 6.1. 結論---78 6.2. 未來工作---78 參考文獻---80
VI
表目錄
表 3-1:Sender part 參數說明---22 表 3-2:Forwarder part 參數說明---24 表 4-1:RREP 封包結構---35 表 4-2:RREQ 封包結構---35 表 4-3:rt_update()函數結構---36 表 4-4:trust table 內容---42表 5-1:Simulation parameters setting---51
VII
圖目錄
圖 1-1 : Infrastructure Mode ---1
圖 1-2 : Ad-hoc Mode---1
圖 2-1:車載無線網路---6
圖 2-2:AODV route discovery---9
圖 2-3:Two node game ---14
圖 3-1:Path cost calculation---18
圖 3-2:Trust diagram---21
圖 3-3:Sender part trust design---22
圖 3-4:Forwarder part flowchart---23
圖 4-1:NS2 模組架構---27
圖 4-2:Packet Reception Routines---29
圖 4-3:hop-count 運算流程---34
圖 4-4:rp_delay 設計---37
圖 4-5:Receive packet---43
圖 4-6:Receive packet with selfish setting---44
圖 5-1:Freeway model---51
圖 5-2:Impact of speed on delay. ( n=20). ---55
圖 5-3:Impact of speed on delay. (n=40,n=60). ---56
圖 5-4:Impact of speed on delay. (n=100). ---57
圖 5-5:Impact of selfish nodes. (n=20). ---59
圖 5-6:Impact of selfish nodes on delay. ---60
圖 5-7:Impact of selfish nodes. (n=40). ---61
圖 5-8:Impact of selfish nodes. (n=60). ---63
VIII
圖 5-10:End-to-end delay without selfish node (0%) ---66
圖 5-11:End-to-end delay with selfish node (5%) ---67
圖 5-12:End-to-end delay with selfish node (10%) --- ---68
圖 5-13:Simulation2: Impact of selfish nodes. (N20) ---70
圖 5-14:Simulation2: Impact of selfish nodes. (N40) ---72
圖 5-15: Simulation2: Average packet delivery fraction. (N20) --- 75
1
第一章 緒論
1.1 前言 近年來,無線網路技術因其使用上的便利性,受到大眾普遍的認同及歡迎,並以極快的速 度在世界各國普及,無線網路已經成為人們生活中不可或缺的一項科技產品。各種可攜式無線 終端如人們常用的智慧型手機、平板電腦、筆記型電腦等裝置,只須在無線存取點 (Access Point, AP)的覆蓋範圍內,就可以透過 AP 輕易的連上網際網路(internet),存取網路資源。現今的無 線網際網路的存取技術可分成兩種存取類型:無基礎設施點對點通訊模式 (ad-hoc mode),以 及有基礎設施通訊模式 (infrastructure mode)。傳統的 ad-hoc 無線網路: 節點不經由存取點連 上網際網路節點,而是聚集多個無線終端設備自組成一個無線網路以進行資源分享;而在 infrastructure mode 中,所有的無線裝置都必須經過無線存取點 (AP) 來存取網際網路的資源。
目前的無線通訊技術無線網路技術如 IEEE 802.11 (a)(b)(g)(n)[1]已經非常成熟,並普及於 各種公眾場合,提供民眾諸多的方便。而在無線網際網路相關的應用中,可分為靜態應用與動
圖 1-2:Ad-hoc Mode 圖 1-1:Infrastructure Mode
2 態應用: 靜態應用包含平常的上網,查詢資料,並不用考慮節點的移動性以及環境問題;而動 態的無線網路應用,則是可讓使用者在移動的過程中又可同時能透過無線網路連接網際網路。 由於在移動的情況下連接網際網路,必須考慮到無線環境因素以及移動性的影響,極可能有網 路訊號強度不足,連線斷斷續續且速度緩慢、頻寬壅塞的問題;另一種大型的動態無線網路稱 為車載無線網路,車輛搭載無線通訊設備(OBU),車輛與車輛之間會透過這些無線通訊設備相 互溝通,經由無線網路交換交換彼此所需的資訊或資源。除了一般的網路功能外,車載無線網 路的應用通常著重於行車安全性的應用,例如智慧型運輸系統(Intelligent Transportation System, ITS[2])、提供駕駛更完整且詳細可靠的道路資訊,確保行車安全。
舊有的 IEEE 802.11 標準並不適用於車載無線網路,因為在車載無線網路環境中節點的移 動性極高,造成網路拓樸改變快速導致整體可靠度不足,為了解決這些問題,因而衍生出 IEEE 802.11p。IEEE 802.11p 適用於車載無線網路,由 IEEE 團隊經由舊有的 IEEE 802.11 標準調整
並修改而來。車載無線網路除了底層的 IEEE 802.11p,上層還包括 IEEE 1609 系列[3][4][5][6], 我們將之稱為 Wireless Access in the Vehicular Environment (WAVE) standards。因此,WAVE network 也是車載無線網路的通稱。 現今,車載無線網路主要的應用可分為兩種:非安全性的應用以及安全性的應用[7];非 安全性的應用藉由無像網路的功能來提供駕駛與乘客各式舒適性及娛樂服務 (例如:上網、電 子郵件、導航資訊及多媒體應用);而另一種安全性的應用,注重於及時性的傳送警告訊息, 用以警告前方道路上所發生的危急情況(例如:車禍、土石警告、障礙物警告),必須考慮到駕 駛的反應時間以警告駕駛提早做出反應,減少車禍發生。此外,不管是何種應用,都要考慮到 無線網路中的傳輸延遲。 降低訊息傳輸延遲在可以有效的爭取駕駛的反應時間,反應時間一般指當駕駛收到前方車 禍訊息到腳踩下油門所需要的時間,據研究顯示,若以車輛以時速 100 公里每小時行駛在高速 公路上,若前方發生交通事故,必須要為駕駛的爭取至少需要 0.8 秒以上的反應時間來避免連
3
環追撞。因此,如何減少警告訊息的傳輸延遲是一個重要的議題。另外,車禍發生時散播大量 的警告訊息容易造成訊息碰撞,因為無線網路的頻寬是有限的,嚴重的情況下,可能導致網路 擁塞與廣播風暴的問題(broadcast storm problem)。廣播風暴浪費大量的無線網路資源並且降低 訊息傳輸效率,就無線傳輸來說無疑是致命的影響。而在車載無線網路中,同樣必須考慮到有 所謂的自私節點存在,自私節點可能會基於本身電量考量,若沒有獲得足夠的利益,它會拒絕 幫忙廣播重要的警告訊息,導致整體資訊傳輸的可靠度下降。 1.2 研究動機與目的 本論文著重於車載無線網路環境中的路由選擇與封包傳送。目前,車載無線環境中的封包 傳輸由於無線傳通訊廣播的特性,容易造成封包送往特定的路徑(例如:到目的地最短距離的路 徑),並集中在某些特定的節點上,造成節點嚴重擁塞而使傳輸延遲過大。因此,我們想到在 做路由選擇時,就先依照每條路徑的傳輸延遲不同,去選擇封包傳送最適合的路徑,期望達到 低延遲且高可靠的網路傳輸。
在本篇論文中,我們提出了 Delay-aware Routing based on Game-Theory (DARGT),考慮路 徑中各個節點的情況來選擇出封包傳輸延遲最低的路徑。另考慮到無線環境中可能會有自私節 點存在,當要求節點幫忙傳送封包時,節點不會無條件的幫忙傳送。為了解決自私節點問題, 我們應用賽局理論[8][9]提出了一個傳輸賽局(Forwarding Game): 環境中所有節點皆為參與者, 每一個節點都有獨自的策略選擇。 我們設計了一個參數(Trust)作為節點的信賴值,以給予節點信賴值(Trust)的方法作為利益 (Utility),期望以利益交換的方式促使無線環境中的自私節點合作。另外,我們也提出了
Delay-aware Utility 分配方法,藉由 Forwarder 幫忙傳送封包的快慢,決定該給予多少封包利益
值(Utility),隨著時間經過,利益值會逐漸減少至無,甚至是負值作為懲罰。最後,我們利用 NS2 進行模擬實驗。最後透過實驗模擬結果來證明我們提出的 DARGT 與其他方法相比,可以
4 有效的抑制環境中節點的自私行為,並且降低訊息傳輸延遲。 1.3 論文架構 本論文共分為五個章節,除本章外,各章節的內容及簡介如下:在第二章,我們將會簡略 的介紹車載無線網路相關知識及目前的研究情況。此外,我們也網羅了許多在車載無線網路中 賽局理論的相關應用以及路由選擇的相關研究,並詳細介紹其觀念與作法;第三章將會詳述本 論文所提出之 Delay-aware Routing based on Game-Theory (DARGT) ,我們提出賽局式流程圖 簡例,介紹 DARGT 的整體運作流程;第四章中,會先介紹我們所使用的 NS2 網路模擬軟體, 並說明實驗環境與相關程式設定。第五章中我們會利用 NS2 模擬實驗結果並與其他的路由方 法做分析比較;第六章會總結本論文,並探討其他未來值得深入研究的議題。
5
第二章 背景與相關研究
本章將有系統的介紹車載無線網路以及傳統的路由協定 Ad Hoc On-Demand Distance Vector (AODV),另介紹賽局理論的核心概念及相關研究,除了描述並說明相關的基礎知識, 也深入探討相關機制的運作與可能面臨的問題。以下為本章各節的內容簡述: 2.1 車載無線網路簡介 介紹目前車載網路的技術及發展趨勢。 2.2 路由協定簡介 介紹目前常用的車載網路路由協定。 2.3 賽局理論簡介 介紹賽局理論基本概念以及應用。 2.4 相關研究 整理並分析賽局理論相關論文之特點及可改進處。 2.1 車載無線網路簡介 車載網路現今已成為無線通訊的熱門應用,為了讓行駛中的車輛能夠獲得更多即時訊息及 完善的行車安全,各國研究單位正致力發展車載無線網路。車載無線網路由於其高移動性的特 色,傳統的無線網路協定已經不夠適合,為此 IEEE 團隊擴充了原先的 IEEE802.11 通訊標準, 制定了 IEEE802.11p (WAVE)。此協定主要應用於車間通訊上,車輛藉由安裝無線通訊設備於 車輛上,車輛與車輛之間就可以相互通訊並自組成無線通訊網路,IEEE802.11p 的應用層面除 了車與車間通訊(Vehicle to vehicle, V2V)之外還包括了車輛與路邊裝置通訊(Vehicle to Roadside Unit,V2R),行進中的車輛同樣可以藉由無線通訊連結路邊裝置及基地台。
6 故車載無線網路主要可分為三種架構:第一種架構為純無線的車輛對車輛網路 (V2V); 第二種架構是在有線及無線的骨幹上通訊,可以當作為 WLAN,如車載網路;第三種架構是 混合型的架構,包含車輛對路間裝置(Road-Side Unit,RSU)通訊(V2R),同時車輛與車輛之間 也可以透過 single-hop 或 multi-hop 交換訊息,核心概念是車輛可以不必長時間依賴於一個固 定的路邊通訊設備。依 C2C-CC 參考架構可區分為三個主要部分,如圖 2-1 所示。 圖 2-1:車載無線網路 安裝在車輛中的 OBU 是一種具有無線與有線能力的通訊設備,車輛利用 OBU 送並交換 重 要資訊 。 在車 載部 分 (in-vehicle domain) 中,由 On-Broad Unit (OBU) 及一個或多個的 Application Units (s) (AU)組成,AU 具有運算能力可同時執行一個或多個應用程式,並且可以
利用 OBU 的通訊能力傳送或接收相關的應用服務。而在另一種的 ad-hoc domain(MANET)中, 則是由裝配有 OBU 的車輛與固定在路邊的通訊設備 (Road-Side Unit,RSU)通訊並組成無線通 訊網路,OBU 與 RSU 可視為 ad-hoc 網路的節點;車輛可經由 RSUs 連接到附近的基礎設施, 進而連上 Internet,且 RSU 間可以互相溝通,提供訊息傳遞服務或改善道路安全。在 infrastructure domain 中包含兩種類型:RSU 及 hot spot,OBU 同樣可以透過 RSU 或 hot spot 連接到網際網路
7
車載無線網路的特色:
(1) 具備高運算能力 (higher computational capability):
車載裝置比一般可攜式裝置具有較高的運算能力,能夠同時處理更多更複雜的要求以及提 供更具多樣性的運算服務。
(2) 可預測性 (predicable):
由於車載無線網路中的道路是固定的,車輛必須依照道路的走向行駛,比起傳統的 MANET, 車載無線網路更容易把握車輛接下來的位置,故具備高預測性。
(3) 無電力使用的限制 (unlimited transmission power):
車載無線網路的電力來自於車輛本身,車輛能夠產生電力支持資料傳輸與運算,比起一般 可攜式的無線裝置,如智慧型手機、筆記型電腦等無線終端設備具有更可靠的電力來源。 因此,一般在車載無線網路的模擬中,電源管理都不是車載無線網路所考量的重點。 車載無線網路可能面臨的挑戰: (1) 高移動性 (high mobility): 與靜止的終端裝置不同,即使在低流量時,車輛的相對速度可能會達到 300km/hr。不同的 移動場景也有不同的行車速度,要如何確保在高車速時通訊能夠穩定且持續是車載網路的 一大挑戰。 (2) 路由與傳輸 (routing problem): 目前的路由演算法容易造成封包集中往特定路徑或特定車輛節點而形成擁塞;另外在高密 度的網路中亦會形成廣播風暴問題,廣播風暴對於傳輸緊急的安全性應用封包有致命性的 影響。必須要謹慎選擇適當的路由路徑[10][11]。
(3) 動態的網路拓樸與連通性 (network topology and connectivity):
車載無線網路中的網路拓樸改變極為快速。由於環境中的車輛節點會任意的移動,可能造 成節點頻繁的進入或離開網路拓樸,容易導致節點之間的通訊時常發生中斷或重新連結的
8 情況。 (4) 自私節點問題 (selfish node)[12]: 在任何種具互動性的無線網路中都可能存在自私節點,自私節點可能因為自身的利益考量 (如:電量),若自身無法獲得任何利益,它將拒絕幫忙傳送訊息,甚至對整體網路做出危害 性的行為。自私節點平時潛藏在網路之中難以預防,當資料封包傳送給它時才造成傷害, 而此種自私行為對於任何安全性應用將是致命的,自私節點的存在使得整體的網路可靠度 下降。 2.2 路由協定簡介 車載無線網路的特色是具有動態的網路拓樸結構,因此通常在需要進行通訊時才開始尋找 路由。而目前已經發展出許多的路由協定,以下將介紹較為常見的兩種基本路由演算法:DSR 與 AODV。
DSR 與 AODV 的共通性是在需要傳輸資料時才進行路徑搜尋(Route discovery),屬於
on-demand 型式的路由演算法,以被動(reactive)的方式等待呼叫。傳統的主動式路由演算法
(DSDV)會進行主動搜尋(proactive),並且記住整體路徑,不管路徑最後是否會被使用的。被動
式的路由演算法比起主動式最大的優點是不必維護整體網路的路由表,當有需要時才啟動,每 次啟動時都將更新一次路由表,可以減少搜尋不必要的路徑帶來的負擔(overhead)。
Ad Hoc On-Demand Distance Vector (AODV)[13]:
AODV 是目前車載網路最常使用的路由協定,它的核心概念非常簡單,為選擇到目的地
節點最短 Hop-count 數的路徑。
AODV 屬於被動式路由,收到連結要求才會開始運行。當來源節點要傳送封包時,會先檢查
是否有到目的節點的路徑,若是沒有,將啟動路徑搜尋機制(route discovery),一旦路徑建立後 來源節點會照著此路徑傳送封包,若是途中路經中斷或是失效,來源節點根據錯誤訊息(RRER)
9
來重新啟動路徑搜尋。
圖 2-2 AODV route discovery
圖 2-2 簡單表示了 AODV 做路徑搜尋的流程:首先來源節點(source)會廣播一個要求訊息 route request(RREQ),其鄰居節點收到 RREQ 後會順著路徑廣播出去,若是路徑中有節點具有到目
的節點的有效路由(fresh route),或是 RREQ 封包順利到達目的節點,此時 RREQ 廣播才會停 止。具有 fresh route 的節點或是目地節點本身收到 RREQ 後會原路回傳 route reply 訊息(RREP), 最後當來源節點收到傳回的 RREP 封包後,可根據其中夾帶的路徑資訊來建立到達目的節點的 路由。
RREQ 內所夾帶的資訊包含 rq_type、rq_hop_count、rq_src、rq_dst 以及 Sequence Number,節
點收到 RREQ 封包可以經由夾帶的資訊得知封包的發送者與封包的目的地。在傳送 RREQ 的 過程中,中間節點會自動設定反向路由表,之後將 hop_count 數加 1 後再廣播出去。若節點收 到自身傳送或是重複的 RREQ 時,會將封包丟棄。Sequence Number 用來表示正反向路由的時 效,若收到 RREQ 的節點發現往目的地節點的路徑已經記錄在自身路由表中,首先會檢查 Sequence Number,是否比原先新以及若是 Sequence Number 相同但是 hop_count 數比原先更少,
如果是則更新路由表,否則表示目前路由是最佳狀態,會回傳 RREP 給來源節點。
RREP 內所夾帶的資訊包含 rp_type、rp_hop_count、rp_dst、rp_src、rp_lifetime 以及 Sequence
10
RREP 的點,並更新正向路由表,藉此建立一條從來源端到目的端完整的路由。而來源端收到
RREP 時,首先會檢查 Sequence Number 是否比原先更新以及 Sequence Number 相同但是
hop_count 數是否比原先更少,若是則更新路由表(rt_update),並開始傳送資料封包。此外,每
條路徑都有一個 lifetime,若是超過時間沒有使用這條路徑,路徑則會消滅,等待下一次的路 徑搜尋。
如以上所述可知 AODV 選擇路徑的方法為單純選擇到達目地端的最短路徑(shortest hop-count), 由圖 2-2 的例子中可看出當路徑搜尋時共有三條路徑被建立,但是最後 RREP 傳回時,來源端 節點 N1 會選擇最短的路徑(N1-N2-N5-N8)來傳送資料封包。而在大多數的情況下,選擇最短 路徑的路由方法並不一定是最完美的路由方法,考慮到整體的流量分配,AODV 的方法可能 會造成章節 2.1 內所提到的封包集中於特定路徑而形成擁塞,導致整條路徑延遲(transmission delay)過高[14]。 2.3 賽局理論簡介 賽局理論是一種策略思考,提供了一套系統設定的數理分析方法,尋求在利害衝突下的最適因 應策略,以尋求自身的最大勝算或利益。 賽局理論近年被廣泛應用在商業以及科學研究領域,主要用以處理多人的資源分配以及利益最 佳化問題,在無線網路領域中同樣可以應用賽局理論來處理資源分配的問題: 無線裝置的資源, 包含了電力資源(Power Resource)[15]與無線資源(Radio Resource)。
無線資源指的是進行無線通訊所需要的通訊頻道(Channel),或達成特定服務品質(Quality of Service)所需的資料傳輸率(Data Rate)或頻寬(Bandwidth)。由於電力及無線資源本質上皆是有限
的,所以無線裝置資源管理的一個基本議題即是如何充分有效利用這些資源,以達到極大化系 統利益(延長網路運作壽命、提高資料產出量)的目的。而無線裝置的電力資源管理,主要是 安排裝置的工作或休眠排程,以避免裝置消耗不必要的電量。
11
就無線資源管理而言,無論是 FDMA 傳輸系統中的傳輸頻率(Frequency)、TDMA 系統中的 Time Slot、或是 CDMA 系統中的傳輸碼(Code),無線資源都是有限的。無線裝置本質上是在
互相競爭有限的資源。此外,無線裝置也可能以犧牲其他裝置的利益來提高本身的利益(Selfish behavior ) [16],造成系統整體的利益損失。 如果使用者只追求個別利益的極大化,則系統整體利益(如公平性與效能)很可能遭受損害。 如何在使用者本質上是自私自利的前提下,透過適當的獎勵或懲罰機制,驅使所有的使用者為 增進系統整體利益而努力,是個值得研究的課題。 2.3.1 賽局的定義與架構 一個正常的賽局,由許多的賽局參與者(Player)、參與者們所選擇的策略(Strategy)以及他們所 能到的利益(Utility)組成。因為參與者各自有自己的目標或利益,為了使自己的利益(Utility)達 到最大,他們會考慮對手的各種可能行動方案,並選擇對自己最有利或最合理的策略。 我們可以藉由設計利益函數(utility function)的方法,影響參與者作出決策: 在我們的方法中, 以利益函數來誘使參與者們願意幫忙傳送封包,是這個傳輸賽局的核心概念。 而賽局中每個人的決策都會受到其他人的影響,賽局理論提供了有系統的方法來分析這種互相 影響的策略。 賽局的分類: 以參賽者是否合作區分: 賽局主要分為合作賽局(Cooperative Game)與非合作賽局 (Non-cooperative Game) 他們的差異主要是參賽者之間有沒有一個具約束力的協議,合作 賽局理論上較為複雜,本文主要討論非合作賽局。 以行動的時間區分: 可分為靜態賽局(Static Game)和動態賽局(Dynamic Game) ,靜態賽局中參與者必須同時決定他們的策略,而動態中有先後順序,可以觀察
12 別人決策再做決定,基本上都是靜態賽局為主。 以參賽者對資訊了解程度的區分:若每一個參與者對於其他人可能選擇的策略和利益能夠 完全了解則稱為完全資訊賽局,不夠了解或不夠精確成為非完全資訊賽局。 以進行次數區分:只進行一次稱為單次賽局,多次稱為重複賽局。 賽局的定義: 一場賽局G主要由以下所組成 1. 參與者集合P ={ p1 ,p2, p3 …pn }(Player Set): 一場賽局裡所有參與者所組成的集合
2. 策略集合Si={S1 ,S2 ,S3 ,…Sn } (Strategy Set): 賽局中參與者pi可能選擇的策略所組成的
集合
3. 策略組態Y=S1 x S2 x S3 x…Sn(Strategy Profile): 參與者選擇測略能達到的所有組合
4. 策略向量C ={C1.C2.C3…Cn} (Strategy Vector): Ci為Pi所選擇的策略
5. 效用函數ui(C) (Utility Function): 參賽者在某個向量策略所能得到的利益
在我們的研究中,設定了自私節點的存在,無線環境中的自私行為通常有致命性的影響,使整 體網路可靠度下降。為了解決自私節點問題,在本篇 Delay-Aware Routing based on Game Theory (DARGT)的方法中,我們應用賽局理論提出了一個傳輸賽局(Forwarding Game): 假設環境中所
有節點皆為參與者,每一個節點都有獨自的策略選擇,環境中潛藏有自私節點不願意幫忙傳送 封包。我們以給予節點信賴值(Trust)的方法作為利益(Utility),期望以利益交換的方式促使無線 環境中的節點互相合作。
13 2.4 相關研究
2.4.1 Game theory based load-balancing routing [17]
GBLBR 是一個探討路由選擇的方法,它注意到了傳統的路由協定在尋找路徑時會使用
shortest-path 作為路徑建立依據,但這樣的作法容易使大量封包集中在特定節點,導致嚴重的 延遲問題。
GBLBR 注重每條路徑負載平衡的概念,並利用賽局理論的方法來促進各個節點的合作意 願(願意幫忙傳送封包),達到降低 Delay 的目的。首先 GBLBR 會去計算出每條可走路徑上的 利益函數(Delay utility function),並根據每條路徑的負載承受量(Link Capacity)的不同,去為每 條路徑分配最適合的流量,以達到附載平衡(Load Balance)的目標。
此外本文另一個重點 Cooperation stimulation(CS),是研究如何利用賽局理論去促使環境中 的自私節點(Selfish node)合作,這個方法自行定義了一個參數 γ,γ=Ndelivery / Nrequest , 簡單說就是去求出在總共的封包傳送要求中,這個節點去幫其他人送了多少封包的比例。若是 這個節點越熱心,幫忙傳送的封包數量很多,Ndelivery 的數值就會高,導致γ的值也高,表 示這個節點越不自私。而這個自私值γ可跟之前的利益函數整合。 藉由與自私值γ的結合,GBLBR 可知道該如何根據利益函數分配流量。此外自私值也有 對於自私節點相對應的處罰機制,環境中的每一個節點,在幫其他節點傳送封包時,幫忙傳送 的機率會去乘上要求傳送封包的節點的自私值,如此一來 ,若是節點太過自私,它的γ值必 然就會小,而它所要求傳送出去的封包因為傳送機率受到乘上γ值的影響,會導致自私節點的 封包可能會很難被傳送出去, 自私節點就會受到嚴重的封包 delay 的懲罰,可能會影響其改 變自私的態度。 論文[17]的優點:
1. 利用 Delay utility function 決定路由路徑,能合理分配傳輸流量、降低傳輸延遲。
2. 設計衡量自私度的參數γ,以遏止網路中的自私行為。
論文[17]的缺點:
14
2.4.2 Cooperative Game-Theory Model for Bandwidth Allocation in Multi-hop Wireless Networks [18]
在無線的環境下,Multi-hop 的作法可能會使頻寬分配不平衡,可能會導致某些節點會有 過多流量集中,造成阻塞;且在整個環境中,可能會有自私節點存在,造成傳輸問題。對此本 文提出了使用合作賽局的概念,來公平的將頻寬分配到適合的 path 上。
由於自私節點的問題,導致請求別的節點幫忙傳送可能會有困難,於是文章中提出了以威 脅干擾取代善意合作的想法(Denial of service attack),若是節點不願意幫忙傳送,那就干擾該 節點的傳送,造成兩敗俱傷的結果,以此威脅自私節點合作。
圖 2-3 two node game
圖 2-3 中 A 與 B 可形成一個簡單的 two-node 賽局,假設 B 必須依靠 A 來幫忙傳送,此時兩者 的選擇可能有合作(A 幫忙傳送封包)或是干擾(A 不幫忙,B 造成干擾)等,賽局內可能就會造 成四種不同的情況,根據各個不同的情況給於機率值 p1~p4 ,並假設 p1+ p2+ p3+ p4=1,如 此一來就可以去求出每條路徑的利益值(Utility) ,求解每一個點的機率 p,最後可以求出每條 路徑適合的頻寬分配。 論文[18]的優點: 1. 提出了處理自私行為的新對策,以威脅取代利誘。 2. 以機率式分配頻寬,避免壅塞問題。 論文[18]的缺點: 1. 沒有考慮到兩敗俱傷後對整體網路的影響,以及實驗結果數據略少。
15
第三章 Delay-Aware Routing based on Game Theory
本章將詳細介紹本論文所提出的 DARGT 之研究方法,包含研究動機與目的,以及整體運 作流程。在前一章中,我們介紹了傳統 AODV 路由以及賽局理論的應用,並且得知車載網路 中 Routing 可能面臨的問題以及無線環境中可能存在自私節點的威脅。因此,依照對應的問題 不同,DARGT 的方法可分成兩個 Phase 來討論: DARGT 的 Phase 1 為路由路徑搜尋(Route discovery);Phase 2 則為傳輸賽局(Forwarding game)。在 Phase 1 中,Sender 發出廣播封包進行
路徑搜尋,經由計算每條路由路徑的 total cost 值來選擇最合適的傳輸路徑;Phase 2 我們應用 賽局理論提出了傳輸賽局(Forwarding game),依照傳輸賽局設定的方法進行封包傳送,環境中 每一個節點的選擇都會影響到其他節點的策略變化。此外我們在傳輸賽局中提出了一個信賴度 的概念,以信賴值的交換來鼓勵環境中的自私節點合作,期望減少環境中的自私行為。
3.1 問題描述
描述研究動機及傳統路由方法面臨之問題。
3.2 Delay-Aware Routing based on Game Theory: phase 1 (Route-discovery)
描述本論文所提出的 DARGT phase 1 的概念及運作機制。
3.3 Delay-Aware Routing based on Game Theory: phase 2 (Forwarding game)
描述 DARGT phase 2 所提出的傳輸賽局其概念及運作機制。 3.4 Trust design
描述傳輸賽局中的信賴值設計與交換流程。 3.5 Delay-utility allocation
16 3.1 問題描述
在車載網路中,通常都是藉由簡單的廣播機制(flooding)來傳遞訊息,在進行路由(route discovery)的選擇上,也是使用 flooding 的方式廣播路徑要求訊息(RREQ,RREP)。但無線的資
源是有限的,以廣播傳遞資料的方式可能會有多餘廣播的問題,以及要考慮到同時大量訊息集 中於特定節點的情況,可能導致節點附近的頻寬擁塞,在嚴重的情況下甚至會造成廣播風暴, 而廣播風暴所帶來的訊息遺失(packet loss)以及高傳輸延遲 (transmission latency)在車載無線網 路中無疑是致命性的影響,並降低整體網路的可靠度。 為了改善上述的問題,我們將從選擇路由路徑上著手。傳統的路由方法如 AODV,其路 由選擇依據為單純選擇到目的地節點的最短路徑,而最短路徑的建立,同樣表示不考慮路徑上 節點的負載輕重亦或是路徑上的傳輸延遲高低如何,所有封包都會集中往這條路徑上傳輸。若 以 Delay 為重的車載網路應用來說,最短路徑的選擇方法極有可能會造成高傳輸延遲,並不是 最理想的路由方法 。
基於上述的理由,在本論文所提出的 Delay-Aware Routing based on Game Theory (DARGT) 方法中,DARGT 的 Phase1 將會是基於路徑最低傳輸延遲的路由路徑選擇。我們盡可能的改善 路由選擇所帶來的傳輸延遲問題,經由選擇現時點最合適的路徑進行傳輸,來降低封包擁塞以 及廣播風暴發生的可能性,也連帶降低了封包的傳輸延遲,提整體網路的可靠度。
3.2 Delay-Aware Routing based on Game Theory: phase 1 (Route-discovery)
在 Delay-Aware Routing based on Game Theory (DARGT) phase 1 中,為了解決傳統最短路 徑選擇方法所帶來的問題,並追求最低的傳輸延遲,我們認為應該從路由選擇的判斷標準做改 變,從選擇最短 hop 數的路徑變成選擇最低傳輸延遲的路徑。首先我們得知當 RREP 封包從目 的地節點傳送回來時,會一併夾帶其行走的反向路由上的資訊,若我們對 RREP 封包的結構進 行修改,使其可以多夾帶我們想要得知的資訊例如:這條反向路由路徑的傳輸延遲(delay)、此 路徑上節點的負載量(Loading)以及路徑上節點是否存在自私節點等訊息。當 Sender 端收到傳
17
回的 RREP 時,就可以根據這些訊息判斷此條路徑是否合適,而不用單純以此路徑是否為最短 路徑做判斷。為此我們提出了 delay- utility function 公式來計算路徑的 Total cost:
(1)
此公式考慮了無線環境中可能造成路徑延遲的因素:假設環境中共有 條路徑, 表示第 i 條
路徑,一條路徑可由兩個節點甚至許多節點組成, 函數表示尋找上一跳節點中具
有最小路徑 cost 的節點,並與其建立路徑。我們考慮路徑的傳輸延遲 D(delay)、負載量 SL(loading)以及其他參數如 hop 數 H(hop-count),經由以上參數設計出公式(1),用來計算出每
一條路徑的 total cost。具有最小的 cost 的路徑將會是最合適的路由路徑,而 sender 會選擇最 低 cost 的路徑建立路由表。
、 、 為可以調整的比重參數,我們隨時可以根據不同的實驗需要來調整三者比重的
分配。根據公式的物理意義,有最小權重的路徑會是最合適的路徑。而 U 值之間的比例分配,
如今我們的重點放在減少路徑的延遲部分,所以使 =Delay 的比重為最大, =SL、 =Hop
count 的比重相同。如下圖,Delay 所占的比重為 60%、Loading 與 Hop-count 數所占比重皆為
18
圖 3-1. Path cost calculation
以圖 3-1 為例,假設環境中節點對其他節點的信賴度皆為相同( T=50% ),當節點 N3 收到 來自目的地端(N8)的 RREP 廣播時,可能分別從 N6 與 N7 兩點收到。若是依照傳統的 AODV 路徑建立法,只考慮從 Source 端(N1)到目的節點(N8)的最短 hop 數,會單純選擇 N6 來建立路 徑。
但在 DARGT 的方法中,我們是依據 Cost 計算公式,來選擇有最小 Cost 的路徑。根據公 式(1),於 N3 點可得到的資訊分析: N3 到達 N6 的延遲(D)為 20ms,而 N6 目前的負載量(SL)
為 40%,N3 經由 N6 到達目的地 N8 的跳數(H)為 2,且 N3 對於 N6 的信賴值(T6)為 50%,此
四組參數應用於公式(1)就可求出 N3 到 N6 路徑 cost (N3-N6)為 10.4;由 N3 到 N7 的路徑 cost (N3-N7)則為 2.64,但由於 N7 經由 N6,此時必須把 N6-N7 這段路徑 cost 也考慮進去,於是可 得知路徑(N3-N7-N6)的 Total cost 值為 2.64+1.28=3.92。此時將兩段路徑的 total cost 做比較, 路徑(N3-N7-N6) 比起路徑(N3-N6)的 Total cost 值(10.4)來的小,表示路徑 (N3-N7-N6) 可能有 較低的傳輸延遲與負載量,同樣意即在 N3 點的場合,選擇 N7 來建立路徑會是較好的選擇。
19 3.2.1 Delay-Aware Routing
為減少路徑傳輸延遲,DARGT 提出了 Delay-aware routing 的概念。當節點收到 RREP 封 包時,首先會去確認其路由表中是否有到達此目的地節點的路徑,若是沒有,則將 RREP 傳回 的這條反向路徑登錄為新路徑;若路由表中已經存在了舊路徑,節點會經由公式(1)來比較新 舊兩條路徑的 Total cost 值,具有較小 cost 值的路徑同樣表示此路徑具有較低的傳輸延遲,節 點會選擇具有較小 cost 值的路徑來做為路由路徑,將路徑 cost 存入 rt_cost 值內並同時更新路 由表(rt_update)。
3.3 Delay-Aware Routing based on Game Theory: phase 2 (Forwarding game)
賽局理論是一種策略思考,提供了一套系統設定的數理分析方法,尋求在利害衝突下的最 適因應策略。在 DARGT phase 2 中我們應用賽局理論,提出一個傳輸賽局(forwarding game), 用來是抑止網路中的自私行為以及促進節點間合作。傳輸賽局的組成由參與者節點(Player)、 參與者們所能選擇的策略(Strategy)以及參與者所能到的利益(Utility)組成。DARGT 中的傳輸賽 局可表示如下: 1. 參與者(Player): N = { } 假設參與者集合 N 為所有參與傳輸賽局節點的集合,設共有 n 個節點,我們可以定義出 S 為起始節點、D 為目的節點、F 則為路徑中幫忙傳送的 Forwarder。 2. 策略(Strategy): S = { } F= { } 由於賽局中角色不同,各自的策略必須分開討論。若節點為起始節點 S,做為 Sender,必 須在 x 條候選路徑中選出封包要傳送的最適路徑,路徑集合可表示為{ };若節點 做為 Forwarder,則只要決定是否幫忙 Sender 轉送,其策略集合只有簡單的{ }。 節點做任何決策都必須是在自身能獲得足夠的利益為前提下進行。
20
3. 利益值(Utility):
傳輸賽局中的利益值就是 phase1 路經搜尋中尋找最短 cost 值的路徑,經由多種參數如 delay、 system loading 等 delay-utility function 計算出路徑 cost,可以合理推測具有低 cost 值的路徑 會具有較低的傳輸延遲。而在利益值選擇的這個部份,sender 都會去爭取就有最低延遲時 間的路徑傳送封包,以最大化本身的利益。 傳輸賽局的利益值就是有關信賴值設計的部分會在章節 3.4 中詳細介紹。 3.4 Trust design 信賴值(Trust)是一個用來衡量節點是否是自私節點的數值,Trust 的值介於 0-1 之間,可 表示為 0%-100%,信賴值的上限為 100%,超過上限仍以 100%計。信賴值表示的是對其他節 點的信賴,每一個節點都會有一個對於其他節點的信賴表,對其他節點的信賴值會隨著其是否 願意幫忙傳送封包而改變。若是對某節點的信賴值很高,表示此節點值得信賴: 若收到高信賴 值的節點所廣播出的封包時,環境中的其他節點會更願意幫忙傳送;反之,若對某節點的信賴 值很低,表示此節點可能多次拒絕/丟棄廣播封包,可能是潛藏在環境中的自私節點,環境中 的其他正常節點將會避免將封包傳送往此自私節點,並且拉高幫忙自私節點傳送封包的門檻值, 以抑止自私行為,增加網路的可靠度。
在傳輸賽局中,信賴值作可做為一個傳輸門檻(threshold),當 Forwarder node 判斷對 sender node 的信賴值大小是有超過傳輸門檻時,才幫忙傳送封包;若是幫忙傳送,sender node 對
forwarder node 的信賴值將會上升一個獎勵值 α 作為其幫忙傳送封包的獎勵;同理,若 forwarder
node 拒絕幫忙廣播,sender node 對其的信賴度將下降一個懲罰值 p 作為處罰。在傳輸賽局中,
信賴度是一個相互的概念,我們期望藉由節點間信賴度交換的方法,鼓勵環境中的節點/自私 節點合作。
21 圖3-2. Trust diagram. 環境中每一個節點都有自身的 trust table 用來紀錄對其他節點的信賴度,如圖 3-2 中有三 個節點 N1、N2 與 N3,在 N1 的 trust table 內會以 Tn2 表示 N1 對 N2 的信賴值,以 Tn3 表示 N1 對 N3 的信賴值;同理,N2 對 N1 的信賴值以 Tn1 表示。信賴值是常時變動的,對其他節 點的信賴值會隨著其他節點所採取的策略而變化。節點間信賴度(Trust)的變化,舉例來說,若
是 Forwarder 幫忙 Sender 傳送封包, Sender 對 Forwarder 的信賴度( )就會增加一定值 ,反
之則減少。當信賴度增加後,要是兩者立場改變,換成 Forwarder 想要傳送封包時,原本的 Sender 就會更願意幫忙其傳送。這是一個互動的概念,以信賴度作為利益值交換,期望隨著節點間信 賴值的變動,最終能達到促使環境節點互相合作的目的。在 DARGT 中,信賴值的用途依照角 色扮演的不同可分為 sender 與 forwarder part:
Sender part: Sender 請求 Forwarder 幫忙傳送時,同時會告知 Forwarder 幫忙傳送能獲得多少 Packet utility,由 Sender 給出的 Packet Utility 的值多寡,是根據 Sender 對 Forwarder 的信賴度 大小所決定,設定如下:
傳輸成功: Tf = Tf + α
傳輸失敗: Tf = Tf - p (2)
α 為一個可調整的獎勵值參數,可因應實驗需要改動, 值表示 Sender 對 Forwarder 的信
22 表 3-1 Sender part 參數說明 Sender part 參數說明 參數 功能說明 Tf 紀錄 sender 對 forwarder 的信賴值 α Forwarder 幫忙傳送獲得的獎勵值 p Forwarder 拒絕傳送受到的懲罰值
舉例來說 ,若 α 值設定為 10%,且此時 Sender 對 Forwarder 的信賴值 為 50%。若 Forwarder
幫忙此次傳送,傳送後,Sender 對於 Forwarder 的信賴度將增加為 60%。
圖 3-3 Sender part trust design
23
一個節點的信賴度為 100%,則表示完全信任此節點。
Forwarder part:
當 Forwarder Node 收到傳送要求時,首先會去檢查要求者的信賴度,我們設計了一個門檻值 (threshold),由 Forwarder 的負載量(SL)當作門檻。Forwarder 端的流程圖可表示如下:
圖 3-4 Forwarder part flowchart.
如圖 3-4,當 Forwarder Node 收到傳輸要求時,會設定一個傳送門檻(threshold),並檢查 Sender 的信賴度與其給予的利益值是否有超過自身的門檻。若是沒有,則 Forwarder 判斷此次
傳送是無利可圖的(因為設定節點天性自私),將會把傳送要求 drop 掉;反之,Forwarder 會把 packet 儲存在 waiting queue 內,根據 Delay aware utility allocation 的方法計算封包的利益值並
將 queue 內部重新排列,由利益值最大的封包首先傳送。
24
Forwarder Forward , if ( ) >= threshold Drop , otherwise.
Forwarder 的策略單純分為傳送與丟棄封包兩種。 Ti 表示 Forwarder 對 Sender node
的信賴度,儲存在 Forwarder 自身的 trust table 內;threshold 為 forwarder 設定的門檻值,在我 們的實驗中以信賴值必須超過 50%做為門檻,只有在對 sender 的信賴值超過自身門檻(50)時, Forwarder 判斷此次傳送有利可圖,才會幫忙傳送封包。 表 3-2 Forwarder part 參數說明 Forwarder part 參數說明 參數 功能說明 Ti 紀錄 forwarder 對 sender 的信賴值 threshold Forwarder 幫忙傳送需要的門檻值
在 DARGT phase 2 的 forwarding game 中,根據 Sender 與 Forwarder 兩者角色扮演的不同, 會有不一樣的 trust design 與策略。而無線環境中節點的角色是不斷變化的,節點可依據當前 自身扮演的腳色來決定該採取何種策略,最終達到以信賴值互換鼓勵自私節點幫忙傳送的目 的。
25 3.5 DARGT 的優缺點總結
Phase1: Route discovery:
優點 1. 考慮多項影響延遲的要素如路徑的 delay、節點的 loading 。 2. 路徑隨著網路拓樸變化及時調整、更合理且選擇方式多元。 3. 可有效提高資料傳輸的可靠度並降低延遲。 缺點 1. 須要獲取多項參數以進行路徑 cost 計算,需要的計算複雜。 2. 關鍵資訊遺失(drop)易使判斷不公正。 3. 路徑上節點必須願意合作。 4. 低延遲的路徑可能須經過較長的 hop 數,若在高移動速度的環境下,必須隨時注意路徑 節點是否仍在路由範圍內。
Phase2: Forwarding game:
優點 1. 以賽局理論模擬實際環境中可能存在的自私節點問題。 2. 信賴值的設計可以客觀的判斷自私節點。 3. 藉由適當的獎懲機制促使節點合作。 4. 適當的運用傳輸賽局可增加網路可靠度並減少傳輸延遲。 缺點 1. 選擇的路徑並不是最低延遲路徑,而是高信賴度路徑。 2. 在環境中自私節點比例過高的情況下,會因為處罰機制拒絕幫忙傳送,導致可選路徑 數減少。 3. 不適合應用在節點密度稀疏情況下。
26
第四章 DARGT 之系統實作
本研究利用 NS2 網路模擬器進行效能評估,因此,我們將論文第三章所提出的方法實作 到 NS2 中進行模擬,以取得模擬數據來進行比較。在 NS2 中,我們選擇以修改 AODV routing 程式碼的方法,在 AODV 的基礎架構中加入 DARGT phase 1 的最短延遲路徑選擇要素、並新 增信賴值設定以及加入自私節點干擾的因素。在本章節中,我們將詳細介紹 DARGT 在 NS2 中新增及修改了哪些模組,才得以實現最短延遲路由路徑選擇以及如何設定環境中的自私節點。 在下面的小節中,將會描述如何利用 NS2 所提供的模組來實作出 Delay-Aware Routing based on Game Theory 方法。
4.1 NS2 模組介紹
介紹 NS2 網路模擬器的架構與運作原理。 4.2 AODV 函數說明
介紹 AODV 中主要函數的運作與 DARGT 所修改點 4.3 DARGT route discovery 實作
介紹如何實作 DARGT phase 1 中低延遲路徑搜尋。 4.4 DARGT forwarding game 實作
27 4.1 NS2 模組介紹
圖 4-1:NS2 模組架構圖
Network Simulator 2 是一種以 C++及 OTcl 語言所撰寫的非連續事件引發(discrete-event
driven)及物件導向(object oriented)的網路模擬器。NS-2 提供了一個整合性的環境,實現在單一
模擬器中提供多種不同層次的細部模擬。
如圖 4-1 表示,NS2 中主要分成四個階層: application layer (AGT)、routing layer (RTR)、 MAC layer (MAC)及 PHY layer (PHY) 。Application layer 負責處理應用層的要求,如 TCP 及
UBP 等等,都被 NS2 歸類在 application layer 上的應用;routing layer 提供了不同的 routing
protocol,例如傳統的 AODV、DSR、DSDV 等等路由協定;在 MAC layer 中,NS2 提供了多
種不同的模組例如 802.11 系列的 802.11b、802.11p 等等,能讓使用者能根據不同的實驗需要 來做應用。在 PHY layer 中,NS2 提供了基礎的有線及無線模組 wireless-phy。由於 NS2 於各 個階層只提供了最基本的模組,若使用者想要在 NS2 中實作自身的方法,那麼就必須針對各 個階層的協定進行修改與新增。由於本論文所提出的 DARGT 方法,屬於 NS2 中的 RTR 層協 定,因此,我們以 NS2 內同階層所提供的 AODV protocol 為基礎來進行修改,以實作出
28
DARGT。
NS2 中經由 agent 處理 packet 的各種要求,封包由 agent 發出並於 agent 接收,agent 可視
為封包的起始點與終點。我們可以自由在 agent 中撰寫程式,設定封包的傳送類型與接收條件 並處理接收到的封包。簡單來說,我們可以將所提出的方法,經由程式碼撰寫於 agent 上,並 利用 TCL 腳本程式來設置模擬環境,並將模擬環境中的節點掛載上我們所撰寫的 agent,就能 順利在 NS2 中進行模擬實驗。 在我們的實驗中,AODV 已經是一個完整且可供節點掛載的 agent,我們不需要從頭去撰 寫一個全新的 agent,只需修改 AODV 內部架構,藉由改變路由路徑判斷依據以及新增各種需 要的函數,來實作出 DARGT phase 1 中提出的最低延遲路徑判斷機制,並進一步新增節點間 信賴值設定,來完成 DARGT phase 2 提出的傳輸賽局(forwarding game)。
29 4.2 AODV 函數說明
由於 DARGT 的方法以 AODV 為基礎進行修改,所以必須要先了解 AODV 各個部位是如何運 作。
圖 4-2:Packet Reception Routines
圖 4-2 為 AODV routing protocol 的基本架構,表示了 AODV 收到封包後的運作流程。首 先,當 AODV 接收到封包時,會經由 AODV::recv() 函數來做處理,第一步會判斷接收到的封 包 Type 是不是 AODV 格式。 001: if(ch->ptype() == PT_AODV) { 002: ih->ttl_ -= 1; 003: recvAODV(p); 004: return; 005: }else if(ch->ptype()==PT_CBR){ 006: recvCBR(p);
30 007: } 若收到 ptype()為 AODV 的封包,表示此封包內含路由資訊,節點會把封包接收進來並交 由 recvAODV()函數去做解析,依據封包內容不同,可能會送給 recvHello()、recvError()、 recvRequest()以及 recvReply()等四個不同函數處理。 recvHello():
若收到的封包內含 Hello message,表示有節點在進行鄰居節點搜尋,節點將會把發送 Hello message 的節點加入鄰居列表;若此節點已經存在於列表內,則更新其節點資訊。 recvError(): 此封包代表路由出現錯誤,可能是路徑中節點移動或是已經離開傳輸範圍,導致路由路徑 中斷。此時節點會廣播 recvError 封包進行處理,清除受到影響的路由表,並丟棄所有受 影響的封包,若是無法到達的節點存在於鄰居列表內,會將其移除並更新鄰居列表。最後 節點會依此反向路徑廣播錯誤訊息給路徑上的所有節點,讓它們把將此無法到達的節點從 路由表上移除,以達到維護路由路徑的功用。 recvRequest():
此函數與 recvReply()並列 AODV routing 最重要的兩個函數,內含關鍵的 rt_update 路由路 徑選擇,這個部份會在 4.2.2 DARGT 修改的章節談及。當節點收到 recvRequest()要求時, 表示環境中有節點想要發送封包,正在建立路由請求別人幫忙傳送。而收到 Request 的節 點,首先會檢查這個要求是不是自身發出的,如果是,則將要求封包丟棄;若不是自身發 出的封包,則會建立一條到達發送端節點的反向路由,若是反向路由已經存在,則會檢查 序列碼,判斷路由是否需要更新(更新反向路由這個動作為 rt_update 函數進行管轄)。 當反向路由建立後,會依照下列三種不同的情況進行處理: 1. 收到 request 的節點自身即為目的節點,會調用 sendRelply()函數往反向路由發送訊息
31
表示已經成功收到封包。
2. 若是節點不是目的地節點,此時會檢查自身是否有到達目的地節點的路由表,若是知
道到達目的地節點的路由(I am not the destination, but I may have a fresh enough route.), 會調用 sendRelply()函數
001: sendReply( rq->rq_src,
002: rt->rt_hops + 1,
003: rq->rq_dst,
004: rt->rt_seqno,
005: (u_int32_t) (rt->rt_expire - CURRENT_TIME),
006: rq->rq_timestamp,
007: CURRENT_TIME,
008: rt->rt_dst_timestamp,
009: rt->rt_delaytime );
010: // Insert nexthops to RREQ source and RREQ destination in the
011: // precursor lists of destination and source respectively
012: rt->pc_insert(rt0->rt_nexthop); // nexthop to RREQ source
013: rt0->pc_insert(rt->rt_nexthop); // nexthop to RREQ destination
函數中會將 hopcount 數加 1,並且分別在正向路由 (rt) 與反向路由 (rt0) 插入到達來 源節點以及目的地節點的下一跳位址。
3. 如果節點不是目的節點,也沒有到達目的節點的路由,就沒有辦法直接回應 request,
只好將封包 forward 出去(Can't reply. So forward the Route Request)。此時會將 hopcount 數加 1,並調用 forward()函數來發送封包
32 recvReply(): 節點收到回應封包時會調用 recvReply()來處理,recvReply()內同樣有重要的 rt_update()函 數,只是與 recvRequest()內部不同,recvReply()內的 rt_update()處理正向路由(rt)的更新, 而 recvRequest()內部則用以更新反向路由(rt0)。當節點收到 reply 時,會先檢查到達這個 發送 reply 的節點的正向路由是否存在,若不存在則新建立一條;若是存在,則進一步檢 查是否需要更新(rt_update())。之後,根據封包內含的訊息,同樣有三種情況: 1. 節點自身為來源節點(source node),表示已經成功建立了到達目的節點的路由,此時
會更新 route discovery 的延遲時間,並將所有緩存在 queue 中的封包送往目的節點
2. 若此 reply 封包並不是給我的,則將封包 forward 下去。這邊是一個關鍵點,此時節 點會一併將自身資訊夾帶在 rrep 封包內廣播出去,下一個接收到的節點就可以知道 上一跳節點的資訊。 001: rp->rp_hop_count += 1; 002: rp->rp_src = index; 003: forward(rt0, p, NO_DELAY);
上列程式碼可看到 rp->rp_hop_count 表示此 rrep 封包總經過的 hop 數,經過此次轉送 所以要加 1。之後將節點自身的編號(index)存入 rp->rp_src 內,當下一跳節點接收到 此 rrep 封包後,就可以得知發送這個封包的節點,也就是它的上一跳節點的編號。 最後將 reply 封包 forward 出去,直到 source 節點收到 rrep 封包。
3. 第三種情況,則是節點自身不是目的節點,同時也不知道該如何將封包 forward 出去,
此時只好將封包丟棄(drop)。這種行動易造成路由的不連續,使整體網路的可靠度下 降。
33
以上為收到的 ptype 為 AODV 的格式,若收到 ptype 不是 AODV 的封包,表示此封包可 能是一般的資料封包(CBR),節點會先檢查自身有沒有到達封包目的地節點的路由,再將封包 forward 到目的地。
而此時使用的兩個函數為 rt_reslove()以及 forward()。rt_reslove()進行路由解析,首先會檢 查路由表中是否存在目的節點,若是存在則直接調用 forward()來發送封包;若是路由正在修復 中,則暫時緩存封包;若是路由不存在,則丟棄封包,並發送 sendError 訊息。
4.3 DARGT route discovery 實作
本節將介紹如何修改 NS2 network layer 中提供的 AODV routing protocol,以實作出符合 DARGT phase 1 所提出的最低延遲路由路徑選擇。本實驗中必須修改 aodv.cc、aodv.h、
aodv_rtable.cc、aodv_rtable.h 以及 aodv_packet.h 的內容。
在原本的 aodv.cc 檔案中:
– RREQ 封包內的 rp_dst、rq_dst 參數指的都是目的地節點。
– Rp_timestamp = rq_timestamp = 都是 sender 送出封包當下的時間點 。
以上兩點都不能作為時間依據直接使用來計算路徑的延遲時間,我們的目的是找出整條路徑的 delay time,為此我們需要的兩個值為:
1. RREP 封包從 dst 節點回傳時的時間點。
2. Sender 收到 RREP 的時間點。
以此兩點做計算才能求出一條路徑的總延遲時間,我們必須在 RREP 封包內部新增參數用以記 錄各個 timestamp。而 aodv 原先是以回傳路徑的 hop-count 數為路由更新依據,我們計算 RREP 封包傳回時內部的 rp->rp-hopcount,以此為基準設計出合理的 timestamp 判斷機制。
34 • 節點 A 收到 RREP 時 ,第一個動作為檢查自身有沒有到達目的地 D(dst)的路由。 – 若沒有, 則新增 。 – 若有,則比較新舊路由長短 。 • 節點 A 收到 RREP 可分 2 種情況 1. 節點 A 直接收到目的地節點 D 送出的 RREP 2. 節點 A 經由 Forwarder 收到 D 送出的 RREP • 圖 4-3:hop-count 運算流程 在圖 4-3 中,上方的路徑表示第一種情況,hop-count 數固定為 1;下方路徑表示第二種情況: 圖中虛線為原本記載在點 A 的路由表內到達點 D 的舊路徑,舊的路徑將從點 A 到達點 D 的 HOP 數存在 rt->rt-hops 參數中。我們可以看到點 F 也有自己的 rt->rt-hops 參數,同樣儲存了從
點 F 到達點 D 的舊路徑。在 recvReply()內的 rt_update() 作用為比較 hop 數大小,就是比較虛 線(rt->rt-hops)跟實線 rp->rp-hopcount=1+(rt->rt-hops)兩段,AODV 會比較兩者的長短,並選擇 較短的那一段路徑來更新路由表。 D D rp->rp-hopcount = 1 F A經由F到達點D的HOP數存為 rp->rp-hopcount = 1 + rt->rt_hops 收到rrep 收到rrep A A
35
了解 hop-count 的運作原理後,我們可依據本論文第 3 章所提到的路徑 cost 計算概念,提出一 個全新的參數為 Total_cost 來取代 hop-count 成為新的判斷基礎,Total_cost 暫定為 :
Total_cost = U1*(hop_count) + U2*(delay)*1000
其中 U1、U2表示兩個可變動的參數,我們可根據實驗需要的比重進行調整。以 total cost 取代
hop-count,從此之後根據 Total_cost 值大小決定來是否要更新路徑。 以下表格是我所修改的 RREQ 與 RREP 結構: 表 4-1 RREP 封包結構 RREQ(sendRequst,recvRequest)的封包內容 欄位 功能說明 rq_src 紀錄 RREQ 發送者的 IP rq_timestamp 紀錄 RREQ 送出時間點 表 4-2 RREQ 封包結構 RREP(sendReply,recvReply)的封包內容 欄位 功能說明 rp_timestamp 紀錄 RREQ 送出時間點 rp_current_timestamp 紀錄現在時間點 rp_dst_timestamp 紀錄 RREP 送出時間點 rp_delay 紀錄路徑延遲時間
36 表 4-3 rt_update()函數結構 rt_update()的函數內容 欄位 功能說明 metric 路由更新標準 hop 路徑跳數 delay 路徑延遲 dsttimestamp RREP 送出時間點 nexthop 下一跳路徑 藉由修改結構可以使封包夾帶更多資訊,允許我們計算 cost 值。根據以上資料結構我們可以 開始將 AODV routing protocol 從 hop-count based 修改成 delay-based。
Aodv.cc:
Aodv.cc 檔裡面包含了整個 aodv 執行所需要的關鍵函數。
主要修改部分: • 修改 rt_update()
AODV::rt_update() 應用於節點收到 Request 以及 Reply 時,用於決定是否更新路由。
001: AODV::rt_update(aodv_rt_entry *rt, u_int32_t seqnum, double metric,u_int16_t
hop,double delay,double dsttimestamp,nsaddr_t nexthop, double expire_time) {
002: rt->rt_seqno = seqnum;
003: rt->rt_cost = metric;
37 005: rt->rt_delaytime = delay; 006: rt->rt_dst_timestamp = dsttimestamp; 007: rt->rt_flags = RTF_UP; 008: rt->rt_nexthop = nexthop; 009: rt->rt_expire = expire_time; 010: } 在第 3 行我們將 rt->rt_cost 修改為主要路徑更新依據,並在 rt_update()內新增了 2 個參數: rt->rt_delaytime 以及 rt->rt_dst_timestamp (5、6 行)。 rt_delaytime 紀錄了整段路徑的路由
延遲時間,rt_dst_timestamp 內則紀錄了封包從 destination 端送出的時間點。
• 修改 sendReply()與 recvReply() 以計算路徑的 delay time:
圖 4-4 rp_delay 設計
我們以圖 4-3 中 AODV rrep 回傳時 hop count 數的運作流程作為借鑑,設計了一個新 參數 rp_delay,用來記錄整段路徑的傳輸延遲。圖 4-4 中可以看到,Destination 節點發送 reply 封包,中間的 forwarder node 收到後首先會呼叫 recvRequest()函數,判斷自身不是 reply
封包的目的地後,會應用 sendReply()將封包再發送出去,並將重送封包的時間點(time stamp)存入 rp_current_timestamp 內。最後目的節點收到封包後,若要計算整段路徑的延遲 時間,即為( CURRENT_TIME-rp->rp_current_timestamp ) + rp_delay 兩段路徑的總和。 完成這個架構必須修改:
D
Rp_delay
(CURRENT_TIME –rp->rp_current_timestamp)
送出封包
sendReply()
接收封包
recvReply()
38 • 在 SendReply() 函數下新增 3 個參數 – Rp->rp_current_timestamp: 紀錄封包發送當下的時間。 – Rp->rp_dst_timestamp :紀錄 dst 點發送封包的時間 。 – Rp->rp_delaytime : 紀錄從送出到接收為止路徑上的傳輸時間 。 – 修改建構子,使能代入 currenttimestamp、dsttimestamp 以及 rpdelay 三個 新參數。
001: Void AODV::sendReply(nsaddr_t ipdst, u_int32_t hop_count, nsaddr_t rpdst,u_int32_t
rpseq, u_int32_t lifetime, double timestamp,
002: double currenttimestamp , 003: double dsttimestamp , 004: double rpdelay ) { } 如此一來,當節點收到不是給自身的 RREP 封包(recvRequest()) ,要將封包轉送出去 時就可以呼叫 sendRelpy(),同時將現在時間點資訊(current_timestamp)一併夾帶給下一個 收到 RREP 的節點。
001: // I am not the destination, but I may have a fresh enough route.
002: sendReply (rq->rq_src,
003: rt->rt_hops + 1,
004: rq->rq_dst,
005: rt->rt_seqno,
006: (u_int32_t) (rt->rt_expire - CURRENT_TIME),
007: rq->rq_timestamp,
39 009: rt->rt_dst_timestamp, 010: rt->rt_delaytime );
• 在 recvReply()下新增
– rreplatency=(CURRENT_TIME-rp->rp_current_timestamp)+rp->rp_delay;
CURRENT_TIME 表示現在時間點,節點收到 RREP 時,可以計算出自身到達 RREP 發送
節點這段路徑的延遲時間,並將之存入參數 rreplatency。若自身不是 RREP 封包的目的地, 則將 RREP 重送出去: 把 rreplatency 存入 rp->rp_delay,把現在時間點 CURRENT_TIME 存入 rp->rp_current_timestamp,以供下一個收到 RREP 封包的節點計算。 001: rp->rp_delay = rreplatency; 002: rp->rp_current_timestamp = CURRENT_TIME; 003: rp->rp_src = index; 004: forward(rt0, p, NO_DELAY); • 判斷路由更新:
當我們能計算出路徑的 delay 與 hop count 之後,可使用這兩個參數計算出路徑的 total_cost。
判斷路由是否需要更新時,經由比較新舊路徑的 sequence number ,與新舊路徑的 total cost: 新路徑 (total_cost)、路由表中的舊路徑 cost(rt->rt_cost),如果新路徑的 total cost
值比舊路徑低,表示新路徑上的傳輸延遲可能較小,於是呼叫 rt_update()將路由表中 紀錄的路徑更新成新路徑:
40
002: ((rt->rt_seqno == rp->rp_dst_seqno) &&
003: (rt->rt_cost > total_cost )) ) { // better route
004: rt_update (rt, rp->rp_dst_seqno, 005: total_cost, 006: rp->rp_hop_count, 007: rreplatency, 008: r p->rp_dst_timestamp, 009: rp->rp_src, 010: CURRENT_TIME + rp->rp_lifetime); Aodv.h aodv.h 這個檔案中,定義了各種有關傳送及接收的處理函式。由於我們修改了許多函式的 架構,在這邊也必須要重新定義以符合對應的函式。 主要修改點:
• rt_update(): 新增 metric 判斷 delay 與 timestamp。
• forward(): 新增夾帶 delay 資訊。
• sendReply(): 新增夾帶 currenttimestamp、dsttimestamp 以及 rpdelay 等三項資訊。
• 由於 recv 系列函數都是讀入 packet*p,所以就算我們在.cc 檔中修改了 recv()函數,
aodv.h 也不需要變動。
以上是完成 DARGT phase 1 所需要做的修改,但 DARGT 除了 delay 之外還可考慮其他因 素如 system loading 等,為此我們需要將資料封包與 aodv 封包做區隔,並建立 timer 來計 算節點平均時間內會收到多少封包;此外我們必須開始設計 DARGT phase 2: forwarding game 所需要的參數。
41 • 新增 recvCBR(Packet *p)函數:用來區別資料封包與路由封包的差異,並進行處理。 • 新增計時器 thtimer: 作用於每秒呼叫一次,計算節點每秒平均負載量。 • 新增函數 setThroughtput()與 startTimer(): 配合計時器計算節點每秒平均負載量。 • 新增參數 Arraysize: 用途是從 tcl 檔中讀入設定的陣列大小,例如讀入 20 個節點,會 產生 20x20 的二維陣列,在 DARGT phase 2 會使用到。 Aodv_packet.h: 這個檔案中定義了函數中包含的參數,如果我們在 aodv.cc 及 aodv.h 檔中修改/新增了參數, 那在 packet.h 檔中也必須要作出相關的對應。
舉例而言,我們若在 aodv.h 內定義 sendReply()內新增夾帶 currenttimestamp、dsttimestamp 以及 rpdelay 等三項參數,那在 aodv_packet.h 檔內的 struct hdr_aodv_reply {}中就必須加入 三項對應的參數以符合 aodv.h 的定義 001: struct hdr_aodv_reply { 002: … 003: double rp_current_timestamp; 004: double rp_dst_timestamp; 005: double rp_delay; }
以上幾點為 DARGT phase1: route discovery 主要修改的部分,接下來我們要進入到 DARGT phase 2: forwarding game 的部分。
4.4 DARGT forwarding game 實作
本節介紹應用賽局理論所提出之傳輸賽局(forwarding game)的設計與實作方法。
傳輸賽局建立在節點之間信賴值交換的基礎上,為此我們必須先設法建立出各節點的信賴關係 表,才能經由信賴值交換來推動傳輸賽局。
42 4.4.1 建立 Trust table 本論文第 3 章圖 3-2 可以看到,節點對於鄰近節點都會有不同的信賴值,但不會自己對自 己有信賴值,因此我們建立一個二維陣列來儲存節點間的信賴關係。 表 4-4 trust table 內容 Trust table 的內容 欄位 功能說明 trustT[n][n] 二維陣列紀錄信賴值 Index 表示節點自身 ID rq->rq_src 紀錄請求者 ID trustT[index][rq->rq_src] 紀錄自身對請求者的信賴值 以 3 個節點為例:首先從 TCL 檔案中讀入節點個數,並假設節點對於其他節點的初始信 賴值為 50%,我們可以建立起 3x3 的二維陣列。 N1 N2 N3 N1 100 60 60 N2 60 100 60 N3 60 60 100