Simulator NS2簡介及功能模組

2021-08-22 20:31:49 字數 3576 閱讀 4956

ns是一種針對網路技術的源**公開的、免費的軟體模擬平台,研究人員使用它可以很容易的進行網路技術的開發,而且發展到今天,它所包含的模組已經非常豐富,幾乎涉及到了網路技術的所有方面。所以,ns成了目前學術界廣泛使用的一種網路模擬軟體。在每年國內外發表的有關網路技術的學術**中,利用ns給出模擬結果的文章最多,通過這種方法得出的研究結果也是被學術界所普遍認可的,此外,ns也可作為一種輔助教學的工具,已被廣泛應用在了網路技術的教學方面。因此,目前在學術界和教育界,有大量的人正在使用或試圖使用ns。

然而,對初學者來說,ns是非常難於掌握的,一般人從學習ns到上手至少需要半年多時間。原因是多方面的:一方面,ns內容龐雜,隨軟體所提供的手冊更新不夠快,初學者閱讀起來非常困難;另一方面,使用ns還要掌握其它很多必備的相關知識以及相關工具,這會使初學者感到無從入手;有的使用者可能還不了解網路模擬的過程或是對ns軟體的機制缺乏理解,這也影響了對ns的掌握。另外,不論在國外還是國內,還沒有一本書能集中回答和解決這些問題,這也是ns難於被掌握的乙個重要原因。

1、ns2簡介

ns2(network simulator, version 2)是一種物件導向的網路**器,由uc berkeley開發而成。它本身有乙個虛擬時鐘,所有的**都由離散事件驅動的。目前ns2可以用於**各種不同的ip網,已經實現的一些**有:網路傳輸協議,比如tcp和udp;業務源流量產生器,比如ftp,telnet,web cbr和vbr;路由佇列管理機制,比如droptail,red和cbq;路由演算法,比如dijkstra等。ns2也為進行區域網的**而實現了多播以及一些mac 子層協議。ns2 使用c++和otcl作為開發語言。ns可以說是otcl的指令碼直譯器,它包含**事件排程器、網路元件物件庫以及網路構建模型庫等。事件排程器計算**時間,並且啟用事件佇列中的當前事件,執行一些相關的事件,網路元件通過傳遞分組來相互通訊,但這並不耗費**時間。所有需要花費的**時間來處理分組的網路元件都必須要使用事件排程器。它先為這個分組發出乙個事件,然後等待這個事件被排程回來之後,才能做下一步的處理工作。事件排程器的另乙個用處就是計時。ns是用otcl和c++編寫的。由於效率的原因,ns將資料通道和控制通道的實現相分離。為了減少分組和事件的處理時間,事件排程器和資料通道上的基本網路元件物件都使用c++寫出並編譯的,這些物件通過對映對otcl直譯器可見。

當**完成以後,ns將會產生乙個或多個基於文字的跟蹤檔案。只要在tcl指令碼中加入一些簡單的語句,這些檔案中就會包含詳細的跟蹤資訊。這些資料可以用於下一步的分析處理,也可以使用nam將整個**過程展示出來。

2、使用ns進行網路**的方法和一般過程

進行網路**前,首先分析**涉及哪個層次,ns**分兩個層次:乙個是基於otcl程式設計的層次。利用ns已有的網路元素實現**,無需修改ns本身,只需編寫otcl指令碼。另乙個是基於c++和otcl程式設計的層次。如果ns中沒有所需的網路元素,則需要對ns進行擴充套件,新增所需網路元素,即新增新的c++和otcl類,編寫新的otcl指令碼。整個**的過程簡圖如圖2所示:

假設使用者已經完成了對ns的擴充套件,或者ns所包含的構件已經滿足了要求,那麼進行一次**的步驟大致如下:

(1) 開始編寫otcl指令碼。首先配置模擬網路拓撲結構,此時可以確定鏈路的基本特性,如延遲、頻寬和丟失策略等。

(2) 建立協議**,包括端裝置的協議邦定和通訊業務量模型的建立。

(3) 配置業務量模型的引數,從而確定網路上的業務量分布。

(4) 設定trace物件。ns通過trace檔案來儲存整個模擬過程。**完後,使用者可以對trace檔案進行分析研究。

(5) 編寫其他的輔助過程,設定模擬結束時間,至此otcl指令碼編寫完成。

(6) 用ns解釋執行剛才編寫的otcl指令碼。

(7) 對trace檔案進行分析,得出有用的資料。

(8) 調整配置拓撲結構和業務量模型,重新進行上述模擬過程。

ns2採用兩級體系結構,為了提高**的執行效率,ns2 將資料操作與控制部分的實現相分離,事件排程器和大部分基本的網路元件物件後台使用c++實現和編譯,稱為編譯層,主要功能是實現對資料報的處理;ns2的前端是乙個otcl 直譯器,稱為解釋層,主要功能是對模擬環境的配置、建立。從使用者角度看,ns2 是乙個具有**事件驅動、網路構件物件庫和網路配置模組庫的otcl指令碼直譯器。ns2中編譯類物件通過otcl連線建立了與之對應的解釋類物件,這樣使用者間能夠方便地對c++物件的函式進行修改與配置,充分體現了**器的一致性和靈活性。

