面向QualNet的仿真通信网络的动态故障设置方法及接口与流程

文档序号:21541912发布日期:2020-07-17 17:44阅读:272来源:国知局
面向QualNet的仿真通信网络的动态故障设置方法及接口与流程

本发明涉及一种面向qualnet的仿真通信网络的动态故障设置方法及接口,属于无线通信和通信仿真技术领域。



背景技术:

电力系统被认为是现代社会最重要的基础设施,其安全稳定运行对于国家安全具有重要意义。随着智能电网的快速发展,越来越多的传统电力设备不再只具备电力功能,而是被嵌入了通信和控制等模块。电力系统与通信系统紧密耦合,依赖性增强,形成面向电网的信息物理系统。通信网络对电网的影响变得至关重要,仅考虑电网的仿真已经不能满足对具有动态特性的电力系统进行测试和评价的要求,电网与通信系统的联合仿真成为电力系统评估和部署的重要内容。电网和通信网络的交互融合提升了电网的感知、分析与控制能力,但同时也为电网的稳定运行带来了风险。已有的研究表明,无论是电力系统本身,还是通信系统中的部件发生故障或是被攻击,都可能导致整个耦合网络的连锁故障。近年来这样的案例屡见不鲜,且呈愈演愈烈的趋势。例如,2003年发生的“美加大停电”造成数小时停电,影响近五千万人正常工作生活,其主要原因就是信息系统失效,状态估计功能退出运行,控制中心失去对电网实时状态的感知能力,继而引发连锁故障。发生在2015年底的乌克兰电网大停电事件,被认为是第1例由网络攻击造成的停电事故,停电原因是对能量管理系统的网络攻击导致其丧失控制功能,造成部分设备运行中断,进而引发连锁反应。

针对现代电网所面临的信息安全威胁,电网的安全性和可靠性问题已经成为了全世界关注的焦点。然而由于电力设备这种基础设施的特殊性,不可能直接在其上开展相关实验与测试,计算机建模与仿真技术成为了近年来最有发展潜力的研究方法。它不仅能够模拟信息物理复杂的系统演化过程和涌现性,也能用于开展特定的探索性或重复性的仿真研究。

对于电力系统的建模与仿真,目前主流方法为电力系统数字仿真技术。电力系统数字仿真是将电力系统网络和负载元件建立其数学模型,用数学模型在数字计算机上进行实验和研究的过程。实现数字仿真一般包括建立数学模型、建立数字仿真模型和仿真实验三个主要步骤。但是电力系统数字仿真侧重于电力系统网络连接关系和负载元件的仿真,并不涉及电力通信网的仿真,由于实际网络系统的复杂性,使其评估结果难以进一步逼近真实情况。

对网络性能的评估手段主要有:软件仿真、实际测试以及半实物仿真。网络仿真被称为网络模拟,是进行网络性能研究的一种基本手段。它能够验证实际的网络设计方案,或者对多个不同的设计方案进行比较。在网络规划设计过程中通常会出现多个设计方案,网络仿真可以对这些不同的方案进行科学的分析和比较,以选取性能最优者。网络仿真为不同的设计方案建立不同的模型,对这些模型分别进行模拟仿真并获取定量的网络性能预测数据,根据网络仿真所提供的仿真运行和结果分析功能,为方案间的验证和比较提供可靠的定量依据,从而为优化设计和决策制定提供更便捷、有效的手段。目前的网络仿真工具主要有opnet,ns-2,qualnet等。它们通过建立虚拟网络场景,模拟实现各层协议功能,并加入各种情况网络参数,完成对不同规模、复杂度的网络性能评估。

由于电力系统数字仿真侧重于电力系统网络连接关系和负载元件的仿真,并不涉及电力通信网的仿真,因此目前的电力系统数字仿真无法准确对现代电力信息物理系统进行仿真。而网络软件仿真软件侧重对通信网络的仿真,缺乏电力系统负载元件的仿真。



技术实现要素:

本发明的目的在于提供一种面向qualnet的仿真通信网络的动态故障设置方法及接口,由c语言编写,digsilent软件作为系统中的电网模拟器,qualnet软件作为系统中的通信网模拟器,通过外部程序将需要设置的故障信息以数据报文的格式发送到动态交互接口,再通过该接口和qualnet仿真器交互,使用户可以动态、批量、定时地为通信网络设置故障,从而实现了模拟通信网故障对电网运行影响的目的。

