[Simulator] NS2簡介及功能模塊
Posted on 2008-11-28 22:15 kooyee 閱讀(868) 評論(0) 編輯 收藏 所屬分類: Wireless Ad-hoc and sensor networkNS是一種針對網絡技術的源代碼公開的、免費的軟件模擬平臺,研究人員使用它可以很容易的進行網絡技術的開發,而且發展到今天,它所包含的模塊已經非常豐富,幾乎涉及到了網絡技術的所有方面。所以,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將會產生一個或多個基于文本的跟蹤文件。只要在Tcl腳本中加入一些簡單的語句,這些文件中就會包含詳細的跟蹤信息。這些數據可以用于下一步的分析處理,也可以使用NAM將整個仿真過程展示出來。
2、使用NS進行網絡仿真的方法和一般過程
進行網絡仿真前,首先分析仿真涉及哪個層次,NS仿真分兩個層次:一個是基于OTcl編程的層次。利用NS已有的網絡元素實現仿真,無需修改NS本身,只需編寫OTcl腳本。另一個是基于C++和OTcl編程的層次。如果NS中沒有所需的網絡元素,則需要對NS進行擴展,添加所需網絡元素,即添加新的C++和OTcl類,編寫新的OTcl腳本。整個仿真的過程簡圖如圖2所示:
假設用戶已經完成了對NS的擴展,或者NS所包含的構件已經滿足了要求,那么進行一次仿真的步驟大致如下:
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(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的軟件構成
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,根據追蹤文件產生通信量。