OMNet++ 10 分钟教程 本文适合对网络模拟器有一定了解的读者,阅读本文时,最好同时打开用户手册和API文档以便随时查阅。 1. 在 omnetpp.org中提到的仿真模型和框架与 OMNet++是什么关系? OMNet++提供了基本的工具和机制来编写仿真代码,但它本身并不提供任何特定用于计算机网络仿真,系统架构仿真和任意其它领域的组件;具体的仿真是由一些仿真模型和框架如 Mobility Framework或 INET Framework来支持,这些模型独立于 OMNet++开发,并有自己的发布周期。 2. OMNet++提供了什么? 一个 C++库,它由仿真内核及一些用来创建仿真组件(简单模块和信息)的工具类(如随机数生成,统计收集,拓扑发现等);组装和配置这些组件的基础设施(NED语言,ini文件);运行时用户接口或仿真环境( TKenv,Cmdenv);一个用来设计,运行和评估仿真的IDE环境;实时仿真的扩展接口;MRIP,并行的分布式仿真,数据库连接等等这些组成。 3. OMNet++的仿真模型是什么样的? OMNet++提供了一个基于组件的架构,模型是由可重用的组件或模块组成的。模块之间可以通过 gates(在其它系统中称为 ports,即端口)进行连接,以构成复合模块。每个仿真模型是一个复合模块类型的实例。这一层次(组件和拓扑)由 NED文件来处理。例如,一个名为 EtherMAC的组件可以用NED来描述: // // Ethernet CSMA/CD MAC // simple EtherMAC { parameters: string address; // others omitted for brevity gates: input phyIn; // to physical layer or the network output phyOut; // to physical layer or the network input llcIn; // to EtherLLC or higher layer output llcOut; // to EtherLLC or higher layer } 它可以使用在下面的Ethernet station的模型中: // // Host with an Ethernet interface // module EtherStation { parameters: ... gates: ... input in; // for connecting to switch/hub, etc output out; submodules: app: EtherTrafficGen; llc: EtherLLC; mac: EtherMAC; connections: app.out --> llc.hlIn; app.in <-- llc.hlOut; llc.macIn <-- mac.llcOut; llc.macOout --> mac.llcIn; mac.phyIn <-- in; mac.phyOut --> out; } 其中,注释能用来生成文档。简单模块,例如上面的EtherMAC,会与一个 C++ 文件关联以...