李 彦,许宗光,李广华,顾 浩
(南京南瑞继保电气有限公司,南京 211102)
在智能变电站的建设实践中,IEC 61850 标准凭借良好的可扩展性和体系结构,成为智能电网的统一标准。智能变电站的典型网络拓扑为“三层两网”架构[1],设备根据其工作地位归属于站控层、间隔层和过程层三个层次之一;层次间的通信网络分别为站控层网络及过程层网络。站控层网络业务包括MMS(制造报文规范)及其他高级网络应用业务;过程层网络的主要业务包括SV(采样值)和变电站通用事件GOOSE(面向对象的变电站事件)等数据链路层业务。
根据智能变电站业务的特点和通信方式,过程层网络业务是智能站控制保护功能的必要支撑,其实时性和可靠性要求更高[2],并表现出特定的周期与流量特征[3]。针对不同应用的安全等级要求以及数据流特征,现有的技术方案采取了一系列措施来增强二次设备在网络故障环境下的可用度。这些措施包括采用独立处理器管理站控层网络以实现人机交互与控制保护等逻辑功能的解耦;在网络交换设备上采取流量管控措施[4]来限制端口的最大流量;采用VLAN(虚拟局域网)划分虚拟网络隔离非相关数据[5]等。然而,网络压力的成因复杂[6](包括网络拓扑异常、设备硬件问题、人为失误和恶意攻击等),异常行为多样[7],仅在网络交换设备上采取防护措施是不完备的,更重要的是增强网络终端设备自身压力防护能力。此外,如STP(生成树协议)机制能在秒级时间内检测并修复异常的网络环路以隔绝网络风暴,但生效时间过长,无法避免网络实时业务受损。目前的保护机制智能度不够,无法精确区分异常流量和正常数据,在隔离网络压力的同时可能导致设备的正常功能失效。
本文提出一种应用于二次设备的网络压力防护方案,其原理和实施方案可以用四维空间中的数学模型来描述。本方案尤其适用于采用FPGA(现场可编程门阵列)作为网络协处理器的场合,实施本方案不需要占用处理器资源,网络协处理器通过订阅过滤、风暴抑制和流量控制三重策略来过滤本设备不需要的网络帧,实现了复杂网络环境下“排除干扰,尽力工作”的目标,从而提高智能变电站系统整体的可靠性与鲁棒性。
将二次设备从网络中接收到的任一数据帧的4 种参数抽象为空间坐标,每个帧对应于四维空间(X,Y,Z,T)中的一个点,帧的有效性判据可抽象为帧坐标的数学关系。网络协处理器根据有效性判据主动丢弃无效帧,以实现网络压力防护功能。四维坐标中,X 轴为接收到该帧的设备物理网口,取值范围是从1 开始的有上限的自然数;Y 轴为网络帧的逻辑链路信息,代表网络数据承载的业务特征以及处理需求,可以作为网络帧在变电站域内的唯一性识别信息;Z 轴为帧数据的具体内容,以太网帧内容可以表示为一个二进制序列,该序列在Z 轴上的投影值映射帧二进制序列的数字值;T 轴是时间轴,表示接收该帧的时刻。
如图1 所示,任意一个网络帧均可用4 个维度的坐标(x,y,z,t)来表示,当该帧到达接收设备时,各坐标值即确定,按照接收的先后顺序以下标来区分,设备接收到的第n 帧可表示为(xn,yn,zn,tn),网络帧在该4 个坐标轴上的投影是唯一的。物理世界中不存在4 个坐标均相同的2 个帧,任意帧也不可能存在不同的2 组坐标。二次设备期望从网络中获取的以太网帧组成了在该4维空间内点的集合。这些点受行业标准、通信原理及变电站设计等因素限制,其坐标分布具有一定的规律性。此外,根据网络压力形成的原理,网络压力数据帧的坐标也表现出一定的规律性。
图1 以太网帧的四维空间表示法
首先,根据智能变电站的配置流程,最终下载到装置内的是每个IED(智能电子设备)唯一的CID(智能电子设备实例配置描述文件)[8],或由厂家自定义格式的包含相同信息的配置文件。配置文件将本设备订阅的网络数据的应用功能(逻辑链路)与路径(物理端口)联系起来。对于单个二次设备,其IEC 61850 配置文件确定了该设备订阅的数据集,这个数据集表现为整个XY 平面上确定位置的离散点。任意网络数据帧在XY 平面上的投影落于这些离散点之外,均为非订阅数据。订阅过滤机制直接丢弃XY 坐标不满足订阅关系的网络数据帧,保留满足订阅关系的网络数据帧。判断订阅关系的数学表达式为:
式中:(x,y)为任意网络帧的接收网口号以及逻辑链路信息;(X0,Y0),…,(Xn,Yn)为根据配置文件确定了有限多个离散值的集合,仅当(x,y)的取值落在上述集合中时,表示该帧满足订阅条件并被接收。
其次,当网络拓扑中存在异常环路或者有网络设备故障时,网络内可能出现大量无限循环复制的重复报文,这种情况称之为网络风暴。信息论表明相同的数据不包含新信息,因此风暴抑制起效的条件为:
对于接收设备而言,若序号为m 和n 的2帧接收网口相同(x 坐标相同),帧内容相同(z 坐标相同)以及时标接近(t 坐标相近),则后一帧即为网络风暴帧,可以直接丢弃。
最后,智能变电站中主要业务如GOOSE 和SV 的帧率有较为明确的期望值。对于SV 类型,国内实践中常采用4 000 s 的帧率;GOOSE 的帧率情况比较复杂。根据国内工程实施习惯,设备以固定周期(5 s)发送心跳报文;当有新事件发生时,立刻发送这条事件报文;为了确保GOOSE传递至接收端,事件报文有重传机制[9],重传后GOOSE 报文强制恢复为心跳报文。因此考虑极限情况,GOOSE 帧周期应该与设备处理GOOSE的定时周期相同(国内一般是833 μs)。过程层流量控制的数学描述为:
式(3)中,将同属于确定的逻辑链路的帧按照接收顺序连续编号,如果序号差(m-n)的2 帧的接收时间差(tm-tn)小于指定时间Ti,则说明该时间段内接收逻辑链路Yi的帧异常多,超出合理预期。据此可以直接丢弃不符合预期时间分布限制的帧。
通过网络压力的成因以及期望接收数据帧的相关特征,可以指导网络协处理器设计实现网络压力防护功能。首先按作用范围从大至小确定订阅过滤、风暴抑制与流量控制3 种策略的起效顺序。订阅过滤首先起效,丢弃所有非订阅数据,包括非订阅的风暴流量以及帧率异常的其他报文。其次起效的是风暴抑制,因为风暴数据帧的存在会导致流量控制措施失效。订阅过滤和风暴抑制的目标均属于本设备“不需要”的数据,在感受到网络压力帧时立即起效,无损隔离。最后起效的是流量控制,源设备可能因为软件故障导致超发数据,这些数据在订阅范围内,内容不重复但帧率奇高,甚至可能超出了接收设备处理器的负载能力,因此流量控制策略在最后环节生效。按照订阅过滤、风暴抑制以及流量控制三重策略顺序起效,在不同维度实施网络压力过滤,组成完整的网络压力防护方案。本方案对异常流量特征进行数学抽象,据此指导在FPGA 器件上实现适用于多种异常流量混杂情况的网络压力防护方案,克服了过滤异常流量同时保持其他正常数据接收的难题,解决了网络压力环境下超大流量与有限的处理器资源之间的矛盾。
在具体实施过程中,需要针对智能变电站网络通信业务的特点,对第1 节中所述的网络压力防护方法做进一步细化,并使其适合在二次设备上规模化部署。
对于智能站中的SV 以及GOOSE 类网络数据帧,逻辑链路信息为以太网目的地址(DestAddr)+以太网帧类型(Type)+APPID 的组合;对于其他如PTP1588 等不包含APPID 字段的网络帧,APPID 字段固定为0 以维持逻辑链路信息的格式统一性,即:
目前智能变电站中存在组网和点对点2 种主流网络拓扑。组网模式简化了网络拓扑,但其数据流更为复杂。网络压力防护的订阅过滤机制必须适应复杂网络环境,应考虑并支持如下特性:要求支持识别智能变电站内网络帧的协议二次封装。订阅过滤所需要的字段包括逻辑链路信息,这部分内容一般位于以太网帧的固定位置。然而,以太网帧在传输过程中可能会进行二次封装,如添加/删除VLAN(0×8100)字段,或者在网络帧进入IEC 62439 规范中所定义冗余网络时,会添加PRP(0×88FB)/HSR(0×892F)标签,这些标签字段插入在原以太网帧类型的位置,导致逻辑链路信息在网络报文中的位置发生变化,订阅过滤功能需要能自动识别此类变化。此外,也需要考虑订阅过滤行为的效率,FPGA 器件支持并发执行,合理的流水线设计可以使其在一个时钟周期内完成1 条订阅信息的检索和比较。当前主流的FPGA 器件均能稳定地工作在100 MHz 甚至更高的驱动时钟之下,百兆以太网最短的帧间隔约为5 μs,可以支持近500 条订阅信息检索,满足绝大部分二次设备的订阅数量需要。因此,以FPGA 作为网络协处理器执行订阅过滤是适合且高效的。
网络内设备均正常运行时,智能站网络中出现完全相同的数据帧的概率极低(根据SV 的编码规则,任意控制块在一个序号(Smp_Cnt)循环周期(1 s)内不可能出现2 个完全相同的报文[10]);GOOSE 也有类似的编码规则(StNum 和SqNum)[11]。当网络拓扑错误或者出现网络硬件异常时[12],则可能产生无限复制的重复报文。在执行风暴抑制时,需要考虑以下因素:首先,智能站过程层采用AB 同源双网的情况下,不同物理网口到达的网络报文可能内容完全相同,因此需要针对每个物理网口独立实施风暴抑制;其次,经过传输环节后,网络风暴报文可能与正常报文交替到达,因此仅在相邻报文中检查重复性效果有限,需要在一个实时更新的帧队列中实现抑制措施;最后,以太网报文合法长度范围从64~1 522 B(即帧在Z 轴上的取值范围可以为0~28×1522-1),如此规模的字长,无论是软件或FPGA 直接计算ΔZ 都不可行。因此,需要通过散列算法将以太网报文完整内容映射为一个取值范围有限的值,即对Z坐标的比较算法进行简化。显而易见,散列算法没有漏检概率(相同序列计算得到不同散列值),但存在误检可能(不同的序列算出相同散列值)。CRC64 是简化Z 坐标的合适算法。任意二进制序列的CRC64 结果可能有264种可能性,百兆以太网中最短帧时间为5.76 μs,按照平均概率计算,出现一次碰撞需要3 369 268 年[13],这种误检概率在工程上是完全可以接受的。实际的FPGA 网络协处理器按如下流程操作:计算经过订阅过滤的帧的CRC(冗余循环检验),将不定长序列转换为定长64 bit 散列值,并在一个指定深度(如64)的散列值序列中查找是否有重复元素,如发现有重复元素,即将新接收报文识别为风暴报文直接丢弃。这种风暴检测方法实现简单,能识别连续64 帧内的任意2 个重复报文,当重复报文间隔超过了64 帧,意味着风暴流量占流量的比重已经很小,对系统的不利影响可以忽略。
智能变电站中,过程层主要业务的帧率表现出有限的可预测性,如SV 的4 000 帧率以及GOOSE 帧2/2/4/8 ms 的发送间隔。站控层数据一般都基于IP(互联网协议),支撑了诸如TCP/UDP(传输控制协议/用户数据报协议)等高级网络协议,此类报文在时间轴T 上的分布并无明显特征。进一步地,不同逻辑链路(Y 值)对应于设备不同的子功能,其可靠性要求也不尽相同,不允许因为某一类帧的异常流量而影响其他非相关的应用功能。因此,流量控制机制作为订阅过滤以及风暴抑制措施的补充,首先应能根据帧的逻辑链路(Y)来区分不同的流控条目,并按条目独立地进行流量控制;其次,不同数据类型的预期帧率不同,因此逻辑链路的流控阈值需要能独立设置;最后,网络数据帧从源设备发送至接收设备的过程中,在交换机域内转发时可能会造成毫秒级的报文间隔抖动[14]。流控阈值必须能体现为一个时间窗内的统计结果以适应抖动并保留一定的裕量。综上,实际应用中,FPGA 网络协处理器将长度(P)的时间窗内的接收帧数(N)作为阈值,这个阈值要高于正常情况下报文间隔抖动造成的时间窗内报文数量增加的最大值,且低于处理器在时间窗内能处理的报文最大数量,以保护软件性能不被耗尽。如第1 节对GOOSE 重发机制的描述,考虑其自有的间隔不确定度并预留一定裕度,可以将这个阈值设置为:P=10 ms,N=8 帧。SV 控制块的帧率基本固定,考虑必要的裕度,其阈值设置为:P=1 ms,N=6 帧。对于站控层流量,一般由带操作系统的CPU 负责处理,不影响装置的核心功能,因此可以将所有类型数据统一为1 个条目且设置较为宽松的阈值。如第1 节所述,流控措施的控制对象是帧率异常、格式正确且已订阅的帧,协处理器无法精确判断该帧的内容是否有效,但能通过流控阈值以及按条目独立流控的措施,即使发生“未知原因”导致的网络压力,也能保证透过流控到达应用层的报文不足以耗尽处理器资源,从而达到了“尽力”隔离网络压力的目的。
设计一个针对二次设备网络压力防护能力的实验系统,来验证本文所述3 种措施的效果。实验系统如图2 所示。
图2 网络压力防护效果实验系统
合智一体通过交换机向被测设备注入订阅的GOOSE 与SV 流量,网络分析仪通过交换机注入网络压力流量。网络压力分为非订阅流量、风暴流量和雪崩流量(超过正常帧率的订阅的非重复帧)3 种。由于网络压力造成后果与实际设备的应用程序细节紧密相关,因此为了简化实验环境,易于获取量化的比较结果,本实验将应用程序对网络报文的处理简化为对网络报文内容的简单累加求和,被测设备在定时器任务中处理当前周期内接收到的全部数据。依次对被测设备施加如表1 所示的各种网络压力流量,分别在开启或关闭网络压力防护措施的情况下,记录被测设备处理器执行网络数据处理的时间。
表1 实验结果
实验结果表明:在不开启网络压力防护措施的情况下,设备的处理时间随着接收到的总流量的增加而增加;而在开启网络压力防护措施后,非订阅流量以及风暴流量直接被识别为不需要的数据直接丢弃,无论流量多大,均不会对设备的处理时间造成影响。当输入的网络压力为雪崩流量、在没有达到流控阈值时,设备处理时间随流量递增而增加,网络协处理器正常接收数据并将是否采信该数据的决定权交给应用软件;当超过流控阈值时,流控起效关断了当前逻辑链路的接收,因此总的处理时间恢复至不施加网络压力时的初始水平。实验结果验证了网络压力防护方法的有效性。
网络通信可靠性对于智能变电站来说是系统安全的关键因素,因此增强二次设备网络压力防护能力意义重大。本文体系化地阐述了网络压力防护的方法与流程,并将其原理映射为四维空间中诸元的数学关系。采用本文所述防护措施的二次设备,可以在处理器的承受能力范围内最大限度地隔离异常流量,保留正常数据,显著提高设备在复杂网络环境下的网络压力防护能力,为智能变电站的安全可靠运行奠定坚实的基础。