周德榮,夏 齡,田關偉,舒 濤
(四川民族學院)
網絡協議開發和研究的常用方法是采用軟件仿真.NS2是主流的網絡仿真工具之一,它由伯克利分校開發的面向對象網絡仿真工具,尤其在網絡協議研究方面具有重大意義[1].NS2前身是REAL網絡仿真器,NS2中主要使用C++語言完成網絡協議開發,使用OTCL實現協議仿真測試,通過觀察實驗結果驗證方案的可行性和優劣.Ad hoc網絡是一種自組織無線移動網絡,具有無中心、自織組、多跳路由、獨立組網、節點移動等特點[2].Ad hoc網絡的關鍵技術是路由技術,Ad hoc網絡的路由協義分表驅動路由協議、按需路由協議和混合型路由協議[3].表驅動路由協議包括探測鄰居節點和路由廣播兩個過程,探測鄰居節點通過周期性地廣播“HELLO”分組來實現,路由廣播采用洪泛方式向全網擴散.按需路由協議包括“路由發現”和“路由維護”兩個過程.混合型路由協議是表驅動路由協議和按需路由協議結合,將這兩種協議進行優勢互補,使得帶寬消耗和路由發現的延遲降低.典型協議有DSDV、WRP、DSR、AODV、TORA 等.AODV 路由協議[4]是具有一定優勢主流協議,它是DSR和DSDV的綜合,依賴中間節點建立和維護動態路由表,使用序列號避免路由環路,支持組播功能和QoS等特性,能很好適應高度動態移動的網絡環境.
NS2的網絡仿真通常包括兩方面:一方面是通過編寫腳本程序對已經實現的協議和算法的仿真,為網絡規劃設計和評價網絡性能提供參考.另一方面是通過編寫新的C++和OTCL代碼,并將它們編譯進NS2內核實現網絡協議和算法的開發.該文以AODV路由協議為研究對象闡述了NS2中新協議和算法的實現方法.
NS2是一種離散事件驅動的面向對象的網絡模擬器[5-6],它包含仿真事件調度器、網絡組件對象庫以及網絡構建模型庫等,NS2的基本結構如圖1所示.事件調度器計算仿真時間,激活事件隊列中的當前事件,執行一些相關的事件.網絡組件通過傳遞分組來相互通信,所有需要花費仿真時間來處理分組的網絡組件都必須要使用事件調度器.NS2中的網絡構件由相互關聯的兩個類來實現,一個是C++類,一個是OTCL類.C++類是算法和協議的具體實現,OTCL對象是建立仿真對象、設置屬性、通過事件調度器調度網絡模擬事的發生.事件調度器和部分網絡構件采用C++實現,通過Tc1cL實現到OTCL映射機制,建立映射后NS2用戶在OTcl空間能夠對C++對象中成員函數和成員變量進行修改與配置.TCL(Tool Command Language)是解釋執行的腳本語言.OTCL是一種面向對象的腳本語言,支持繼承、封裝、多態性和動態綁定等面向對象的特性.通過編寫TCL模擬腳本,使用NS2進行仿真產生Trace文件,通過NAM模塊對仿真過程進行動畫演示,通過繪圖軟件進行仿真結果的圖形繪制.

圖1 NS2基本結構
NS2中協議開發涉及兩部分代碼,一部分是完成與NS2整合所必需的,另一部分則是完成協議內容編寫的,也是協議開發的核心所在.核心協議的開發必須熟悉開發協議相關標準及NS2代碼結構,然后從C++代碼、TCL代碼兩部分入手開始實現協議,流程如圖2所示.

