周少瓊 徐 祎
(解放軍電子工程學(xué)院信息系304教研室 合肥 230037)
移動Ad hoc網(wǎng)絡(luò)(Mobile Ad hoc Network)是由一組移動節(jié)點(diǎn)動態(tài)構(gòu)成的臨時無線網(wǎng)絡(luò),節(jié)點(diǎn)具備動態(tài)搜索、定位和自動恢復(fù)連接等能力,可在沒有固定通信基礎(chǔ)設(shè)施的情況下完成路由、轉(zhuǎn)發(fā)包和服務(wù)發(fā)現(xiàn)等基本網(wǎng)絡(luò)功能。移動Ad hoc網(wǎng)絡(luò)組網(wǎng)靈活,具有移動性和魯棒性等優(yōu)點(diǎn),Ad hoc網(wǎng)絡(luò)最初應(yīng)用于軍事領(lǐng)域,近年來廣泛地應(yīng)用于戰(zhàn)場通信指揮與控制、搶險救災(zāi)、臨時集會、野外施工作業(yè)等緊急和突發(fā)性較強(qiáng)的場合。
目前,針對Ad hoc網(wǎng)絡(luò)進(jìn)行了很多方面的研究,其中大多是比較同一場景下路由性能方面的研究[1~2]?,F(xiàn)在國外對 Ad hoc的研究[3]較廣泛,而國內(nèi)對于Ad hoc網(wǎng)絡(luò)的研究大多還停留在實(shí)驗(yàn)仿真階段。文中研究的場景大小與現(xiàn)實(shí)生活中的一些中小企業(yè)和學(xué)校相符,通過在 NS2平臺上對ADOV協(xié)議進(jìn)行仿真分析,為在此類場所建立Ad hoc網(wǎng)絡(luò)提供用戶數(shù)目設(shè)置依據(jù)。對于Ad hoc網(wǎng)絡(luò)中的各節(jié)點(diǎn),既可作為路由器也可當(dāng)作主機(jī),且可實(shí)現(xiàn)多跳通信,同時節(jié)點(diǎn)具有收發(fā)信號功能。Ad hoc網(wǎng)絡(luò)的這個特點(diǎn)可讓此研究成果應(yīng)用到實(shí)際的場景節(jié)點(diǎn)配置中。假設(shè)在某個場景下,最佳的節(jié)點(diǎn)配置是40個,而實(shí)際此網(wǎng)絡(luò)需要實(shí)現(xiàn)50個節(jié)點(diǎn),從實(shí)際需要出發(fā),設(shè)置10節(jié)點(diǎn)為40個節(jié)點(diǎn)中某些節(jié)點(diǎn)的子節(jié)點(diǎn),即分布幾個小型簇。文章主要通過仿真一個具體場景并構(gòu)建一種模型來介紹設(shè)置節(jié)點(diǎn)數(shù)目的方法。
按需距離矢量路由協(xié)議(AODV,Ad hoc On Demand Distance Vector Routing)是一種基于距離矢量的算法,實(shí)現(xiàn)組合了DSR[4]和DSDV[5]協(xié)議,它既具有DSR協(xié)議的路由發(fā)現(xiàn)和路由維護(hù)功能,同時又使用DSDV采用的逐跳路由、序列號和Beacon消息。其包括路由發(fā)現(xiàn)和路由維護(hù)兩個過程[6]。
路由發(fā)現(xiàn):當(dāng)源節(jié)點(diǎn)需要與某節(jié)點(diǎn)通信但沒有到該目的節(jié)點(diǎn)的路由時,它就廣播路由請求RREQ,當(dāng)其它節(jié)點(diǎn)收到這個RREQ時,首先判斷是否收到過具有相同源節(jié)點(diǎn)和目的節(jié)點(diǎn)的ID,如果是重復(fù)收到就丟棄,如果沒有就利用RREQ中的信息建立反向路由。如果中間節(jié)點(diǎn)含有到目的節(jié)點(diǎn)的路由,就發(fā)送路由應(yīng)答RREP給源節(jié)點(diǎn),否則廣播該 RREQ。當(dāng) RREQ的目的節(jié)點(diǎn)收到RREQ時,同樣建立反向路由,然后向RREQ的源節(jié)點(diǎn)發(fā)送RREP。路由維護(hù):節(jié)點(diǎn)通過MAC層周期性廣播hello消息來判斷鏈路狀態(tài),如果該節(jié)點(diǎn)連續(xù)3次未收到hello響應(yīng)消息,就認(rèn)為鏈路已經(jīng)斷開,并刪除包含該鏈路的路由信息,發(fā)起路由錯誤ERROR,通知相鄰結(jié)點(diǎn)和相應(yīng)的上游結(jié)點(diǎn)刪除由于鏈路斷開而導(dǎo)致目的結(jié)點(diǎn)不可達(dá)的路由信息。
NS2[7]是一個離散型事件驅(qū)動的網(wǎng)絡(luò)仿真軟件,由兩種語言O(shè)Tcl和C++編寫而成,模擬平臺采用C++語言編寫,并使用OTcl語言編寫命令和配置接口。NS2仿真步驟[8]如下:
1)編寫Otcl腳本文件:配置仿真網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),確定鏈路基本特性,移動節(jié)點(diǎn)所使用的路由協(xié)議,節(jié)點(diǎn)的數(shù)量是否已經(jīng)隨機(jī)移動等,并進(jìn)行端設(shè)備的協(xié)議綁定,設(shè)置仿真使用的場景和傳輸負(fù)載(TCP流或CBR流),NS2有特定的方法來隨機(jī)設(shè)置,還要設(shè)置仿真的開始和結(jié)束時間等,并在腳本文件里設(shè)置trace對象,trace文件是記錄仿真過程中所發(fā)生的所有事件的文件,也可以同時設(shè)置nam對象,nam是用于演示網(wǎng)絡(luò)運(yùn)行動畫的工具。
2)用NS命令執(zhí)行腳本文件:執(zhí)行后會在與腳本文件同一目錄下生成*.tr的文件,記錄仿真結(jié)果。如果在腳本文件中設(shè)置了 nam對象,則會在同一目錄下生成*.nam的文件。
3)分析trace文件:由于 trace文件比較大,我們需要編寫gawk程序進(jìn)行仿真后期的數(shù)據(jù)處理(計算分組投遞率、路由負(fù)載、吞吐量等),代碼為$gawk-f*.awk*tr,再用繪圖工具gnuplot將所得數(shù)據(jù)繪制成圖以便直觀分析。
場景是用來模擬的一個虛擬的運(yùn)動環(huán)境,可直接在tcl程序里面寫入,但對于復(fù)雜的場景,一般用NS2提供的setdest工具來隨機(jī)生成。格式為:./setdest-v<version>-n<num_of_nodes>-s<speed type>-m <min-speed>-M<maxspeed>-t<simulation time>-P<pause type>-p<pause time>-x<max X>-y<max Y>><o(jì)utdir>/<scenario-file>。其中:v為版本;n為節(jié)點(diǎn)數(shù)目;s為速度類型,1表示在最大最小速度之間隨機(jī)選擇,2為運(yùn)動速度服從正態(tài)分布;m為最小速度,M為最大速度;t為仿真時間;P為節(jié)點(diǎn)到目的位置后的停留方式,1為停留一個常數(shù)值,2表示在0到pausetime之間隨機(jī)選擇;p為節(jié)點(diǎn)到達(dá)一個目的后停留時間;x和y分別表示節(jié)點(diǎn)運(yùn)動范圍;<o(jì)utdir>/<scenario-file>為輸出場景文件所在的位置和文件名。
數(shù)據(jù)流是傳輸負(fù)載,可以使用NS2提供的cbrgen工具來生成傳輸負(fù)載。
使用cbrgen工具產(chǎn)生數(shù)據(jù)文件的格式為:ns cbrgen.tcl-type<cbr/tcp>-nn<nodes>-seed<seed>-mc<max connections>-rate<rate> > <cbrfile>。其中:cbr/tcp為業(yè)務(wù)類型;nodes為仿真的節(jié)點(diǎn)數(shù);seed為隨機(jī)數(shù)種子數(shù);mc為最大連接數(shù);rate為源節(jié)點(diǎn)的發(fā)送速率。調(diào)用程序的時候采取source<filename>。
文中運(yùn)行場景和仿真業(yè)務(wù):在1000m×800m長方區(qū)域拓?fù)鋬?nèi),設(shè)置不同的節(jié)點(diǎn)數(shù)目;固定移動速度5m/s,場景持續(xù)時間200s,暫停時間0,數(shù)據(jù)類型為cbr,設(shè)置最大連接數(shù),分組發(fā)送速率為1.0packet/s,每個包大小512bit。其次在固定節(jié)點(diǎn)數(shù)目的情況下,改變源節(jié)點(diǎn)數(shù)目。場景分布圖之一如圖1所示。
圖1 仿真場景圖
本文主要仿真AODV路由協(xié)議在同一場景下改變節(jié)點(diǎn)數(shù)目,通過比較數(shù)據(jù)正確接收率、數(shù)據(jù)分組的平均端到端時延、路由花費(fèi)變化來得出節(jié)點(diǎn)數(shù)目合理化。
數(shù)據(jù)正確接收率定義為交付到目的節(jié)點(diǎn)的應(yīng)用層數(shù)據(jù)分組數(shù)目與cbr源節(jié)點(diǎn)應(yīng)用層發(fā)送的分組數(shù)目之比。描述通過應(yīng)用層觀察到的分組交付率,在一定程度上反映了協(xié)議的完整性和可靠性。仿真結(jié)果如圖2、3所示。
路由開銷定義為通信過程中正確接受數(shù)據(jù)包的過程中,路由占據(jù)比率。反映數(shù)據(jù)鏈路的通斷情況。路由開銷可分為每傳送一個數(shù)據(jù)分組所帶來的協(xié)議分組開銷和每傳送一個數(shù)據(jù)字節(jié)所帶來的協(xié)議字節(jié)開銷。而后者更能體現(xiàn)實(shí)際的效率,因?yàn)閰f(xié)議分組的大小可能不等。因而在實(shí)驗(yàn)中采取后者進(jìn)行統(tǒng)計分析。路由開銷反映了網(wǎng)絡(luò)的擁塞程度和節(jié)點(diǎn)電源的效率,開銷大的協(xié)議擁塞的概率就大,且會延遲接口隊列中數(shù)據(jù)包的發(fā)送。標(biāo)準(zhǔn)化路由開銷越小,尋找到目的節(jié)點(diǎn)的路徑所消耗的帶寬就越小,發(fā)送數(shù)據(jù)分組的機(jī)會就越大,有限的無線網(wǎng)絡(luò)帶寬就越能得到有效的利用。仿真結(jié)果如圖4、5所示。
數(shù)據(jù)分組的平均端到端時延包括所有可能的時延,如路由發(fā)現(xiàn)過程中的延遲、接口隊列處的排隊時間、MAC層傳輸時延和傳播與接收時間等。該指標(biāo)對路由算法執(zhí)行效率的測度和統(tǒng)計非常重要。數(shù)據(jù)分組的平均端到端時延=Σ(接收到數(shù)據(jù)分組的時間-發(fā)送數(shù)據(jù)分組的時間)/接收到的報文數(shù)。仿真如圖6、7所示。
在性能比較過程中,提出一種性能評價模型。設(shè)變量a,b,c,…且a+b+c+…=1。假如研究者分析的性能還有,可以在此基礎(chǔ)上再設(shè)置多個變量。根據(jù)如下模型進(jìn)行最優(yōu)選擇:Best=a×avdelay+b×getratio+c×routecost+…。a,b,c…參數(shù)值大小選擇,根據(jù)應(yīng)用過程中性能要求高低設(shè)定。本文只分析三個性能,則設(shè)置三個變量,簡單起見平均設(shè)置a=b=c=1/3。
從圖2、圖4、圖6可以看出從數(shù)據(jù)正確接收率來看,節(jié)點(diǎn)在30到50之間表現(xiàn)良好,在延遲方面,35到40之間最低。但是在路由花費(fèi)幾乎成線性關(guān)系。根據(jù)性能比較,節(jié)點(diǎn)在35到40之間性能表現(xiàn)最優(yōu)。
在上一個結(jié)論的基礎(chǔ)上,固定節(jié)點(diǎn)數(shù)目改變源節(jié)點(diǎn)的數(shù)目,從圖3、圖5、圖7可以看出從數(shù)據(jù)正確接收率來看,源節(jié)點(diǎn)在10左右表現(xiàn)良好,在延遲方面和路由花費(fèi)同樣如此。根據(jù)性能比較,源節(jié)點(diǎn)在10左右性能表現(xiàn)最佳。
本文給出了Ad hoc網(wǎng)絡(luò)AODV路由協(xié)議在NS2中仿真的具體方法和步驟,并進(jìn)行了具體場景的節(jié)點(diǎn)數(shù)目的仿真,根據(jù)網(wǎng)絡(luò)性能參數(shù)指標(biāo),仿真出了相應(yīng)的圖表,分析得到了常見場景下的最佳節(jié)點(diǎn)數(shù)目和在設(shè)置好最佳節(jié)點(diǎn)數(shù)目情況下的最優(yōu)源節(jié)點(diǎn)數(shù)目,研究者在選取節(jié)點(diǎn)數(shù)目時可以參照本方法進(jìn)行仿真研究。特別是對一些參數(shù)有著特別高的要求的情況下,在硬件設(shè)施相同的情況下,合理設(shè)計和分布節(jié)點(diǎn)可以進(jìn)一步提高網(wǎng)絡(luò)的性能。研究對于利用NS2對Ad hoc網(wǎng)路由協(xié)議的性能評價有極其重要的意義,同時對于進(jìn)一步研究 Ad hoc網(wǎng)中的路由協(xié)議也有積極意義。
[1]Talooki V N,Ziarati K.Performance Comparison of Routing Protocols for Mobile AdHoc Networks[C]//2006 Asia-PacificConference on Communication,2006:1~5
[2]張登銀,吳品.Ad hoc網(wǎng)絡(luò)路由協(xié)議的性能仿真分析[J].計算機(jī)技術(shù)與發(fā)展,2009,19(7):66~72
[3]Lin chen,Jean Leneutre,Jean-Jacques Puig.Wireless and Mobile Communications[C]//ICWMC'06,2006:36
[4]C.E.Perkins,P.Bhagwat.Highly dynamic destination sequenced distance vector routing(DSDV)for mobile computers[J].The ACM SIGCOMM Conf on Communications Architectures,1994,24(4):234~244
[5]Johnson David B,Maltz David A,Hu Yih-Chun.The Dynamic Source Routing(DSR)Protocol for Mobile Ad hoc Networks[S].IETF Internet Draft,draft-ietfmanet-dsr-09,2003
[6]馬崇霄,吳長奇.基于網(wǎng)絡(luò)仿真器NS2的Ad hoc網(wǎng)絡(luò)路由協(xié)議仿真[J].電子測量技術(shù),2008,31(5):75~79
[7]K.Fall,K.Varadan.Ucb/lbul Network Simulator(version 2)[EB/OL].http//www.mash.cs.berkeley.edu/ns/
[8]徐雷鳴,龐博,趙耀.NS與仿真模擬[M].北京:人民郵電出版社,2003,9:5~6,20~25