前言

这是一本关于开源网络模拟器ns-3的书。

网络模拟器可以让人们在一台计算机中搭建出不同规模和类型的网络,从而以一种经济的方式模拟物理网络环境,为人们研究和学习网络协议提供一种方法与平台。编者希望通过本书,将ns-3的设计理念和使用方法系统地介绍给读者。使读者能够有效地利用ns-3这一功能强大的网络模拟器,更好地为自己的学习和研究服务。

全书分3篇,共14章。

第1篇 全局之观,共2章。这一部分意在让读者建立对ns-3的宏观概念,了解ns-3的背景、基本原理和使用方法。

第2篇 设计之道,共5章。这一部分意在让读者了解ns-3的核心设计思想和整体软件架构。熟悉这些设计特性对理解ns-3源代码大有裨益。

第3篇 模拟之路,共7章。前4章按照自顶向下的顺序分别讲解了不同网络层协议的基本架构和模拟方法。后3章分别介绍了数据收集与统计、与物理网络交互和网络分组3个常用功能。

附录部分介绍了ns-3网络地址的用法和几个比较成熟的ns-3第三方开源项目。

本书的大部分内容均来自ns-3用户文档、邮件列表和项目主页等公开网络资源。编者结合多年的ns-3开发经验,对这些零散的材料进行了重新整理、总结和再加工,对其中已经过时的内容进行了更正。但需要强调的是,本书不是ns-3用户文档的替代。对于一些操作细节和非核心功能,读者还需要查阅相关文档资料。

对于ns-3初学者,编者建议首先阅读第1篇,以熟悉ns-3的基本概念和使用方法。第2篇和第3篇并无阅读优先级顺序。读者既可以按序阅读,先建立对源代码的理解能力,再深入了解如何模拟某个网络协议;也可以先阅读第3篇中自己感兴趣的网络协议章节。如果感到阅读源代码较为吃力,则可以查阅第2篇中的相关内容。

本书基于ns-3.28版本编写。大部分章节均为ns-3核心特性,未来版本产生重大改动的可能性不大。考虑到ns-3一年两至三次的版本发布频率,对于一些诸如参数设置、函数名称等细节内容,编者还是建议在阅读时以ns-3最新官方文档为准。

本书假设读者具有计算机网络的基础知识并了解C++语言的基本特性。

感谢ns-3项目联合创始人、执行董事、华盛顿大学Tom Henderson教授为本书作序。感谢褚兴军、申砾和王思轩三位专家为本书撰写推荐语。感谢ns-3社区的Nicola Baldo、Marco Miozzo和Tommaso Pecorella对编者在学习和使用ns-3过程中的耐心指导。感谢Google公司和欧洲航天局对ns-3社区的资金支持。感谢我的博士生导师,加拿大UNB大学宋薇教授在我攻读博士期间对我的包容与帮助。特别感谢我的家人,她们对我的付出与理解,是我坚持写作的基石。

由于编者水平有限,书中难免有错谬之处,还望广大读者批评指正,将不胜感激。编者的联系邮箱:dizhizhou@hotmail.com。

周迪之

2018年5月