圖2 NS2協議開發流程
當NS2用戶要進行協議開發,主要是用C++建立新的協議和用TCL建立仿真腳本,具體步驟如下:
Step 1:建立頭文件,定義新協議的數據結構、新代理的繼承結構及類定義.
Step 2:根據協議標準及規范用C++實現新協議.
Step 2:定義OTCL連接函數,實現C++代碼和OTCL代碼之間的接口連接.
Step 3:對NS2中各個相關程序進行必要的改動,實現對新協議的支持.
Step 4:對NS2進行重新編譯生成支持新協議的NS2.
Step 5:編寫OTCL仿真腳本.完成模擬網絡拓撲結構的配置、協議代理的建立、業務量模型參數、Trace對象等的設置.
Step 6:運行仿真腳本對新協議進行仿真測試.
Step 7:對仿真結果進行分析,得出測試結果.
Step 8:調整配置拓撲結構和業務量模型,重復step 5至step 7進行仿真.
AODV協議是無線自組織網絡中按需路由的典型協議.AODV路由協議主要包括路由發現和路由維護兩種機制[7].AODV協議操作包括路由請求 RREQ、路由應答 RREP、路由錯誤RRER、路由應答認可RREP-ACK四種消息的格式.當源節點與目的節點進行通信時,若源節點路由表中沒有到達目的節點的路由,則通過向鄰居廣播RREP分組來進行路由發現.當RREP分組從源節點發出后,沿途所經過的節點自動建立到源節點的反向路由.中間節點收到RREQ路由請求分組后對比序列號,如果之前收到過該分組就丟棄.目的節點收到RREQ后利用反向路由向源節點發送路由應答消息RREP,建立源節點到目的節點的有效路徑.AODV協議主要通過本地修復和源節點重建路由兩種方式實現路由維護.AODV路由協議通過周期性廣播HELLO報文來檢測鏈路狀態,如果規定時間內,節點未收到鄰居節點的“HELLO”響應報文,就判斷該鏈路已經斷開,此時啟動本地修復機制,若本地修復失敗,刪除緩存中源節點發送過來的數據包,發送RRER錯誤分組給源節點,源節點重新發起路由發現過程.
AODV是一個路由協議,需建立和維護路由表信息.AODV協議的每個路由表條目如圖3所示.
AODV的路由發現和路由維護實質就是對節點的路由表進行操作.主要包括路由添加,路由刪除,路由查詢.
NS2是一款開放源代碼網絡仿真軟件,最重要的目錄是 ns2–allinone-2.34/ns-2.34,用于存放網絡協議、算法的實現源代碼,OTCL源碼主要放在ns-2.34/tcl/lib目錄下.對于路由協議一般都是新建協議名對應的目錄,實現路由協議就是要在對應目錄下編寫新的C++和OTCL代碼,最后將新協議重新編譯連接NS2核心模塊即可.對于 AODV協議,新建 Aodv目錄,通過Aodv.h、Aodv.cc、aodv_packet.h、Aodv_rtable.h、Aodv_rtable.cc、aodv_rqueue.h、aodv_rqueue.cc等文件實現AODV協議.實現過程如下:

圖3 AODV路由表表項
(1)定義新的路由協議.NS2中所有路由協議繼承自Agent類,通過在aodv.h中定義協議類class AODV:public Agent{}.其中,recv()函數和command()函數繼承自Agent類.recv()是路由層收到數據包的處理函數,源節點發送一個分組時調用目標節點的Agent類的recv()函數處理數據包.command()是命令處理函數,NS2中OTCL對象通過command()函數實現調用對應的C++對象.NS2為每個TclObject的解釋對象建立cmd{}實例過程,cmd{}調用影像對象的方法command(),同時將cmd{}的參數以數組方式傳遞給command()方法.此外,具體協議所用到的其它函數也在AODV類中定義.
(2)定義一個TclClass類的子類.aodv.cc文件中通過static class AODVclass:public TclClass{}進行定義,構造編譯類結構互為鏡像的解釋類結構,提供初始化新的TclObject方法,實現C++中的AODV類和Tcl代碼中的Agent/AODV的綁定.
(3)修改NS系統TCL代碼實現識別AODV協議.在ns/tcl/lib/ns-lib.tcl文件中的Simulator類的create-wireless-node成員函數中增加如下代碼:


在ns/tcl/lib/ns-lib.tcl文件中定義成員函數create-aodv-agent.
(4)定義路由協議包頭.在AODV-packet.h文件中定義一個結構體struct hdr_aodv{},包含各種序列號、分組標識等信息.在ns/tcl/lib/nspacket.tcl文件中添加包頭的名字 AODV.在aodv.cc文件中定義一個PacketHeadeaClass類的子類class AODVHeaderClass,它是各種分組頭的基類,通過此類實現 Tcl中的 PacketHeader/AODV類與C++中的hdr_aodv的綁定.
(5)創建路由協議的包頭類型.ns/common/packet.h文件的enum packet_t中增加一項定義為PT_AODV,表示新增加的包類型,在class p_info類的p_info()構造函數中增加一行 name_[PT_AODV]=“aodv”,實現新增 aodv包類型.
(6)aodv.cc中定義構造函數AODV::AODV():Agent(PT_AODV),將新創建的包的類型傳遞給Agent類的構造函數.
(7)路由協議的定義和實現后,修改ns/Makefile文件,對NS2進行重新編譯,實現對新協議的支持.
(8)先編寫 tcl文件,生成隨機場景,運行NS2對路由協議進行測試.
Ad Hoc路由協議性能評估是協議研究與開發的一項重要工作.評估時主要采用分組投遞率、端到端延遲、路由開銷等指標來衡量路由協議性能[8].分組投遞率是源節點發送分組的總數與目的節點接收分組的總數之比,反映了數據傳輸路徑的質量.端到端延遲是數據分組在端點之間的平均傳輸延時,路由開銷是指所有路由開銷的控制分組總數,包括所有路由發現、路由維護的控制消息,反映了路由協議本身帶來的傳輸開銷.
利用仿真軟件對Ad Hoc網絡路由協議進行評價時,通過選擇不同的仿真參數來實現.仿真參數主要有:(1)移動性,通過設計移動模型來反映網絡拓撲結構動態變化、鏈路的連接與斷開;(2)網絡負載,主要包括分組的類型、大小,分組的發送速度等;(3)網絡環境,包括節點數目,移動區域大小等.
設定仿真網絡環境,通過分別改變節點個數、移動速度和停留時間等仿真參數,從分組投遞率、端到端時延和路由開銷三方面評估AODV路由協議.仿真基本參數為:各節點隨機分布在800~600 m場景,無線傳播模型采用Propagation/TwoRayGround,天線類型采用Antenna/OmniAntenna,節點的無線傳輸范圍為250m,數據流類型為CBR,每個CBR包的大小為512B,鏈路帶寬為2M,接口隊列類型為 Queue/DropTail/PriQueue,Mac 層協議采用 IEEE802.11,模擬時間為200s.
3.2.1 節點個數變化仿真
在基本仿真參數上,設定節點數目為5,10,20,30,40,50,對應的最大連接數為 4,7,17,27,37,47,源結點個數分別為 3,4,10,18,25,30.分組發送速率為2packets/s,停留時間為0s,最大移動速度為5 m/s,仿真結果如圖4所示.

