資源描述:
《基于ns2的網(wǎng)絡仿真》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、http://www.paper.edu.cn基于NS2的網(wǎng)絡仿真郭樹民,裴慶祺,曾興雯西安電子科技大學通信工程學院,西安(710071)E-mail:gsm1011@163.com摘要:近幾年來,網(wǎng)絡結構的的復雜化和應用的多樣化,為網(wǎng)絡系統(tǒng)的分析和設計提出了新的挑戰(zhàn),NS2作為一種通用的網(wǎng)絡仿真工具,很好地滿足了這種需求。本文主要介紹了NS2以及其在網(wǎng)絡仿真方面的應用,包括NS2的特點、應用領域、用NS2進行仿真的步驟,最后給出了一個用NS2進行仿真的實例。介紹了如何結合GNU的make工具有效地利用NS2進行網(wǎng)絡仿真。關鍵詞:網(wǎng)絡仿真;NS2;Makefile1.網(wǎng)絡仿真簡介近幾
2、年來,隨著網(wǎng)絡結構和規(guī)模的復雜化以及網(wǎng)絡的應用的多樣化,單純依靠經(jīng)驗進行網(wǎng)絡的規(guī)劃規(guī)劃和設計、網(wǎng)絡設備的研發(fā)以及網(wǎng)絡協(xié)議的開發(fā)已經(jīng)不能適應網(wǎng)絡的發(fā)展;網(wǎng)絡仿真很好地滿足了這種需求。所謂網(wǎng)絡仿真就是將物理世界中的網(wǎng)絡通過計算機來模擬實現(xiàn)。這種模擬是通過數(shù)學方法或者動態(tài)蒙特卡羅方法來模擬現(xiàn)實中的網(wǎng)絡行為,從而可以有效地提高網(wǎng)絡規(guī)劃和設計的可靠性和準確性,降低網(wǎng)絡投資的風險,減少不必要的投資。網(wǎng)絡仿真工具是為了進行仿真而開發(fā)的專用計算機軟件。從仿真的范圍來看我們可以將其分為專用仿真工具(SpecializedNetworkSimulator)和通用仿真工具(Generalizednetwo
3、rksimulator)。專用網(wǎng)絡仿真工具是為了仿真某個特定的網(wǎng)絡環(huán)境和網(wǎng)絡協(xié)議而設計的,例如[13][14]SensorSim,SENSE等都是為了仿真?zhèn)鞲衅骶W(wǎng)絡而設計的專用網(wǎng)絡仿真工具。通用網(wǎng)絡仿真工具是在一個整體設計架構的基礎上集成了很多網(wǎng)絡模塊(module),并且用戶可以根據(jù)需要來添加新的模塊或者修改現(xiàn)有的模塊,從而可以實現(xiàn)各種網(wǎng)絡協(xié)議的仿真。目前,比較[3][4][12]流行的通用仿真工具主要有NS2和OPNET、J-Sim等。[16]NS2是一種開源的網(wǎng)絡仿真工具,它是由美國的VINT工程開發(fā)的通用網(wǎng)絡仿真平臺;其可擴展特性和開源特性賦予了其強大的生命力;世界各地的科研
4、人員都可以向NS2[3]貢獻源代碼,使得其可以支持現(xiàn)有的除蜂窩網(wǎng)絡出外的幾乎所有的網(wǎng)絡場景和網(wǎng)絡協(xié)議。[6]NS2在科研特別是無線網(wǎng)絡的仿真領域得到了非常廣泛的應用,通過NS2得到的仿真結果也得到學術界的普遍認可;此外,NS還可以作為一種輔助教學的工具,已經(jīng)被廣泛應用于網(wǎng)絡技術的教學方面。[5][10]OPNET是在MIT的網(wǎng)絡仿真工具的基礎上由MIL3公司開發(fā)的商業(yè)化的網(wǎng)絡仿真軟件。它是一個非常強大的網(wǎng)絡分析和設計平臺,支持對網(wǎng)絡各個層次的設備、鏈路和協(xié)議的精確建模,并提供豐富的外界開發(fā)接口。從應用的廣泛性而言,OPNET是一種僅次于NS2[6]的網(wǎng)絡仿真工具。本文的以下部分安排如
5、下:第二部分將簡要介紹NS2的特性;第三部分將介紹用NS2進行仿真的步驟;第四部分將給出用NS2進行網(wǎng)絡仿真的一個實例,并介紹怎樣利用Makefile來提高網(wǎng)絡仿真的效率和實現(xiàn)仿真的自動化。最后,對本文進行了總結并對今后的工作進行了展望。-1-http://www.paper.edu.cn2.NS2特性2.1.離散事件模擬[1]NS2是一個基于離散事件的網(wǎng)絡仿真工具。在NS2中,事件(Event)是模擬器處理的基本單位,它由事件調(diào)度器(Scheduler)來進行組織和管理。一個事件可以是一個路由請求、一次數(shù)據(jù)包的傳送請求,還可以是數(shù)據(jù)包丟失或鏈路失效等。當事件發(fā)生時,調(diào)度器負責事件的
6、組織和調(diào)度。它首先將事件放置到隊列中,然后根據(jù)一定的規(guī)則對發(fā)生的事件進行處理。在網(wǎng)絡的仿真過程中,一般的情況是一個事件發(fā)生會引起一系列的連鎖反應,很多相關的事件接連發(fā)生,這種過程一直持續(xù)直到完成一次網(wǎng)絡模擬。2.2.分裂對象模型NS2的設計采用了分裂的對象模型。所謂分裂對象模型就是將NS2中的對象用兩種不同的編程語言來實現(xiàn),NS2采用了C++和Otcl兩種語言。采用分裂對象模型主要是綜合考慮了仿真軟件的性能(速度)和可配置性。C++語言是一種編譯執(zhí)行的語言,在執(zhí)行之前程序已經(jīng)經(jīng)過編譯器編譯成可執(zhí)行的二進制代碼,因此具有非常高的時間效率和空間效率。與C++相比,Otcl是一種解釋執(zhí)行的
7、語言,它是對Tcl語言的面向?qū)ο蟮臄U展。這種程序設計語言的特點是逐句解釋執(zhí)行,它在執(zhí)行之前不需要進行編譯處理;這種特性使得起非常適合用來進行網(wǎng)絡參數(shù)的配置。NS2正是很好地利用了這兩種語言的優(yōu)點,網(wǎng)絡仿真模塊中對效率要求比較高的網(wǎng)絡協(xié)議部分都是用C++語言來實現(xiàn)的,而對參數(shù)和場景的配置是用Otcl[3]語言來實現(xiàn)的。文獻對NS2的分裂對象模型做了深入和富有啟發(fā)性的介紹。2.3.基于數(shù)據(jù)包層次的仿真NS2是一種數(shù)據(jù)包層次的網(wǎng)絡仿真工具,它采用一種具有一定格式