APP下载

基于OPNET 的进程建模方法研究

2021-03-24齐和平崔雪峰李萌萌

火力与指挥控制 2021年2期
关键词:链路进程建模

彭 思,齐和平,崔雪峰,朱 浩,李萌萌

(北方自动控制技术研究所,太原 030006)

0 引言

在信息技术飞速发展的今天,网络结构和规模日趋复杂庞大,网络负载日益繁重,新的网络技术大量涌现,因此,如何对现有网络进行优化和设计是个富有挑战性的课题。无论是构建新网络,升级改造现有网络,或者测试新协议,都需要对网络的可靠性和有效性进行科学、客观、定量地评估。传统网络设计和规划方法主要靠经验,而对复杂的大型网络,由于很多地方无法预知而抓不住设计的要点。网络仿真作为一种新的网络规划和设计技术应运而生,它以其独有的方法为网络的规划设计提供客观、可靠的定量依据,缩短网络建设周期,提高网络建设中决策的科学性[2]。

网络仿真技术是一种通过建立网络设备、链路和协议模型,并模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据的仿真技术。OPNET Modeler 的物件拼盘提供了详尽的模型库(设备、链路及详细的协议),包括:路由器、交换机、服务器、客户机、ATM 设备、DSL 设备、ISDN 设备等,还有其他厂商提供的设备[8,10]。针对研发的需求,OPNET Modeler 提供了一个开放的环境,使用户能够建立新的协议和设备,并且能够将细节定义并模拟出来。OPNET Modeler 仿真平台的使用范围较广,既可以用于现有网络的优化和扩容,也可以用于新网络的设计,而且特别适用于大中型网络的设计和优化,建好的网络模型也可以延续使用[7]。本文以OPNET Modeler 仿真工具为例,通过对停-等重传协议的仿真建模、运行分析,重点探究了进程建模的技术方法,同时简要阐述了本文研究方法和模型的使用方法,为后续更复杂庞大的协议开发、网络仿真奠定基础,提供参考。

1 通用仿真流程和OPNET 仿真环境

1.1 通用仿真流程

通用仿真方法大致分为以下几个步骤:

1)了解自己要构建的系统:书面的详述说明。

2)明确建模目标:包括构建这个模型要解决什么问题,或是利用系统级仿真软件验证自定制的网络协议路由性能的收敛性、网络的健壮性和稳定性。

3)确定建模对象和方向:根据建模目标选择建模要构建的对象,例如在网络当中可能需要用到哪些元素(IP 骨干云,不同的链路类型等),从哪个方面建模:例如从升级链路带宽的角度入手,判断对吞吐量和时延的影响。

4)调整仿真粒度以达到更精确的结果:明确是要得到一个趋势性的结果,还是一个精确的数值。

5)确定输入输出形式。

6)确定仿真软件。

7)确定仿真参数输入范围。

8)仿真结束后判断仿真结果的准确性、详细程度、统计可用性[3-6]。

通用仿真方法流程图如图1 所示。

图1 通用仿真方法流程图

1.2 OPNET 仿真环境简介

OPNET 网络仿真软件是目前世界上最先进的网络仿真平台之一。在OPNET 的各种产品中,Modeler 几乎包含了其他产品的所有功能。OPNET Modeler 所能应用的各种领域包括端到端结构、系统级的仿真、新的协议开发和优化、网络和业务层配合如何达到最好的性能。OPNET Modeler 采用分层的仿真方式,从协议间关系看,节点模型建模完全符合OSI 标准。从网络物件层次关系看,提供了3层建模机制,最底层为进程模型,以状态机来描述协议;其次为节点模型,由相应的协议模型构成,反映设备特性;最上层为网络模型。3 层模型和实际的协议、设备、网络完全对应,全面反映了网络的相关特性。在OPNET Modeler 中,几个模块组成一个节点,一些节点组成一个网络,而进程模型定义一个模块的行为,所以它是构建网络的基本,是仿真的核心[1]。