圖4 節點個數變化對AODV協議影響的仿真
從圖4(a)可知,節點數為15~35時,路由協議端到端平均時延達到比較理想,當節點超過30時,加上網絡拓撲結構的變化,無線信道中充斥著大量的拓撲更新報文,有效數據正常傳輸受到影響,導致端到端時延呈上升趨勢.從圖4(b)可知,當節點數為20~30時,分組投遞率最高,接近100%;節點個數小于20時,由于節點個數較少,在相互的無線電范圍以外的情況增多,節點間無法找到可達路由的情況隨之增加,由此造成較多分組無法找到路由而丟棄,降低了分組投遞率.節點個數大于30時,由于節點個數的增加帶來網絡拓撲結構變化較快,網絡中的路由更新報文增多,造成較多分組因路由超時而丟棄,分組投遞率隨之下降.從圖4(c)可知,當節點數增加時,路由協議的路由開銷隨之增加.
3.2.2 移動速度變化仿真
基本仿真場景上,設定節點數目為20,對應的最大連接數為17,停留時間為0s,分組發送速率為2packets/s,源結點個數為10,最大移動速度分別設置為 1、5、10、20、30、40、50 m/s.仿真結果如圖5所示.

圖5 移動速度變化對AODV協議的影響
從圖5(a)可知,隨著移動速度的增加,路由協議端到端平均延時隨之增加,由于AODV是按需路由協議,需要發送數據時尋找可用的路由,當移動速度增加帶來拓撲結構的變化頻繁,因此延遲出現較大趨勢.從圖5(b)可知,隨著移動速度的增加,路由協議分組投遞率呈現下降趨勢,這是由于隨著移動速度的增加,網絡拓撲結構變化加劇,網絡中路由更新報文不斷增多引起的.從圖5(c)可知,路由協議的路由開銷呈上升趨勢.
3.2.3 停留時間變化仿真
基本仿真場景上,設定節點數目為20,對應的最大連接數為 17,停留時間為 0、10、20、30、40、50、60、70、80、90、100 s,分組發送速率為2packets/s,源結點個數為10,最大移動速度分別設置為5 m/s.仿真結果如圖6所示.

圖6 停留時間變化對AODV協議的影響
從圖6(a)可知,隨著停留時間的增加,網絡拓撲結構越來越穩定,路由協議端到端平均時延呈現下降趨勢.從圖6(b)可知,路由協議分組投遞率較高,基本可可達98%以上,隨停留時間的增大,路由協議的分組投遞率有上穩定趨勢.從圖6(c)可知,停留時間的增加,路由協議路由開銷變化不大.
網絡仿真是檢驗網絡協議和算法的正確性和有效性常用手段,是測試網絡性能的有效方法[9].該文基于NS2平臺,以AODV路由協議為研究對象,分析了AODV協議在NS2中的實現過程,通過設置仿真場景,對新協議進行測試和驗證,仿真結果驗證了新協議的有效性.采用NS2仿真軟件進行協議、算法開發及評估具有效果直觀,開發效率高,成本低,靈活性好等優點,對研究人員有一定的參考價值.
[1]王輝.NS2網絡模擬器的原理和應用[M].西安:西北工業大學出版社,2008.
[2]沈明玉,楊帆.Ad Hoc網絡中改進的能量意識的多徑AODV算法研究[J].計算機工程與應用,2011(14):80-82.
[3]王琦進,齊曉霞,侯整風.移動Ad Hoc網絡路由協議性能仿真研究[J].微計算機信息,2011(4):166-168.
[4]周中偉,李陽,周中意,等.基于Ad Hoc網絡路由協議的研究[J].中南林業科技大學學報,2010(11):157-163.
[5]于斌,孫斌,溫暖.NS2與網絡模擬[M].北京:人民郵電出版社,2007.
[6]Ekram H,Issariyakul T.Introduction to Network Simulator NS2[M].Springer,2009.
[7]馬軍.一種基于AODV的多路徑路由協議[J].計算機應用與軟件,2010(03):219–221.
[8]任興田,王勇.基于蟻群算法的自適應ad hoc路由協議[J].北京工業大學學報,2012(5):744-748.
[9]周德榮,夏齡,舒濤,等.NS2網絡協議虛擬仿真實驗平臺研究[J].實驗技術與管理,2014,31(3):87-90.