Ns模擬器

ns(來源於“network simulator”)是一系列離散事件網路模擬器,包括ns-1ns-2ns-3。他們主要套用於研究和教學。ns-3是自由軟體,以GNU GPLv2協定分發。

基本介紹

  • 中文名:Ns模擬器
  • 外文名:network simulator
  • 版本ns-1ns-2ns-3
  • 套用:研究和教學
簡介,歷史,ns-1,ns-2,ns-3,設計,組件,模擬工作流程,批評,參見,

簡介

ns(來源於“network simulator”)是一系列離散事件網路模擬器,包括ns-1ns-2ns-3。他們主要套用於研究和教學。ns-3是自由軟體,以GNU GPLv2協定分發。
ns-3項目的目標是創建一個開放的用於研究的網路模擬環境,以便於學術團體;這意味著兩件事:
  • 它需要滿足現代網路研究模擬的需要
  • 它需要創建一個社區,鼓勵貢獻、評審並且提高軟體質量。
因為創造一個巨大、高質量且被充分測試的網路模擬器需要大量的工作,ns-3項目將任務分配給了社群的各個開發者和用戶。

歷史

REAL 是 ns 的原型,始於1989年。

ns-1

ns的第一版,被稱作ns-1,由勞倫斯伯克利國家實驗室(LBNL)的Steve McCanne、Sally Floyd、Kevin Fall和其他貢獻者開發於1995-1997年間。這時期它常被稱為LBNL網路模擬器(LBNL Network Simulator),源於早期的由S. Keshav編寫的REAL模擬器。模擬器的核心由C++寫成,和以Tcl腳本為基礎的模擬場景。長期的貢獻來源於Sun加州大學伯克利分校的Daedelus項目和卡內基梅隆大學Monarch項目。

ns-2

在1996-1997年間,ns的第二版(ns-2)最初由Steve McCanne重構而來並用MIT的OTcl替代了Tcl語言,OTcl是一個面向對象的Tcl方言。ns-2的核心部分依舊由C++寫成,但是C++模擬對象和變數也可在OTcl中使用。模擬腳本由OTcl寫成。這樣的結構使得模擬方案能由解釋器運行,同時方便的更改而不用重新編譯模擬器。在ns-2推出的時期(1990中葉),這樣的方式非常方便並且避免了浪費時間的編譯操作。而且腳本語言的語法更加清晰。ns-2有一個一起工作的部件,被稱作“Network Animator”(nam-1),由Mark Handley編寫,用來圖形化的展示模擬場景。
1997年,DARPA的Virtual InterNetwork Testbed(VINT)項目啟動,勞倫斯伯克利國家實驗室Xerox PARC、加州大學伯克利分校和南加州大學信息科學研究所(ISI)參與其中。ns-2的迅速開發正是在這個時期。同時維護軟體的任務漸漸地由ISI接手,最終John Heidemann領導了這個維護任務。在完成了VINT項目後,ns-2在2001-2004年繼續由DAPRA SAMAN和NSF CONSER贊助,最終贈與USC/ISI。
現在,ns-2包含了超過30萬行代碼,並且存在相當多的一部分代碼未被合併到主線中。(因為有許多ns-2分支,包括被維護的和未維護的)它能夠運行在GNU/LinuxFreeBSDSolarisOS X和Windows 95/98/NT/2000/XP上。ns-2以GPL v2協定分發。

ns-3

ns-3的開發始於2004-2005年間。Tom Henderson(華盛頓大學)領導的一個團隊、George Riley(喬治亞理工學院)、Sally Floyd(國際計算機研究中心)和Sumit Roy(華盛頓大學),申請並受美國國家科學基金會(NSF)資助,共同開發ns-2的替代品,被稱作ns-3。於此同時,INRIA Sophia Antipolis的Planete研究小組內的Mathieu Lacage和Walid Dabbous開始尋找一個ns-2的替代品,以用於測試IEEE 802.11Wi-Fi模型。Lacage原先使用的模擬器名叫Yet Another Network Simulator(yans)。
兩股力量一起合作,在2005年2月的ns-developers郵件列表上討論ns-3的設計方案。在2005年2月22日,Tom Henderson在ns-developers郵件列表上發了一封郵件,說“我們想要討論一下未來ns-2如何被重構或者被分支(至少在現在並行的開發,並且維護已有的代碼,”We intend to have some discussions on how some of ns-2 might be either refactored or forked as part of a future development effort (in parallel, for now, with maintenance of the existing code tree)“)。一些主要的目標包括了更好的支持網路模擬、復用生成代碼和更好的集成以testbed為基礎的研究工具。在ns-3的開發過程中,他們決定不再向下兼容ns-2,這主要是因為向後兼容需要太多的額外工作。新的模擬器將從頭編寫,使用C++
ns-3的開發始於2006年7月1日。代碼主要由Mathieu Lacage編寫,並利用了部分yans模擬器、喬治亞理工學院網路模擬器(GTNetS)及ns-2的代碼。Gustavo Carneiro貢獻了一個框架,包括生成Python綁定(pybindgen)及使用Waf編譯系統。
2008年6月,ns-3發布了ns-3.1,之後項目在每個季度發布,直到最近變成了1年3次發布。ns-3在2012年第三季度發布了它的第15版(ns-3.15)。
目前三個版本的狀態:
  • ns-1不再開發和維護
  • ns-2隻維護,
  • ns-3處於活躍的開發中。

設計

ns-3由C++Python寫成,並且以這兩種作為編寫腳本的語言。

組件

ns-3被分為24個模組,包括幾個真實網路設備和協定的模組。

模擬工作流程

大致上,創建一個模擬可以被分為以下幾個步驟:
  1. 拓撲定義:創建基本設施和相互關係,ns-3有一個嚮導能夠幫助完成此過程。
  2. 模型使用:添加模型(例如UDP、IPv4、點對點設備和連結、套用);此時大多數操作可通過嚮導完成。
  3. 節點和連線配置:設定模型默認值(例如,一個程式傳送的包的大小和點對點連線的MTU值);此時大多數操作可過屬性系統完成。
  4. 執行:模擬事件,用戶請求數據。
  5. 性能分析:在模擬完成後帶時間戳的事件跟蹤記錄可供使用。這些數據能被工具,例如R語言分析並且得到結論。
  6. 圖形可視化:原始或處理過的數據能被工具,例如Gnuplotmatplotlib或是Xgraph畫出。

批評

對ns-2的批評主要是因為建模非常複雜並且耗時。主要是因為它沒有GUI並且需要學習腳本語言、佇列理論和建模技術。並且,最近有人抱怨模擬結果不可重現(可能是由於代碼庫的不斷變更)和使用某些協定一直碰到bug。
對ns-3的批評主要有它缺少ns-2支持的協定和不向後兼容ns-2。因為沒有GUI界面,所以和ns-2一樣,ns-3也需要大量的時間來學習。

參見

相關詞條

熱門詞條

聯絡我們