第1章 认识NS 1
1.1 NS与通信网络模拟 1
1.1.1 什么是模拟 1
1.1.2 通信网络模拟概述 1
1.1.3 网络模拟的需求和NS的设计目标 2
1.2 NS原理概述 3
1.3 使用NS进行网络模拟的方法和一般过程 5
1.4 NS的历史与版本 6
1.5 NS手册 7
1.6 相关的工具和资源 8
1.7 NS方法学 9
第2章 NS快速上手 10
2.1 NS的下载与安装 10
2.1.1 在Linux下使用allinone方式安装NS 10
2.1.2 在Windows下安装NS 12
2.2 NS的目录结构 17
2.3 运行NS和nam 17
2.4 第1个Tcl脚本 18
2.5 运行无线模拟 20
第3章 Tcl和Otcl 26
3.1 可扩展的命令语言Tcl 26
3.1.1 基本命令格式 26
3.1.2 变量 26
3.1.3 组合(grouping)和替代(substitution) 27
3.1.4 数学运算 29
3.1.5 流程控制 30
3.1.6 过程 34
3.1.7 数组 36
3.2 Otcl—面向对象的Tcl 37
3.2.1 类和对象 37
3.2.2 成员变量和成员函数的定义 38
3.2.3 对象的初始化和销毁 39
3.2.4 继承 39
第4章 分裂对象模型和TclCL 43
4.1 分裂对象模型 43
4.1.1 为什么要用两种语言 43
4.1.2 Otcl和C++类的对应关系 44
4.1.3 类命名规则 45
4.2 Otcl和C++之间的对象连接 45
4.2.1 TclObject和TclClass 45
4.2.2 变量绑定 47
4.2.3 command方法 49
4.2.4 代码分析 50
4.3 Tcl类 52
4.3.1 获取Tcl类的实例 52
4.3.2 调用Otcl过程 53
4.3.3 返回值 53
4.3.4 对象查找 54
4.4 嵌入的Tcl 54
4.4.1 EmbeddedTcl 54
4.4.2 代码分析 55
第5章 NS基础 57
5.1 NS的事件调度机制 57
5.1.1 模拟和离散事件模拟 57
5.1.2 事件(event) 58
5.2 节点(node) 59
5.2.1 创建节点 60
5.2.2 配置节点 60
5.2.3 分类器(classifier) 63
5.3 链路(link) 68
5.3.1 创建单向链路 68
5.3.2 Tcl中的SimpleLink类 69
5.3.3 Connector类 72
5.4 定时器(timer) 73
5.4.1 C++抽象基类TimerHandler 73
5.4.2 例子:TCP重传定时器 75
5.4.3 Otcl Timer类 76
5.5 分组头管理 77
5.5.1 协议和分组头 77
5.5.2 添加新分组头 79
5.5.3 选择模拟中使用的分组头 79
5.5.4 与分组相关的类 81
5.5.5 例子 88
5.6 代理(agent) 89
5.6.1 Agent类的状态变量和方法 89
5.6.2 协议Agent 89
5.6.3 Otcl中的Agent类 90
5.6.4 UDP 91
5.6.5 TCP 93
5.7 应用层 97
5.7.1 Application类 97
5.7.2 运输层代理的API函数 98
5.7.3 流量发生器(TrafficGenerator类) 100
5.7.4 应用模拟器:Telnet和FTP 104
5.8 无线网络 104
5.8.1 基本的无线模型 105
5.8.2 创建MobileNode 105
5.8.3 移动节点的运动 107
5.8.4 移动节点的组成 107
5.9 trace文件 108
5.9.1 在Tcl中使用Trace类 109
5.9.2 C++的Trace类 111
5.9.3 trace文件格式 113
5.9.4 无线模拟的trace文件格式 117
第6章 相关工具详解 126
6.1 gawk 126
6.1.1 gawk概述 126
6.1.2 开始使用gawk 127
6.1.3 读取输入档案 128
6.1.4 打印输出 129
6.1.5 匹配模式(Pattern) 130
6.1.6 Actions中的运算式(Expression) 131
6.1.7 Actions里面的控制语句 132
6.1.8 内建函数(Built-in Functions) 134
6.1.9 使用者定义的函数(User-defined Functions) 135
6.1.10 应用举例 136
6.1.11 结论 137
6.2 绘图工具gnuplot 137
6.2.1 启动和退出gnuplot 137
6.2.2 简单绘图 138
6.2.3 三维绘图 142
6.2.4 图形显示设置 142
6.3 cbrgen 145
6.4 setdest 146
6.5 threshold工具 148
6.6 nam 149
6.6.1 nam简介 149
6.6.2 Nam用户界面 149
6.6.3 nam入门 150
6.6.4 NS中控制nam动画显示的命令 153
6.7 xgraph 154
6.8 Tracegraph 156
第7章 案例分析 158
7.1 教育. 研究方面的应用 158
7.2 科研应用的一个完整例子 159
7.2.1 科研例子 159
7.2.2 添加协议类 159
7.2.3 增加包头类型 161
7.2.4 编译代码 163
7.2.5 初步测试 163
7.2.6 场景测试 166
7.2.7 trace分析 167
7.2.8 使用nam查看运行过程 172
7.2.9 MFlood类的程序清单 174
第8章 调试技术 183
8.1 Otcl调试技术 184
8.1.1 输出提示信息 184
8.1.2 利用Otcl命令 184
8.1.3 使用Tcl调试器 184
8.2 利用KDevelop调试NS 187
8.2.1 KDevelop简介 187
8.2.2 为NS建立KDevelop工程 190
8.2.3 调试举例 192
8.3 如何区分Otcl错误和C++错误 194
8.4 向别人求助 195