2 OPNET 环境下对停-等重传协议的建模与仿真

2.1 停-等重传协议基本原理

停-等重传协议位于信源端的第2 层mac 层,是数据链路层最简单最基础的协议。其功能是为所传输的数据包提供可靠的交付,它和源端的上层和底层都有交互,接收上层来的数据包,转发给底层,并且保证在没有收到数据包的情况下进行重传,达到可靠交付的功能。

停-等重传协议简化后可总结为如下描述:1)接收来自上层的数据包,转发给物理层。2)转发下一个数据帧之前要确认从对端收到一个反馈确认包,表示上一个帧转发成功才会发送下一个帧。3)在等待反馈确认包的过程中收到来自应用层的数据包,先将其缓存起来,直到收到对端的反馈确认包才会转发下一个帧。4)源端会自动设置一个时钟,当超过这一时间还未收到来自对端的反馈确认包时,会认为对端没有收到数据包,会重传数据包。5)当链路掉线时,会将数据包缓存起来,直到链路恢复后进行重传。

2.2 进程建模

进程建模是网络仿真的核心,也是网络仿真的难点。进程建模方法分为以下5 个步骤:

1)文本定义;2)进程分解;3)事件列举;4)事件列表的开发;5)OPNET 中代码的实现。

下面根据这5 个步骤分别对停- 等重传协议源端和目的端节点进程进行建模。

2.2.1 源端节点进程建模

1)文本定义:根据协议描述,确定当前协议和其他协议栈的交互关系。交互关系框架如图2 所示。

图2 协议栈交互框架

2)进程分解:根据要仿真的协议和算法确定采用单一进程模型还是多进程模型来实现。本协议采用单进程来进行建模。

3)事件列举:把协议描述中可能发生的事件一一列举出来,并指定其在OPNET 中是什么中断类型。如表1 所示,将事件与中断类型作一列举和映射。

表1 事件与中断类型

4)事件列表的开发:该部分是进程建模的核心部分。采用逐层遍历的方式对事件列表进行开发。即:先确定一个初始状态,按照“顺藤摸瓜”的方式遍历第3 步列出来的所有事件,再去遍历每个事件下可能的条件,分析可能的跳转方向,最后分析在这个条件下执行什么操作以及可能会转移的状态。当所有事件都遍历完后事件列表处于一个收敛的状态[9]。下面结合停-等重传协议来分析一下事件列表的遍历过程。构建进程模型首先要确定一个初始状态(Init),从初始状态下来分析哪些事件会发生。表2 展示了从Init 状态出发的事件响应情况。表3 展示了从ACK Wait 状态出发的事件响应情况。其余状态的事件响应以此为例即可构建。

表2 Init 状态响应列表

表3 ACK Wait 状态响应列表

通过前4 步设计出针对不同协议的状态转移关系,挖掘潜在的转移方向,最后在第5 步通过相应的代码编写来实现。

5)代码实现。根据开发的事件列表中的内容绘制状态转移图,并且在状态转移线上定义转移条件和执行的函数,进行代码的编写。根据事件列表构建的源端进程模型如图3 所示。在HB 代码区对转移条件进行宏定义,相应的HB 代码区的内容如图4 所示。在FB 代码区实现了状态转移线上定义的函数功能,具体代码如图5 所示。进程模型搭建完成后要在进程模型编辑器的进程接口中开启初始化仿真中断(begsim intrpt),同时将链路中断(failure intrpts)和恢复中断(recovery intrpts)设置为network wide,即开启响应网络当中的链路中断和恢复中断。

图3 源端进程模型

图4 源端进程模型HB 代码区

图5 FB 代码区函数功能实现

2.2.2 接收端节点进程建模

如2.1 中所示的方法构建出的接收端进程模型如图6 所示。

图6 接收端进程模型

2.3 节点建模

