Ns (模拟器)

历史

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

设计

ns-3由C++和Python写成，并且以这两种作为编写脚本的语言。

组件

ns-3被分为24个模块，包括几个真实网络设备和协议的模块。

批评

对ns-2的批评主要是因为建模非常复杂并且耗时。主要是因为它没有GUI并且需要学习脚本语言、队列理论和建模技术。并且，最近有人抱怨模拟结果不可重现（可能是由于代码库的不断变更）和使用某些协议一直碰到bug。
对ns-3的批评主要有它缺少ns-2支持的协议和不向后兼容ns-2。因为没有GUI界面，所以和ns-2一样，ns-3也需要大量的时间来学习。