当前位置:文档之家› OMNeT_网络仿真器的设计原理分析

OMNeT_网络仿真器的设计原理分析

第29卷第5期2008年5月

微 计 算 机 应 用

M I CROCOMP UTER APP L I CATI O NS

Vol129No15

M ay12008 OM NeT++网络仿真器的设计原理分析

吴剑锋 郭 英 范海宁

(空军工程大学 电讯工程学院 西安 710077)

摘要:简要介绍离散事件模拟器OMNeT++相对于其他仿真器的一些特点,着重介绍其对网络拓扑描述、网络事件处理以及仿真结果分析的支持,并对仿真程序的实现给出了具体步骤。最后结合对ALOHA协议的仿真实例,使用Pl ove工具分析了网络的吞吐性能。

关键词:网络仿真 OM NeT++ NE D语言 ALO HA协议

The Ana lysis of Network S i m ul a tor OM NeT++

W u J ianfeng,Guo Ying,Fan Haining

(Telecom1Engineering I nstitute,A ir Force Engineering University,Xian,710077,China)

Abstract:This thesis intr oduced the basic features of D iscrete Event Si m ulat or OMNeT++,compare with other si m ulat ors1Then,we focus on how did it i m p le ment the support t o the descri p ti on of net w ork t opol ogy,the p r ocessing of net w ork events and analysis of the si m ulati on results1Several step s were given here,t o hel p peop le t o fulfill a si m ulati on1I n additi on,an exa mp le of ALOHA p r ot ocol were shown at last1W e analyzed the out put of the net w ork with the hel p of Pl ove1

Keywords:Net w ork Si m ulati on,OMNeT++,NE D Language,ALOHA Pr ot ocol

1 引言

由于研究方向的不同,许多领域,并不太适合采用实地试验的方式,或者是为了节省时间、资金的目的,最好采用仿真的方式。比方说电路仿真、生物仿真,还有接下来我们要谈到的网络仿真。

国外网络仿真技术已经相当的成熟,目前已经有几种极为优秀的网络仿真软件。而国内由于起步较晚,并没有自主研发的仿真软件,或者是虽然有自主研发的软件,但是只能够应用于极为狭隘的特定项目,不能够对其他的研究者提供广泛地支持。因此,学习和使用国外现有的一些网络仿真软件,对于现阶段国内的研究者来说,是有极大帮助的。

仿真软件按照发行渠道来划分,可以分为商业软件和非商业软件。前者的代表有OP NET、COMNET III,后者则有NS-2、P ARSEC、OMNeT++等。在此只介绍非商业的仿真软件。

在非商业的仿真软件中,最常被接触到的就是网络仿真器NS-2。它推出的时间较长,自身携带的网络模型、协议是最丰富的,但是,它只能够在L inux环境下使用。

2 OM Net++仿真器简介

O MNeT++是一个面向对象的离散事件模拟器,它的全称是Objective Modular Net w ork Testbed in C++。它是由布达佩斯技术大学的András Varga等人设计的一种内核源代码完全开放的仿真软件,可以运行于

 本文于2004-06-07收到。

 5期 

吴剑锋等:OMNeT ++网络仿真器的设计原理分析L inux 、W indows 及DOS 等多个操作平台之下;有两种发布形式,读者可以从OMNeT ++的官方网站①上免费下载,一种是源代码(s ource code )形式,需要在下载之后手动进行编译,还有一种是可执行文件(binary ),可以在W indows NT 以上操作系统中直接安装,目前的最高版本是omnet pp -310p revie w 。

OMNet ++可以应用于任何离散事件的系统,包括模拟通信网的业务流,通信协议的模型,排队网络,模拟多处理器和其他分布式系统,甚至是游戏。它能够建立目前几乎所有网络对象的基本模型之间的互连,并且使复杂的网络交通和拓扑结构得到高度切合实际的模拟和仿真。

