百科解釋
1、NS2簡介 NS2是指 Network Simulator version 2,NS(Network Simulator) 是一種針對網(wǎng)絡(luò)技術(shù)的源代碼公開的、免費(fèi)的軟件模擬平臺,研究人員使用它可以很容易的進(jìn)行網(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é)者來說,NS是非常難于掌握的,一般人從學(xué)習(xí)NS到上手至少需要半年多時(shí)間。原因是多方面的:一方面,NS內(nèi)容龐雜,隨軟件所提供的手冊更新不夠快,初學(xué)者閱讀起來非常困難;另一方面,使用NS還要掌握其它很多必備的相關(guān)知識以及相關(guān)工具,這會(huì)使初學(xué)者感到無從入手;有的使用者可能還不了解網(wǎng)絡(luò)模擬的過程或是對NS軟件的機(jī)制缺乏理解,這也影響了對NS的掌握。另外,不論在國外還是國內(nèi),還沒有一本書能集中回答和解決這些問題,這也是NS難于被掌握的一個(gè)重要原因。 NS2(Network Simulator, version 2)是一種面向?qū)ο蟮木W(wǎng)絡(luò)仿真器,本質(zhì)上是一個(gè)離散事件模擬器。由UC Berkeley開發(fā)而成。它本身有一個(gè)虛擬時(shí)鐘,所有的仿真都由離散事件驅(qū)動(dòng)的。目前NS2可以用于仿真各種不同的IP網(wǎng),已經(jīng)實(shí)現(xiàn)的一些仿真有:網(wǎng)絡(luò)傳輸協(xié)議,比如TCP和UDP;業(yè)務(wù)源流量產(chǎn)生器,比如FTP, Telnet, Web CBR和VBR;路由隊(duì)列管理機(jī)制,比如Droptail , RED和CBQ;路由算法,比如Dijkstra等。NS2也為進(jìn)行局域網(wǎng)的仿真而實(shí)現(xiàn)了多播以及一些MAC 子層協(xié)議。 NS2使用C++和Otcl作為開發(fā)語言。NS可以說是Otcl的腳本解釋器,它包含仿真事件調(diào)度器、網(wǎng)絡(luò)組件對象庫以及網(wǎng)絡(luò)構(gòu)建模型庫等。事件調(diào)度器計(jì)算仿真時(shí)間,并且激活事件隊(duì)列中的當(dāng)前事件,執(zhí)行一些相關(guān)的事件,網(wǎng)絡(luò)組件通過傳遞分組來相互通信,但這并不耗費(fèi)仿真時(shí)間。所有需要花費(fèi)仿真時(shí)間來處理分組的網(wǎng)絡(luò)組件都必須要使用事件調(diào)度器。它先為這個(gè)分組發(fā)出一個(gè)事件,然后等待這個(gè)事件被調(diào)度回來之后,才能做下一步的處理工作。事件調(diào)度器的另一個(gè)用處就是計(jì)時(shí)。NS是用Otcl和C++編寫的。由于效率的原因,NS將數(shù)據(jù)通道和控制通道的實(shí)現(xiàn)相分離。為了減少分組和事件的處理時(shí)間,事件調(diào)度器和數(shù)據(jù)通道上的基本網(wǎng)絡(luò)組件對象都使用C++寫出并編譯的,這些對象通過映射對Otcl解釋器可見。 當(dāng)仿真完成以后,NS將會(huì)產(chǎn)生一個(gè)或多個(gè)基于文本的跟蹤文件。只要在Tcl腳本中加入一些簡單的語句,這些文件中就會(huì)包含詳細(xì)的跟蹤信息。這些數(shù)據(jù)可以用于下一步的分析處理,也可以使用NAM將整個(gè)仿真過程展示出來。 2、使用NS進(jìn)行網(wǎng)絡(luò)仿真的方法和一般過程。 進(jìn)行網(wǎng)絡(luò)仿真前,首先分析仿真涉及哪個(gè)層次,NS仿真分兩個(gè)層次:一個(gè)是基于OTcl編程的層次。利用NS已有的網(wǎng)絡(luò)元素實(shí)現(xiàn)仿真,無需修改NS本身,只需編寫OTcl腳本。另一個(gè)是基于C++和OTcl編程的層次。如果NS中沒有所需的網(wǎng)絡(luò)元素,則需要對NS進(jìn)行擴(kuò)展,添加所需網(wǎng)絡(luò)元素,即添加新的C++和OTcl類,編寫新的OTcl腳本。 假設(shè)用戶已經(jīng)完成了對NS的擴(kuò)展,或者NS所包含的構(gòu)件已經(jīng)滿足了要求,那么進(jìn)行一次仿真的步驟大致如下: (1)開始編寫OTcl腳本。首先配置模擬網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),此時(shí)可以確定鏈路的基本特性,如延遲、帶寬和丟失策略等。 (2)建立協(xié)議代理,包括端設(shè)備的協(xié)議綁定和通信業(yè)務(wù)量模型的建立。 (3)配置業(yè)務(wù)量模型的參數(shù),從而確定網(wǎng)絡(luò)上的業(yè)務(wù)量分布。 (4)設(shè)置Trace對象。NS通過Trace文件來保存整個(gè)模擬過程。仿真完后,用戶可以對Trace文件進(jìn)行分析研究。 (5)編寫其他的輔助過程,設(shè)定模擬結(jié)束時(shí)間,至此OTcl腳本編寫完成。 (6)用NS解釋執(zhí)行剛才編寫的OTcl腳本。 (7)對Trace文件進(jìn)行分析,得出有用的數(shù)據(jù)。 (8)調(diào)整配置拓?fù)浣Y(jié)構(gòu)和業(yè)務(wù)量模型,重新進(jìn)行上述模擬過程。 NS2采用兩級體系結(jié)構(gòu),為了提高代碼的執(zhí)行效率,NS2 將數(shù)據(jù)操作與控制部分的實(shí)現(xiàn)相分離,事件調(diào)度器和大部分基本的網(wǎng)絡(luò)組件對象后臺使用C++實(shí)現(xiàn)和編譯,稱為編譯層,主要功能是實(shí)現(xiàn)對數(shù)據(jù)包的處理;NS2的前端是一個(gè)OTcl 解釋器,稱為解釋層,主要功能是對模擬環(huán)境的配置、建立。從用戶角度看,NS2 是一個(gè)具有仿真事件驅(qū)動(dòng)、網(wǎng)絡(luò)構(gòu)件對象庫和網(wǎng)絡(luò)配置模塊庫的OTcl腳本解釋器。NS2中編譯類對象通過OTcl連接建立了與之對應(yīng)的解釋類對象,這樣用戶間能夠方便地對C++對象的函數(shù)進(jìn)行修改與配置,充分體現(xiàn)了仿真器的一致性和靈活性。 3、NS2的功能模塊 NS2仿真器封裝了許多功能模塊,最基本的是節(jié)點(diǎn)、鏈路、代理、數(shù)據(jù)包格式等等,下面分別來介紹一下各個(gè)模塊。 (1)事件調(diào)度器:目前NS2提供了四種具有不同數(shù)據(jù)結(jié)構(gòu)的調(diào)度器,分別是鏈表、堆、日歷表和實(shí)時(shí)調(diào)度器。 (2)節(jié)點(diǎn)(node):是由TclObject對象組成的復(fù)合組件,在NS2中可以表示端節(jié)點(diǎn)和路由器。 (3)鏈路(link):由多個(gè)組件復(fù)合而成,用來連接網(wǎng)絡(luò)節(jié)點(diǎn)。所有的鏈路都是以隊(duì)列的形式來管理分組的到達(dá)、離開和丟棄。 (4)代理(agent):負(fù)責(zé)網(wǎng)絡(luò)層分組的產(chǎn)生和接收,也可以用在各個(gè)層次的協(xié)議實(shí)現(xiàn)中。每個(gè)agent連接到一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)上,由該節(jié)點(diǎn)給它分配一個(gè)端口號。 (5)包(packet):由頭部和數(shù)據(jù)兩部分組成。一般情況下,packet只有頭部、沒有數(shù)據(jù)部分。 4、NS2的軟件構(gòu)成 NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一個(gè)開放腳本語言,用來對NS2進(jìn)行編程;Tk是Tcl的圖形界面開發(fā)工具,可幫助用戶在圖形環(huán)境下開發(fā)圖形界面;OTcl是基于Tcl/Tk的面向?qū)ο髷U(kuò)展,有自己的類層次結(jié)構(gòu);NS2為本軟件包的核心,是面向?qū)ο蟮姆抡嫫鳎肅++編寫,以O(shè)Tcl解釋器作為前端;Tclcl則提供NS2和OTcl的接口,使對象和變量出現(xiàn)在兩種語言中。為了直觀的觀察和分析仿真結(jié)果,NS2 提供了可選的Xgraphy、可選件Nam。 5、NS現(xiàn)有的仿真元素 從網(wǎng)絡(luò)拓?fù)浞抡、協(xié)議仿真和通信量仿真等方面介紹NS的相應(yīng)元素: (1)網(wǎng)絡(luò)拓?fù)渲饕ü?jié)點(diǎn)、鏈路。NS的節(jié)點(diǎn)由一系列的分類器(Classifier,如地址分類器等)組成,而鏈路由一系列的連接器(Connector)組成。 (2)在節(jié)點(diǎn)上,配置不同的代理可以實(shí)現(xiàn)相應(yīng)的協(xié)議或其它模型仿真。如NS的TCP代理,發(fā)送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,還提供有UDP代理及接收代理Null(負(fù)責(zé)通信量接收)、Loss Monitor(通信量接收并維護(hù)一些接收數(shù)據(jù)的統(tǒng)計(jì))。 (3)網(wǎng)絡(luò)的路由配置通過對節(jié)點(diǎn)附加路由協(xié)議而實(shí)現(xiàn)。NS中有三種單播路由策略:靜態(tài)、會(huì)話、動(dòng)態(tài)。 (4)在鏈路上,可以配置帶寬、時(shí)延和丟棄模型。NS支持:Drop-tail(FIFO)隊(duì)列、RED緩沖管、CBO(包括優(yōu)先權(quán)和Round-robin 調(diào)度)。各種公平隊(duì)列包括:FQ,SFQ,DRR等。 (5)通信量仿真方面,NS提供了許多通信應(yīng)用,如FTP,它產(chǎn)生較大的峰值數(shù)據(jù)傳輸;Telnet則根據(jù)相應(yīng)文件隨機(jī)選取傳輸數(shù)據(jù)的大小。此外,NS提供了四種類型的通信量產(chǎn)生器:EXPOO,根據(jù)指數(shù)分布(On/Off)產(chǎn)生通信量,在On階段分組以固定速率發(fā)送,Off階段不發(fā)送分組,On/Off的分布符合指數(shù)分布,分組尺寸固定;POO,根據(jù)Pareto分布(On/Off)產(chǎn)生通信量,它能用來產(chǎn)生長范圍相關(guān)的急劇通信量;CBR,以確定的速率產(chǎn)生通信量,分組尺寸固定,可在分組間隔之間產(chǎn)生隨機(jī)抖動(dòng);Traffic Trace,根據(jù)追蹤文件產(chǎn)生通信量。
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助