中文手册地址
之前一直学习的是mininet,但是所做的方向有一个开源的代码,和我需要的框架一样,它用的仿真器是Omnetpp-5.4.1。
概述
omnet++是开源的基于组件的模块化的开放网络仿真平台。是离散事件仿真器,具备强大完善的图形界面接口和可嵌入式仿真内核。可以简便定义网络拓扑结构,具备编程,调试和跟踪支持等功能。omnet++主要用于通信网络和分布式系统的仿真。
1.1omnet++框架
1.1.1omnet++组成
六个部分:
1.仿真内核库(simulation kernel library,sim)->核心
2.网络描述语言的编译器(network description compiler,nedc)
ned是模块化的网络描述语言。网络描述包括大量的对组件的描述,如通道,简单和符合模块的类型。这些组件描述可用于各种不同的网络描述中。NED语言用来定义模型中的网络拓扑结构,较为简单的拓扑可以使用GNED,但复杂网络的拓扑描述还应该用NED源文件方式书写。
3.图形化的网络编辑器(graphical network description editor,GNED)
4.仿真程序的图形化用户接口-Tkenv
omnet++的用户接口用于实现仿真程序的人机交互,omnet++允许模型内部机制对用户可视化,也允许用户启动和终止仿真,并更改模型内部的变量。
用户接口和仿真内核的交互是通过一个已定义的接口实现的。无需改变仿真内核,就可以实现不同类型的用户接口。同样无需更改模型文件。仿真模型可在不同接口下运行。用户可以在强大图形化用户接口下测试和调试仿真程序,并最后可在简单快速的用户接口中运行,而且该接口支持批处理。
对仿真进行的测试和调试可以在Tkenv接口下进行,Tkenv是一个简单易用的图形窗口化的用户接口,支持跟踪,调试和执行仿真的功能。在执行仿真过程中的任意时刻都能够提供详细的状态信息。Tkenv的主要特征有:各模块的文本输出有其独立的窗口,仿真过程中可以在Tkenv窗口中看到自传消息,支持仿真动画,标记断点,具有检查窗口,可以检查和改变模型中的变量,执行过程中仿真结果的图形化显示并且结果可以用柱状图和时间序列图显示,仿真可重新进行,快照文件用于显示模型的详细信息。
5.仿真程序的命令行用户接口-Cmdenv
cmdenv接口用于实际的仿真实验,因为cmdenv支持批处理。cmdenv是一个简便的小型命令行接口,执行速度快。它可以在所有操作系统平台上运行。cmdenv可以一次批处理配置文件中所有的仿真。
6.图形化的输出工具-Plove和Scalar
用户编写的仿真程序要同sim连接。
1.1.2omnet++结构
1.具有模块化的结构
(1)执行模块和sim
仿真内核管理将来的事件,当有事件发生时,仿真内核就调用执行模型中的模块。执行模型的模块存储在sim的main对象中。执行模型依次调用仿真内核的函数并使用sim库中的类。
(2)sim和模型组件库
当仿真开始运行创建了仿真模型的时候,仿真内核就实例化简单模块和其他的组件。当创建动态模块时,仿真内核也要引用组件库。实现在模型组件库中注册和查询组件也是sim的功能。
(3)执行模型和envir
ev对象作为envir的一部分,是面向执行模型的用户接口。仿真模型使用ev对象来记录调试信息。
(4)sim和envir
由envir决定创建何种模型,envir包含主要的仿真循环,并调用仿真内核以实现必须的功能。envir捕捉并处理执行过程中发生在仿真内核或类库中错误和异常。
(5)envir和tkenv,cmdenv
envir定义了表示用户接口的TOmnetApp基类,tkenv和cmdenv都是tomnetapp的派生类。main()函数是envir的一部分,为仿真决定选用合适的用户接口类,创建用户接口类的实例并执行。sim和模型对ev对象的调用通过实例化tomnetapp类进行。envir通过tomnetapp和其他类的方法实现tkenv和cmdenv的框架和基本功能。