ns (模拟器)

✍ dations ◷ 2025-08-02 14:11:07 #网络技术,计算机网络分析,模拟软件,通信工程

ns(来源于“network simulator”)是一系列离散事件网络模拟器,包括ns-1、ns-2和ns-3。他们主要应用于研究和教学。ns-3是自由软件,以GNU GPLv2协议分发。

ns-3项目的目标是创建一个开放的用于研究的网络模拟环境,以便于学术团体;这意味着两件事:

因为创造一个巨大、高质量且被充分测试的网络模拟器需要大量的工作,ns-3项目将任务分配给了社群的各个开发者和用户。

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也需要大量的时间来学习。

相关

  • 注意异常心理学 行为遗传学 生物心理学 心理药物学 认知心理学 比较心理学 跨文化心理学 文化心理学 差异心理学(英语:Differential psychology) 发展心理学 演化心理学 实验心理学
  • 积极治疗积极治疗(英文:Curative care)指的是所罹患的疾病因仍有痊愈(英语:Cure)机会,故而以治愈疾病为目的而采取的积极治疗策略。积极治疗与预防性治疗(预防性医疗)及和缓医疗不同。预防性
  • 消炎抗炎性(英语:Anti-inflammatory)指物质或治疗能减少炎症的特性。消炎药占约止痛药的一半。消炎药以消炎作用来减少疼痛,与鸦片类药物不同,后者影响中枢神经系统以阻断疼痛讯号传
  • 激光切割镭射切割(英语:Laser cutting)是一种使用激光切割材料的技术,通常用于工业制造应用,但也开始被学校,小企业和业余爱好者使用。激光切割的工作原理是通常通过光学系统引导高功率激
  • 赵宪 (朝鲜)赵宪(朝鲜语:조헌/趙憲;1544年-1592年),字汝式,号重峯,朝鲜王朝儒学家。本贯白川赵氏。他是东国十八贤之一,与高敬命(朝鲜语:고경명)、金千镒(朝鲜语:김천일)和郭再祐合称壬辰四忠臣(韩语:임진
  • 后弓兽后弓兽(学名),又名滑距兽,是一种长颈的南美洲的有蹄动物,属于滑距骨目。它有长的四肢,每肢上有三趾。最古老的化石可追溯至约7百万年前,而在约1万年前的更新世晚期便失去了化石纪录
  • 臭臭锅臭臭锅,通常是指有锅中有臭豆腐的火锅,而且会由店家烹煮完成后再提供给客人,在台湾亦有许多火锅店贩卖此种火锅。因为有发酵后的酸臭味,故称之为臭臭锅。臭臭锅的由来,张宗阳在几
  • 李明心李明心(1723年-1823年),字孔昭,号镜涵,贵州兴义人,祖籍江苏淮安,清朝官员。李明心于嘉庆二年(1797年)接替汪楠,于台湾担任台湾府淡水抚民同知。台湾府淡水抚民同知又称淡水同知,为台湾清
  • 大逃杀2《大逃杀2:决战天堂》(日语:バトル·ロワイアルⅡ【鎮魂歌】),依据日本作家高见广春所撰写的恐怖小说《大逃杀》为基础改编的电影作品。上映前,导演深作欣二公开发表自身罹患的前
  • 伊丽莎白·多米蒂安伊丽莎白·多米蒂恩(英语:Elisabeth Domitien,1925年-2005年4月26日)是中非共和国在1975年至1976年期间的总理,她也是第一个和迄今唯一能够在中非共和国稳定掌权的女性。