第一篇 NS的基本知识 3
第1章 绪论 3
1.1NS的背景 3
1.2网络模拟涉及的主要知识点 4
1.3使用NS进行网络模拟的基本过程 5
本章小结 6
第2章 NS的安装和配置 7
2.1Linux操作系统环境 7
2.1.1Ubuntu安装完成后的设置 7
2.1.2Ubuntu上NS必要工具和库文件的安装 8
2.2NS安装 8
2.2.1环境变量的设置 8
2.2.2安装结果的验证 9
2.2.3NS安装过程可能出现的错误分析 9
2.3使用多个NS版本 10
本章小结 11
第3章 Tcl/OTcl语言简介 12
3.1Tcl 12
3.1.1Tcl编程环境 12
3.1.2基本语法 13
3.1.3字符串处理 14
3.1.4数学运算 17
3.1.5流程控制语句 19
3.1.6列表 26
3.1.7过程 27
3.1.8数组 28
3.2OTcl 30
3.2.1类和对象 30
3.2.2类的成员函数和成员变量 30
3.2.3类的构造函数和析构函数 31
3.2.4类的继承 31
本章小结 33
第二篇 NS的架构和网络模拟入门 37
第4章 NS网络模拟入门 37
4.1简单有线网络模型模拟 37
4.1.1网络拓扑 37
4.1.2模拟仿真脚本代码 38
4.1.3仿真的结果分析 40
4.2简单无线网络模型仿真 42
4.2.1网络拓扑 42
4.2.2模拟仿真脚本代码 42
4.2.3仿真结果分析 45
4.3有线+无线混合模拟 46
4.3.1网络拓扑 46
4.3.2模拟仿真脚本代码 47
4.4.3仿真结果分析 50
本章小结 51
第5章 NS的架构 52
5.1NS的模拟实现机制 52
5.1.1分裂对象模型 52
5.1.2离散事件模拟 59
5.2OTcl与C++的交互 59
5.3NS中的层次关系 66
5.3.1层面对应关系 66
5.3.2分组的流程 66
5.3.3使用NS研究适合的层面 69
本章小结 69
第6章 NS的基本组件和使用 70
6.1节点 70
6.1.1节点的结构 70
6.1.2节点的配置 71
6.2链路 73
6.2.1单向链路 73
6.2.2双向链路 74
6.3NS的调度器 74
6.4NS的定时器 78
6.5协议的分组头 80
6.5.1协议特定的分组头 81
6.5.2添加新的分组头类型 82
6.5.3在模拟中分组头的选择 83
6.5.4与分组相关的类 84
6.6NS的链表list 91
6.6.1链表的源码分析 91
6.6.2实际用例 93
6.7Trace文件格式 96
6.7.1有线网络的Trace格式 96
6.7.2无线网络的Trace旧格式 97
6.7.3无线网络的Trace新格式 97
本章小结 99
第三篇 NS仿真辅助及仿真结果分析工具 103
第7章 NS仿真辅助工具 103
7.1数据流生成工具cbrgen 103
7.2拓扑场景生成工具setdest 104
7.3简单动画显示工具NAM 104
7.3.1NAM的使用 105
7.3.2NAM的界面 106
本章小结 106
第8章 gawk语言简介 107
8.1gawk处理文档的过程 107
8.2Pattern和Action 108
8.2.1Pattern 108
8.2.2Action 109
8.3变量 109
8.3.1内部变量 110
8.3.2自定义变量 110
8.4输出打印数据 111
8.4.1print函数 111
8.4.2printf函数 111
8.5Action中的流程控制语句 112
8.6函数 114
8.6.1内部函数 114
8.6.2自定义函数 115
本章小结 115
第9章 使用gnuplot绘图 116
9.1绘图环境和工作方式 116
9.2plot和splot命令 116
9.2.1plot绘制二维图形 117
9.2.2splot绘制三维图形 120
9.3设置图形的显示属性 121
9.3.1坐标轴 121
9.3.2Label 122
9.3.3图的大小和位置 123
9.4综合技巧绘图实例 123
本章小结 128
第10章 Trace文件分析 129
10.1性能参数分析模型 129
10.2网络性能分析 131
10.2.1OTcl脚本代码 131
10.2.2gawk程序代码 135
10.2.3执行分析 139
本章小结 142
第四篇 NS学习进阶 145
第11章 洪泛路由协议的移植 145
11.1协议移植的步骤 145
11.2洪泛路由协议的原理 146
11.3洪泛路由协议的移植 146
11.4验证移植结果 149
本章小结 155
第12章 无线节点通信范围的设置 156
12.1与通信范围相关的物理层参数 156
12.2参数的计算 157
12.2.1Threshold的安装和使用 157
12.2.2Txpower的安装和使用 159
12.3节点的参数设置 160
12.3.1节点的默认参数 160
12.3.2更改节点的通信范围 161
12.3.3不同的节点不同的参数 162
12.3.4验证结果 166
本章小结 167
第13章 扩展NS:业务流的流ID和QoS参数的添加方法 176
13.1流量发生器的修改方法 176
13.1.1修改TrafficGenerator类 177
13.1.2修改流量发生器 178
13.1.3增加新建参数的默认值 178
13.2业务代理(Agent)修改 179
13.3数据分组普通头部修改 179
13.4打印Trace文件部分修改 180
13.5修改结果验证 181
本章小结 185
第14章 流量发生器的原理和流量发生器的构建 186
14.1流量发生器原理 186
14.1.1流量发生器的数学模型 186
14.1.2CBR流量发生器模型代码分析 189
14.2VBR流量发生器 191
14.3移植步骤 194
14.4验证结果 194
本章小结 197
第15章 基于NS的新协议和算法开发 201
15.1模块的体系架构 201
15.1.1帧同步模块 202
15.1.2主模块 202
15.1.3调度树模块 204
15.1.4消息管理模块 205
15.1.5邻居管理模块 206
15.1.6管理消息发送时序协调模块 207
15.1.7数据调度器模块 208
15.2接合部分代码 209
15.3协议整合 212
15.4场景仿真 212
15.5仿真分析 219
15.5.1节点的ID分配 219
15.5.2调度树结构 220
15.5.3邻居列表分析 220
15.5.4节点对管理时序的竞争分析 220
本章小结 222
第五篇 代码调试 225
第16章 调试工具 225
16.1GDB 225
16.1.1关联GDB调试 225
16.1.2GDB常用调试命令 226
16.2tcl-debug 229
16.2.1tcl-debug的安装 229
16.2.2tcl-debug的调试方式和调试命令 230
本章小结 230
第17章 NS调试经验 231
17.1常见错误分析 231
17.2调试实例 232
本章小结 237
附录A 802.16d Mesh工作模式简介 238
A.1无线Mesh网简介 238
A.2IEEE 802.16协议基础 239
A.2.1协议栈参考模型 239
A.2.2节点分类和数据调度方式 240
A.3Mesh模式的帧结构和MAC管理消息 241
A.3.1Mesh模式的帧结构 241
A.3.2Mesh模式下的MAC管理消息 242
A.4节点接入网络过程 244
A.4.1网络扫描,请求入网 246
A.4.2基本能力协商 246
A.4.3节点认证 246
A.4.4节点注册及获取节点ID 246
A.4.5IP、时间以及其余参数配置 246
A.4.6接入完成 247
A.5节点的邻域和扩展邻域 247
A.6Mesh模式管理消息发送时序的协调 247
A.6.1物理邻居列表 248
A.6.2Mesh网络的同步 248
A.6.3MSH-NENT消息的调度 249
A.6.4MSH-NCFG消息和MSH-DSCH消息的调度 249
小结 252
附录B缩略语表 253
参考文献 256