一种基于以太网mac控制器的组播报文过滤方法
【技术领域】
[0001]本发明属于数字化变电站通信领域,特别涉及一种基于以太网MAC控制器的组播报文接收过滤方法。
【背景技术】
[0002]数字化变电站通信环节涉及多种类型组播报文收发,如面向通用对象的变电站事件(GOOSE)报文。组播报文在交换机中如果不进行任何处理,就是广播转发,当网络上所有智能电子设备(IED)发出的组播报文都被转发接收时,可能引起保护控制装置的网卡接收缓冲区溢出而丢失报文,也可能引起网络负荷瞬时过重而丢失报文,对装置可靠运行造成了严重影响。因此,采取有效的方法对组播报文进行过滤是十分必要的。
[0003]如何过滤组播报文?通常有2种思路:第I种是基于FPGA实现专用模块进行硬件过滤,这种方法对硬件设计、装置成本要求高,不具备通用性;第2种是采用CPU处理器集成的MAC控制器,通常都会支持哈希算法(Harsh algorithms)进行组播地址过滤,但是该方法有缺点:哈希算法存在过滤“漏洞”,即不同MAC地址可能哈希值相同,从而导致非订阅组播报文进入装置,在部分应用场合也会对系统运行产生影响。如果纯粹使用软件方法对接收报文组播地址进行逐一比较过滤,显然效率太低。因此,设计一种简单、高效的组播报文过滤方法对提高数字化变电站保护控制装置稳定运行有重要意义。
【发明内容】
[0004]本发明的目的,在于提供一种基于以太网MAC控制器的组播报文过滤方法,其可进行简单、高效的组播报文过滤,满足数字化保护控制装置在复杂通信环境中的可靠运行。
[0005]为了达成上述目的,本发明的解决方案是:
[0006]—种基于以太网MAC控制器的组播报文过滤方法,包括如下步骤:
[0007](I)定义查找表数组;
[0008](2)注册组播过滤地址时,根据MAC地址计算索引Index和位偏移Offset,设置查找表数组索引Index对应的成员位偏移Off set为I;
[0009](3)接收报文时,根据接收报文MAC地址计算索引Index和位偏移Offset,判断查找表数组相应索引、位偏移,如果为I接收报文,否则丢弃。
[0010]上述步骤(I)的具体内容是:选取MAC地址的N个字节,查找表数组的大小为N个256相乘结果再除以8。
[0011 ] 上述N的取值是3,查找表数组的大小为2097152字节。
[0012]上述步骤(2)的具体内容是:假设需要接收的组播报文MAC地址为“X: Y: Z: A: B: C”,选取MAC地址后3个字节A、B、C共24bit位进行过滤,其中前20位用于计算Table数组下标索引Index,计算公式为Index= ((A〈〈16) | (B〈〈8) I C)>>4,后4位用于计算数组成员Table[Index]的位偏移Off set,计算公式为Off set = (C&0x0f),即取字节C的低4位,再将Tab Ie[Index]的第Off set 位置 I。
[0013]上述步骤(3)的具体内容是:当接收到组播地址为“X:Y: Z: A: B: C”的报文时,先计算相应Index和Offset,然后直接检查Table[Index]的第Offset位是否为I,如果为I表示允许接收,否则丢弃该报文。
[0014]采用上述方案后,本发明采用软硬件结合的过滤方式,在现有MAC控制器哈希算法硬件过滤的基础上,增加软件过滤进行补充,将需要接收报文的MAC地址分为两部分,一部分用于确定查找表数组的下标索引Index,另一部分用于确定Index对应数组成员的位偏移Of fset,然后在该位上设置允许接收标志形成查找表;接收报文时根据实际MAC地址计算得到数组成员索引Index和偏移Of f set,然后直接查表得到相应位值确定是否丢弃报文,解决了哈希算法硬件过滤的不足。本发明可以满足数字化变电站保护控制装置在复杂通信环境下的可靠通信,相对于其他方法,本发明实现简单,可以可靠、高效地实现组播报文过滤。
【附图说明】
[0015]图1是本发明的原理不意图;
[0016]图2是本发明实施例的处理示意图;
[0017]图3是本发明的流程图。
【具体实施方式】
[0018]以下将结合附图,对本发明的技术方案进行详细说明。
[0019]如图1所示,是本发明实现组播报文过滤的原理示意图。假设网络环境中共有η种不同组播报文,其序号为I至η,装置只需接收序号为1、η-1所示的组播地址报文,首先将上述2条组播地址设置到MAC控制器,相应哈希值分别为X和L。这样设置后,MAC控制器接收到网络报文后先根据报文MAC地址计算哈希值,如果哈希值为X或L就会允许接收,否则丢弃该报文。由于网络环境内序号为η的报文MAC地址哈希值也为X,所以,哈希算法硬件过滤后序号为1、η-1、η的网络报文会进入到装置,其中序号为η的报文并不需要接收。在此基础上再次进行快速过滤,保证只有序号为I和η-l的报文被接收。
[0020]如图3所示,是本发明一种基于以太网MAC控制器的组播报文过滤方法,其无需遍历整个地址表,包括如下步骤:
[0021](I)定义查找表数组;
[0022](2)注册组播过滤地址时,根据MAC地址计算索引Index和位偏移Offset,设置查找表数组索引Index对应的成员位偏移Of fset为I;
[0023](3)接收报文时,根据接收报文MAC地址计算索引Index和位偏移Offset,判断查找表数组相应索引、位偏移,如果为I接收报文,否则丢弃。
[0024]图2是基于查找表机制的过滤示意图。首先创建过滤查找表Table数组,数组成员位宽为16位,在将组播地址设置到MAC控制器同时更新该过滤查找表,具体操作方法如图2所示,假设需要接收的组播报文MAC地址为“X: Y:Z: A:B: C”,本实施例选取MAC地址后3个字节A、B、C共24bit位进行过滤,其中前20位用于计算Table数组下标索引Index,计算公式为Index = ((A〈〈16) | (B?8) | C) ?4,后4位用于计算数组成员Table [Index]的位偏移 Off set,计算公式为Of fset = (C&0x0f),即取字节C的低4位,再将Table [Index]的bit (Off set)(也即第of fset位)置I。当接收到组播地址为“X: Y: Z:A:B:C”的报文时,先计算相应Index和Offset,然后直接检查Table [Index]的bit (Of fset)(也即第of fset位)是否为I,如果为I表示允许接收,是订阅报文,否则丢弃该报文。图1中序号为η的组播报文是非订阅报文,根据上述方法得到的Table [Index]中bit (Of fset)(也即第of fset位)为O,显然,该报文会被丢弃。
[0025]上述软件快速过滤方法是对MAC控制器哈希算法硬件过滤的一种补充,解决了哈希算法过滤“漏洞”的问题。当选取MAC地址字节数为N时,查找表Tab I e数组大小(字节数)为N个256相乘结果再除以8。本实施例中仅使用了MAC地址的3个字节,Table数组大小为2097152字节。选取的MAC地址字节数可以根据系统内存情况和网络实际情况进行调整。
[0026]上述实施过程和有效性在国内数十个数字化变电站工程组网通信中得到了充分验证。
[0027]以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
【主权项】
1.一种基于以太网MAC控制器的组播报文过滤方法,其特征在于包括如下步骤: (1)定义查找表数组; (2)注册组播过滤地址时,根据MAC地址计算索引Index和位偏移Offset,设置查找表数组索引Index对应的成员位偏移Off set为I ; (3)接收报文时,根据接收报文MAC地址计算索引Index和位偏移Offset,判断查找表数组相应索引、位偏移,如果为I接收报文,否则丢弃。2.如权利要求1所述的一种基于以太网MAC控制器的组播报文过滤方法,其特征在于所述步骤(I)的具体内容是:选取MAC地址的N个字节,查找表数组的大小为N个256相乘结果再除以8。3.如权利要求2所述的一种基于以太网MAC控制器的组播报文过滤方法,其特征在于:所述N的取值是3,查找表数组的大小为2097152字节。4.如权利要求3所述的一种基于以太网MAC控制器的组播报文过滤方法,其特征在于所述步骤(2)的具体内容是:假设需要接收的组播报文MAC地址为“X: Y: Z: A: B: C”,选取MAC地址后3个字节A、B、C共24bit位进行过滤,其中前20位用于计算Table数组下标索引Index,计算公式为Index = ((A〈〈16) | (B<<8) | C) ?4,后4位用于计算数组成员Table [Index]的位偏移Off set,计算公式为Off set= (C&OxOf),即取字节C的低4位,再将Table[Index]的第Offset 位置 I。5.如权利要求4所述的一种基于以太网MAC控制器的组播报文过滤方法,其特征在于所述步骤(3)的具体内容是:当接收到组播地址为“X: Y: Z: A: B: (Γ的报文时,先计算相应Index和Offset,然后直接检查Table[Index]的第Offset位是否为I,如果为I表示允许接收,否则丢弃该报文。
【专利摘要】本发明公开一种基于以太网MAC控制器的组播报文过滤方法,步骤是:定义查找表数组;注册组播过滤地址时,根据MAC地址计算索引Index和位偏移Offset,设置查找表数组索引Index对应的成员位偏移Offset为1;接收报文时,根据接收报文MAC地址计算索引Index和位偏移Offset,判断查找表数组相应索引、位偏移,如果为1接收报文,否则丢弃。此方法可进行简单、高效的组播报文过滤,满足数字化保护控制装置在复杂通信环境中的可靠运行。
【IPC分类】H04L29/06
【公开号】CN105516095
【申请号】CN201510855405
【发明人】李秋华, 周强, 文继锋, 李广华, 陈宏君, 吴相楠, 姜晓光
【申请人】南京南瑞继保电气有限公司, 南京南瑞继保工程技术有限公司
【公开日】2016年4月20日
【申请日】2015年11月30日