序
当我在2018年6月为本书撰写序时,恰逢ns-3离散事件网络模拟器首版本(ns-3.1)发布10周年。在过去的10年中,先后有两百多名开发者联合起来,通力合作,使ns-3发展成为计算机网络学者的一项重要研究工具。尽管如此,我们依然有很多工作要做。ns-3需要与现有的通信标准与协议保持同步,需要跟上编程语言、大规模实验平台和Linux容器化技术发展的步伐。
到目前为止,关于ns-3的书籍非常稀少。我相信这本著作和其他类似的作品将有助于弥合现有在线文档和ns-3初学者需求间的差距。ns-3是一个具有陡峭学习曲线的工具,其源代码全部使用C++语言编写(一个并非为了网络模拟而定制的编程语言)且没有一个外部集成开发或可视化环境。对于那些已经熟悉类似软件(如ns-2)或Linux内核编程的用户,学习过程可能会相对轻松一些。但对于其他人来说,像本书这样的读物可以提供一个必要的知识基础,让人们更快地掌握ns-3。
本书首先综述了如何编写和运行ns-3模拟脚本,然后从底层讲起,阐述了ns-3中C++语言的扩展和设计模式,如内存管理、默认属性和动态类型系统。在此基础上,作者概述了从应用层到无线网络层的各种ns-3协议层模型。最后的几个章节分别介绍了数据收集与统计框架、与物理世界交互扩展以及一些相关项目等内容。
本书作者的ns-3之旅是从他作为一名学生入选2012年谷歌编程之夏(Google Summer of Code)项目开始的。在那里,他为ns-3的LTE模块开发了一系列的分组分发器。之后作者又入选了2013年欧洲航天局的太空编程之夏项目,负责开发深空通信中延迟容忍网络架构的Bundle协议模块。随着技术水平的不断提高,作者已成长为ns-3组织在谷歌编程之夏项目中的一名导师,指导2018年夏天的一项意在扩展ns-3可用性的模拟运行管理项目。我希望本书的读者中能够有人追随作者的脚步,向开源项目回馈代码,进而指导其他人的开发工作。
伴随着互联网上新型协议的普及和5G网络的问世,ns-3开发者们正在努力工作,保持与日新月异的计算机网络技术同步发展。展望未来10年,我相信ns-3在工业和教育中的应用会继续促进用户基数的增长。在这个过程中,如何提高各种大型拓扑环境中ns-3无线结点的可扩展性是我们未来必须面对的一项技术挑战。为此,我们可能需要综合使用一些如新型并行计算和抽象非模拟细节等方法。考虑到可行性、可重复性和可扩展性,网络模拟极有可能在研究活动中继续发挥其突出作用。与众多开源项目一样,一个由众多尽责志愿者组成的社区是ns-3继续前行的基石。希望我们以新的想法和新的朋友一起迎来ns-3发展的下一个10年。
Tom Henderson
委任教授
华盛顿大学
执行董事
ns-3联盟
2018年6月