2、ns2的功能模組

ns2**器封裝了許多功能模組,最基本的是節點、鏈路、**、資料報格式等等,下面分別來介紹一下各個模組。

⑴事件排程器:目前ns2提供了四種具有不同資料結構的排程器,分別是鍊錶、堆、日曆表和實時排程器。

(2)節點(node):是由tclobject物件組成的復合元件,在ns2中可以表示端節點和路由器。

(3)鏈路(link):由多個元件復合而成,用來連線網路節點。所有的鏈路都是以佇列的形式來管理分組的到達、離開和丟棄。

(4)理(agent):負責網路層分組的產生和接收,也可以用在各個層次的協議實現中。每個agent連線到乙個網路節點上,由該節點給它分配乙個埠號。

(5)(packet):由頭部和資料兩部分組成。一般情況下,packet只有頭部、沒有資料部分。

3、ns2的軟體構成

ns2包含tcl/tk,otcl,ns,tclcl。其中tcl是乙個開放指令碼語言,用來對ns2進行程式設計;tk是tcl的圖形介面開發工具,可幫助使用者在圖形環境下開發圖形介面;otcl是基於tcl/tk的物件導向擴充套件,有自己的類層次結構;ns2為本軟體包的核心,是物件導向的**器,用c++編寫,以otcl直譯器作為前端;tclcl則提供nsh和otcl的介面,使物件和變數出現在兩種語言中。為了直觀的觀察和分析**結果,ns2 提供了可選的xgraphy、可選件nam。

4、ns現有的**元素

從網路拓撲**、協議**和通訊量**等方面介紹ns的相應元素:

⑴網路拓撲主要包括節點、鏈路。ns的節點由一系列的分類器(classifier,如位址分類器等)組成,而鏈路由一系列的聯結器(connector)組成。

⑵在節點上,配置不同的**可以實現相應的協議或其它模型**。如ns的tcp**,傳送**有:tcp,tcp/reno,tcp/vegas,tcp/sack1,tcp/fack,tcp/fulltcp等,接收**有:tcpsink,tcpsink/delack。tcpsink/sack1,tcpsink/sack1/delack等。此外,還提供有udp**及接收**null(負責通訊量接收)、loss monitor(通訊量接收並維護一些接收資料的統計)。

⑶網路的路由配置通過對節點附加路由協議而實現。ns中有三種單播路由策略:靜態、會話、動態。

⑷在鏈路上,可以配置頻寬、時延和丟棄模型。ns支援:drop-tail(fifo)佇列、red緩衝管、cbo(包括優先權和round-robin 排程)。各種公平佇列包括:fq,sfq,drr等。

⑸通訊量**方面,ns提供了許多通訊應用,如ftp,它產生較大的峰值資料傳輸;telnet則根據相應檔案隨機選取傳輸資料的大小。此外,ns提供了四種型別的通訊量產生器:①expoo,根據指數分布(on/off)產生通訊量,在on階段分組以固定速率傳送,off階段不傳送分組,on/off的分布符合指數分布,分組尺寸固定;②poo,根據pareto分布(on/off)產生通訊量,它能用來產生長範圍相關的急劇通訊量;③cbr,以確定的速率產生通訊量,分組尺寸固定,可在分組間隔之間產生隨機抖動;④traffic trace,根據追蹤檔案產生通訊量。

MPEG 2簡介及MPEG 2編譯碼 2

概括地說,mpeg 2影象壓縮的原理是利用了影象中的兩種特性 空間相關性和時間相關性。一幀影象內的任何乙個場景都是由若干畫素點構成的,因此乙個 畫素通常與它周圍的某些畫素在亮度和色度上存在一定的關係,這種關係叫作空間相關性 乙個節目中的乙個情節常常由若干幀連續影象組成的影象序列構成,乙個 影象序列中...

MPEG 2簡介及MPEG 2編譯碼 2

概括地說,mpeg 2影象壓縮的原理是利用了影象中的兩種特性 空間相關性和時間相關性。一幀影象內的任何乙個場景都是由若干畫素點構成的,因此乙個 畫素通常與它周圍的某些畫素在亮度和色度上存在一定的關係,這種關係叫作空間相關性 乙個節目中的乙個情節常常由若干幀連續影象組成的影象序列構成,乙個 影象序列中...

MPEG 2簡介及MPEG 2編譯碼 1

mpeg 2簡介及mpeg 2編譯碼 mpeg是活 像專家組 movingpictureexpertsgroup 的縮寫,於1988年成立。目前mpeg已頒布了三個活 像及聲音編 碼的正式國際標準,分別稱為mpeg 1 mpeg 2和mpeg 4,而mpeg 7和mpeg 21都在研究中。mpeg ...