4.1 NS2簡介
NS 是 Network Simulator 的英文縮寫,字面翻譯即為網路模擬器,又稱網路模擬器。NS2 則是網路模擬器的第 2 版。
NS2是一款OPEN SOURCE的網路環境模擬軟體,最初由UC Berkeley開發而成。他最初為了研究大規模網路以及當前和未來的網路協定交互行為而開發。它為有線和無線網路上的TCP、路由和群播等協定的模擬實現提供了強有力的支援。NS2 是一個原始碼開放的軟體,所有源始碼都開放,任何人可以獲得、使用和修改其源代碼。正因為此,世界各地的研究人員每天都在擴展和更新它的功能,為其添加新的協定支援和功能模組。它也是目前網路研究領域應用最
廣泛的網路環境模擬軟體之一。
NS2(Network Simulator, version 2)是一種面向物件的網路模擬器,它本質上是一個離散事件模擬器,本身有一個虛擬時鐘,所有的模擬都由離散事件驅動的。目前 NS2 可以用於模擬各種不同的通信網路。它功能強大,模組豐富,已經實現的一些仿真模組有:網路傳輸協議,如TCP和UDP;應用程式流量產生,如FTP、Telnet、Web CBR和VBR;路由佇列管理機制,如Droptail、RED和CBQ;路由演算法,如Dijkstra,以及無線網路的WLAN,Ad hoc 路由,移動 IP和衛星通信網路等。NS2 也為進行區域網路的模擬而實現了多播以及一些 MAC 層協議。
NS2使用了被稱為對應物件模型的開發機制,採用C++和Otcl兩種語言進行開發。他們之間採用 TclCL 進行自動連接和映射。考慮效率和操作便利的原因,NS 將資料通道和控制通道的實現相分離。為了減少分組和事件的處理時間,事件調度器和資料通道上的基本網路元件物件都使用 C++編寫,這些物件通過 TclCL 映射對 Otcl 直譯器可見。這樣,使用者只要通過簡單易用的 Tcl/OTcl 編寫出script,對模擬拓撲、節點、連線等各種元件和參數進行方便快速的配置。NS 可以說是 Otcl 的腳本直譯器,它包含模擬事件調度器、網路元件物件庫等。事件調度器控制模擬的過程,在適當時間啟動事件佇列中的當前事件,並執行該事件。網路元件類比網路設備或節點的通信,他們通過制定模擬場景和模擬進程,交換特定的分組來類比真實網路情況,並將執行情況記錄到紀錄文件(稱為 Trace 文件)中,以提供給使用者進行分析解讀,獲取模擬結果。NS 採用這種對應模型提高了模擬效率,加快了模擬速度,又提供了模擬配置的靈活性和操作的簡便性。
4.2 NS2應用層元件
NS2為了進行網路模擬,基本上模型也是對應OSI網路模型來進行套件管理,其中對於Applcation層有許多的traffic generator來產生封包情形進行模擬,如FTP、CBR、Telnet,為了達到本專題進行真實封包的模擬,使用的Traffic generator 是 Traffic trace這個套件,使用Traffic trace此套件時所使用的Tcl指令如下
而使用這個套件時有一必要條件,就是必須提供一二進位制檔案來讓 Tcl script進行讀取,這一二進制檔案以4個byte為一個欄位,第一個欄位為發送之時間間隔,單位為μs,第二欄位為封包大小,單位為byte。
但 NS2所提供的Traffic trace有一特點,為了避免讀取同一檔案時兩者的傳輸是同步的狀態而所產生出的結果會有極端的差異,NS2下的Traffic trace的起始點會從其中一個封包隨機開始,接著進行循環。但這並不符合我們想進行影像傳輸的原則,因此我們對這一個模組進行了修改,使他一定從第一個封包開始傳送,且傳送完不再重頭開始,這樣Traffic trace就能完成我們的需求。
4.3 NS2傳輸層元件
在 NS2中提供多種transport layer 模型,在NS2中稱為agent,設置的方法是在兩個節點上設置一個發送端及一個接收端,而在NS2中可以進行設置的有許多種,大部分為TCP不同的機制,而在本專題中影像傳輸是使用UDP來進行傳輸的,UDP的設置指令如下
4.4 NS2無線網路環境模擬
對於NS2來說,無線網路環境其實是一個比較複雜的環境,其中對於原來的NODE必須延伸更多的屬性成為mobile node,而原來有線環境下使用的link也不再適用,取而代之的是channel,對於一個mobile node它可以有以下的參數
Available options for node configuration (see tcl/lib/ns-lib.tcl) . |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
而設定 mobile node時通常我們如下列設定,變數給定值的不同可以給予不同的環境
在本專題中我們使用 802.11e環境來進行影像傳輸的模擬,因此我們需要一個EDCF的模型,我們 用 http://www.tkn.tu-berlin.de/research/802.11e_ns2/ 中所提供的EDCF模組來進行模擬,他是一個具有802.11e環境的模組,可以進行階層式服務的模擬,在設置方面,繼承了原先的802.11系列的設定而修改了一部份而達到目的,在設定方面也並不複雜,原先我們只需要這樣變更
而對於連線封包的優先順序則是設置於 agent之中
4.5 NS2 error model
無線網路環境下還有一個現象,也就是比起有線網路,他的錯誤率會較為高,而 NS2在原先的模組下只考慮到傳輸的情況,而並沒有錯誤的情況,為此我們採用一個error model來模擬環路環境中因雜訊而產生的錯誤,這個錯誤模型位於接收端的最下層,一旦隨機錯誤產生封包則被丟棄
對這個 error model我們可以在節點上設定他的error rate,透過一個變數set-error-level來進行操控某條連線,使用Tcl來對某個特定時間更改這個變數,即可將網路環境設定成錯誤率不停變化的環境。
4.6 trace file
NS2中所產生出的模擬結果檔它的格式如下
其中第一欄位表示事件,第二欄位表示發生時間,第三欄位及第四欄位為事件發生地點,第五欄位表示封包類型,第六欄位表示大小,第七欄位為 FLAG,第八欄位為flow id,第九及第十欄位為來源及目的地,第十一欄位為封包編號,第十二欄位為封包id,對於此一檔案進行分析就可以了解網路模擬狀況。