OMNet ++的几个特点:①使用C ++语言进行仿真,用户不必再学一门新的编程语言;②提供了一个图形的用户界面,可以动态地观察仿真程序的运行;③生成的仿真程序是可携带的,可以独立运行于多种操作平台之上;④使用参量的方式,可以在不必修改源代码和重新编译的情况下,对不同条件下的网络模型进行仿真;⑤可以使用非常简易的NED (Net w ork Descri p ti on Language )来代替C ++完成对网络拓扑的描述;⑥可以使用变量观察函数及绘图功能将考察的变量实时地绘成曲线,也可以将仿真结果输出到指定文件中,然后再用其提供的工具Pl ove 绘成曲线;⑦通过P VM 支持,你可以同时在多台机器上并行地运行仿真程序;⑧对硬件条件要求不高,运行速度较快,只相当于纯粹用C 编写的P ARSEC 的113倍,而P ARSEC 是一个命令行模式的仿真器。

3 OM NeT ++网络仿真器的设计原理

311 网络拓扑设计

许多非商业仿真工具没有提供明晰地拓扑描述支持:必须编程实现一个“drive entity ”,然后通过这个“drive entity ”创建必要的节点和内部连结来启动这个模型(P ARSEC,S MURPH,NS -2)。还有许多工具(如CLASS )仅仅支持平面拓扑模型描述。OMNeT ++使用了灵活性最大的方法:它提供了一个接近自然语言的拓扑描述语言(NE D language ),同时还有一个图形工具(G NED ),使用者可以同时用这两种方式来描述你的网络拓扑。

NE D 描述的文件可以包含以下几个部分:①输入文件,可以直接引用外部预先定义好的拓扑文件;②信道的定义;③简单和复合模块的定义;④网络的定义。

OMNeT ++中模块的物理层连接,是通过信道的定义来描述的。在仿真当中,主要抽象为三个特征:传播延时(delay )、误码率(err or )以及数据传送速率(datarate )。

channel Channel N ame

delay 01004

err or 0100001

datarate 14400

endchannel

简单模块是网络中最基本的组成部分,它通过自己的参量来表达真实世界的特征,同时,它还可以被复合模块所嵌套(nesting ),并且嵌套的层数是无限制的。通过这种方式,可以将外界的任何实体(如节点、交换机等)抽象为一个复合模块

图1 复合模块图

module Compound Module

para meters:

para m1:nu meric,

para m2:nu meric,

sub modules:

sub module1:Si m p le Module

para meters:

53

微 计 算 机 应 用 2008年p1=10,

p2=para m1+para m2,

//111

end module 包含一个层嵌套的复合模块图见图1。要得到一个可以运行的仿真模型,使用者必须给出一个网络的定义。一个完整的网络包括一个或多个模块(可以是简单模块,也可以是复合模块),各模块之间通过端口(gate )来连接。端口有两种类型:输入端口和输出端口,它是各模块通信的惟一途径,输入端口负责接收消息,输出端口负责发送消息。下面是一个完整的排队网络拓扑图

:

图2 排队网络拓扑图

312 网络运行机制的实现

在OMNeT ++当中,仿真网络的运行,是通

过发送和接收消息的方式来实现的。发送消

息的方式有如下方式。

(1)一般的发送,两个端口已经在之前进

行了连接,当需要进行通信时,可以使用send

(c Message 3m sg,“outGate ”)函数。

(2)当需要模拟通信设备的发送延迟时,

可以使用send Delayed (c Message 3m sg,delay,“outGate ”

)函数。(3)在网络拓扑定义的时候,两个端口因为几乎没有通信,因此没有进行连接,可是在运行当中却发现有必要发送消息,则可以调用直接发送消息函数send D irect (c Message 3m sg,delay,destinati onmodule,“in 2

Gate ”

)。(4)在许多仿真实验当中,都需要实现定时器(ti m er )。比如说,一个通信协议的模块发送出去一个数据包,它必须给自身规定一个超时的时间,在这段时间内,如果没有接收到应答信号,则应该进行超时重发。调用的函数为schedule A t (abs oluteTi m e,c Message 3m sg )。

