《OMNeT++网络仿真》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:王俊义,魏延恒,仇洪冰,符杰林编著
  • 出 版 社:西安:西安电子科技大学出版社
  • 出版年份:2014
  • ISBN:9787560632759
  • 页数:351 页
图书介绍:本书分三部分讲解了OMNeTM++通信网络仿真软件的组成、工作原理、仿真实现机制及仿真设计方法,可作为高等学校通信工程、计算机科学与技术及网络工程等专业的高年级本科生教材,也可供相关专业的工程技术人员参考。

第一篇 OMNeT++软件教程 2

第一章 OMNeT++概述 2

1.1 OMNeT++简介 2

1.2建模组件介绍 2

1.2.1建模概念 2

1.2.2分层模块 3

1.2.3模块类型 3

1.2.4 packet传输的仿真 4

1.2.5参数表 4

1.2.6拓扑描述 4

1.2.7算法设计 4

1.3 OMNeT++的使用 5

1.3.1新建并运行仿真 5

1.3.2各分类的内容 6

第二章 NED语言 7

2.1 NED语言概述 7

2.2 NED快速入门 8

2.2.1网络 8

2.2.2引入信道 9

2.2.3简单模块App、Routing、Queue 10

2.2.4复合模块Node 11

2.2.5组合 12

2.3简单模块NED描述 12

2.4复合模块 14

2.5信道 16

2.6参数 17

2.7门 23

2.8子模块 25

2.9连接 27

2.10多重连接 28

2.11参数化子模块类型和连接类型 31

2.11.1参数化子模块类型 31

2.11.2参数化连接类型 33

2.12元数据注释(属性) 33

2.13继承性 36

2.14包结构 36

2.14.1概述 36

2.14.2名称的解析和导入 38

2.14.3名称解析 38

2.15自定义NED函数 39

2.15.1 Define_NED_Function() 39

2.15.2Define_NED_ Math_ Function() 43

第三章 简单模块 45

3.1仿真概念 45

3.1.1离散事件仿真 45

3.1.2事件循环 45

3.1.3消息以及消息处理顺序 46

3.1.4事件记录 47

3.1.5仿真时间 47

3.1.6 FES实现 49

3.2组件、简单模块、信道 49

3.3 OMNeT++类库简介 50

3.3.1基类 51

3.3.2属性的设置及获取 51

3.3.3类名称 51

3.3.4对象的全名称及全路径 52

3.3.5复制对象 53

3.3.6迭代器 53

3.3.7错误处理 53

3.4定义简单模块 54

3.4.1概述 54

3.4.2构造函数 55

3.4.3初始化和终止 55

3.5 cSimpleModule添加类功能 57

3.5.1自定义成员函数handleMessage() 57

3.5.2函数activity() 62

3.5.3如何避免全局变量 66

3.5.4通过子类化继承模块代码 67

3.6访问模块参数 67

3.6.1 volatile和non.volatile参数 68

3.6.2修改参数值 69

3.6.3 cPar类的其他类函数 69

3.6.4虚拟参数数组 70

3.6.5 handleParameterChange() 70

3.7模块日志功能 71

3.7.1仿真信息显示 71

3.7.2 watches and Snapshots函数 72

3.8访问门和连接 74

3.8.1门对象 74

3.8.2连接 77

3.8.3信道 78

3.9发送和接收消息 79

3.9.1自消息 79

3.9.2发送消息 80

3.9.3广播和重发 81

3.9.4延迟发送 82

3.9.5直接发送消息 82

3.9.6数据包传输 83

3.9.7 activity()的消息处理机制 86

3.10信道 87

3.10.1概述 87

3.10.2信道API 88

3.10.2信道举例 89

3.11停止仿真 91

3.11.1正常终止仿真 91

3.11.2错误引发仿真中止 91

3.12有限状态机 91

3.13模块层级结构 96

3.14类函数的跨模块调用 97

3.15 模块的动态创建 98

3.15.1需要动态创建模块的场景 98

3.15.2概述 99

3.15.3创建模块 99

3.15.4动态删除模块 100

