
本发明涉及一种Windows系统下PRP网络连接方法,属于电力工程的自动化通信技术领域。
背景技术:
IEC 62439规定的并行冗余协议PRP由于安全可靠、实时切换、兼容常规并行双网架构等优点,特别适用于电力系统变电站内部通信。目前变电站监控系统为了系统易用性,主机相当一部分采用了Windows操作系统,而目前Windows系统接入变电站PRP通信网络,一般采用外置交换模块(RedBox)的方法进行实现。但外置交换模块的方式不仅增加了系统成本,而且增加了系统网络连接,一定程度上减少了网络冗余的效果,影响系统的可靠性。
NDIS是Windows网络协议栈组件间的接口规范。它横跨传输层、网络层和数据链路层,是网卡(或网卡驱动)与上层协议(或应用)间的通信接口。所有发送到网络和从网络接受的报文都由NDIS通过,通过NDIS驱动可以任意修改、转发系统的所有网络报文。
技术实现要素:
本发明的目的是:提供一种Windows系统下PRP网络连接实现方法,简化系统网络连接,以解决目前PRP的应用中系统复杂、成本高、效果差问题。
本发明为解决上述技术问题而提供了一种windows系统下PRP网络连接方法,该方法首先设计一种NDIS中间层驱动程序,安装加载后,驱动程序生成一块虚拟网卡,上层应用直接通过此网卡与外部网络进行交互。同时驱动程序绑定到两块物理网卡,它们设置同样的MAC地址,分别连接到外部PRP网络的A、B网。
驱动程序绑定的物理网卡收到报文后,截取报文最后6个字节作为PRP标签,取出标签里的SeqNum、LanID以及帧头的源MAC,查询全局节点表,根据丢弃算法决定此帧报文是丢弃还是向转给虚拟网卡,虚拟网卡收到报文后就转发给上层协议栈及应用。
上层应用下发给虚拟网卡的报文,先复制成2份,并分别补上PRP标签,填上当前的SeqNum等信息,分别通过驱动绑定的两物理网卡转发出去。
本发明的有益效果是:通过系统的NDIS驱动实现PRP协议的链路冗余体LRE,直接处理链路层报文,实现冗余发送与接收抛弃处理。接收报文时,物理双网上接收到的报文经过PRP标签识别、冗余抛弃处理后传送到虚拟网卡处;发送报文时,虚拟网卡的报文经过复制并添加PRP标签后,通过两物理网卡转发到PRP网络上。本发明的PRP网络连接方法能简化网络连接,实现报文的透明处理,且故障时无缝切换,能极大地提高变电站网络通信的可靠性。
附图说明
图1是包含驱动的PRP系统协议栈层次结构图,上层应用只与驱动的的虚拟网卡通信,驱动负责对接两物理网卡,冗余处理由驱动进行。
图2是PRP系统驱动协议层接收流程图。
图3是PRP系统驱动微端口层发送流程图。
具体实施方式
下面结合附图对本发明的NDIS驱动架构及里面PRP协议实现细节作进一步的说明。
初始化:本发明的NDIS驱动安装初始化时,注册提供两套回调函数集,一套处理虚网卡相关请求,另一套处理绑定的物理网卡请求。初始化后驱动有选择性的绑定到预先确定的2块物理网卡上,并生成一新的虚拟网卡,如图1所示。在绑定PRP A网对应的物理网卡时,初始化此虚拟网卡,将其与上层协议栈如TCP/IP绑定,并设置此虚拟网卡相关信息,如网速、MTU等。
接收报文:物理网卡收到的报文到达驱动后,如图2所示,首先获取报文最后6个字节数据,判断最后2字节是否为PRP协议的标示字(suffix)0xFB88。若这2字节为0xFB88,则认为该帧报文为PRP帧,这6字节为PRP tag,否则直接丢弃此帧报文。判断为PRP帧后,从PRP tag中取出SeqNum、LanID以及帧头的源MAC。通过源MAC查找全局的PRP节点表。若未查到,则添加新节点NODE_DAT至节点表。接着判断此帧是否为PRP监视帧,若为监视帧,可以抛弃此帧报文,否则根据SeqNum、LanID调用抛弃函数判断此帧报文是否已经接受过。若此帧报文接受过,则直接抛弃,未接受则在原报文数据基础上去掉PRP tag构建新的报文帧,并传递给虚拟网卡,通知上层协议新报文到达。
发送报文:虚拟网卡需要发送报文时,如图3所示,驱动首先线性化报文到缓冲区,并判断缓冲区数据长度是否小于以太网最小帧长,小于最小帧长的帧在缓冲区结尾处补零使帧长达到最小帧长。然后再次在缓冲区末尾扩充6字节,并复制为2份,同时将这2份数据末尾6字节标示为PRP tag,分别填充对应的LanID、SeqNum等字节,并以此为基础创建2新的报文帧,最后通过驱动绑定的从2块物理网卡分别发送出去。
定时任务:PRP协议定义了节点表用于记录与监控网络节点的状态。节点表是用来识别和丢弃复制帧的基础,也用来监测和管理外部PRP节点。驱动初始化时,启动2个定时器,分别用于自身节点监视帧的定时发送以及全局节点表每个节点状态的定时检测、更新。
本发明通过Windows NDIS网络驱动了实现了PRP协议的LRE模块:驱动协议层绑定到2物理网卡上,同时生成虚拟网卡,供上层协议或应用使用。接收报文时,在从物理双网上接收的链路层报文经过驱动处理后,提取第一个收到的帧报文,丢弃重复的那帧报文,然后上送冗余处理后的那帧报文至虚拟网卡。发送报文时,应用层发给虚拟网卡一帧报文,驱动对这帧报文进行复制处理,同时发送到两个网络上。本发明的并行冗余实现方法能实现变电站智能装置网络通信的冗余,处理效率高,且故障时无缝切换,能极大地提高变电站中保护装置网络的通信质量。