第1章 VRNET简介 1
1.1 VRNET的特点 2
1.2 VRNET的应用范围 2
第2章 VRNET快速入门实例 4
2.1 安装和授权 4
2.1.1 软件安装 4
2.1.2 软件授权(License) 9
2.1.3 编译器安装注意事项 9
2.2 快速入门教程 10
2.2.1 教程简介 10
2.2.2 IDE界面介绍 10
2.2.3 导入已有项目 11
2.2.4 运行模型库已有项目 21
2.2.5 创建新项目 26
第3章 VRNET集成开发环境 41
3.1 概述 41
3.1.1 菜单栏 42
3.1.2 工具栏 45
3.1.3 项目资源管理器 45
3.1.4 属性/大纲视图 48
3.1.5 文件编辑区 49
3.1.6 信息显示区 52
3.2 高级设置 53
3.2.1 属性 53
3.2.2 首选项 55
第4章 VRNET仿真原理 57
4.1 离散事件仿真原理 57
4.1.1 VRNET中的简单模块 58
4.1.2 VRNET中的事件 58
4.2 分组传输模型 59
4.2.1 传输延迟,误比特率和速率 59
4.2.2 链路上的多个传输 59
4.3 无线仿真原理 60
4.3.1 无线收发流程 60
4.3.2 天线的设置和使用 63
第5章 NED语言 64
5.1 NED概述 64
5.2 NED编辑器 65
5.3 简单模块 66
5.4 复合模块 67
5.5 网络 68
5.6 参数 69
5.7 端 69
5.8 信道 69
5.9 子模块 70
5.1 0链路 70
第6章 VRNET对象和类 72
6.1 消息类cMessage 72
6.1.1 cMessage类 73
6.1.2 自消息 75
6.1.3 分组的建模 75
6.1.4 封装 76
6.1.5 附着对象和附着参数 78
6.1.6 消息定义 79
6.1.7 枚举 80
6.1.8 消息声明 80
6.1.9 继承,合成 82
6.1.10 利用已有的C++类型 84
6.1.11 定制生成的类 85
6.1.12 Generation Gap模式 87
6.1.13 在消息类中利用STL 90
6.1.14 消息类cMessage总结 91
6.1.15 消息编辑器 92
6.2 随机数产生类 95
6.2.1 随机数产生器 96
6.2.2 随机数流,RNG映射 96
6.2.3 获取随机数 96
6.2.4 随机变量 97
6.2.5 从柱状图产生随机数 98
6.3 模块参数类cPar 98
6.4 容器中存储数据类cQueue和cArray 98
6.4.1 队列类:cQueue 99
6.4.2 可扩展数组:cArray 100
6.5 路由支持和网络发现类cTopology 101
6.5.1 概述 101
6.5.2 基本用法 101
6.5.3 最短路径 103
6.6 统计类cStatistic与其派生类 105
6.7 分布估计类 105
6.7.1 k分算法 108
6.7.2 瞬时检测和结果准确性 110
6.8 记录仿真结果类 111
6.8.1 输出矢量:cOutVector 111
6.8.2 输出标量 112
6.8.3 精度 113
6.9 变量图形化观察类WATCH 113
6.9.1 基本查看 113
6.9.2 读写查看 114
6.9.3 结构查看 114
6.9.4 STL查看 115
6.9.5 快照 115
6.9.6 获取协同程序栈的用途 117
6.10 发送调试输出和提示输入ev对象 118
第7章 简单模块设计与实现 119
7.1 定义简单模块类型 119
7.1.1 概述 119
7.1.2 构造器 120
7.1.3 构造器和析构器与initialize()和finish()的比较 120
7.1.4 “Garbage collection”和兼容性 121
7.1.5 举例 121
7.1.6 使用全局变量 123
7.2 为cSimpleModule增加功能 123
7.2.1 handleMessage() 123
7.2.2 activity() 126
7.2.3 initialize()和finish() 130
7.2.4 handleParameterChange() 131
7.2.5 通过派生重用模块代码 132
7.3 有限状态机 132
7.4 发送和接收消息 137
7.4.1 发送消息 137
7.4.2 广播和重传 137
7.4.3 延迟发送 138
7.4.4 直接消息发送 138
7.4.5 接收消息 139
7.4.6 wait()函数 139
7.4.7 使用自消息进行事件建模 140
7.4.8 仿真终止 141
7.5 获取模块参数 141
7.6 获取端口和链路 143
7.6.1 端口对象 143
7.6.2 链路属性 143
7.6.3 传输状态 143
7.6.4 连接性 144
7.7 遍历访问各模块 145
7.8 模块间方法的直接调用 146
7.9 动态创建模块 147
7.9.1 何时需要动态创建模块 147
7.9.2 概述 147
7.9.3 创建模块 148
7.9.4 删除模块 149
7.9.5 模块的删除和finish()的调用 149
7.9.6 创建链路 149
7.9.7 删除链路 150
第8章 VRNET项目创建及实现 151
8.1 创建仿真程序 151
8.1.1 概述 151
8.1.2 使用Windows和Microsoft Visual C++ 152
8.2 配置仿真 156
8.2.1 配置仿真 156
8.2.2 配置文件:vrnet.ini 156
8.2.3 配置段 157
8.2.4 设置模块参数 159
8.2.5 参数研究 161
8.2.6 参数研究及结果分析 164
8.2.7 配置随机数发生器 168
8.3 运行仿真 169
8.3.1 简介 169
8.3.2 命令行界面 172
8.3.3 图形化界面 174
8.3.4 批处理 176
8.3.5 疑难解决 178
8.4 分析仿真结果 179
8.4.1 结果文件 179
8.4.2 集成开发环境中的分析工具 180
8.4.3 Scave工具 181
8.4.4 可选的统计分析和绘图工具 182
第9章 VRNET的其他功能 183
9.1 网络图形和动画 183
9.1.1 显示字符串 183
9.1.2 参数的导入 189
9.1.3 颜色 189
9.1.4 图标 190
9.1.5 增强动画效果 191
9.1.6 中文名称 192
9.2 事件日志 194
9.2.1 简介 194
9.2.2 配置 194
9.2.3 事件日志工具 195
9.3 NED文档和消息 196
9.3.1 概述 196
9.3.2 文档注释 196
9.3.3 文本布局与格式化 197
9.3.4 定制和添加页面 200
9.4 插件扩展 201
9.4.1 简介 201
9.4.2 插件描述 202
9.4.3 访问配置 204
9.4.4 执行新的接口 204
第10章 VRNET模型库 206
10.1 标准模型库 206
10.1.1 使用指南 207
10.1.2 常用API函数 240
10.1.3 常用配置项 273
10.2 高级模型库 274
10.2.1 WiMax协议模型库 274
10.2.2 接口模型库 280
10.2.3 无线传播模块WPM 289
第11章 典型通信网络构建实训 302
11.1 包交换案例实训 302
11.1.1 实训目的 302
11.1.2 实训简介 302
11.1.3 创建项目 303
11.1.4 创建简单模块 303
11.1.5 创建消息 307
11.1.6 创建网络 309
11.1.7 实现函数体 313
11.1.8 生成INI文件 317
11.1.9 构建项目 319
11.1.10 使用INI参数,运行仿真 319
11.2 路由协议性能分析案例实训 322
11.2.1 实训目的 322
11.2.2 实训简介 322
11.2.3 使用模型库搭建节点及网络 323
11.2.4 AODV协议仿真 329
11.2.5 DSR协议仿真 332
11.2.6 DSDV路由协议仿真 334
11.3 无线开发实训 335
11.3.1 天线定制实训 337
11.3.2 指定调制曲线实训 343
11.3.3 通信流程定制实训 347
参考文献 377