OMNetpp学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
OMnetpp作为一种仿真工具(与ns2,opnet并列),在P2P仿真方面具有很大的优势。
模块概念
模块
OMnetpp中功能被封装为一个个的模块。简单模块(simple modules)为基本模块,每个simple module完成一个基本功能。Compound module由多个simple module组成。
Messages, Gates, Links
massage是模块之间通信的媒介,可以包含复杂的结构体。
Gates are the input and output interfaces of modules; messages are sent out through output gates and arrive through input gates.
Each connection (also called link) is created within a single level of the module hierarchy: within a compound module, one can connect the corresponding gates of two submodules, or a gate of one submodule and a gate of the compound module。
包传输模拟
connections可以使用物理链路模拟。支持的参数有:data rate, propagation delay, bit error rate and packet error rate, and may be disabled. 这些参数在channel对象中。
参数
Modules 可以拥有参数。Parameters can be assigned in either the NED files or the configuration file .
Topology Description Method
The user defines the structure of the model in NED language descriptions (Network Description).
Programming the Algorithms
Simulation objects (messages, modules, queues etc.) are represented by C++ classes.
They have been designed to work together efficiently, creating a powerful simulation programming framework. The following classes are part of the simulation class library:
>>module, gate, parameter, channel
>>message, packet
>>container classes . queue, array)
>>data collection classes
>>statistic and distribution estimation classes (histograms, P2 algorithm for calculating quantiles etc.)
>>transient detection and result accuracy detection classes
使用OMNetpp
building and running simulations
一个OMNetpp model 由以下几部分组成:
1. NED语言拓扑描述(.ned 文件):使用参数,gates等描述module结构。NED文件可以用任意text editor编辑,但OMNetpp IDE提供了两种方式:图形与文本。
2. 消息定义(.msg 文件)定义各种消息类型。 OMNetpp会将消息定义转换成C++类。
3.简单模块源文件(Simple module sources):C++文件
仿真系统包括两部分:
1.仿真内核
2.用户接口
3. NED语言
NED概述
NED特点:
1)层次性:复杂模块由简单模块组成
2)模块化
3)接口
4)继承性
5)包结构的管理:如Java
6)内部类型:(可以定义局部变量)
7)Metadata annotations(元数据注解?)
NED开始
图1 网络举例
channel类型
可以定义channel 类型
一些简单模块(App, Routing, and Queue)
简单模块定义有关键字:simple。在这个例子中,我们定义了node为简单模块(traffic generation, routing, etc. 其实也挺复杂的)。应当定义一些简单模块,然后组合起来组成一个复合模块(compound module)。一个流量生成的简单模块,一个路由模块,一个队列模块。(We'll have one simple module for traffic generation (App), one for routing (Routing), and one for queueing up packets to be sent out (Queue))
这些放在, 和文件中。
NOTE:
module 类型名称首字母大写,gate,parameter等用小写。NED区分大小写。
@display()称作display string,在图形环境中显示。"i=..."定义默认图标。
一般的,在NED中@-words如@display 称作properties 。用来注释metadata,可以用于files, modules, parameters, gates, connections, and other objects, and parameter value
复合模块
此为node的定义。复合模块可以和简单模块一样,有parameter,gate。
简单模块