3.15.5模块的删除与finish()函数 101

3.15.6创建连接 101

3.15.7移除连接 102

3.16类库中其他类的介绍 102

3.16.1随机数 102

3.16.2容器类:cQueue 104

3.16.3可拓展数组:cArray 105

3.17路由支持:类cTopology 106

3.17.1概述 106

3.17.2基本用法 107

3.17.3最短路径 108

3.18派生新类 110

3.18.1是否基于cOwnedObject 110

3.18.2 cOwnedObject的虚函数 111

3.18.3类的注册 111

3.18.4细节 112

3.19对象所有权管理 115

3.19.1所有权概述 115

3.19.2所有权管理 116

第四章 信号 118

4.1信号设计规则与原理 118

4.2信号机制 119

4.2.1信号ID 119

4.2.2信号发射 119

4.2.3信号值 120

4.2.4订阅信号 121

4.2.5收听者 122

4.2.6收听者的生存周期 123

4.2.7感知模型变化 123

4.3基于信号的统计量记录 124

4.3.1概述 124

4.3.2声明统计量 125

4.3.3发射信号 128

4.3.4编写结果过滤器以及记录器 130

第五章 消息与分组 131

5.1概述 131

5.2 cMessage类 132

5.2.1基本用法 132

5.2.2消息的复制 133

5.2.3消息ID 133

5.2.4消息对象的控制信息 133

5.2.5消息发送的相关信息 134

5.2.6显示字符 134

5.3自消息 134

5.3.1了解自消息 134

5.3.2上下文指针 135

5.4 cPacket类 135

5.4.1基本用法 135

5.4.2识别协议 136

5.4.3 packet传输的相关信息 136

5.4.4封装packet 136

5.4.5引用次数 137

5.4.6封装多个packet 137

5.5添加参数及对象 138

5.5.1添加对象 138

5.5.2添加参数 138

5.6消息定义简介 139

5.7定义消息 140

5.7.1定义消息及分组 140

5.7.2消息字段数据类型 141

5.7.3添加数组字段 142

5.7.4添加类和结构体为字段 143

5.7.5添加指针字段 144

5.7.6消息继承 144

5.7.7修改字段 144

5.8添加字段类 145

5.9结构体 146

5.10消息定义中的C++块 147

5.11使用其他C++类型 147

5.11.1向消息编译器声明数据类型 148

5.11.2 C++声明可见 148

5.12自定义生成类 150

5.12.1指定类函数名称 150

5.12.2通过派生自定义生成类 150

5.12.3 abstract字段 152

5.13使用STL类作为字段 153

5.13.1 typedef名称 153

5.13.2 abstract字段 154

5.14命名空间 155

5.14.1声明命名空间 155

5.14.2 C++块和命名空间 156

5.14.3类型声明与命名空间 156

5.15 描述符类 158

5.16总结 158

第六章 网络图形及动画 160

6.1显示字符串 160

6.1.1显示字符串语法 160

6.1.2显示字符串的位置 160

6.1.3显示字符串的继承规则 161

6.1.4子模块中使用的显示字符串标签 162

6.1.5模块背景中使用的显示字符串 164

6.1.6连接的显示字符串 165

6.1.7消息显示字符串 165

6.2参数替换 166

6.3颜色 166

6.3.1颜色名称 166

6.3.2图标着色 167

6.4图标 167

6.5布局 168

6.6增强动画效果 168

6.6.1在运行时改变显示字符串 168

6.6.2气泡 169

第七章 建立并运行仿真 170

7.1概述 170

7.2 gcc的使用 171

7.2.1 debug以及release版本的构建 172

7.2.2使用外部C/C++库 172

7.2.3全目录树的构建 172

7.2.4自动包含目录 173

7.2.5依赖关系(dependency)的处理 173

7.2.6输出目录文件 173

7.2.7建立共享库和静态库 173

7.2.8递归构建 174

7.2.9自定义生成文件 174

7.2.10拥有多个源目录树的工程 174

7.2.11一个多目录工程例子 174

7.3仿真配置 175

7.3.1配置文件 175