本发明实施例一方面提供一种面向qualnet的仿真通信网络的动态故障设置方法,包括:

面向qualnet配置动态交互接口dci;

动态交互接口dci监听udpsocket端口,接收外部程序发送的故障消息,并存储在接收缓存区;

动态交互接口dci对接收缓存区中的故障消息进行解析,获得故障消息的节点信息;

动态交互接口dci将解析后的故障消息打包成能够被qualnet识别的数据包事件,并将数据包事件按事件时间先后顺序排列,储存在qualnet的事件队列中;所述事件时间是外部程序发送故障消息时外部程序的运行时间;

qualnet的业务调度器从事件队列中取出第一个数据包事件,发送到事件处理器,事件处理器通过访问或修改预先配置在qualnet中的节点模型里的参数,对通信网络进行故障设置;

故障设置结束后,事件处理器产生一个确认报文并将确认报文通过udpsocket发送给外部程序。

进一步的,还包括,

动态交互接口dci监听udpsocket端口,接收外部程序发送的初始化消息,接收到初始化消息后,返回一个应答消息,建立qualnet和外部程序之间的连接。

进一步的,所述故障消息包括节点故障消息和链路故障消息;

所述节点故障消息结构为:8bytes的ip_addr,4bytes的port,4bytes的type,4bytes的nodeid和8bytes的delay_time;

所述链路故障消息结构为:8bytes的ip_addr,4bytes的port,4bytes的type,4bytes的nodeid1,4bytes的nodeid2和8bytes的delay_time;

ip_addr指qualnet服务器的ip地址;

port表示故障消息将发送到qualnet的服务器端口;

type表示故障消息类型;

nodeid表示要设置节点故障的节点号;

nodeid1和nodeid2表示要设置链路故障的链路的起始节点和目标节点号;

delay_time表示外部程序中设置的故障发生时刻;

如果delay_time≤0,则关闭要设置故障的节点的所有端口,如果delay_time>0,则根据delay_time指定的延迟生成一个数据包事件,并按事件时间推送到qualnet的事件队列中。

进一步的,故障消息解析后,查询故障消息的节点信息,

若故障消息中指定的节点存在于仿真场景中,则继续后续处理;

若故障消息中指定的节点并不存在于仿真场景中,则生成用于报告错误信息的数据包并将该数据包直接发送到发送缓冲区;

对于节点故障消息,故障消息指定的节点为nodeid指定的节点;

对于链路故障消息,故障消息指定的节点为nodeid1和/或nodeid2指定的节点。

进一步的,所述发送缓存区将确认报文通过udpsocket发送给外部程序采用先入先出模式。

进一步的,所述发送缓存区中的确认报文被转换为应用数据包之后,再发送给外部程序。

进一步的,还包括,

动态交互接口dci通过调用qualnet中的external_userfunctionregistration函数、external_r-egisterexternalinterfac函数、external_settimemanagementrealtime函数和external_setreceivedelay函数进行注册。

进一步的,所述外部程序通过图形用户界面gui实现。

本发明另一方面还提供一种面向qualnet的仿真通信网络的动态故障设置接口,面向qualnet建立动态交互接口dci,包括:

listern_socket函数,用于监听udpsocket端口,接收外部程序发送的初始化消息、节点故障消息和链路故障消息;

nodefaultmessage函数,用于根据节点故障信息生成通信网络仿真模型中的节点故障事件;

linkfaultmessage函数,用于根据链路故障消息生成通信网络仿真模型中的链路故障事件;

processevent函数,用于检查事件类型,以及根据事件类型调用故障设置函数。

进一步的,还包括:

initmessage函数,用于收到初始化消息后返回一个应答消息,建立qualnet和外部程序之间的连接。

进一步的,所述processevent函数具体用于,

如果判断事件类型是节点故障事件,则调用closenodeports函数,关闭节点故障事件中指向的节点的所有端口;

如果判断事件类型是链路故障事件,则调用closelinkports函数,关闭链路故障事件中指向的链路的端口。

与现有技术相比,本发明所达到的有益效果是:

(1)本发明提出了一种新的实时的可编程动态仿真接口dci,用于电网-通信网联合仿真系统的评估和测试,通过该接口可以对模拟通信网进行实时故障设置。

(2)动态接口dci能够将外部软件或程序的故障设置报文传递至qualnet仿真模拟器,且能够成功对qualnet模拟的通信网进行故障信息设置并返回相应信息。

