背景技术
随着变电站自动化技术的发展,计算机和通信技术在自动化系统中得到越来越广泛的应用。在变电站自动化基础上,智能开关、电子式互感器、一次设备状态监测系统等技术日趋成熟,随着计算机高速网络在实时系统中的开发应用,IEC61850等标准体系的颁布,变电站的数字化、智能化建设成为可能。
过去常规变电站中需要用电缆硬接线方式实现跳合断路,在数字化站中则要通过网络,以数字信号通信的方式来完成。所以在智能变电站中,对站控层及过程层网络性能提出了极高的要求,一旦变电站中的网络出现问题则可能引发灾难性后果。这对于智能变电站中网络系统而言是一个严峻的挑战。以太网内部过多的数据通信,使得网络及网络设备在负载、工作效率以及安全方面都承受着巨大的压力。电力系统中的管理、运行人员,必须有效地了解网络中的通讯数据传输是否正常、智能电子设备(IED)以及网络设备是否过载运行、局域网内部以及局域网与互联网的连接是否正常、IED之间的数据传输是否正常(如:GOOSE信息、互操作信息、故障录波信息、控制信息)等等,同时,在遇到网络时断时续、网络内部站控层网络/过程层网络故障时,必须能快速定位故障点并将其排除。因而,需要对智能变电站网络性能进行实时监测与评估,如何获取各类网络报文而不影响网络的正常通信并对网络报文进行分析成为一个亟待解决的问题。
基于智能变电站网络分析的需要,国内厂商推出了自己的网络分析系统,其方案如图1所示,主要包括通信监视、获取数据、数据分析、实时告警四大步骤。
具体地说,即通过监控系统对智能变电站网络通信进行实时监控,获取各类通信数据,对所获取的数据进行分析,在发现异常时进行实时告警(可以预先设置告警条件,对获取的数据进行比对,在满足告警条件时立即告警)。
其中通信监视部分一般采用winpcap等开源软件监听局域网通信数据。报文过滤也采用winpcap等提供的针对网络层和链路层的通用过滤机制。
然而,本发明的发明人发现,现有的过滤机制存在以下缺陷:
只限于网络层、链路层。通过设定监控IP、MAC地址、以太网类型等过滤报文,无法对通信规约内部信息进行过滤。如果只想获取IEC104通信中公共地址为0x1F的单点遥信,就必须对获取的繁杂数据各个解析,判断是否自己所需。
发明内容
本发明主要解决的技术问题是提供一种报文过滤方法,使得无需在应用层对报文进行解析,即可实现应用层的过滤,加快了报文过滤速度。
为了解决上述技术问题,本发明提供了一种报文过滤方法,包含以下步骤:
为不同规约类型的报文,分别设置对应的应用层过滤条件;
根据不同规约类型的报文格式,将对应该规约类型的应用层的过滤条件解析为链路层过滤条件,保存规约类型与链路层过滤条件的对应关系;
在接收到报文时,获取所接收报文的规约类型,确定该规约类型对应的链路层过滤条件,在链路层对收到的报文帧中对应位置的字节或比特的内容进行过滤,将过滤后的报文发送给用户。
作为上述技术方案的改进,所述根据不同规约类型的报文格式,将对应该规约的应用层的过滤条件解析为链路层过滤条件的方法为:
根据报文格式,确定该应用层过滤条件中的内容在所述报文帧中的位置,将对应用层内容的过滤条件转换为报文帧中指定字节或比特的过滤条件。
作为上述技术方案的改进,如果所述应用层的过滤条件无法解析为链路层过滤条件,则保存所述报文规约类型对应的应用层过滤条件;
在收到所述报文时,在应用层对报文进行解析,根据所述应用层过滤条件,对所述报文的内容进行过滤,过滤规约具体内容信息。
本发明实施方式与现有技术相比,主要区别及其效果在于:根据不同规约类型的报文格式,将对应该规约类型的应用层的过滤条件解析为链路层过滤条件,保存规约类型与链路层过滤条件的对应关系;在接收到报文时,获取所接收报文的规约类型,确定该规约类型对应的链路层过滤条件,在链路层对收到的报文帧中对应位置的字节或比特的内容进行过滤,将过滤后的报文发送给用户。无需在应用层对报文进行解析,即可实现应用层的过滤,加快了报文过滤速度。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明一较佳实施方式涉及一种报文过滤方法,本实施方式以电力系统的报文过滤为例进行说明。本实施方式中报文过滤系统直接监控电力系统变电站内工业以太网交换机的数据交换,处理一个变电站内所有可监测的通信报文,并可通过光纤网络实现变电站间以及变电站与控制中心间的数据交互。变电站内任何设备从报文过滤系统订阅报文均需要进行身份认证,在通过身份认证后通过订阅报文实现报文分析和监测预警。
具体的报文过滤方法如图1所示,步骤101中,根据用户的订阅需求,针对不同的报文规约类型,分别设置对应的过滤条件。这里的过滤条件可以包括链路层、网络层和应用层过滤条件。如报文源地址和目的地址白名单、报文过滤的时间段、规约类型、需要过滤的规约具体内容信息等。
步骤102中,根据不同规约类型的报文格式,将对应该规约类型的应用层的过滤条件解析为链路层过滤条件,保存规约类型与链路层过滤条件的对应关系。如果该应用层的过滤条件无法解析为链路层过滤条件,则保留报文规约类型对应的应用层过滤条件。
具体地说,所有报文格式特征基本上是由报文头、长度、地址、应用数据、校验码和结束符组成的。不同规约报文所包含的应用层内容不同,所设置的应用层过滤条件也不同。如IEC104,应用层的过滤条件可以设定传送原因、公共地址、信息类型等,goose的过滤条件可以设定dataset等。由于这些信息在报文中都有固定的格式及位置,在本步骤中,根据不同报文的规约格式,对其应用层过滤条件进行解析,解析为该规约的报文帧的某一个或几个字节(Byte)或Byte中任一或几个特定位(bit)表示的含义,该字节或该位为预定的值或者在预定范围内时,满足该过滤条件。
以IEC104规约的报文为例,假设其应用层过滤条件为:只接收I格式帧的单点信息。在IEC104应用层报文中,第3个字节表示帧的格式(一个byte既为一个字节,含8位(bit,取值为0或1),为方便起见,从低到高分别表示为bit[0]~bit[7]):
若bit[0]==1,且bit[1]==1,表示该帧为U格式
若bit[0]==1,且bit[1]==0,表示该帧为S格式
若bit[0]==0,表示该帧为I格式
若该帧为I格式,则第5个字节表示帧类型,不同的byte值代表传输不同的数据类型:
public final static int M_SP_NA_1=1; //单点信息
public final static int M_DP_NA_1=3; //双点信息
public final static int M_ST_NA_1=5; //步位置信息
public final static int M_BO_NA_1=7; //32比特串
public final static int M_ME_NA_1=9; //测量值,规一化值
public final static int M_ME_NB_1=11; //测量值,标度化值
public final static int M_ME_NC_1=13; //测量值,短浮点数
public final static int M_IT_NA_1=15; //累计量
public final static int M_PS_NA_1=20; //带状态检出的成组单点信息
public final static int M_ME_ND_1=21; //不带品质描述的规一化测量值
等等
根据以上描述,应用层过滤条件“只接收I格式帧的单点信息”可以解析为:第3个字节bit[0]==0,第5个字节M_SP_NA_1=1。其他应用层过滤条件,如传送原因等解析过程与此类似,即解析为报文帧中不同字节的值或具体到每一位的值来表征所代表的特定规约信息。通过对过滤条件进行解析,使得在进行过滤时,可以直接对报文帧中的某一个或几个字节或比特进行过滤,无需对每条报文进行应用层解析,有效加快报文过滤速度。
在接收到报文时,进入步骤103,根据预设的过滤条件进行过滤。由于预设的过滤条件可能包括链路层、网络层和应用层过滤条件,在本步骤中,首先进行链路层和网络层过滤、然后进行应用层过滤。
假设根据预设的条件,需要对报文的源地址和目的地址、时间段、规约类型、其他应用层具体内容进行过滤:
1)首先根据预设的白名单,过滤报文源地址和目的地址;
2)其次过滤报文的规约类型信息、报文时间段等;
3)接着获取所接收报文的规约类型,根据上述保存的对应关系,确定该规约类型对应的链路层过滤条件,对收到的报文帧中对应位置的字节或比特的内容进行过滤。从而无需在应用层对报文进行解析,即可实现应用层的过滤,加快了报文过滤速度。
4)对于无法解析为链路层过滤条件的规约类型,在收到该类型报文时,对报文进行解析,解读出其具体内容,之后根据应用层过滤条件,对报文的内容进行过滤,过滤出所需要的具体内容信息。
步骤104中,将过滤后的报文发送给用户。
上述报文过滤方法无需在应用层对报文进行解析,即可实现应用层的过滤,加快了报文过滤速度,并且根据数据交换的要求提供多种过滤条件,多种过滤条件既相互独立,又相互补充,可以选择某一个,也可以都选,由应用需求而定。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。