第1篇 全局之观 2
第1章 概述 2
1.1什么是ns-3 2
1.2 Hello, world 3
1.3 ns-3社区 4
1.4 ns-3简史 6
1.5写作习惯 7
第2章 通览 9
2.1下载、编译与运行 9
2.2源代码的目录结构 12
2.3再谈编译:“./waf configure”命令 13
2.4初识脚本 15
2.4.1点对点有线网络:first脚本 15
2.4.2 Wi-Fi无线网络:third脚本 22
2.4.3 Python脚本 29
2.5再探脚本:常用技术解析 31
2.5.1脚本助理:助手类 31
2.5.2参数输入:属性变量 32
2.5.3数据输出:trace变量 37
2.5.4行为控制:命令行 43
2.5.5计划事件:Schedule函数 44
2.5.6回调函数:Callback类 45
2.5.7辅助信息:Log系统 47
2.6网络是如何模拟的 50
2.7信息入口:结点类 53
2.8 ns-3与编程之夏 56
第2篇 设计之道 62
第3章 对象模型架构 62
第4章 Ptr智能指针 65
4.1设计原理 65
4.2使用实例 67
4.3适用范围 70
第5章 对象模型的基石:元信息 71
5.1什么是元信息 71
5.2元信息存储:IidManager类 71
5.3元信息管理接口:TypeId类 72
5.4 TypeId的使用 73
第6章 Object类 76
6.1对象聚合 76
6.2 Object的创建与获取 80
第7章 ObjectBase类 83
7.1属性配置 83
7.1.1创建属性 83
7.1.2属性类型 85
7.1.3 ConfigStore 87
7.1.4全局属性 88
7.2 trace变量 89
7.2.1创建trace 89
7.2.2 trace类型 90
第3篇 模拟之路 94
第8章 应用层 94
8.1架构与脚本 94
8.2内置应用:Application 96
8.2.1分组产生器 100
8.2.2 Internet应用 105
8.2.3应用层trace 106
8.3自定义应用层协议 106
8.3.1 Socket原理与使用 107
8.3.2 Application类 113
第9章 传输层 115
9.1架构与脚本 115
9.2 TCP 117
9.2.1属性与trace 118
9.2.2 TCP分组头结构 119
9.2.3 TCP连接建立与关闭 120
9.2.4窗口管理 121
9.2.5拥塞控制 122
9.3 UDP 125
9.3.1属性与trace 125
9.3.2 UDP分组头结构 125
9.3.3广播与多播 125
9.4传输层协议开发 126
9.5示例脚本 128
9.6非发行版的传输层协议 128
第10章 网络层 130
10.1架构与脚本 130
10.2脚本配置与trace 132
10.3 IP分组头结构 134
10.4 IP地址分配 135
10.4.1手动分配 135
10.4.2自动分配 137
10.5路由协议 139
10.5.1列表路由 139
10.5.2打印路由表 140
10.5.3静态路由 141
10.5.4全局路由 142
10.6网络层协议开发 142
10.6.1隧道协议 142
10.6.2路由协议 145
第11章 链路与物理层 148
11.1有线网络:PPP与CSMA 148
11.1.1架构与脚本 148
11.1.2属性与trace 149
11.1.3队列与错误模型 150
11.2无线局域网:Wi-Fi 151
11.2.1架构与脚本 151
11.2.2属性与trace 154
11.3蜂窝网:LTE 156
11.3.1网络架构 156
11.3.2示例脚本1:无线接入网 157
11.3.3示例脚本2:核心网 159
11.3.4 属性与trace 161
11.4其他无线网络模块简介 162
第12章 数据收集与统计 164
12.1一个例子 164
12.2数据收集 165
12.3数据统计 169
12.4局限 171
第13章 与物理网络交互 172
13.1 TapBridge:模拟网络+物理结点 172
13.2 FdNetDevice:模拟结点+物理网络 174
第14章 网络分组Packet类 177
14.1分组结构 177
14.2分组创建 177
14.3分组头与分组尾 178
14.4分段与重组 179
14.5标签:Tag类 180
附录 183
附录A网络地址 183
附录B第三方ns-3项目 184
参考文献 185