(3)允许用户在仿真过程中通过图形用户界面(gui)配置通信网络的故障情况,同时电网运行变化可在qualnet图形用户界面直观体现。

附图说明

图1是本发明中动态交互接口dci调用函数流程图;

图2是本发明中节点故障消息的具体结构;

图3是本发明中链路故障消息的具体结构;

图4是本发明实施例中网络仿真场景图;

图5是本发明实施例中链路故障设置界面;

图6是本发明实施例中设置链路故障后的路径切换;

图7是本发明实施例中节点25和12接收的数据包总数。

具体实施方式

下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

本发明提供一种面向qualnet的仿真通信网络的动态故障设置方法,基于面向qualnet的动态交互接口dci实现。所述动态交互接口dci用于基于qualnet软件的api函数的注册及调用,通过存在于qualnet仿真程序之外的外部程序将需要设置的故障信息以数据报文的格式发送到dci接口,再通过该dci接口和qualnet仿真器交互,从而达到设置通信网故障的目的。

基于上述配置,本发明的面向qualnet的仿真通信网络的动态故障设置方法包含dci接口注册和dci接口函数调用两部分。

所述的dci接口注册通过调用函数external_userfunctionregistration、函数external_r-egisterexternalinterfac、函数external_settimemanagementrealtime和函数external_setreceivedelay实现,其具体步骤为:

步骤a.1,函数external_userfunctionregistration通过函数external_registerexternalinterface来声明一个外部接口;

步骤a.2,通过函数external_userfunctionregistration为dci绑定相应的回调函数;

步骤a.3,通过函数external_settimemanagementrealtime管理仿真软件运行状态;

步骤a.4,通过函数external_setreceivedelay实现周期性调用接收函数,并设置最小调用时间间隙。

经过步骤a.1、步骤a.2、步骤a.3和步骤a.4实现了dci接口注册。

dci接口函数调用流程为:

步骤b.1,dci接口打开一个udpsocket并监听端口,接收外部程序发送的数据报文,包括初始化消息、节点故障消息和链路故障消息等。

步骤b.2,进行初始化设置,确保qualnet和外部程序之间的连接。

步骤b.3,外部程序发送的数据报文在经过udpsocket后进入dci接口的接收缓存区。

步骤b.4,在接收缓存区接收到数据报文后,dci接口对数据报文进行解析,获得报文节点信息,同时节点管理器将管理存在于qualnet仿真程序中的所有节点;

对数据包解析后,

b.4.1,查询数据报文的节点信息,若报文里节点id字段所指定的节点存在于仿真场景中,则继续后续事件处理过程;qualnet可以遍历整个仿真场景,查出这个节点是否存在。

b.4.2,若指定的节点并不存在于仿真场景中,则生成用于报告错误信息的数据包并将该数据包直接发送到发送缓冲区。

步骤b.5,若指定的节点存在于仿真场景中,则数据报文被打包成可以被qualnet识别的数据包事件。在转化为被qualnet识别的数据包事件时,会在数据包事件里加入一个事件时间,此事件时间就是数据包从外部程序发出时外部程序的运行时间,在发送的数据包中含有。

然后根据数据包事件中包含的事件时间,将数据包事件按事件时间先后顺序排列,储存在qualnet的事件队列中。

步骤b.6,qualnet的业务调度器从事件队列中取出第一个数据包事件,并将其发送到事件处理器,事件处理器通过访问或修改节点模型里的参数,实现对通信网的故障设置。节点模型是在qualnet仿真场景中模拟的通信节点的虚拟模型(包含应用层,网络层,节点对应的端口等很多真实通信节点应该具备的信息),用来模拟真实通信节点,是预先配置在qualnet软件中的。

步骤b.7,故障设置结束后,事件处理器将产生一个确认报文并放入发送缓存区。

步骤b.8,发送缓存区将确认报文通过udpsocket发送给外部程序。

进一步的,发送缓存区发送确认报文采用先入先出模式,发送缓存区可以有多个确认报文,每接收到一个外部程序报文经过一系列过程后都会产生一个确认报文放在发送缓存区,先入先出。

进一步的,发送缓存区队列中的报文需要在被转换为应用数据包之后才能发送回到外部程序。

进一步的,本发明中的外部程序通过图形用户界面(gui)实现。

经过步骤b.1至步骤b.8实现了dci接口函数调用。