7.3.2配置文件语法规则 176

7.3.3文件的包含 177

7.4配置文件的各部分介绍 178

7.4.1 [General]部分 178

7.4.2 [Config〈configname〉]部分 178

7.4.3各部分的继承语法 179

7.5模块参数的赋值 180

7.5.1使用通配符模式 180

7.5.2使用默认值 182

7.6参数研究 182

7.6.1迭代 184

7.6.2命名迭代变量 185

7.6.3并行迭代 186

7.6.4预定义变量,运行ID 186

7.6.5约束表达式 187

7.6.6不同随机种子下重复运行 187

7.6.7实验、测试及重复 188

7.7配置随机数发生器 190

7.7.1 RNG的数量 190

7.7.2 RNG映射 190

7.7.3随机数种子的自动选择 190

7.7.4手动种子配置 191

7.8运行仿真 191

7.8.1运行可执行仿真文件 191

7.8.2运行共享库 193

7.8.3运行的控制 193

7.9命令行界面Cmdenv 194

7.9.1运行举例 194

7.9.2运行命令指定 195

7.9.3 Cmdenv的INI文件选项 195

7.9.4解释Cmdenv输出 196

7.10图形用户界面Tkenv 197

7.11批处理执行 197

7.11.1使用Cmdenv 198

7.11.2使用shell脚本 198

7.11.3使用opp runall 199

7.12 Akaroa支持并行执行多重重复运行 199

7.12.1简介 199

7.12.2 Akaroa概述 200

7.12.3在OMNET++中使用Akaroa 200

7.13故障排除 201

7.13.1无法识别配置选项 201

7.13.2堆栈问题 201

7.13.3内存泄露及崩溃 203

7.13.4仿真执行过慢 203

第八章 结果记录及分析 205

8.1简介 205

8.2基于信号声明统计量的结果记录方式 205

8.3结果直接记录方式 206

8.3.1统计类及其子类 206

8.3.2分布估计类 206

8.3.3 K分离算法 209

8.3.4暂态检测及结果精度 210

8.4仿真结果记录 211

8.4.1输出向量:cOutVector 211

8.4.2输出标量 212

8.5配置结果收集 213

8.5.1配置信号机制的统计量记录 213

8.5.2热身期 214

8.5.3结果文件名称 215

8.5.4配置标量结果文件 215

8.5.5配置输出向量文件 215

8.5.6将参数保存为标量 216

8.5.7记录精度 217

8.6结果文件格式概述 218

8.6.1输出向量文件 218

8.6.2标量结果文件 218

8.7仿真IDE中的分析工具 219

8.7.1 Scave工具 219

8.7.2过滤命令 219

8.7.3 index命令 220

8.7.4 summary命令 220

8.8统计分析及绘图的其他工具 220

8.8.1 GUNR 221

8.8.2 NumPy和Scipy以及MatPlotLib 221

8.8.3 MATLAB或Octave 221

8.8.4 Gunplot 221

8.8.5 ROOT 221

8.8.6 Grace 222

8.8.7电子数据表程序 222

第二篇 用户指南 224

第一章 仿真集成环境介绍 224

1.1工作台 224

1.2工作空间 225

1.3仿真界面 225

1.4自定义OMNeT++ 225

1.5创建OMNeT++工程 226

1.6工程属性 226

1.7获得帮助 227

第二章 编辑NED文件 228

2.1概述 228

2.2打开旧版的NED文件 228

2.3创建新的NED文件 228

2.4 NED编辑器的使用 230

2.4.1图形模式下的NED编辑 230

2.4.2源代码模式下编辑 234

2.5相关视图 236

2.5.1大纲视图 236

2.5.2属性视图 236

2.5.3画板视图 237

2.5.4问题视图 237

2.5.5 NED继承视图 237

2.5.6模块层次结构视图 238

2.5.7参数视图 238

第三章 编辑INI文件及消息文件 239

3.1概述 239

3.2创建INI文件 239

3.3使用INI文件编辑器 240

3.3.1使用表单模式编辑 240

3.3.2使用文本模式编辑 242

