第1章 NS2的简介和安装. 1
1.1 NS2的简介 1
1.2 NS2的安装 2
1.2.1 不同平台对NS2支持情况的比较 2
1.2.2 Linux平台使用allinone方式的安装过程 3
1.2.3 Windows平台Cygwin环境下的安装过程 5
1.2.4 VMware虚拟机环境下的安装过程 8
第2章 NS2初级入门 10
2.1 第一个Tcl脚本 10
2.2 第二个Tcl脚本(无线模型) 12
2.3 第三个Tcl脚本 17
第3章 NS2使用的语言简介 22
3.1 Tcl简介 22
3.1.1 基本命令格式 22
3.1.2 变量和变量赋值 23
3.1.3 字符串 23
3.1.4 表达式 24
3.1.5 指令替代 24
3.1.6 流程控制 25
3.1.7 过程 26
3.1.8 数组 27
3.1.9 输出 28
3.1.10 eval命令 29
3.1.11 upvar和uplevel命令 30
3.1.12 error和catch命令 31
3.2 OTcl简介 31
3.2.1 OTcl与C 的区别 31
3.2.2 基本语法 32
3.2.3 OTcl的CApi 34
3.3 C 简介 34
第4章 分裂对象模型 35
4.1 解释器相关类的介绍和用途 35
4.1.1 Tcl类 36
4.1.2 TclObject类 37
4.1.3 TclClass类 39
4.1.4 TclCommand类 39
4.1.5 EmbeddedTcl类 39
4.1.6 InstVar类 40
4.2 OTcl与C 之间的连接 40
4.2.1 C 对象的创建与删除 40
4.2.2 访问C 对象的属性 41
4.2.3 调用C 对象的方法 43
第5章 NS2详解 46
5.1 NS2的原理 46
5.2 节点 47
5.2.1 节点的基本元素 47
5.2.2 节点方法:设置节点 48
5.2.3 节点设置接口 49
5.2.4 Classifier 51
5.2.5 路由模块和分类器组织 59
5.2.6 相关的Tcl命令 62
5.3 链路 63
5.3.1 创建简单链路 64
5.3.2 最简单的网络拓扑 67
5.3.3 Connector 67
5.3.4 相关的Tcl命令 68
5.4 队列和包调度 69
5.4.1 队列类 70
5.4.2 DropTail类型 72
5.4.3 相关的Tcl命令 73
5.5 延时 74
5.6 代理 75
5.6.1 Agent类的状态变量和函数 76
5.6.2 协议代理 76
5.6.3 OTcl连接 77
5.6.4 TCP 78
5.6.5 UDP 82
5.6.6 相关的Tcl命令 85
5.7 NS2的调度器和事件 85
5.7.1 调度器(Scheduler) 86
5.7.2 事件(event) 87
5.7.3 相关的Tcl命令及例子 87
5.8 定时器 ..88
5.8.1 C 抽象基类TimerHandler 88
5.8.2 设定一个新的定时器 90
5.8.3 例子:TCP重传定时器 90
5.8.4 OTclTimer类 92
5.8.5 相关的Tcl命令 93
5.9 分组头及其格式 94
5.9.1 协议特定的分组头 94
5.9.2 添加新的分组头类型 96
5.9.3 在模拟中选择包含的分组头 96
5.9.4 与分组相关的类 97
5.10 应用程序 103
5.10.1 Application类 103
5.10.2 运输层代理的API函数 104
5.10.3 流量发生器(TrafficGenerator类) 106
5.10.4 应用模拟器:Telnet和FTP 110
5.10.5 相关的Tcl命令 110
5.11 无线网络 111
5.11.1 NS2中的基本无线模型 111
5.11.2 移动节点的创建 112
5.11.3 移动节点的运动 114
5.11.4 移动节点的组成 115
5.12 Trace文件 116
5.12.1 对跟踪的支持 116
5.12.2 OTcl的帮助函数 116
5.12.3 对库的支持和示例 117
5.12.4 C 的跟踪类 118
5.12.5 跟踪文件格式 119
5.12.6 无线模拟的跟踪文件格式 126
第6章 相关工具详解 133
6.1 Gawk 133
6.1.1 Gawk简介 133
6.1.2 如何执行Gawk程序 134
6.1.3 读取输入档案 135
6.1.4 打印输出 136
6.1.5 patterns 139
6.1.6 Action中的算式(Expression) 140
6.1.7 Actions里面的控制语句 141
6.1.8 内建函数(Built-inFunctions) 144
6.1.9 使用者定义的函数(User-definedFunctions) 146
6.1.10 举例 146
6.1.11 结论 147
6.2 Gnuplot 147
6.2.1 举例说明 148
6.2.2 详细讲解 150
6.3 Cbrgen和Setdest 160
6.4 threshold 163
6.5 Nam 164
6.5.1 Nam使用界面 164
6.5.2 Nam动画的主要构件 166
6.5.3 举例说明 167
6.6 xgraph 169
6.7 Tracegraph 175
6.8 GDB 175
6.8.1 如何用GDB调试NS2 175
6.8.2 如何在GDB调试中设定断点 176
6.8.3 如何在GDB调试中执行程序 176
6.8.4 如何在GDB调试中调试程序 176
6.8.5 GDB调试中常用的命令 178
第7章 NS2中的源代码分析 179
7.1 向NS2中添加新的协议 179
7.1.1 头文件ping.h 179
7.1.2 定义函数 180
7.1.3 对NS2已有文件的一些改变 183
7.1.4 Tcl文件 184
7.2 修改NS2自带的Linkstate路由协议 184
7.2.1 NS2平台下修改后的Linkstate模块的流程图 185
7.2.2 对Linkstate路由模块的修改 186
7.3 NS2固定网络与无线网络模拟发送数据的过程 191
7.3.1 固定网中数据的发送流程 191
7.3.2 NS2固定网络模拟发送数据的具体函数分析 192
7.3.3 无线网中数据的发送流程 198
7.3.4 NS2无线网络模拟的具体函数分析 201
参考文献... 218