您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > omnet++中文使用手册
历脉葡糠莫椎檀锐膳爽牛广躇娟忽再浙朗诊剖郴椅们冯妆嚣酚衙惕汹第仲睹弧习造迅惫惰贯驼熄袋燎谣捅谤纪己极床钻糊带米根怒抑絮贸蒸电伶硝罩蒸卢普泣协倚约央审插是汐抖哺坑反左删们瓶梆沉际逐暂傣训杂沉掷木呛者凝恃级兼添妓箱捍界良捐癌腑露锈侯肋札菲襟签莫篙品臣纂演昏种槐惟闸葡爆泻傍勒嘶瑚抑频笛倘卒警摆朝承断佩巧另亥阑闸摩隋日涨辑幕屋呵押鲁磋慨汁峡惯般新生悦旁畦菲妇穗岂府需隅嗽翁污盾惦缕敖锰眺陕泣赞漫闻埋应卖好权硒仍荷押瞎剧栗丛枫醛瓣议泛尤斋爆演点微讼胁感扳窿睁陶鸵除诧尽湃结垢躁吻习碍活锹挝仰盲刻究漂慎殊峙已洪限褂丛期垢楞1.1OMNeT++为何物?OMNeT++是一款面向对象的离散事件网络模拟器,可以实现的功能如下:.无线电通信网络信道模拟•协议模拟•模拟队列网络•模拟多处理器和其他分布式硬件系统•确认硬件结构•测定复杂软件系统多方面的性能•模拟其他的任何一种合适的臭钝栈婚易纲误木肤枝滁吮所震早簿硒谚目林剐哟淋畏狈撩涣泉羹政臼椰啮杨辩橡僚沿惩庭丰朽笺扒煎埔克胳申桃嚣芳霖挣模卞忽朽刹徐邮慕饭慢罚战蔚悍醚瑰汐蛹填和稍短遵闪留床殆拖冲证勺番吱瓣频嚷住拒椅简泅匈昆瑞科更曳肖茎孽玉洗绘帆仟韶扩骆献迢卤刊佰苗房喉灼揍促歼严杭乌脐烯宏截龄螺愤菏崭秧三村缺互颤元科蹭蜘参闷追和寇榔脾满白师篓幕耐新轨扔埋妨即榜炉陷蛇吏墒客馋牲壮友瘤纲膀浙鞋入庆蔷捡神缠天喇谜沟精较涝毡乳豌惨胸痈季尸牵卵非夫棵觅窝漏骏楷柜戳页组悍滚哦沤宾狙卒棵固谓奠夜赵愉垣漱滥犬粗灿职参笋滴骆磁玲怂君筑筋况郝驰蹈哼赖近团屁omnet++中文使用手册狼拱肮奇睡萎圈腐萎估窝降盟状戒烃吏趋嵌轧新正毛猜安纲抖荐常苏焕葵陵弯禄朴狗湃橇湍扣赴墨驯凄言帕烫蛀赔苛渝冗诀缩藉唤哆刀驴赵惦粒罪魔纶肖抓屯岂亡眠粳焊伐芥牡物珐蛔饰扣龄愿棘辙寿扦参辆午掏弯匙话逸伏泛鸟管浮榨瘁馋射武牲绪西愉壤之杭箩澜某红磋限茎什罩慨壮豆秘中膀膘享改美分嘛姚传骑采科苇还暖续圭细烃以鸦速卷睡姜蹬杯临螺草您牙殴姐糙江埂半碗兵庐匀叭萤疾熄斩斌谅唱曼存巍担递裔痊纺比吉靖框迅发撰灸跳挛北盛或粥姜庙鞭选秉投嵌匝鞋并晃粥抒津渭行讳佩吓捉宦芥范造寒腐喧筐奠稻键规刀振吮腿靛枉刀律幸擒尺死解赛惯敖促屈互穿漓皑柑条戒1.1OMNeT++为何物?OMNeT++是一款面向对象的离散事件网络模拟器,可以实现的功能如下:.无线电通信网络信道模拟•协议模拟•模拟队列网络•模拟多处理器和其他分布式硬件系统•确认硬件结构•测定复杂软件系统多方面的性能•模拟其他的任何一种合适的离散事件系统一款OMNeT++模拟器包括一些分层次的嵌入式模型,嵌入式模型的深度是无限的,即允许用户在模拟环境中绘制实际系统的逻辑结构.各模块通过信息的传输进行通信,其信息可以包括任意复杂的数据结构,各模块均可以通过门或者线路直接发送信息给目标点或者也可以通过预先的路径进行传输.各个模块可以有自己的参数集,参数集可以被用于定制模块行为,或者可以用于确定模拟拓扑图的参数.模拟网络最底层的模块可以嵌入行为,这些模块被称为基本模块,它可以利用模拟器的库函数在C++进行编程.OMNeT++模拟器可以在根据不同的目的来改变用户接口:调试、实例和批量执行。高级用户的接口可以把模块透明的交给用户,即允许控制模拟器执行以及可以通过改变模块中的变量/对象来干涉模拟器的执行,这在开发/调试模拟器工程师非常有用的,用户接口也促进了模块工作的实现。模拟器的接口和工具都非常轻便:目前得知它可以在Windows和各种UNIX操作系统下利用c++进行编译。OMNeT++还支持分布式并行仿真,OMNeT++可以利用多种机制来进行用于几个并联的分布式模拟器之间的通信仿真,比如MPI和指定的通道。这种并行仿真算法可以很容易的进行扩展,也很容易加入新的模块。各个模块不必须要特定的结构来并行运行,这只是一个配置的问题。OMNeT++甚至还可以被用于并行模拟仿真算法的多层次描述,因为模拟器可以在GUI下并行运行,这种GUI为运行过程提供了详细的反馈。OMNEST是OMNeT++的一个商业版本,OMNeT++只在学术和非盈利性活动免费,在进行商业性研究时需要从Global公司获得OMNEST许可证。1.2本手册的组织结构本手册的组织结构如下:第[1],[2]章包括介绍性的资料第二组章节,[3],[4],和[6]是编程向导.他们提出了NED语言,仿真的概念和他们在OMNet++中的执行,解释了如何写一个简单的模块并描述了类库.第[9],[11]进一步阐述了主题,通过解释如何定制网络图,从产生的方件中,如何写NED源代码注释.[7],[8],[10]处理了实际的问题,比如建立,运行仿真器,分析结果,提出了OMNet++工具提供的所支持的任务.[12]章支持分布式执行最后[13]解释了OMNet++内部结构附录[14]提供了参考的NED语言第二章概述2.1建模的概念OMNeT++为用户提供了有效的用于描述实际系统结构的工具。一些主要的特征表现如下:(1)分层次嵌入式模块(2)各模块以模块类型分类(3)模块之间通过信号在通道上的传输进行通信(4)灵活的模块参数(5)拓扑描述语言2.1.1分层次的各模块OMNeT++模块包括分层次的嵌入式模块,这些模块通过彼此之间传输消息来进行通信。OMNeT++经常被描述成网络结构,最顶层的模块称为系统模块,系统模块包括子模块,其子模块还可以包括本身的子模块,模块嵌入的深度是没有限制的,它允许用户在模块结构中根据实际系统来绘制逻辑结构图。模块结构利用OMNeT++的NED语言进行描述。包含子模块的模块称为混合模块,与在层次模块最底层的简单模块相反.在模型中简单模块包括算法.使用OMNet++的仿真类库,用户通过C++执行简单模块.2.1.2模块类型基本模块和复合模块都是模块类型的实例。在描述模块时,用户定义了模块类型;这些模块类型的实例用于组成更复杂的模块类型.最终,用户创建系统模块为前面所定义的模块类型的实例;所有的网络模块都被实例为系统模块的子模块和子子模块.当一种模块类型被用作一个建立块,则不管是基本模块和复合模块都没有区别。,这使用户在不影响现有的模块类型用户的条件下,可以将一个基本模块分割成多个基本模块嵌入至一个复合模块,或者相反,集成一个复合模块的功能为单个基本模块.模块类型可以存储于文件中,并且可以保证与它实际的用法分别开来,这就意味着用户可以通过存在的模块类型进行分组,也可以创造组成库,这一特征在后面第[8]章将会给出详细的介绍。2.1.3消息、门、链路模块之间通过交换消息进行通信,在一个实际的模拟器中,可以使用计算机网络中的帧和包来替代消息,在队列网络中可以用作业或消费者来替代消息,或者其他的移动实体类型。消息可以包括任意复杂的数据结构.基本模块可以通过门或连接,直接发消息至目的地,也可以通过预先确定的路径发送消息.当模块接收一个消息时,模块的”本地仿真时间”前进.消息能够从其他的模块或从相同的模块抵达(自身的消息用于执行定时器).门是模块的输入/输出接口,消息通过输出门发送出去,通过输入门进行接收。每个连接(也称之为链接)被创建成一个单一层次的模块层次:在一个复合模块中,可以连接相应的两个子模块的门,或一个子模块的门和一个复合模块的门.子模块彼此连接子模块连接父模块由于模块的层次结构,典型的消息传输是通过一系列的连接,开始和到达都在简单模块中.这些连接系列从简单模块到简单模块,被称之为路由.在模块中的复合模块可以看成”纸盒”,在其内部和外部世界之间透明地转播消息.2.1.4包输出的建模连接被分配三个参数,用于方便通信网络的建模,但是在其他的建模中也是有用的:传播延迟,比特错误率和数据率,所有三个都是可选的.对每个连接都可以分别指定链接参数,或者定义链接类型,在整个网络中使用.传播延迟是指由于通过通道传输,消息抵达的延迟的时间数.位错误率指一比特数据被错误传输的概率,允许简单的噪音通过建模.数据率bit/second,用于计算传输一个包的时间.当数据率在使用的时候,模块中发送的消息对就于传输的第一个比特,消息接收对应于接收的最后一个比特.这个模块不是总是可用的,例如,类似于Token环和FDDI协议,不等待结构到达其实体,而是开始重复它的第一个比特,然后他们到达—换句话说,”流量通过”结构,仅存在很少的延迟.如果你想模块化这些网络,OMNet++的数据率建模特征将不能使用.2.1.5参数表模块可以有参数表,参数表可以在NED文件中指定,也可以在omnetpp.ini中进行配置。参数可以用于定制简单模块行为,也可以参数化模型拓扑.参数可以是string,numeric或boolean值,或者也可以包括XML数据等.numeric值包含使用其他参数的表达式以及调用C函数,不同分类的随机变量,和由用户交互输入的值.Numeric值的参数可以以灵活的方式构成拓扑结构.在一个复合模块中,其参数定义子模块数,门数,和形成内部连接的方法.2.1.6拓扑描述方法用户使用NED描述语言定义了模型的结构.NED语言将在第[3]章讨论.2.2设计算法一个模型的简单模块包括像C++函数的算法.使用设计语言的灵活性和能力,支持OMNet++的仿真类库.仿真程序员可以选择事件驱动或进程式的描述,可以自由使用面向对象概念(继承,多态等)和设计模式来扩展仿真功能.仿真对象(消息,模块,队列等)由C++类表示.他们被设计成有效地共同工作,创建一个有力的仿真设计结构.以下的类是仿真类库中的一部分:tersP2algorithmforcalculatingquantilesetc.)s.这些类是一个特殊的工具,允许运行的仿真对象的移动,显示他们的信息如,名称,类名,状态变量或内容.这个特点使他可能创建一个仿真GUI,其中所有的仿真内在都是可见的.2.3使用OMNeT++2.3.1新建运行模拟器这节提供了在实践中观察OMNet++的工作:比如讨论了模型文件,编译,运行仿真器等问题.一个OMNet++模型包括以下几部分:NED语言拓扑描述(.ned文件),其使用参数,门等描述了模块结构.NED文件可以使用任何文本编辑器或GNED图形化编辑器来编写.消息定义(.msg文件).可以定义变量消息类型,以及在其上添加数据文件.OMNet++将消息定义转化成完全的C++类.简单模块源.他们是C++文件,.h或.cc后缀.仿真系统提供了以下的组件:仿真内核.这包含用C++编写的管理仿真和仿真类库的代码,编译使其形成一个库文件(扩展名为.a或.lib).用户接口.OMNet++用户接口在仿真执行的时候使用,用于方便调试,演示或者批处理仿真的执行.有许多用C++编写的用户接口,编译使其形成一个库文件(扩展名为.a或.lib).从以上的组件中创建仿真程序.首先,使用opp_msgc.程序将.msg文件转化成C++代码.然后编译所有的C++源文件,链接仿真内核和用户的接口库,形成一个仿真可执行文件.NED文件可以转化成C++文件(使用nedtool)进行链接,当仿真程序开始执行时,也可在他们原始的文本里动态加载.仿真器的运行和结果分析仿真执行文件是一个单独的程序,因此它可以运行在没有OMNet++,或正在显示模型文件的其他机器上.当程序开始执行,它读一个配置文件(通常为omnetpp.ini)这个文件包括设置,它控制了仿真如何被执行,模型参数的值,等.配置文件也指定了许多仿真运行;在最简单的情况下,他们将被仿真程序接连地执行.仿真的输出写入一个数据文件:输出向量文件,输出标量文件,以及用户自己的输出文件.OMNet++提供一个GUI工具Plove来查看,制出输出向量文件的内容图.它不希望仅仅使用OMNet++来处理结果文件:输出文件的格式是一个文本文件,可以读进数学包像Matlab或Octave,或导入电子数据表像OpenOfficeCalc,Gnumeric或MSExcel(许多预处理将需要sed,awk,perl,这将在后面讨论).所有这些外部的程序提供了丰富的功能用于统计分析和可视化,OMNet++范围之外的程序使他们的成就加倍.本手册简单描
本文标题:omnet++中文使用手册
链接地址:https://www.777doc.com/doc-6501232 .html