有了消息发送,就有相应的消息接收,在OMNeT ++当中,实现消息的接收有两种方式。一种是使用线程/协同程序(thread /cor outine )的方式。使用者在相应的activity ()函数当中规定了网络模块的所有功能,当仿真程序运行之后,每一个模块拥有一个实例,它们相互之间完成通信,这种方式可以提高仿真程序的运行速度,但是当仿真中出现的个体数量较多时,对内存的消耗比较大(P ARSEC 和C ++SI M 使用了这种方式)。另一种就是FS M s (Finite State Machine )的方式(OP NET,S MURPH 和NetSi m ++使用了FS M s 方式),使用者只需要根据网络模块可能出现的有限的状态,编写其handle Message ()函数,并且在程序的初始化阶段发送一个起引导作用的消息,整个仿真程序就可以按照你的要求运行下去。因为计算机只能够处理离散事件,所以,当接收到消息之后,仿真程序按照一定的规则分时地处理消息:①到达时间戳较早的消息优先处理;②如果到达时间相等,则具有高优先级的消息提前处理;③如果优先级相同,则发送时间较早的消息优先处理

通过以上这套机制,OMNeT ++便给使用者留下了充分地发挥空间,用户可以灵活地使用标准C ++语句或者是软件本身定义的几个基本类,完成对目前几乎所有网络模型的模拟和仿真。

313 对仿真结果分析提供的支持

仿真的目的就是为了分析结果,对网络的实时运行情况得到理性地认识,仿真结果的数据必须能够完整收集。OMNeT ++提供了实时跟踪和输出向量。两种分析数据的能力前者通过watch ()函数,实时地将用户观察的变量值收集起来,并绘成柱状图;后者能够将用户关心的网络中发生的每个事件,例如数据包在队列或链路中丢弃、到达、离开的行为都如实地记录下来,并以向量的方式输出到一个文件当中,使用者可很

63

 5期 吴剑锋等:OMNeT ++网络仿真器的设计原理分析方便地利用绘图工具Pl ove 绘出变化曲线。

4 仿真实例

411 仿真步骤

一个完整的仿真程序所需要进行的步骤是:①建立NED 文件,给出网络中各模块的描述,还有网络拓扑的定义;②用C ++语言实现网络中各层模块的功能;③建立一个omnet pp 1ini 文件(文件名不可以更改),在里面给出仿真网络的名称,还可以改变网络模块中参量的赋值(不必重新编译);④编译、连接成可执行文件,运行仿真程序;⑤记录仿真程序运行情况,分析网络性能。

412 仿真程序实现

在这里对夏威夷大学的Nor man Abra m s on 等人提出的多路访问协议ALOHA 进行仿真。这里采用的是没有划分时隙(sl ot )的纯ALOHA 协议,有一台服务器,20台主机,数据包长度为952bit,数据传送率为9600bp s,主机处理时延为0101s,数据包的产生服从强度为2的Poiss on 分布,下图是仿真程序运行的情况,其中,服务器只负责接受数据包,主机则负责产生和发送数据包,图中的三个黄色的点表示同时有三台主机在发送,这样就形成了一次碰撞。当仿真程序产生了2000个数据包后,我们将其终止,然后来分析下图的网络性能。虚线表示碰撞所经历的时间,图中最高值为015s,所以肯定同时有多个数据包发生了碰撞;实线表示纯ALOHA 协议的信道利用率,我们可以看出,当网络稳定下来之后,信道的利用率基本上接近理论上的最高利用率01184,这个利用率是比较低的,所以,为了提高ALOHA 协议的实用性,人们又提出了分隙(Sl ot 2ted )ALOHA 协议

参 考 文 献

1 htt p://www 1Omnet pp 1org/.

2 A 1Varga 1OMNeT ++Object -oriented D iscrete Event Si m ulati on Syste m U ser M anual 1URL reference:htt p://www 1omnet pp 1org/external/doc /ht m l/us man 1php 1

3 Youli Zhuang,Ed Casas .Perfor mance Analysis of Destinati on Multi p lexing f orW ireless LAN s .Depart m ent of Electrical and Com 2puter Engineering University of B ritish Colu mbia 1

4 M 1I noue .Channel state dependent res ource scheduling f or wireless message trans port with framed ALOHA -reservati on access p r ot ocol .I E I CE Transacti on on Fundamentals of Electr onics,Communicati ons and Computer Sciences .

作者简介

吴剑锋,男,(1979-),硕士生,研究方向:信号与信息处理。73

相关主题
文本预览
相关文档 最新文档