智能变电站并行冗余网络的研究与实现
南京工程学院电力工程学院、南京南瑞继保电气有限公司的研究人员张卅、张惠刚等,在2018年第8期《电气技术》杂志上撰文,介绍了IEC 62439-3中的并行冗余协议(PRP)的基本原理,对PRP网络中双连接节点的基本结构以及对数据帧操作原理作出详细阐述。为了保证通信网络的传输性能,提出了一种冗余丢弃算法,并可在Windows系统下实现。
实验表明:单网故障时,变电站通信网络不造成延迟,能实现无缝切换。PRP网络结构简单,具有较高的可靠性,良好的经济性,将成为智能变电站通信网络的主要研究方向之一。
IEC 61850标准从逻辑上将智能变电站分为变电站层、间隔层和过程层[1],取代了传统变电站的复杂结构,解决了通信故障、设备的互操作性、二次设备接线复杂等问题,实现变电站自动化系统中的通信网络高可靠性、可用性。然而,IEC 61850标准并没有对变电站通信冗余方案做出明确要求,使得各厂家提出了私有冗余解决方案,这反而不利于智能变电站互操作性的实现,尤其是通信服务的一致性。
2008年,IEC SC65委员会发布了IEC 62439标准,该标准对冗余网络的构建提供一个标准化界定,适用于站控层总线和过程层总线等的拓扑结构[2],主要提出了6种协议,分别为并行冗余协议PRP (parallel redundancy protocol)、高可用无缝环网协议HSR(high seamless ring)、介质冗余协议MRP(media redundancy protocol)、交叉冗余协议CRP(cross redundancy protocol)、信标冗余协议BRP(beacon redundancy protocol)、分布式冗余协议DRP(distribute redundancy protocol)。
文献[3-4]通过比较这几种网络冗余技术,指出PRP和HSR方案在网络冗余的适应性以及对故障的恢复性能方面,都是理想的冗余方案。文献[5]提出了PRP/HSR组网方式,能提高变电站的安全性与其应用性能。文献[6-7]在Linux系统下实现PRP节点冗余方案。
本文在Windows系统下实现PRP网络冗余方案,实验表明该方案可实现网络故障下的无缝切换,零恢复时间,为实现智能变电站高可靠性冗余提供设计参考。
1 PRP结构与原理
PRP网络执行冗余的功能是指在节点设备处实现双备用,PRP网络的拓扑结构如图1所示。PRP网络基于两个并列且物理结构上互不影响的网架,网络设备能同时在两个网络中传输数据,并且在发生链路故障时能提供无缝切换。
PRP网络含有两种连接方式:双连接节点DANP(double attached node implementing PRP)和单连接节点SAN(single attached node)。DANP直接连接到两个独立、并列的局域网上,实现双网通信,SAN既能直接接入局域网,但通信范围只限定在连接的局域网内,又能通过冗余盒(RedBox)接入两个局域网,实现双网通信。
图1 PRP网络的拓扑结构
HSR网络在某种程度上可看作是PRP网络的一种变体,将A、B两网看作两个传输方向,并将A、B网连起来看作环网,则构成了HSR网络。与PRP网络的DANP相比,HSR网络的DANH多了个转发功能。
PRP网络与HSR网络都可实现网络故障下的无缝切换,零恢复时间。对两网络的经济性、网络负载量和可靠性做了简单的分析。
1)经济性
一方面,HSR遵循在不同路径的路径传输重复报文的原则,在基础构架规模上比PRP缩短一半。另一方面,与PRP报文结构不同的是,HSR标签位于ASDU的前端,因此交换机在转发报文时采用直通交换技术,减少了转发过程的延时。
但是在组网的多层交换机转发,一般交换机传输延时为50s,若一个网络中交换机达到6个,传输延时升至到300s,在大规模变电站中应用不具有经济优势。因此,PRP传输效率较高、快速,但是成本投入较大,适用于大容量网络结构建设。而HSR在交换机多的情况下,传输延时较为大,但是其成本低,适用于小容量的网络构架。
2)网络负载量
从网络负载量看,单环网中各个节点需承担转发数据帧的任务,如果网络中存在N个节点,一个广播帧的传播路径个数为2N,当N较大时,占用较大网络带宽。HSR通过查阅表算法将重复的报文丢弃,减轻了网络的负载量;常规的双网,在热备用状态下出现单路故障,需要告知其他交换机改变网络拓扑结构,增加了网络的负担,而在PRP网络下,其中一条链路故障,不会影响另一路的信息传输。
搭建PRP网和HSR网,利用PCS-PC记录相关数据见表1。由表可知PRP网络的CPU负载率明显低于HSR网络,而且处理时间短,效率较高。
表1 PRP与HSR网效率比较
3)可靠性分析
网络的可靠性是指在特定的时间内或特定的环境下,执行信息传输任务的能力。网络结构可靠性由元件可靠度(R)、相邻故障间的平均工作时间(mean time between failure, MTBF)、有效度(A)以及系统失效度(q)关键性指标衡量。
利用故障树分析法来分析及预测系统失效的概率和系统发生故障的原因,并能计算系统的可靠性。故障树分析法通常把系统最不希望发生的故障状态作为故障分析的目标,逐级寻找引发事件的根源。根据可靠性指标、PRP网络和HSR网络的故障树,统计PRP网络和HSR网络冗余可靠性的数据指标,由表2所知,PRP网络的平均无故障时间明显高于HSR网络,而且失效度也低。因此PRP网络可靠性最高。
表2 PRP与HSR可靠性比较
2 节点冗余实现原理
PRP网络的冗余功能在节点处实现,通过DANP达到冗余效果。DANP结构图如图2所示,每个DANP含有两块网卡,两块网卡具有相同的物理地址和网络地址,网卡通过冗余链路体LRE(link redundancy entity)连接到网络层。
LRE承担冗余管理和报文处理任务,当网络层发出一帧,发送端LRE将该帧复制为两帧,同时添加冗余控制标签RCT(redundancy control tag),两帧分别从LAN A和LAN B发出。这两个帧以不同的延迟经过两个局域网,理想情况下它们几乎同时到达目的地,接收时,接收端LRE接收先到的那一帧并转发给上层,并丢弃后到的重复帧。
图2 DANP结构图
PRP数据帧结构如图3所示,主要包括目的地址(DA)、源地址(SA)、类型、LSDU以及RCT。其中RCT(6字节)主要包括:16bit的序列号(SeqNr)。SeqNr由发送方发送具有相同序列号的两帧,每次序列号加1,区间位为[0, 65535];4bit的局域网标识符(LAN ID)。
该字段用以区分端口连接LAN方向,若为1010为A网数据帧,若为1011则为B网数据帧。是一对重复报文惟一不同的部分;12bit的LSDU长度(link service data unit)。该字节可以鉴别出是PRP或者HSR帧,它表示的是数据帧的数据字节加RCT的字节数之和,限定值为1496字节;16bit的PRP类型后缀(PRP suffix),其常值为0x88FB。
图3 PRP数据帧结构
3 冗余算法的设计
下面是一段冗余丢弃算法的程序代码。
unsigned int CheckRcvSeqNumber()
{int LANA,LANB;
unsigned long dropWindowMax=WMAX; /*丢弃窗口的最大值*/
unsigned short seq;
LANA=(lan_id==0xa)? 0:1; /*判断数据帧来自A网还是B网*/
LANB=(LANA+1)% 2;
curSeq[LANA]=seq;
if ((((curSeq[LANA]-staSeq[LANB]+TwoPi) % TwoPi) <=OnePi)&&(((expSeq[LANB]-curSeq[LANA]+TwoPi- 1) % TwoPi) < OnePi))/*判断数列号是否在丢弃窗口内*/
{ if ( (curSeq[LANA] !=expSeq[LANA]))/*判断数据帧是否异序*/
{cntErrOutOfSequence[LANA]=(cntErrOutOfSequence[LANA]+1);}/*记录异序的数据帧的个数*/
expSeq[LANA]=(curSeq[LANA]+1) % TwoPi; /*调整丢弃窗口的大小*/
staSeq[LANB]=expSeq[LANA];
staSeq[LANA]=expSeq[LANA];
return TRUE; }/*丢弃重复帧*/
else
{if (curSeq[LANA] !=expSeq[LANA]) /*判断数据帧是否异序*/
{pData->cntErrOutOfSequence[LANA]=(pData->cntErrOutOfSequence[LANA]+1);
staSeq[LANA]=curSeq[LANA]; }/*调整丢弃窗口的大小,使起始序列等于当前序列*/
else
{if ((pData->expectedSeq[LANA]-staSeq[LANA]+TwoPi) % TwoPi>dropWindowMax) /*判断数列号是否在丢弃窗口外*/
{if(pData->expectedSeq[LANB]== staSeq[LANA])
{pData->cntErrStall[LANB]=pData->cntErrStall[LANB]+1 ;}
staSeq[LANA]=(pData->expectedSeq[LANA]+TwoPi- dropWindowMax) % TwoPi ;} }/*调整丢弃窗口的大小*/
staSeq[LANB]=expSeq[LANB];
expSeq[LANA]=(curSeq[LANA]+1) % TwoPi ;
return FALSE; }}/*向上层转发*/
4 实验仿真
本文在Windows系统下进行实验仿真,基于NDIS(network driver interface specifies)实现PRP方案。NDIS中间层驱动是一种虚拟驱动程序,连接上层NDIS协议驱动以及下层NDIS为微端口驱动,既承上启下又可以“欺上瞒下”。
在NDIS提供的MPSendPackets函数框架中完成数据帧发送功能:报文尾部添加RCT,并同时向A、B网发送数据,在NDIS提供的PtReceive函数框架中完成数据接收功能:实现冗余报文的丢弃和向上层转发。在驱动中设置定时器,用于PRP管理帧的定时发送以及外部节点状态的定时检测。
两台Windows计算机采用直连方式做PRP应用测试,每台计算机都配置两块物理网卡并安装PRP网络接口驱动程序,PRP测试拓扑如图5所示。测试PRP网络单个网络故障的自愈时间。两计算机之间进行数据传输,在传输过程中,LAN B被拔掉,即B网被中断,通过Wireshark抓包分析,发现网络传输不受影响,故PRP网络故障恢复时间为零,符合无缝切换的要求。
在测试过程中,各节点报文的传递情况可以通过节点表所实现。当B网发生故障时,通过节点表检测A、B两网数据帧的情况,发现A网数据帧序列号线条连续,而B网数据帧序列号出现间断。如图6所示。从测试结果来看,在单网故障时,PRP网络能实现零丢包,零恢复时间。
图5 PRP测试拓扑结构
图6 单网故障时,帧接收情况
本文设计了基于序列号的冗余丢弃窗口算法,算法简单,占用资源少,处理时间快。采用直连方式做PRP应用测试,结果表明,在单网故障时,PRP网络能实现零丢包,零恢复时间,完全符合IEC TC57对变电站网络恢复时间的要求。PRP冗余协议提高了系统的可靠性与安全性,并且结构简单,将会是智能化变电站中通信网络的主要研究方向之一。