dci接口函数描述如下:

listernsocket():此功能用来监听socket端口从而接收gui发送的数据报文,包括初始化消息、节点故障消息和链路故障消息等。

initmessage():在该函数执行过程中,gui发送数据报文到qualnet,qualnet收到消息后会返回一个应答消息,通过此过程确保qualnet和gui之间的连接,并且可以确定故障配置是否开始。

nodefaultmessage():该函数表示要配置网络仿真模型中的节点故障。节点故障消息的具体结构如图2所示,包括8bytes的ip_addr,4bytes的port,4bytes的type,4bytes的nodeid,8bytes的delay_time。

ip_addr是指qualnet服务器的ip地址。port表示节点故障设置消息将发送到qualnet的服务器端口。type指故障报文类型,包括节点故障delayclosenode和链路故障delaycloselink,比如节点故障设置报文,设置类型为12,但是一般会用特定的单词组合代替12这个数字。nodeid指目标节点的节点号。delay_time是在外部程序中设置的一个数值,表示故障发生时刻,比如设置在运行第5秒时目标节点故障发生,则delay_time为5。

如果delay_time≤0,则关闭目标节点的所有端口,表示qualnet接收到节点故障设置消息,否则将根据delay_time指定的延迟生成一个数据包事件,并按事件时间推送到qualnet的事件队列中。

linkfaultmessage():该函数表示要配置网络仿真模型中的链路故障。链路故障消息的具体结构如图3所示。与节点故障消息一样,链接故障消息的参数包括8bytes的ip_addr,4bytes的port,4bytes的type,4bytes的nodeid1,4bytes的nodeid2和8bytes的delay_time。nodeid1和nodeid2表示要设置链路故障的链路的起始节点和目标节点。

processevent():当离散事件发生时(接收到故障报文时),processevent()首先检查事件类型。如果类型是delayclosenode,它对应于节点故障设置事件,则调用closenodeports()函数,关闭目标节点的所有端口。如果类型是delaycloselink,则调用closelinkports()函数关闭nodeid1和nodeid2之间链路的端口,模拟网络模型中nodeid1和nodeid2之间的链路故障。

dci接口的功能流程图如图1所示,

listernsocket函数监听socket端口,接收gui发送的数据消息,

如果是initmessage函数,则返回一个确认消息,建立qualnet和gui之间的连接;

如果是nodefaultmessage函数,则解析获取节点信息,如果节点信息中delay_time>0,则创建事件;否则,调用closenodeports函数,关闭目标节点的所有端口;

如果是linkfaultmessage函数,则解析获取节点信息,如果节点信息中delay_time>0,则创建事件;否则,调用closelinkports函数,关闭故障链路端口;

业务调度器从事件队列中取出第一个事件,processevent函数判断事件类型,

如果是delayclosenode,则调用closenodeports函数,按照delay_time设定的延时关闭目标节点的所有端口;

如果是delaycloselink,则调用closelinkports函数,按照delay_time设定的延时关闭nodeid1和nodeid2之间链路的端口。

实施例

实施例中结合了qualnet、digsilent和故障设置gui以及所提出的动态接口,仿真服务器的参数如表1所示。图4显示了仿真场景,场景中设置了从节点14到节点24的基于cbr的两条不同路径,其中经过节点26到25的为主路线,另一条路径为备用路线。在模拟之前,为qualnet预先配置了一个静态路由文件,以确保cbr业务数据可以通过主路线传输。

表1仿真服务器参数

当仿真时间到达20s时,如图5所示通过图形用户界面节设置节点26到节点25之间的链路故障,在50s时恢复故障。故障设置之后的路径变化如图6所示,可以明显看出节点26与25之间的链路被破坏,导致路由路径改变,即数据包通过备用路线传输。因此,如图7所示,在仿真时间0~20s,主路线上的节点25接收到的数据包数量呈线性增加趋势,而备用路线上的节点12处接收到的数据包总数为0。在20s~50s时,由于节点26和25之间存在链路故障,cbr数据的传输路径被切换到备用路线,在节点12处接收到的数据包总量呈线性增加趋势。在50s仿真时恢复链路故障,此时传输路径变为主路线,由于路径的改变,主路线上的节点25接受的数据包数量恢复线性增长趋势,而备用路线上的节点12接收到的数据包总量变得平缓。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上仅为本发明的实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均包含在申请待批的本发明的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1