熊輝 朱倩
【摘 要】網(wǎng)絡(luò)仿真可以有效提高網(wǎng)絡(luò)規(guī)劃和設(shè)計的可靠性和準(zhǔn)確性,明顯地降低網(wǎng)絡(luò)投資風(fēng)險,減少不必要的投資浪費。本文就常見的三種網(wǎng)絡(luò)仿真工具(OPNET、NS2及MATLAB),從它們的基本情況及特點進(jìn)行了分析。
【關(guān)鍵字】網(wǎng)絡(luò)仿真;OPNET;NS2;MATLAB
引言
隨著網(wǎng)絡(luò)結(jié)構(gòu)和規(guī)模越來越復(fù)雜化以及網(wǎng)絡(luò)的應(yīng)用越來越多樣化,單純地依靠經(jīng)驗進(jìn)行網(wǎng)絡(luò)的規(guī)劃和設(shè)計、網(wǎng)絡(luò)設(shè)備的研發(fā)以及網(wǎng)絡(luò)協(xié)議的開發(fā),已經(jīng)不能適應(yīng)網(wǎng)絡(luò)的發(fā)展,因而急需一種科學(xué)的手段來反映和預(yù)測網(wǎng)絡(luò)的性能,網(wǎng)絡(luò)仿真技術(shù)應(yīng)運而生。網(wǎng)絡(luò)仿真可以有效提高網(wǎng)絡(luò)規(guī)劃和設(shè)計的可靠性和準(zhǔn)確性,明顯地降低網(wǎng)絡(luò)投資風(fēng)險,減少不必要的投資浪費。各種網(wǎng)絡(luò)仿真工具在此背景下應(yīng)運而生。本文就常見的三種網(wǎng)絡(luò)仿真工具(OPNET、NS2及MATLAB),從它們的基本情況及特點進(jìn)行了分析。
基本情況及特點分析
1.OPNET
OPNET公司最初只有一種產(chǎn)品OPNET Modeler,到目前已經(jīng)擁有Modeler、ITGuru、SPGuru、WDMGuru、ODK等一系列產(chǎn)品。
對于網(wǎng)絡(luò)的設(shè)計和管理,一般分為3個階段:第1階段為設(shè)計階段,包括網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的設(shè)計,協(xié)議的設(shè)計和配置以及網(wǎng)絡(luò)中設(shè)備的設(shè)計和選擇;第2階段為發(fā)布階段,設(shè)計出的網(wǎng)絡(luò)能夠具有一定性能,如吞吐率、響應(yīng)時間等等;第3階段為實際運營中的故障診斷、排錯和升級優(yōu)化。而OPNET公司的整個產(chǎn)品線正好能面向網(wǎng)絡(luò)研發(fā)的不同階段,即可以作網(wǎng)絡(luò)的設(shè)計,也可以作為發(fā)布網(wǎng)絡(luò)性能的依據(jù),還可以作為已投入運營的網(wǎng)絡(luò)的優(yōu)化和故障診斷工具。OPNET公司也是當(dāng)前業(yè)界智能化網(wǎng)絡(luò)管理分析解決方案的主要提供商。
OPNET的主要特點:
層次化的網(wǎng)絡(luò)模型。使用無限嵌套的子網(wǎng)來建立復(fù)雜的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)。
簡單明了的建模方法。Modeler建模過程分為3個層次:過程(process)層次、節(jié)點(Node)層次以及網(wǎng)絡(luò)(Network)層次。在過程層次模擬單個對象的行為,在節(jié)點層次中將其互連成設(shè)備,在網(wǎng)絡(luò)層次中將這些設(shè)備互連組成網(wǎng)絡(luò)。幾個不同的網(wǎng)絡(luò)場景組成“項目”,用以比較不同的設(shè)計方案。這也是Modeler建模的重要機(jī)制,這種機(jī)制有利于項目的管理和分工。
有限狀態(tài)機(jī)。在過程層次使用有限狀態(tài)機(jī)來對協(xié)議和其他過程進(jìn)行建模。在有限狀態(tài)機(jī)的狀態(tài)和轉(zhuǎn)移條件中使用C/C++語言對任何過程進(jìn)行模擬。用戶可以隨心所欲地控制仿真的詳細(xì)程度。有限狀態(tài)機(jī)加上標(biāo)準(zhǔn)的C/C++以及OPNET本身提供的400多個庫函數(shù)構(gòu)成了Modeler編程的核心。OPNET稱這個集合為Proto C語言。
對協(xié)議編程的全面支持。支持400多個庫函數(shù)以及書寫風(fēng)格簡潔的協(xié)議模型。OPNET的核心已經(jīng)嵌入了眾多協(xié)議,因此對于很多協(xié)議,無需進(jìn)行額外的編程。
系統(tǒng)的完全開放性。Modeler中源碼全部開放,用戶可以根據(jù)自己的需要添加、修改已有的源碼。
高效的仿真引擎。使用Modeler進(jìn)行開發(fā)的仿真平臺,使仿真的效率相當(dāng)高。
集成的分析工具。Modeler仿真結(jié)果的顯示界面十分友好,可以輕松刻畫和分析各種類型的曲線,也可將曲線導(dǎo)出到電子表格中。
動畫。Modeler可以在仿真中或仿真后顯示模型行為的動畫,使得仿真平臺具有很好的演示效果。
集成調(diào)試器??焖俚仳炞C仿真或發(fā)現(xiàn)仿真中存在的問題,OPNET本身有自己的調(diào)試工具——OPNET Debugger(ODB)。另外,OPNET在Windows平臺下還支持和編程語言VC的聯(lián)合調(diào)試。
OPNET是商業(yè)軟件,界面漂亮,上手容易,各種平臺下都有版本。雖然好像有D版,得不到客服,而且致命的是模塊太少,要要錢的。
OPNET具有豐富的統(tǒng)計量收集和分析功能。它可以直接收集常用的各個網(wǎng)絡(luò)層次的性能統(tǒng)計參數(shù),并有多種統(tǒng)計參數(shù)的采集和處理方法,還可以通過底層網(wǎng)絡(luò)模型編程,收集特殊的網(wǎng)絡(luò)參數(shù)。OPNET還有豐富的圖表顯示和編輯功能、模擬錯誤提示和告警功能,能夠方便地編制和輸出仿真報告。
2.NS2
局域網(wǎng)仿真是局域網(wǎng)設(shè)計的重要環(huán)節(jié),也是網(wǎng)絡(luò)性能分析的關(guān)鍵,因此需要一個與操作系統(tǒng)無關(guān)的平臺,它可以屏蔽掉對操作系統(tǒng)的實際的訪問,且能近乎真實地模擬網(wǎng)絡(luò)環(huán)境,讓我們可以在各個層次上模擬網(wǎng)絡(luò)的運行,于是在這種背景下,UC Berkeley改進(jìn)過的NS2應(yīng)運而生。它可以對無線、有線網(wǎng)、衛(wèi)星網(wǎng),局域網(wǎng)和廣域網(wǎng)等不同的網(wǎng)絡(luò)形式進(jìn)行仿真。它目前可以支持HTTP、TCP,UDP協(xié)議,支持FTP,Telnet,Web,,CBR and VBR等高層業(yè)務(wù);對無線網(wǎng)絡(luò),支持DSR、AODV、DSDV等協(xié)議。
NS所用仿真語言是Tool Command Language(TCL)語言的一個擴(kuò)展,TCL語言是一個簡單的腳本語言,它有解釋器可與任何C語言相鏈接,TCL最強(qiáng)大的功能是它的X工具包,該工具包可以讓用戶開發(fā)具有圖形界面的腳本,仿真通過TCL語言進(jìn)行定義。利用NS命令編寫腳本來定義網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)、配置網(wǎng)絡(luò)信息流量的產(chǎn)生和接收以及收集統(tǒng)計信息。軟件配有仿真過程動態(tài)觀察器,可以在仿真運行結(jié)束后,動態(tài)察看仿真的運行過程,觀察跟蹤數(shù)據(jù)。軟件還有圖形顯示器,顯示從仿真中得到的結(jié)果數(shù)據(jù),直觀而清晰。
NS2特點分析:
NS2是免費軟件,在類Linux下運行,通過Cygwin,完全可以運行在windows平臺上,擴(kuò)展使用C++和OTCL,編譯和調(diào)試使用GNU GCC和GDB。由于是免費的軟件,研究人員使用相當(dāng)廣泛,因此有大量免費的模塊可以從網(wǎng)絡(luò)中下載到,但相應(yīng)的缺點是這些免費的代碼可能或多或少存在一些小bug。
3.MATLAB
MATLAB 產(chǎn)品家族是美國MathWorks公司開發(fā)的用于概念設(shè)計、算法開發(fā)、建模仿真、實時實現(xiàn)的理想的集成環(huán)境。由于其完整的專業(yè)體系和先進(jìn)的設(shè)計開發(fā)思路,使得MATLAB在多種領(lǐng)域都有廣闊的應(yīng)用空間,特別是在 MATLAB 的主要應(yīng)用方向 — 科學(xué)計算、建模仿真以及信息工程系統(tǒng)的設(shè)計開發(fā)上已經(jīng)成為行業(yè)內(nèi)的首選設(shè)計工具,全球現(xiàn)有超過五十萬的企業(yè)用戶和上千萬的個人用戶,廣泛的分布在航空航天,金融財務(wù),機(jī)械化工,電信,教育等各個行業(yè)。
MATLAB的特點分析:
在MATLAB產(chǎn)品家族中,MATLAB工具箱是整個體系的基座,它是一個語言編程型(M語言)開發(fā)平臺,提供了體系中其他工具所需要的集成環(huán)境(比如M語言的解釋器)。同時由于MATLAB對矩陣和線性代數(shù)的支持使得工具箱本身也具有強(qiáng)大的數(shù)學(xué)計算能力。 MATLAB產(chǎn)品體系的演化歷程中最重要的一個體系變更是引入了Simulink,用來對動態(tài)系統(tǒng)建模仿真。其框圖化的設(shè)計方式和良好的交互性,對工程人員本身計算機(jī)操作與編程的熟練程度的要求降到了最低,工程人員可以把更多的精力放到理論和技術(shù)的創(chuàng)新上去。
針對控制邏輯的開發(fā),協(xié)議棧的仿真等要求,MathWorks公司在Simulink平臺上還提供了用于描述復(fù)雜事件驅(qū)動系統(tǒng)的邏輯行為的建模仿真工具——Stateflow,通過Stateflow,用戶可以用圖形化的方式描述事件驅(qū)動系統(tǒng)的邏輯行為,并無縫的結(jié)合到Simulink的動態(tài)系統(tǒng)仿真中。
在MATLAB/Simulink基本環(huán)境之上,MathWorks公司為用戶提供了豐富的擴(kuò)展資源,這就是大量的Toolbox和Blockset。從1985年推出第一個版本以后的近二十年發(fā)展過程中,MATLAB已經(jīng)從單純的Fortran數(shù)學(xué)函數(shù)庫演變?yōu)槎鄬W(xué)科,多領(lǐng)域的函數(shù)包,模塊庫的提供者。用戶在這樣的平臺上進(jìn)行系統(tǒng)設(shè)計開發(fā)就相當(dāng)于已經(jīng)站在了巨人的肩膀上,眾多行業(yè)中的專家精英們的智慧結(jié)晶可以信手拈來。
MATLAB開放的體系結(jié)構(gòu)允許用戶在平臺上進(jìn)行自由擴(kuò)展,目前在全世界范圍內(nèi)已經(jīng)有大量的商業(yè)的或者免費的MATLAB二次開發(fā)產(chǎn)品發(fā)布(比如FEMLAB和PSS)。換句話說,用戶購買一套MATLAB,獲得的是世界范圍的專家支持。而對于用戶自己開發(fā)的算法包,MATLAB也提供了包括Compiler應(yīng)用發(fā)布和Web網(wǎng)絡(luò)發(fā)布在內(nèi)的眾多方式的發(fā)布途徑,使得用戶一方面能夠充分地利用MATLAB的算法資源形成技術(shù)成果,同時又可以有效的保護(hù)自己的知識產(chǎn)權(quán)。
隨著 MATLAB 在行業(yè)內(nèi)影響力的快速擴(kuò)大,與 MathWorks公司形成戰(zhàn)略聯(lián)合的公司和尋求與 MATLAB 進(jìn)行接口的軟硬件產(chǎn)品的也日益增多。目前 MATLAB 所支持的第三方產(chǎn)品已經(jīng)有三百余種,分布在科學(xué)計算、機(jī)械動力學(xué)設(shè)計、化工、信息工程,汽車、金融財務(wù)等各個學(xué)科領(lǐng)域,接口方式包括聯(lián)合建模、數(shù)據(jù)共享、開發(fā)流程拼接等等。
小結(jié):
網(wǎng)絡(luò)仿真技術(shù)是一種全新的網(wǎng)絡(luò)規(guī)劃設(shè)計方法,該技術(shù)以其獨特的技術(shù)手段,成為一種經(jīng)濟(jì)、有效和其他傳統(tǒng)方法不可替代的網(wǎng)絡(luò)設(shè)計的有力工具。未來數(shù)年將是網(wǎng)絡(luò)仿真技術(shù)蓬勃發(fā)展的時期,今后網(wǎng)絡(luò)仿真技術(shù)必將成為數(shù)據(jù)網(wǎng)絡(luò)規(guī)劃設(shè)計不可缺少的工具。
參考文獻(xiàn):
[1] http://www.china-ns.com.
[2] http://www.ns.nl.
[3] http://www.opnet.com.
[4] http://www.matlab-world.com.