节点模型用于定义每一个节点的行为。一个节点通常由多个模块组成,其行为由其使用的不同的模块决定,每个模块完成一部分节点行为,如数据的产生、存储等。下页图7 为源端节点模型,由一个处理器模块,一个队列模块,一对端到端收发信机和Packet Stream 连接线组成。图8 为接收端节点模型,由一个处理器模块,一对端到端收发信机和Packet Stream 连接线组成。同时,将源端进程模型关联到stop_wait 队列模块,将接收端进程模型关联到sink 处理器模块。

图7 源端节点模型

图8 接收端节点模型

2.4 创建网络模型

首先,构建好自己的链路模型。在链路模型编辑器中将Link Type 设置为ptdup(双工链路),date rate 设置为1M。同时修改4 个管道阶段文件,txdel model(传输延时)设置为dpt_txdel,propdel model(传播延时)设置为dpt_propdel,error model(错误分布)设置为dpt_error,ecc_error(错误纠正) 设置为dpt_ecc。

利用上面创建好的源端节点、接收端节点、链路模型创建网络模型。同时配置故障模块(Failure Recovery),链路故障情况设置为:200 s 时产生故障,500 s 时故障恢复。建好的网络模型如图9 所示。

图9 网络模型

3 仿真结果分析

根据上述网络模型,进行仿真实验,得出端到端时延、反馈确认包数量、吞吐量和链路利用率等重要参数的仿真结果。

从图10 可以看出,200 s 时链路掉线,此时无法统计端到端时延,当500 s 时,链路故障恢复后,由于上层到达的包缓存了300 s 的时间,所以链路故障恢复后端到端时延猛增,临近仿真结束时端到端时延逼近510 s。

图10 端到端时延

图11 反馈确认包数、吞吐量、链路利用率

从图11 可以看出,由于200 s~500 s 之间,链路处于掉线状态,所以反馈确认包的包个数是不变的,直到500 s 后才会集中将反馈确认包发回到源节点上,所以反馈包才会持续增加。吞吐量在200 s~500 s 之间呈下降的趋势,因为吞吐量是基于之前的累加结果的,所以不会出现零值。因为200 s~500 s之间链路处于掉线状态,所以对应的链路利用率为0。仿真结果验证了停-等重传协议所支持的性能。

4 结论

OPNET Modeler 的3 层建模架构:网络模型、节点模型、进程模型,和实际的协议、设备、网络完全对应,全面反映了网络的相关特性。其中进程模型为仿真的核心和难点。本文以实际的例子引导进程建模的思路,重点介绍了进程建模机制,给出了详细具体的进程建模方法,同时在此基础之上构建了节点模型、网络模型。读者可直接将文中的进程模型(.pr.m 文件)、节点模型(.nd.m 文件)延续用于自己的网络当中。也可利用文中提出的进程建模方法的5 个步骤,根据实际需求设计符合具体要求的协议。建立好的进程模型可以直接关联到节点模型的特定模块,完成特定的节点行为。网络模型的构建较简单,无论网络规模的大小,直接根据网络的拓扑结构,将构建好的节点模型和OPNET Modeler 仿真平台自带的模型拖拽到仿真场景中,配置好链路模型的相关参数即可。要进行进一步的网络仿真,还需为搭建好的网络“配置业务”、“收集结果统计量”、“运行仿真”、“调试模块再次仿真”。本文最后通过仿真实验,验证了停-等重传协议所具有的功能,说明了进程建模方法的正确性和有效性,为研发者使用OPNET Modeler 建立新的协议提供了思路,可直接将本协议用于需要可靠传输的网络场景,也可在此基础之上对协议进行丰富扩充,以更好地满足实际需求。

猜你喜欢

链路进程建模
一种移动感知的混合FSO/RF 下行链路方案*
物理建模在教与学实践中的应用
天空地一体化网络多中继链路自适应调度技术
在经历中发现在探究中建模
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
求距求值方程建模
债券市场对外开放的进程与展望
快速杀掉顽固进程
不留死角 全方位监控系统
一种IS?IS网络中的链路异常检测方法、系统、装置、芯片