李陽
摘 要 Ad Hoc 網(wǎng)絡(luò)(Mobile Ad Hoc Network,MANET)沒有任何的固定基礎(chǔ)設(shè)施,主機通過彼此無線電波通信,在軍事通信、野外通信、應(yīng)急通信等領(lǐng)域有著廣泛的應(yīng)用前景。
本文主要介紹用于Ad Hoc網(wǎng)絡(luò)的AODV路由協(xié)議的原理,利用NS2構(gòu)建一個網(wǎng)絡(luò)模擬場景,對AODV協(xié)議的性能進行測試、分析。
從仿真來看,在相同的移動速度下,DSR和AODV協(xié)議的丟包率明顯低于DSDV協(xié)議,特別是在網(wǎng)絡(luò)拓?fù)漭^穩(wěn)定時,DSR和AODV的丟包率相當(dāng)?shù)停ń咏?%),而DSDV的丟包率最高。隨著移動速度的增加,各路由協(xié)議的端到端平均時延都在增加,其中DSR的增加幅度最大;在相同速度下,3個協(xié)議中DSDV具有最小的端到端時延,而DSR和AODV的端到端平均延遲較大。由于Ad Hoc網(wǎng)絡(luò)的移動性使得AODV的性能有所下降,但總體來說,路由協(xié)議的總體性能很好,即使在節(jié)點的移動的情況下,網(wǎng)絡(luò)分組傳輸?shù)膩G包率、平均的端對端延時都保持在較好的水平上。事實上,算法的網(wǎng)絡(luò)性能隨著網(wǎng)絡(luò)參數(shù)的設(shè)計是不同的,受多方因素的影響,它們之間的關(guān)系還有待進一步研究。在具體規(guī)劃網(wǎng)絡(luò)結(jié)構(gòu)時,應(yīng)該對AODV參數(shù)作具體的設(shè)計,以確保網(wǎng)絡(luò)性能的最優(yōu)。
關(guān)鍵詞 Ad Hoc 路由協(xié)議 仿真 AODV
1 課題背景及開展研究的意義
Ad hoc網(wǎng)絡(luò)是一種自組織的無線多跳網(wǎng),它不需要固定的基礎(chǔ)設(shè)施作支撐。路由協(xié)議是Ad hoc網(wǎng)絡(luò)協(xié)議棧的重要組成部分,在無線環(huán)境下Ad hoc網(wǎng)絡(luò)的移動特性對路由協(xié)議提出了更高的要求。
(1)網(wǎng)絡(luò)中所有節(jié)點都是移動的,并且都能以任意方式動態(tài)地保持與其他節(jié)點的聯(lián)系,網(wǎng)絡(luò)節(jié)點可以隨處移動,也可以隨時開機和關(guān)機,這些都會使網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)隨時發(fā)生變化。
(2)兩個無法直接進行通信的終端用戶可以借助其他節(jié)點進行分組轉(zhuǎn)發(fā),每個移動節(jié)點兼?zhèn)渎酚善骱椭鳈C兩種功能。
(3)Ad hoc網(wǎng)絡(luò)通過分組轉(zhuǎn)發(fā)完成數(shù)據(jù)的交換,需要路由協(xié)議進行分組轉(zhuǎn)發(fā)決策。無線信道變化的不規(guī)則性和節(jié)點的移動、加入、退出都會引起網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的動態(tài)變化。從而路由協(xié)議完成監(jiān)控網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的變化、路由信息的交換、尋找目的節(jié)點、產(chǎn)生、維護并優(yōu)化路由,保持網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)臅惩ā?/p>
Ad hoc網(wǎng)絡(luò)的路由協(xié)議大致可以分為先驗式(Proactive)路由協(xié)議(如:DSDV)、反應(yīng)式(Reactive)路由協(xié)議(如:DSR/ /TORA/ARP)以及混合式路由協(xié)議(如:AODV)。
先驗式路由協(xié)議又稱為表驅(qū)動路由協(xié)議(Table-driven),在這種路由協(xié)議中,每個節(jié)點維護一張包含到達其它節(jié)點的路由信息的路由表。當(dāng)檢測到網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)發(fā)生變化時,節(jié)點在網(wǎng)絡(luò)中發(fā)送更新消息,收到更新消息的節(jié)點將更新自己的路由表,以維護一致的、及時的、準(zhǔn)確的路由信息,所以路由表可以準(zhǔn)確地反映網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)。源節(jié)點一旦要發(fā)送報文,可以立即獲得到達目的節(jié)點的路由。因此這種路由協(xié)議的時延較小,但是路由協(xié)議的開銷較大。
反應(yīng)式路由協(xié)議,又稱為按需路由協(xié)議(On-Demand Routing),是一種當(dāng)需要發(fā)送數(shù)據(jù)時才查找路由的路由算法。在這種路由協(xié)議中,節(jié)點不需要維護及時準(zhǔn)確的路由信息,當(dāng)向目的節(jié)點發(fā)送報文時,源節(jié)點才在網(wǎng)絡(luò)中發(fā)起路由查找過程,找到相應(yīng)的路由。與先驗式路由協(xié)議相比,反應(yīng)式路由協(xié)議的開銷較小,但是數(shù)據(jù)報傳送的時延較大。
在Ad hoc網(wǎng)絡(luò)中單純采用先驗式或反應(yīng)式路由協(xié)議都不能完全解決路由問題。由此可見,應(yīng)用結(jié)合先驗式和反應(yīng)式路由協(xié)議優(yōu)點的混合式路由協(xié)議是一種較好的折衷方案。下面對混合式的路由協(xié)議AODV(Ad hoc On demand Distance Vector Routing)進行具體的研究。
總之,AODV協(xié)議是一個比較好的路由協(xié)議,它能夠?qū)崿F(xiàn)路由的所用基本功能。同時AODV能夠應(yīng)對Ad hoc網(wǎng)絡(luò)的節(jié)點移動的要求,在設(shè)定的路由延遲的情況下,表現(xiàn)出良好的性能。但由于未能考慮業(yè)務(wù)的QoS需求,在對傳輸質(zhì)量要求較高的網(wǎng)絡(luò)中,顯得力不從心,尚待進一步完善。
通過對AODV路由協(xié)議的證明,我們可以得到衡量網(wǎng)絡(luò)路由協(xié)議的標(biāo)準(zhǔn)。只有在理論分析和網(wǎng)絡(luò)仿真的基礎(chǔ)上對原有協(xié)議進行分析,才能改進原有的路由協(xié)議,不斷提出有利于網(wǎng)絡(luò)的性能提高的新的策略。
2 研究方法、內(nèi)容 及預(yù)期目的
2.1 研究方法
在硬件條件不具備的情況下進行Ad Hoc網(wǎng)絡(luò)AODV路由協(xié)議的性能分析,要花費巨資去建立實際系統(tǒng),這是不現(xiàn)實的。因此,我們采用網(wǎng)絡(luò)模擬(也稱網(wǎng)絡(luò)仿真)軟件NS-2進行模擬分析。
NS-2是指 Network Simulator version 2,NS(Network Simulator) 是一種針對網(wǎng)絡(luò)技術(shù)的源代碼公開的、免費的軟件模擬平臺,研究人員使用它可以很容易的進行網(wǎng)絡(luò)技術(shù)的開發(fā),而且發(fā)展到今天,它所包含的模塊已經(jīng)非常豐富,幾乎涉及到了網(wǎng)絡(luò)技術(shù)的所有方面。所以,NS成了目前學(xué)術(shù)界廣泛使用的一種網(wǎng)絡(luò)模擬軟件。在每年國內(nèi)外發(fā)表的有關(guān)網(wǎng)絡(luò)技術(shù)的學(xué)術(shù)論文中,利用NS給出模擬結(jié)果的文章最多,通過這種方法得出的研究結(jié)果也是被學(xué)術(shù)界所普遍認(rèn)可的,此外,NS也可作為一種輔助教學(xué)的工具,已被廣泛應(yīng)用在了網(wǎng)絡(luò)技術(shù)的教學(xué)方面。因此,目前在學(xué)術(shù)界和教育界,有大量的人正在使用或試圖使用NS。
學(xué)習(xí)用于Ad Hoc網(wǎng)絡(luò)的AODV路由協(xié)議的原理,利用NS2構(gòu)建一個網(wǎng)絡(luò)模擬場景,對AODV協(xié)議的性能進行測試、分析,并用NAM對網(wǎng)絡(luò)運行情況進行動畫演示。
2.2 研究內(nèi)容
(1)在NS2中用setdest命令隨機生成一個無線網(wǎng)絡(luò)節(jié)點的運動場景,在500×500的區(qū)域中隨機分布30個節(jié)點,每個節(jié)點隨機選擇運動方向和速度,最大運動速度為20m/s,到達目的地后停留10s繼續(xù)運動,模擬時間是100s;
(2)對移動節(jié)點中各網(wǎng)絡(luò)構(gòu)件的主要類型參數(shù)進行設(shè)置:無線信號傳輸模式為TwoRayGround,MAC層協(xié)議類型為802.11,接口隊列采用DropTail機制,采用全向天線;
(3)用cbrgen命令產(chǎn)生CBR業(yè)務(wù),最大連接數(shù)是20,速率是每秒2個數(shù)據(jù)包,每個包的大小為512字節(jié);
(4)用Gawk分析trace文件,并以端到端的延時和丟包率為指標(biāo)評估AODV協(xié)議的性能。
端到端的延時定義為數(shù)據(jù)包接收過程的總延時與接收的數(shù)據(jù)包數(shù)目之比。
丟包率定義為丟失的數(shù)據(jù)包與發(fā)送的數(shù)據(jù)包之比。
3 仿真內(nèi)容及結(jié)果分析
3.1 NS2仿真平臺的建立
NS2是一種事先驅(qū)動的面向?qū)ο蟮木W(wǎng)絡(luò)仿真工具,它為用戶提供了擴展、配置和編程的工具。它所用的仿真語言是Tool Command Language(TCL)語言的一個擴展。仿真通過TCL語言進行定義,利用ns命令編寫腳本來定義網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、配置網(wǎng)絡(luò)信息流量的產(chǎn)生和接收以及收集統(tǒng)計數(shù)據(jù)。NS2軟件配有仿真過程動態(tài)觀察器,可以在仿真運行結(jié)束后,動態(tài)察看仿真的運行過程,觀察跟蹤數(shù)據(jù)。軟件還有圖形顯示器,顯示從仿真中得到的結(jié)果數(shù)據(jù),直觀而且清晰。
NS2是一個用C++編寫的面向?qū)ο蠓抡嫫鳎那岸耸且粋€OTCL解釋器。仿真器內(nèi)核定義了有層次結(jié)構(gòu)的多種類,稱為編譯類結(jié)構(gòu)。在OTCL解釋器中有相似的類結(jié)構(gòu),稱為解釋類結(jié)構(gòu)。從用戶的角度來看,兩種結(jié)構(gòu)的類之間有一一對應(yīng)的關(guān)系。用戶通過解釋器創(chuàng)立新的仿真對象之后,解釋器對它進行初始化,與編譯類結(jié)構(gòu)中相應(yīng)的對象建立映射。
NS2仿真器封裝了許多功能模塊,最基本的是節(jié)點、鏈路、代理、數(shù)據(jù)包格式等等,下面分別來介紹一下各個模塊。
(1)事件調(diào)度器:目前NS2提供了四種具有不同數(shù)據(jù)結(jié)構(gòu)的調(diào)度器,分別是鏈表、堆、日歷表和實時調(diào)度器。
(2)節(jié)點(node):是由TclObject對象組成的復(fù)合組件,在NS2中可以表示端節(jié)點和路由器。
(3)鏈路(link):由多個組件復(fù)合而成,用來連接網(wǎng)絡(luò)節(jié)點。所有的鏈路都是以隊列的形式來管理分組的到達、離開和丟棄。
(4)代理(agent):負(fù)責(zé)網(wǎng)絡(luò)層分組的產(chǎn)生和接收,也可以用在各個層次的協(xié)議實現(xiàn)中。每個agent連接到一個網(wǎng)絡(luò)節(jié)點上,由該節(jié)點給它分配一個端口號。
(5)包(packet):由頭部和數(shù)據(jù)兩部分組成。一般情況下,packet只有頭部、沒有數(shù)據(jù)部分。
NS2軟件是一個軟件包,包括Tcl/Tk,OTCL,NS,Tclcl。其中Tcl是一個開放腳本語言;Tk是Tcl的圖形界面開發(fā)工具;OTCL是基于Tcl/Tk的面向?qū)ο髷U展,有自己的類層次結(jié)構(gòu);NS2為本軟件包的核心,是面向?qū)ο蟮姆抡嫫?,用C++編寫,以O(shè)TCL解釋器作為前端;Tclcl則提供NS2和OTCL的接口,使對象和變量出現(xiàn)在兩種語言中。
NS2仿真分兩個層次:一個基于OTCL編程,NS2已有的網(wǎng)絡(luò)仿真元素實現(xiàn)仿真,無需對NS2本身作任何改動,只要編寫Tcl腳本便可;另一個層次是基于C++和OTCL的編程,用戶可以利用OTCL和NS2的接口,編寫C++程序,更新NS2來實現(xiàn)新的功能。
NS2定義了一個.tr格式的文件用于記錄仿真的結(jié)果,通過腳本配置,可以指定文件名并對仿真過程進行跟蹤,通過NS2中xgraph的解釋,此記錄文件可以以圖形的方式顯示仿真結(jié)果。為了使顯示結(jié)果更逼真,NS2提供了一個用于產(chǎn)生動畫效果的可視化工具:nam(NetworkAnimotar)。nam用于有線和無線網(wǎng)絡(luò)的可視化,在nam中,執(zhí)行仿真的人可以控制動畫演示的速度,如正向播放、快速前進、快速后退停止運行等,以監(jiān)視網(wǎng)絡(luò)的行為(如隊列的變化)。
3.2 生成運動場景
我們可以使用setdest來生成運動場景。setdest是CMU大學(xué)在NS中提供無線網(wǎng)模擬模塊時提供的一個工具,可以用來隨機生成無線網(wǎng)所需要的節(jié)點運動場景,即一定數(shù)量的節(jié)點在某個固定大小的矩形區(qū)域中隨機朝某個目的節(jié)點運動,在到達該目的地后做一段時間的停留(也可以不停留)后選擇另一個目的地隨機選擇一個速度繼續(xù)運動。setdest可以指定場景的節(jié)點數(shù),節(jié)點運動區(qū)域的長度和寬度及模擬場景的持續(xù)時間,節(jié)點在運動到一個目的地后停留的時間,節(jié)點隨機運動速度的最大值等。最后還能指定生成場景的輸出文件。使用setdest生成的場景文件,可以在NS控制臺或者運行腳本中使用source命令調(diào)入。
實驗中我們生成的場景是構(gòu)建隨機的節(jié)點運動場景,場景規(guī)模500m×500m,場景包括30個節(jié)點,信源采用CBR方式,在30個節(jié)點中隨機選擇20個節(jié)點,啟動20個cbr數(shù)據(jù)流,每個流每秒鐘產(chǎn)生2個512字節(jié)大小的數(shù)據(jù)包。這里節(jié)點運動的最大速率分別選擇為0,10 m/s ,20m/s,30m/s,40m/s,50m/s,100m/s,200 m/s,其中速度100m/s,200m/s表示整個場景運動很激烈。
對于在NS2中 用setdest命令隨機生成一個無線網(wǎng)絡(luò)節(jié)點的運動場景以及用cbrgen命令產(chǎn)生CBR業(yè)務(wù)。
3.3 生成傳輸負(fù)載
我們可以使用cbrgen來生成傳輸負(fù)載(traffic overland),可以產(chǎn)生TCP流或者CBR流(Constant Bytes Rate Stream)。該工具能夠指定有多少個節(jié)點,這些節(jié)點間的最大連接數(shù),隨機種子數(shù),還可以指定每個連接間的流的負(fù)載量。如果產(chǎn)生的是cbr流,則包長固定為512MByte,rate值指定的是每秒發(fā)送多少個包。
在我的仿真中,是在30個節(jié)點當(dāng)中選擇20對節(jié)點啟動20個cbr數(shù)據(jù)流,每個流每秒鐘產(chǎn)生2個512M字節(jié)大小的數(shù)據(jù)包(ns cbrgen.tcl -type cbr -nn 30 -seed 1 -mc 20 -rate 2.0 >cbr)。
我們實驗中將產(chǎn)生的cbr流文件輸入到文件cbr中去。
3.4 編寫tcl腳本文件
用于仿真的TCL腳本的編寫是仿真中關(guān)鍵的一步。NS2主要通過TCL腳本來實現(xiàn)模擬場景的建立、配置和模擬中運行的程序。只有通過TCL腳本才能創(chuàng)建和管理拓?fù)浣Y(jié)構(gòu),進行事件調(diào)度等。無線網(wǎng)絡(luò)的腳本得編寫,主要包括以下幾個模塊:
隨著移動速度的增加,路由協(xié)議的丟包遞率都呈上升趨勢。這是因為隨著移動速度的增加,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的變化越來越劇烈,網(wǎng)絡(luò)中的無線信道勢必增加了大量的路由更新報文,特別是表驅(qū)動路由協(xié)議DSDV。每一次拓?fù)涞淖兓夹枰侣酚杀碇械膬?nèi)容,而DSR和AODV都是按需路由協(xié)議,只有在要發(fā)送分組時才需要建立路由。因此,按需路由協(xié)議對網(wǎng)絡(luò)拓?fù)涞淖兓拿舾卸纫缺眚?qū)動路由協(xié)議要低得多。
在相同的最大移動速度下,DSR和AODV協(xié)議的丟包率明顯低于DSDV協(xié)議,特別是在網(wǎng)絡(luò)拓?fù)漭^穩(wěn)定時,DSR和AODV的丟包率相當(dāng)?shù)停ń咏?%),而DSDV的丟包率最高。隨著移動速度的增加,各路由協(xié)議的端到端平均時延都在增加,其中DSR的增加幅度最大;在相同最大速度下,3個協(xié)議中DSDV具有最小的端到端時延,而DSR和AODV的端到端平均延遲較大。這是因為在需要發(fā)送數(shù)據(jù)時,DSDV路由協(xié)議通過查找路由表直接獲取路由,因而延遲時間較??;而DSR和AODV是按需路由協(xié)議,它們在需要發(fā)送數(shù)據(jù)時才啟動路由發(fā)現(xiàn)過程,查找可用的路由,因此延遲較大。移動速度的增加導(dǎo)致拓?fù)浣Y(jié)構(gòu)的頻繁變化,從而使得各路由協(xié)議的端到端平均時延也相應(yīng)地增加。
時延結(jié)果與AODV協(xié)議理論上是相符的,AODV協(xié)議采用了路由緩存技術(shù),所以它的時延比DSDV協(xié)議大很多。在場景運動緩慢的情況下,時延幾乎是DSDV協(xié)議的10倍。
另外,由于AODV路由協(xié)議是DSR和DSDV的綜合,因此,在相同條件下AODV的時延較DSR要小得多。
通過對AODV的各個性能的仿真,我們可以看出AODV協(xié)議在不同的場景下保持良好的性能,可見這個協(xié)議的丟包率很低,時延也維持了一個比較平均的水平??梢夾ODV協(xié)議是一個較為穩(wěn)定的,適用于各種網(wǎng)絡(luò)場景的較好的路由協(xié)議。