Can you summarize the following document?
        
  REAL 是 ns 的原型,始於1989年。

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

  在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/Linux、FreeBSD、Solaris、OS X和Windows 95/98/NT/2000/XP上。ns-2以GPL v2協議分發。

  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-3由C++和Python寫成,並且以這兩種作為編寫指令碼的語言。

  ns-3被分為24個模組,包括幾個真實網路裝置和協議的模組。

  大致上,建立一個模擬可以被分為以下幾個步驟:

  對ns-2的批評主要是因為建模非常複雜並且耗時。主要是因為它沒有GUI並且需要學習指令碼語言、佇列理論和建模技術。並且,最近有人抱怨模擬結果不可重現(可能是由於程式碼庫的不斷變更)和使用某些協議一直碰到bug。  對ns-3的批評主要有它缺少ns-2支援的協議和不向後相容ns-2。因為沒有GUI介面,所以和ns-2一樣,ns-3也需要大量的時間來學習。
ns(來源於“network simulator”)是一系列離散事件網路模擬器,包括ns-1、ns-2和ns-3。他們主要應用於研究和教學。ns-3是自由軟體,以GNU GPLv2協議分發。