3.4相关视图 243

3.4.1大纲视图 243

3.4.2问题视图 244

3.4.3参数视图 244

3.4.4模块层次结构视图 244

3.4.5 NED继承视图 245

3.5编辑消息文件 245

3.5.1创建消息文件 245

3.5.2消息文件编辑器 245

第四章 C++开发 247

4.1 C++简介 247

4.2预备知识 247

4.3创建C++工程 248

4.4编辑C++代码 249

4.4.1C++编辑器 249

4.4.2头文件浏览视图 250

4.4.3大纲视图 250

4.4.4类型层次结构视图 251

4.5 OMNeT++工程的构建 251

4.5.1基础知识 251

4.5.2控制台视图 252

4.5.3问题视图 252

4.6工程配置 253

4.6.1配置构建过程 253

4.6.2构建配置的管理 253

4.6.3配置工程构建系统 253

4.6.4指定文件夹的makefile生成配置 255

4.6.5工程引用和makefile生成 258

4.7工程特性 258

4.7.1目的 258

4.7.2工程特性的概念 259

4.7.3工程特性对话框 259

4.7.4启用/关闭特性 260

4.7.5通过命令行使用工程特性 260

4.7.6.oppfeatures文件 261

4.7.7如何引入工程特性 261

4.8工程文件 262

第五章 启动和调试 263

5.1概述 263

5.2启动配置 263

5.3运行仿真 263

5.3.1快速运行 263

5.3.2运行配置对话框 264

5.3.3创建一个启动配置 264

5.4批处理执行 266

5.5调试仿真 267

5.6仿真执行和仿真进展报告的控制 267

第六章 Tkenv图形运行环境 269

6.1特性简介 269

6.2启动Tkenv 269

6.3配置选项 270

6.4环境变量 270

6.5主窗口 270

6.6观测仿真运行 271

6.6.1网络和模块 271

6.6.2未来事件集(FES) 272

6.6.3输出向量、柱状图和队列 272

6.7浏览已注册的组件 273

6.8运行和控制仿真 273

6.9查找对象 275

6.10日志和模块输出 276

6.11仿真选项 276

6.11.1 General选项卡 276

6.11.2配置布局算法 276

6.11.3配置动画 277

6.11.4配置时间轴 277

6.11.5.tkenvrc文件 278

第七章 序列图 279

7.1概述 279

7.2创建事件日志文件 279

7.3序列图 279

7.4事件日志表 283

7.5过滤器对话框 285

7.6其他功能 287

7.7示例 288

第八章 结果分析 290

8.1概述 290

8.2创建分析文件 290

8.3分析编辑器的使用 290

8.3.1输入文件 291

8.3.2数据集 293

8.3.3图表 296

8.4关联视图 300

第九章 NED文档生成器概述 302

第三篇 仿真实例 306

第一章 TicToc 306

1.1简单模块TicToc 1 306

1.1.1流程框图 306

1.1.2 NED文件 306

1.1.3配置文件 308

1.1.4仿真结果 308

1.2多模块间通信拓展 308

1.2.1流程框图 308

1.2.2 NED文件 309

1.2.3 C++实现文件 310

1.2.4仿真结果 311

第二章 Aloha协议 313

2.1实验背景 313

2.2实验概述 313

2.3程序流程图 314

2.4代码分析 315

2.4.1部分NED文件分析 315

2.4.2 C++实现文件 317

2.5结果文件分析 320

2.5.1运行画面 320

2.5.2 IN I配置文件 321

2.5.3统计结果 322

第三章 Dyna仿真实现 324

3.1实验概述 324

3.2程序流程图 324

3.3代码分析 326

3.3.1 NED文件分析 326

3.3.2 C++实现文件 328

3.3.3 msg文件 332

3.4结果文件分析 333

第四章 Routing仿真模型 334

4.1实验背景 334

4.2实验概述 334

4.3程序流程图 335

4.4代码分析 336

4.4.1 NED文件分析 336

4.4.2网络的NED语言描述 339

4.4.3 C++实现文件 340

4.5结果文件分析 348

参考文献 351