CN102196061B - 地址过滤表生成方法及装置、以太帧接收方法及装置 - Google Patents

地址过滤表生成方法及装置、以太帧接收方法及装置 Download PDF

Info

Publication number
CN102196061B
CN102196061B CN2011101649805A CN201110164980A CN102196061B CN 102196061 B CN102196061 B CN 102196061B CN 2011101649805 A CN2011101649805 A CN 2011101649805A CN 201110164980 A CN201110164980 A CN 201110164980A CN 102196061 B CN102196061 B CN 102196061B
Authority
CN
China
Prior art keywords
address
bit
value
bits
ethernet frame
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2011101649805A
Other languages
English (en)
Other versions
CN102196061A (zh
Inventor
彭琮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ruijie Networks Co Ltd
Original Assignee
Fujian Star Net Communication Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujian Star Net Communication Co Ltd filed Critical Fujian Star Net Communication Co Ltd
Priority to CN2011101649805A priority Critical patent/CN102196061B/zh
Publication of CN102196061A publication Critical patent/CN102196061A/zh
Application granted granted Critical
Publication of CN102196061B publication Critical patent/CN102196061B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Small-Scale Networks (AREA)

Abstract

本发明提供一种地址过滤表生成方法及装置、以太帧接收方法及装置。其中,地址过滤表生成方法包括:生成n行m列的地址表;将合法MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与地址表的n行相对应,m=2k;以每个位组对应的值为列索引,将地址表中与每个位组对应的行中的相应比特位置为预设第一值,以形成地址过滤表。本发明技术方案解决了现有技术的缺陷,提高了地址过滤的效率和精确度。

Description

地址过滤表生成方法及装置、以太帧接收方法及装置
技术领域
本发明涉及网络通信技术,尤其涉及一种地址过滤表生成方法及装置、以太帧接收方法及装置。
背景技术
以太网(ETHERNET)是当前应用最普遍的一种计算机局域网组网技术,在很大程度上取代了其他局域网标准,例如:令牌环网(token ring)、光纤分布式数据接口(Fiber Distributed Data Interface;简称为:FDDI)和ARCNET。美国电气和电子工程师协会(Institute of Electrical andElectronics Engineers;简称为:IEEE)制定的IEEE 802.3标准给出了以太网的技术标准。IEEE 802.3标准规定了包括物理层的连线、电信号和介质访问控制(Media Access Control;简称为:MAC)层协议的内容。目前快速以太网(例如:100BASE-T、1000BASE-T标准)为了最大程度的减少冲突,最大程度的提高网络速度和使用效率,使用交换机来进行网络连接和组织,使以太网的拓扑结构发展成了星型,但在逻辑上,以太网仍采用总线型拓扑和带冲突检测的载波监听多路访问(Carrier Sense MultipleAccess/Collision Detect;简称为:CSMA/CD)的总线争用技术。
在以太网上存在各种MAC地址的数据帧,对于工作在以太网中的站点设备而言,有些数据帧是应该被接收的,有些数据帧是不应该被接收的。其中,地址过滤是以太网普遍使用的一种过滤以太网上数据帧的技术。各个站点设备通过设置自己的地址过滤表,对数据帧进行过滤,选择出应该接收的数据帧避免将多余的数据帧接收上来,以避免加重处理负担。目前以太网最常用的地址过滤方式主要是精确地址过滤方式。
在精确地址过滤方式中,站点设备预先将允许接收的MAC地址存放到地址过滤表中,当有以太帧到达时,站点设备将每个到达的以太帧的MAC地址与地址过滤表中的MAC地址逐一进行比较,直到匹配到一致的MAC地址为止,确定接收该以太帧,反之,不接收该以太帧。该方式具有地址过滤结果精确可靠的优点,但是,由于MAC芯片的地址过滤表做的比较小,一般不会超过16个可过滤地址,不适用于规模较大的以太网,如果地址过滤表做大了,逐一比较的地址过滤方式又会让地址过滤的效率低下。
发明内容
本发明提供一种地址过滤表生成方法及装置、以太帧接收方法及装置,用以解决现有技术存在的地址过滤效率低的问题,提高地址过滤的效率。
本发明提供一种地址过滤表生成方法,包括:
生成n行m列的地址表;
将合法MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与所述地址表的n行相对应,m=2k
以每个位组对应的值为列索引,将所述地址表中与每个位组对应的行中的相应比特位置为预设第一值,以形成所述地址过滤表。
本发明提供一种地址过滤表生成装置,包括:
生成模块,用于生成n行m列的地址表;
第一拆分模块,用于将合法MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与所述地址表的n行相对应,m=2k
置位模块,用于以每个位组对应的值为列索引,将所述地址表中与每个位组对应的行中的相应比特位置为预设第一值,以形成所述地址过滤表。
本发明提供一种以太帧接收方法,包括:
获取以太帧中的目的MAC地址;
将所述源MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与预先生成的n行m列的地址过滤表的n行相对应,m=2k
以每个位组对应的值为列索引,查询所述地址过滤表中与每个位组对应的行中的相应比特位,并判断查询到的所有比特位的值是否均为预设第一值;
当查询到的所有比特位的值均为第一值时,接收所述以太帧;
当查询到的所有比特位中存在值不为第一值的比特位时,丢弃所述以太帧。
本发明提供一种以太帧接收装置,包括:
获取模块,用于获取以太帧中的目的MAC地址;
第二拆分模块,用于将所述目的MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与预先生成的n行m列的地址过滤表的n行相对应,m=2k
查询判断模块,用于以每个位组对应的值为列索引,查询所述地址过滤表中与每个位组对应的行中的相应比特位,并判断查询到的所有比特位的值是否均为预设第一值;
接收处理模块,用于在查询到的所有比特位的值均为第一值时,接收所述以太帧,以及在查询到的所有比特位中存在值不为第一值的比特位时,丢弃所述以太帧。
本发明的地址过滤表生成方法及装置、以太帧接收方法及装置,根据MAC地址的特性将MAC地址拆分为n个k位组,并以每个k位组为行索引、以每个k位组对应的值为列索引,将n行2k列的地址表中的相应位置1,形成地址过滤表;在有以太帧到来时,将以太帧中的目的MAC地址拆分成n个k位组,并以拆分出的n个k位组为行索引、以每个k位组对应的值为列索引,去查询生成的地址过滤表中的相应比特位,当查询到的所有比特位的值均为预设第一值时,接收以太帧;反之,丢弃以太帧。本发明技术方案中的地址过滤表中不是直接存储MAC地址,增加了允许过滤的MAC地址的数量,且采用将MAC地址进行拆分比较的方式,与直接对MAC地址进行比较相比提高了过滤效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例提供的地址过滤表生成方法的流程图;
图2为本发明一实施例提供的MAC地址ABEF013F4CE1映射到地址过滤表中的过程示意图;
图3为本发明一实施例设置合法MAC地址ABEF013F4CEA后的地址过滤表的状态示意图;
图4为本发明一实施例提供的以太帧接收方法的流程图;
图5为本发明一实施例提供的地址过滤表生成装置的结构示意图;
图6为本发明另一实施例提供的地址过滤表生成装置的结构示意图;
图7为本发明一实施例提供的以太帧接收装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例提供的地址过滤表生成方法的流程图。如图1所示,本实施例的方法包括:
步骤101、生成n行m列的地址表。
其中,n和m是自然数。该地址表是一空表,包括n*m个比特位。本步骤所生成的地址表是地址过滤表的初始状态。
步骤102、将合法MAC地址按照预设顺序划分为n个长度为k比特的位组。
为便于表述,后续将长度为k比特的位组简称为k位组。
其中,合法MAC地址是指接收到以太帧的站点设备的MAC地址,也就是站点设备接收到的以太帧中的目的MAC地址;相应地,携带合法MAC地址的以太帧是指指向站点设备的以太帧。例如:假设当前站点设备的某个以太接口上配置了两个MAC地址,分别为:01005e010101和00a1a2a3f1f2,在该以太接口上接收到的以太帧的目的MAC地址必须是上述两个MAC地址中的一个,站点设备才予以接收并进入后继处理流程,这种操作方式可以避免本该由其他站点设备接收和处理的以太帧进入本站点设备的处理流程里,造成对本站点设备的资源的浪费。也就是说,在本发明各实施例中,是以以太帧的目的MAC地址为基准对以太帧进行过滤的。
其中,MAC地址的长度为48比特(bit),故本实施例中的n*k=48。又因为实际应用中通常是以字节为单位对MAC地址进行处理的,故k的值优选为4的整数倍,以便于对划分出的k位组进行处理。在本实施例中,将合法MAC地址划分为n个k位组,n个k位组依次与地址表的n行相对应,且m=2k。例如:n可以为12,k为4,此时,合法MAC地址被划分为12个4位组,而地址表为一张12行16列的表。又例如:n为6,k为8,此时,合法MAC地址被划分为6个8位组,而地址表为一种6行256列的表。
在本实施例中,预先设定了对合法MAC地址的划分顺序,例如可以是按照由高位到低位的顺序划分,也可以是按照由低位到高位的顺序划分。要求依序划分出的n个k位组以一定顺序与地址表的n行对应。
对所有合法MAC地址均按照同一顺序进行拆分,且均拆分为n个k位组。
步骤103、以每个位组对应的值为列索引,将地址表中与每个位组对应的行中的相应比特位置为预设第一值,以形成地址过滤表。
对应一个合法MAC地址而言,每个位组对应地址表中的一行,而每个位组对应的值的范围为0-2k,每个位组对应的值的范围中的每个值分别对应该位组对应的地址表中的行中的一列。故每个位组对应的值可以作为该位组对应的行中的列索引,找到该位组对应于地址表中的比特位。换句话说,每个位组对应于地址表中的一个比特位。
故在本实施例中,以每个位组为行索引,例如以每个位组的序号为行索引找到该位组在地址表中对应的行;然后,以每个位组对应的值为列索引,找到该位组在地址表中对应的列;找到的行与找到的列的交叉位置即为该位组对应的比特位,将该比特位置为第一值。当一个合法MAC地址的n个k位组对应于地址表中的比特位均被置为第一值后,相当于该合法MAC地址被设置在地址表中。
当所有合法MAC地址均被设置在地址表中后,该地址表就变成了多个比特位被置为第一值的地址过滤表。
当有以太帧到来时,就可以基于所生成的地址过滤表来对以太帧进行过滤操作。
其中,第一值可以是1或0等;而在生成地址表时可以将地址表中每个比特位设置为第二值,第二值是与第一值不同的值。例如:当第一值为1时,第二值可以为0或者为空;当第一值为0时,第二值可以为1或者为空等。
本实施例的地址过滤表生成方法,基于MAC地址的特性将MAC地址划分为n个k位组,并生成n行2k列的地址表,以每个k位组的序号为行索引,以每个k位组的值为列索引将索引到的地址表中的比特位置为第一值,对每个合法MAC地址均进行相应处理,最终生成地址过滤表。由上述分析可见,本实施例的地址过滤表中存储的不是MAC地址,与现有技术中直接存储MAC地址的地址过滤表相比所允许过滤的MAC地址的数量明显增加,适应于各种规模的网络,可过滤地址的数量不再受地址过滤表大小的限制,为提高地址过滤效率打下了基础。
进一步,现有技术中存在直接对合法MAC地址进行HASH运算,然后以HASH运算的结果为索引设置地址过滤表的方案,而本实施例的地址过滤表中各比特位的值不是以对MAC地址进行HASH运算的结果为索引设置的,而是以划分出的n个k位组和每个k位组的值为索引设置的。与以直接对MAC地址进行HASH运算的结果为索引设置的地址过滤表相比,本实施例的地址过滤表所允许误接收的MAC地址的数量较少,有利于降低错误接收的以太帧的数量,提高了地址过滤的精度。
以n取6,k取8,即用6个8位组来划分合法MAC地址为例说明本实施例地址过滤表降低误接收率、提高地址过滤精度的效果:当地址过滤表中设置有2个合法MAC地址,且假设2个合法MAC地址的每个8位组对应的比特位都不相同,即在该极限情况下,由这些8位组的比特位组合出可能导致接收的MAC地址的最大个数为2*2*2*2*2*2=64个。当地址过滤表设置4个合法MAC地址时,在极限情况下,由这些8位组的比特位组合出可能导致接收的MAC地址的最大个数为4*4*4*4*4*4=4096个。当地址过滤表中设置了8个合法MAC地址时,在极限情况下,由这些8位组的比特位组合出的可能导致接收的MAC地址的最大个数为8*8*8*8*8*8=262144个。同理,当地址过滤表中设置了16个合法MAC地址时,导致可能接收到的MAC地址的最大个数为16777216个。而以对MAC地址进行HASH计算形成的地址过滤表,假设形成的地址过滤表有1024(即210)位,则只要地址过滤表设置1位(对应设置1个合法MAC地址),则导致可能接收的MAC地址是238个,也就是274877906944个,其中2的指数38是由MAC地址的位数(即48)-地址过滤表对应的指数(即10)得到的;而如果是设置了4位(对应设置4个合法MAC地址),则可能导致接收的MAC地址就是4*274877906944=1099511627776个。通过比较设置相同个数的合法MAC地址时,两种方式可能导致接收的MAC地址的个数,可以发现本实施例可能导致接收的MAC地址的数量远远小于以HASH运算生成的地址过滤表的情况,而可能导致接收的MAC地址的数量越少,表明错误接收以太帧的概率就越低,地址过滤精度也就越高。
下面以n为12,k为4的情况为例,举例说明上述实施例的实施过程。
首先,地址过滤表生成装置生成一张大小为12*24的地址表,该地址表移动有192个比特位,如表1所示。在实际实现时,该地址表可由6个32位的无符号整型数来表示,其中,每2个4位组分别由32位无符号整型数的高16比特和低16比特来表示。
接着,假设按照由高位到低位的顺序,对合法MAC地址进行拆分,且合法MAC地址被拆分为12个4位组。其中,每个MAC地址都是48位的,可以用6个字节(Byte)来表示。在本实施例中,每个字节被分为高4位和低4位,分别对应一个4位组。以MAC地址为ABEF013F4CE1为例,按照由高位到低位的顺序该MAC地址包括6个字节,依次为:AB、EF、01、3F、4C和E1;每个字节被分为高4位和低4位,则得到12个4位组,依次为A、B、E、F、0、1、3、F、4、C、E和1,且12个4位组依次对应于表1中的0-11行。
接着,以每个4位组的值为列索引,将表1中每个4位组对应的行中的相应比特位置1。在本实施例中,以第一值为1,第二值为0为例。具体的,与第0行对应的4位组“A”的值为10,将第0行第10列对应的比特位置为1。与第1行对应的4位组“B”的值为11,将第1行第11列对应的比特位置为1。与第2行对应的4位组“E”的值为14,将第2行第14列对应的比特位置为1。与第3行对应的4位组“F”的值为15,将第3行第15列对应的比特位置为1。与第4行对应的4位组“0”的值为0,将第4行第0列对应的比特位置为1。与第5行对应的4位组“1”的值为1,将第5行第1列对应的比特位置为1。与第6行对应的4位组“3”的值为3,将第6行第3列对应的比特位置为1。与第7行对应的4位组“F”的值为15,将第7行第15列对应的比特位置为1。与第8行对应的4位组“4”的值为4,将第8行第4列对应的比特位置为1。与第9行对应的4位组“C”的值为12,将第9行第12列对应的比特位置为1。与第10行对应的4位组“E”的值为14,将第10行第14列对应的比特位置为1。与第11行对应的4位组“1”的值为1,将第11行第1列对应的比特位置为1。将其他比特位置为0,至此,得到如表2所示的地址过滤表。
在此说明,在生成地址表时各比特位除了被置为0之外,也可以为空,或者也可以置为其他值,即其他比特位的值只要不是1即可。
表1
表2
Figure BDA0000069197660000101
在实际实现时,本实施例的地址过滤表可由6个32比特的无符号整型数来实现,且一个字节对应一个32位的无符号整型数,而每个字节的高4位对应32位无符号整型数的低16比特,低4位对应32位无符号整型数的高16比特,则MAC地址ABEF013F4CE1映射到地址过滤表中的过程,如图2所示。
上述列举了以一个合法MAC地址设置地址表的过程,但在实际应用中,往往会有多个合法MAC地址需要设置。当有多个合法MAC地址需要设置时,在地址表中可能会出现同一比特位在多个合法MAC地址的设置过程中都被设置为1的情况。为了区分该比特位被几个合法MAC地址所设置,在本实施例中为地址表中的每个比特位设置一个引用计数,当地址表中与每个位组对应的行中的相应比特位被置为1时,将被置为1的比特位的引用计数加1。这样,当该比特位在2个合法MAC地址的设置过程中均被置为1时,该比特位的引用计数为2。本实施例通过引用计数表明了每个比特位在几个合法MAC地址的设置过程中被置为1。
以图2所示的地址过滤表为基础,假设又有合法MAC地址ABEF013F4CEA需要被设置到地址表中;图3为本发明一实施例设置合法MAC地址ABEF013F4CEA后的地址过滤表的状态示意图。其中,设置合法MAC地址ABEF013F4CEA的过程与设置合法MAC地址ABEF013F4CE1的过程相同,在此不再赘述。由于合法MAC地址ABEF013F4CEA被划分出的前11个4位组与合法MAC地址ABEF013F4CE1被划分出的前11个4位组相同,故对应于地址表中相应的比特位,如图3所示,这些比特位对应的引用计数为2,而两个合法MAC地址被划分出的最后一个4位组对应的引用计数均为1。
进一步,在上述设置引用计数的实施例的基础上,当用户将之前某个合法MAC地址屏蔽掉或者重新判定为不合法MAC地址(即在接收时需要过滤掉的MAC地址)时,用户会将该合法MAC地址从合法MAC地址表中删除。当删除合法MAC地址时,需要对由各个合法MAC地址设置的地址过滤表进行更新,即将地址表中与被删除的合法MAC地址对应的比特位的值进行适应性的修改。
在本实施例中,根据合法MAC地址的删除更新地址过滤表的过程具体包括:首先获取地址表中与被删除的合法MAC地址的n个位组对应的比特位。其中,获取被删除的合法MAC地址对应的比特位的操作,与根据合法的MAC地址设置地址表时获取对应的比特位的操作相同,即将被删除的合法MAC地址按照预设顺序划分为n个k位组,以k位组的序号为行索引,以k位组对应的值为列索引找到相应的比特位。然后,将地址表中与n个k位组对应的比特位的引用计数减1,表示与该比特位对应合法MAC地址中有一个被删除。同时,判断减1后的引用计数是否为0;如果判断结果为是,即减1后的引用计数为0,说明该比特位仅对应于一个合法MAC地址,而该合法MAC地址被删除了,故将减1后为0的引用计数对应的比特位的值由1置为非1的值(具体是何值,视约定而定)。如果判断结果为否,即减1后的引用计数不为0,说明该比特位对应于多个合法MAC地址,其中一个合法MAC地址被删除了,但还有其他合法MAC地址与该比特位对应,故仅将该比特位的引用计数减1,而不将该比特位的值置为0,即该比特位的值仍为1。这样当有来自其他合法MAC地址的以太帧时,通过地址过滤表可以正确判断和接收以太帧。
本实施例的地址过滤表生成方法,通过设置引用计数,在需要设置多个合法MAC地址的情景下可以更加合理的对地址过滤表进行管理,尤其在需要删除已设置的合法MAC地址的情况下通过引用计数可以保证地址过滤表的正确性,为基于地址过滤表正确接收以太帧打下了基础,提高了地址过滤表的灵活性。
在实际实现时,上述各实施例所生成的地址过滤表通常被设置在地址过滤表生成装置的存储器中,属于硬件表项。如果合法MAC地址被划分为12个4位组,每个4位组用长度为16比特的地址表示即可,但由于这个地址太短,故通常把两个4位组合并为1个地址来表示,这样两个4位组可以用一个32位的无符号(uint)整数来表示,这个32位的无符号整数对应的存储空间相当于地址表对应的两行。如果合法MAC地址被划分为6个8位组,那么每个8位组需要用8个32位的无符号整数来表示,这8个32位的无符号整数对应的存储空间相当于地址表对应的一行。如果合法MAC地址被划分为3个16位组,每个16位组需要用2048个32位的无符号整数来表示,同理,如果合法MAC地址被划分为2个24位组,则每个24位组需要用512*1024个32位的无符号整数来表示。由上述可见,合法MAC地址被拆分出的k位组的长度越长,即k值越大,所需的存储空间就越大,因此,较为优选的是将合法MAC地址被划分为12个4位组,或者将合法MAC地址被划分为6个8位组,最为优选的是将合法MAC地址被划分为12个4位组。将合法MAC地址被划分为12个4位组的形式不仅便于实现,在地址过滤表生成装置进行处理时,便于将整个地址表装载到其高速缓存(cache)中,而不会影响地址过滤表生成装置的处理速度。
图4为本发明一实施例提供的以太帧接收方法的流程图。本实施例基于图1所示实施例生成的地址过滤表实现,如图4所示,本实施例的方法包括:
步骤401、获取以太帧中的目的MAC地址。
当以太帧接收装置发现有以太帧到来时,对以太帧进行解析,获取以太帧中的目的MAC地址(后续简称为目的MAC地址)。目的MAC地址表明该以太帧指向哪台以太帧接收装置。如果以太帧的目的MAC地址是本以太帧接收装置的以太接口上设置的MAC地址,本以太帧接收装置应该接收该以太帧。
步骤402、将目的MAC地址按照预设顺序划分为n个长度为k比特的位组。
在本实施例的以太帧接收装置上预先存储有一个n行m列的地址过滤表。该地址过滤表中存储有由以太帧接收装置的以太接口上设置的MAC地址(即合法MAC地址)映射成的值为第一值的多个比特信息,且不同合法MAC地址映射成的值为第一值的比特信息一定不同。关于生成地址过滤表的过程详见上述实施例提供的地址过滤表生成方法中的描述,在此不再赘述。
本实施例接收以太帧的过程实质上是对以太帧中目的MAC地址进行过滤的过程,该过滤过程基于地址过滤表实现。为了在地址过滤表进行过滤匹配操作,以太帧接收装置根据地址过滤表的大小将目的MAC地址划分为n个k位组。其中,n个位组依次与预先生成的n行m列的地址过滤表的n行相对应,且满足m=2k。因为在实际应用中通常是以字节为单位对MAC地址进行处理的,故k的值优选为4的整数倍。另外,以太帧接收装置在拆分目的MAC地址的顺序与生成地址过滤表时对合法MAC地址的拆分顺序相同,或者按照由高位到低位的顺序拆分,或者按照由低位到高位的顺序拆分。
步骤403、以每个位组对应的值为列索引,查询所述地址过滤表中与每个位组对应的行中的相应比特位,并判断查询到的所有比特位的值是否均为预设第一值。如果判断结果为是,即查询到的所有比特位的值均为第一值,执行步骤404;如果判断结果为否,即查询到的所有比特位中存在值不为第一值的比特位,执行步骤405。
其中,拆分出的n个k位组的序号可以作为地址过滤表的行索引,而每个k位组对应的值可以作为地址过滤表的列索引,行索引和列索引交叉处的比特位即为一个k位组对应的比特位。
其中,在地址过滤表中,与合法MAC地址拆分出的n个k位组对应的比特位均被置为第一值,故在本实施例中,当查询到目的MAC地址拆分出的n个k位组对应的比特位时,判断查询到的所有比特位的值是否均为第一值,以判断该目的MAC地址是否为合法MAC地址。如果判断结果为所有比特位的值均为第一值,说明该目的MAC地址是合法MAC地址,即携带该MAC地址的以太帧指向本以太帧接收装置。如果判断结果为所有比特位中存在值不为第一值的比特位,说明该目的MAC地址对本以太帧接收装置来说不是合法MAC地址,即携带该MAC地址的以太帧不是指向本以太帧接收装置的以太帧,则该以太帧接收装置应该丢弃该以太帧。
其中,第一值可以为1或0等,而值不为第一值的比特位的值是指预设第二值,第二值是与第一值不同的值。例如:当第一值为0时,第二值可以为1或为空;当第一值为1时,第二值可以为0或为空。在本实施例中,第一值和第二值具体视生成地址过滤表时的规定而定。在本发明各实施例中优选第一值为1,而第二值为0。
下面结合图2所示的地址过滤表,以以太帧的目的MAC地址为ABEF013F4CE1为例对步骤402和步骤403的实施过程进行详细说明。首先,以太帧接收装置将目的MAC地址ABEF013F4CE1按照由高位到低位的顺序拆分为12个4位组,依次为:A、B、E、F、0、1、3、F、4、C、E和1。第1个4位组“A”对应于图2中由上向下数的第一个32位无符号整数的高16比特(即16-31比特),以第1个4位组“A”的值10为列索引去查询第一个32位无符号整数的高16比特中的第10位(从0开始计数),得到该比特位为1。继续对第2个4位组进行处理:第2个4位组“B”对应于图2中由上向下数的第一个32位无符号整数的低16比特(即0-15比特),以第2个4位组“B”的值11为列索引去查询第一个32位无符号整数的低16比特中的第11位(从0开始计数),得到该比特位为1。依次类推,直到将所有4位组都进行处理为止。在本示例中,以太帧接收装置判断得出所有4位组对应的比特位的值均为1,故该目的MAC地址ABEF013F4CE1为合法MAC地址,携带该目的MAC地址的以太帧指向本以太帧接收装置,故应该被接收。
进一步,结合图2所示的地址过滤表,以以太帧的目的MAC地址为ABEC013F4CE1为例对步骤402和步骤403的实施过程进行详细说明。首先,以太帧接收装置将目的MAC地址ABEC013F4CE1按照由高位到低位的顺序拆分为12个4位组,依次为:A、B、E、C、0、1、3、F、4、C、E和1。第1个4位组“A”对应于图2中由上向下数的第一个32位无符号整数的高16比特中的第10位(从0开始计数),得到该比特位为1。第2个4位组“B”对应于图2中由上向下数的第一个32位无符号整数的低16比特(即0-15比特)中的第11位(从0开始计数),得到该比特位为1。第3个4位组“E”对应于图2中由上向下数的第二个32位无符号整数的高16比特中的第14位(从0开始计数),得到该比特位为1。第4个4位组“C”对应于图2中由上向下数的第二个32位无符号整数的低16比特中的第12位(从0开始计数),得到该比特位为0。依次类推,直到将所有4位组都进行处理为止。在本示例中,以太帧接收装置判断得出第4个4位组对应的比特位的值为0,故该目的MAC地址ABEC013F4CE1不是合法MAC地址,则携带该目的MAC地址的以太帧不指向本以太帧接收装置,故应该被丢弃。
在此说明,在上述处理过程中,并不限于获取所有4位组对应的比特位的值后再进行判断,可以在每获取一个4位组对应的比特位的值后即可判断该4位组对应的比特位的值是否为1;如果判断结果为是,继续对下一个4位组进行处理,如果判断结果为否,即可判断出该目的MAC地址不是合法MAC地址,而不用再对后续4位组进行处理,可以提高地址过滤速度,节约以太帧接收装置的资源。
步骤404、接收以太帧,并结束此次接收操作。
当根据地址过滤表判断出目的MAC地址是合法MAC地址时,接收携带该目的MAC地址的以太帧。
步骤405、丢弃以太帧,并结束此次接收操作。
当根据地址过滤表判断出目的MAC地址不是合法MAC地址时,拒绝接收携带该目的MAC地址的以太帧,即直接将以太帧丢弃。
本实施例的以太帧接收方法,以太帧接收装置通过将以太帧中的目的MAC地址拆分为与地址过滤表相适应的n个k位组,并分别以k位组的序号和k位组对应的值为行索引和列索引去查找地址过滤表中的相应比特位,通过判断查询到的所有相应比特位是否均为第一值,判断目的MAC地址是否属于合法MAC地址,进而确定是接收或丢弃以太帧,基于上述实施例提供的地址过滤表,可以提高地址过滤的精度,从而提高了接收以太帧的正确性,保证应该接收的以太帧均被接收,不应该被接收的以太帧不被接收。
进一步说明,在上述实施例中,以太帧的目的MAC地址可以被划分为12个4位组、6个8位组、3个16位组以及2个24位组等多种形式,对目的MAC地址的拆分要与生成地址过滤表时对合法MAC地址的拆分相一致。其中,较为优选的是将以太帧中的目的MAC地址被划分为12个4位组,或者将目的MAC地址被划分为6个8位组,最为优选的是将目的MAC地址被划分为12个4位组。
图5为本发明一实施例提供的地址过滤表生成装置的结构示意图。本实施例的地址过滤表生成装置可以作为各种需要设置地址过滤表的二层网络设备(例如交换机、路由器等)的功能模块而设置于各网络设备之内,也可以就是各种二层网络设备。如图5所示,本实施例的装置包括:生成模块51、第一拆分模块52和置位模块53。
其中,生成模块51,用于生成n行m列的地址表,n和m为自然数。第一拆分模块52,用于将合法MAC地址按照预设顺序划分为n个长度为k比特的位组,其中,n个位组依次与地址表的n行相对应,且满足m=2k。其中,在实际应用中通常是以字节为单位对MAC地址进行处理的,故k的值优选为4的整数倍。置位模块53,与第一拆分模块52和生成模块51连接,用于以每个位组对应的值为列索引,将地址表中与每个位组对应的行中的相应比特位置为预设第一值,以形成地址过滤表。
本实施例的地址过滤表生成装置的上述功能模块可用于执行图1所示地址过滤表生成方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例的地址过滤表生成装置,基于MAC地址的特性将MAC地址划分为n个k位组,并生成n行2k列的地址表,以每个k位组的序号为行索引,以每个k位组的值为列索引将索引到的地址表中的比特位置为第一值,对每个合法MAC地址均进行相应处理,最终生成地址过滤表。本实施例的地址过滤表生成装置所生成的地址过滤表中存储的不是MAC地址,与现有技术中直接存储MAC地址的地址过滤表相比所允许过滤的MAC地址的数量明显增加,适应于各种规模的网络,可过滤的地址不再受地址过滤表大小的限制,为提高地址过滤效率打下了基础;另外,本实施例的地址过滤表生成装置所生的地址过滤表中各比特位的值不是以对MAC地址直接进行HASH运算的结果为索引设置的,而是以划分出的n个k位组和每个k位组的值为索引设置的,与HASH运算设置地址过滤表的方式相比为提高地址过滤的精度,降低错误接收以太帧的概率打下了基础。
图6为本发明另一实施例提供的地址过滤表生成装置的结构示意图。本实施例基于图5所示实施例实现,如图6所示,本实施例的装置还包括:第一计数处理模块61。
第一计数处理模块61,用于在需要对多个合法MAC地址进行设置的情况下,在地址表中与每个位组对应的行中的相应比特位被置为第一值时,将被置为第一值的比特位的引用计数加1。
第一计数处理模块61具体可用于执行上述地址过滤表生成方法实施例中相应部分的流程,其具体工作原理不再赘述。
本实施例的地址过滤表生成装置,通过第一计数处理模块可以在需要对多个合法MAC地址进行设置的情况下更加合理的对地址过滤表进行管理,为提高基于地址过滤表进行地址过滤时的精度打下了基础。
进一步,如图6所示,本实施例的地址过滤表生成装置还包括:第二计数处理模块62。
第二计数处理模块62,用于在删除合法MAC地址时,将地址表中与被删除的合法MAC地址的n个位组对应的比特位的引用计数减1,并判断减1后的引用计数是否为0;以及用于在减1后的引用计数为0时,将减1后为0的引用计数对应的比特位置为预设第二值。其中,第二值是与第一值不同的值,例如:如果第一值为1,则第二值可以为空、为0或其他非1的值等。
第二计数处理模块62具体可用于执行上述地址过滤表生成方法实施例中相应部分的流程,其具体工作原理不再赘述。
进一步,n和k可以为满足以下关系的任意自然数值;n和k满足的关系包括:n*k=48、m=2k。其中,较优选的k为4的倍数。例如:n为12,k为4;或n为6,k为8,最为优选的n为12、k为4。
本实施例的地址过滤表生成装置,通过第一计数处理模块和第二计数处理模块可以在多个合法MAC地址均需要设置的场景下,更加合理的管理地址过滤表,保证增加或合法删除MAC地址时能够对地址过滤表进行实时更新,保证基于地址过滤表实现的地址过滤的精度和正确性,为正确接收以太帧打下了基础。
图7为本发明一实施例提供的以太帧接收装置的结构示意图。本实施例的以太帧接收装置可以作为各种二层网络设备(例如交换机、路由器等)的功能模块而设置于各网络设备之内,也可以就是各种二层网络设备。如图7所示,本实施例的装置包括:获取模块71、第二拆分模块72、查询判断模块73和接收处理模块74。
其中,获取模块71,用于获取以太帧中的目的MAC地址。第二拆分模块72,与获取模块71连接,用于将获取模块71获取到的目的MAC地址按照预设顺序划分为n个长度为k比特的位组。其中,n个位组依次与预先生成的n行m列的地址过滤表的n行相对应,且满足m=2k。其中,在实际应用中通常是以字节为单位对MAC地址进行处理的,故k的值优选为4的倍数。查询判断模块73,与第二拆分模块72连接,用于以每个位组对应的值为列索引,查询地址过滤表中与每个位组对应的行中的相应比特位,并判断查询到的所有比特位的值是否均为预设第一值。接收处理模块74,与查询判断模块73连接,用于在查询判断模块73的判断结果为是,即查询到的所有比特位的值均为第一值时,接收以太帧,以及在查询判断模块73的判断结果为否,即查询到的所有比特位中存在值不为第一值的比特位时,丢弃以太帧。
其中,n和k可以为满足以下关系的任意自然数值;n和k满足的关系包括:n*k=48、m=2k。其中,较优选的k为4的倍数。例如:n为12,k为4;或n为6,k为8,最为优选的n为12、k为4。
本实施例的以太帧接收装置的上述功能模块可用于执行图4所示以太帧接收方法的流程,其具体工作原理不再赘述,详见方法实施例的描述。
本实施例的以太帧接收装置,通过将以太帧中的目的MAC地址拆分为与地址过滤表相适应的n个k位组,并分别以k位组的序号和k位组对应的值为行索引和列索引去查找地址过滤表中的相应比特位,通过判断查询到的所有相应比特位是否均为第一值,判断目的MAC地址是否属于合法MAC地址,进而确定是接收或丢弃以太帧,基于上述实施例提供的地址过滤表,可以提高地址过滤的精度,从而提高了接收以太帧的正确性,保证应该接收的以太帧均被接收,不应该被接收的以太帧不被接收。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (12)

1.一种地址过滤表生成方法,其特征在于,包括:
生成n行m列的地址表;
将合法MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与所述地址表的n行相对应,m=2k
以每个位组对应的值为列索引,将所述地址表中与每个位组对应的行中的相应比特位置为预设第一值,以形成所述地址过滤表。
2.根据权利要求1所述的地址过滤表生成方法,其特征在于,还包括:
当所述地址表中与每个位组对应的行中的相应比特位被置为所述预设第一值时,将所述被置为所述预设第一值的比特位的引用计数加1。
3.根据权利要求2所述的地址过滤表生成方法,其特征在于,还包括:
当删除合法MAC地址时,将所述地址表中与被删除的合法MAC地址的n个位组对应的比特位的引用计数减1,并判断减1后的引用计数是否为0;
当所述减1后的引用计数为0时,将所述减1后为0的引用计数对应的比特位置为预设第二值。
4.根据权利要求1或2或3所述的地址过滤表生成方法,其特征在于,所述n为12、k为4;或所述n为6,k为8。
5.一种地址过滤表生成装置,其特征在于,包括:
生成模块,用于生成n行m列的地址表;
第一拆分模块,用于将合法MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与所述地址表的n行相对应,m=2k
置位模块,用于以每个位组对应的值为列索引,将所述地址表中与每个位组对应的行中的相应比特位置为预设第一值,以形成所述地址过滤表。
6.根据权利要求5所述的地址过滤表生成装置,其特征在于,还包括:
第一计数处理模块,用于在所述地址表中与每个位组对应的行中的相应比特位被置为所述预设第一值时,将所述被置为所述预设第一值的比特位的引用计数加1。
7.根据权利要求6所述的地址过滤表生成装置,其特征在于,还包括:
第二计数处理模块,用于在删除合法MAC地址时,将所述地址表中与被删除的合法MAC地址的n个位组对应的比特位的引用计数减1,并判断减1后的引用计数是否为0;以及用于在所述减1后的引用计数为0时,将所述减1后为0的引用计数对应的比特位置为预设第二值。
8.根据权利要求5或6或7所述的地址过滤表生成装置,其特征在于,所述n为12,k为4;或所述n为6,k为8。
9.一种以太帧接收方法,其特征在于,包括:
获取以太帧中的目的MAC地址;
将所述目的MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与预先生成的n行m列的地址过滤表的n行相对应,m=2k
以每个位组对应的值为列索引,查询所述地址过滤表中与每个位组对应的行中的相应比特位,并判断查询到的所有比特位的值是否均为预设第一值;
当查询到的所有比特位的值均为所述预设第一值时,接收所述以太帧;
当查询到的所有比特位中存在值不为所述预设第一值的比特位时,丢弃所述以太帧。
10.根据权利要求9所述的以太帧接收方法,其特征在于,所述n为12,k为4;或所述n为6,k为8。
11.一种以太帧接收装置,其特征在于,包括:
获取模块,用于获取以太帧中的目的MAC地址;
第二拆分模块,用于将所述目的MAC地址按照预设顺序划分为n个长度为k比特的位组,n个位组依次与预先生成的n行m列的地址过滤表的n行相对应,m=2k
查询判断模块,用于以每个位组对应的值为列索引,查询所述地址过滤表中与每个位组对应的行中的相应比特位,并判断查询到的所有比特位的值是否均为预设第一值;
接收处理模块,用于在查询到的所有比特位的值均为所述预设第一值时,接收所述以太帧,以及在查询到的所有比特位中存在值不为所述预设第一值的比特位时,丢弃所述以太帧。
12.根据权利要求11所述的以太帧接收装置,其特征在于,所述n为12,k为4;或所述n为6,k为8。
CN2011101649805A 2011-06-17 2011-06-17 地址过滤表生成方法及装置、以太帧接收方法及装置 Expired - Fee Related CN102196061B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2011101649805A CN102196061B (zh) 2011-06-17 2011-06-17 地址过滤表生成方法及装置、以太帧接收方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2011101649805A CN102196061B (zh) 2011-06-17 2011-06-17 地址过滤表生成方法及装置、以太帧接收方法及装置

Publications (2)

Publication Number Publication Date
CN102196061A CN102196061A (zh) 2011-09-21
CN102196061B true CN102196061B (zh) 2013-11-20

Family

ID=44603425

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2011101649805A Expired - Fee Related CN102196061B (zh) 2011-06-17 2011-06-17 地址过滤表生成方法及装置、以太帧接收方法及装置

Country Status (1)

Country Link
CN (1) CN102196061B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105516095A (zh) * 2015-11-30 2016-04-20 南京南瑞继保电气有限公司 一种基于以太网mac控制器的组播报文过滤方法
CN110661806B (zh) * 2019-09-30 2021-07-30 华南理工大学广州学院 一种智能变电站过程总线防火墙系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6181641B1 (en) * 1999-05-26 2001-01-30 Lockheed Martin Corporation Memory device having reduced power requirements and associated methods
US6580455B1 (en) * 1998-05-05 2003-06-17 Pixart Technology, Inc. High definition image sensor
CN101346000A (zh) * 2008-07-29 2009-01-14 方圆信通科技(北京)有限公司 基于gps和移动终端的提供本地移动地理信息服务的系统
CN101641695A (zh) * 2007-01-22 2010-02-03 韦伯森斯英国有限公司 资源接入过滤系统及供与资源接入过滤系统一起使用的数据库结构

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6580455B1 (en) * 1998-05-05 2003-06-17 Pixart Technology, Inc. High definition image sensor
US6181641B1 (en) * 1999-05-26 2001-01-30 Lockheed Martin Corporation Memory device having reduced power requirements and associated methods
CN101641695A (zh) * 2007-01-22 2010-02-03 韦伯森斯英国有限公司 资源接入过滤系统及供与资源接入过滤系统一起使用的数据库结构
CN101346000A (zh) * 2008-07-29 2009-01-14 方圆信通科技(北京)有限公司 基于gps和移动终端的提供本地移动地理信息服务的系统

Also Published As

Publication number Publication date
CN102196061A (zh) 2011-09-21

Similar Documents

Publication Publication Date Title
US9098601B2 (en) Ternary content-addressable memory assisted packet classification
CN107800631B (zh) 使用ram中的散列表的tcam规则的有效匹配的方法和装置
CN101594319B (zh) 表项查找方法和装置
CN102316040B (zh) 一种访问控制列表查找的方法及数据流分类装置
WO2005074555A2 (en) Memory efficient hashing algorithm
EP2544414A1 (en) Method and device for storing routing table entry
EP3280104B1 (en) Ip routing lookup
CN102308296A (zh) 哈希计算处理方法及装置
EP2429132B1 (en) Table creating and searching method used by network processor
US9135833B2 (en) Process for selecting compressed key bits for collision resolution in hash lookup table
CN108460030B (zh) 一种基于改进的布隆过滤器的集合元素判断方法
CN108881036B (zh) 一种基于查表运算的网络通信快速匹配方法及设备
WO2014047863A1 (en) Generating a shape graph for a routing table
CN112667526A (zh) 一种访问控制列表电路实现方法及其电路
CN102196061B (zh) 地址过滤表生成方法及装置、以太帧接收方法及装置
CN109802891B (zh) 一种提高大象流流表利用率的方法及装置
US10795580B2 (en) Content addressable memory system
CN110995876B (zh) 一种ip存储与查找的方法及装置
CN106657128B (zh) 基于通配符掩码规则的数据包过滤方法及装置
US20160105363A1 (en) Memory system for multiple clients
CN111935021B (zh) 一种快速匹配网络数据包的方法及系统
CN116015796A (zh) 一种流表更新方法、装置、防火墙设备及存储介质
CN105634999A (zh) 一种介质访问控制地址的老化方法及装置
KR101587756B1 (ko) 블룸 필터 선-검색을 이용한 스트링 정보 검색 장치 및 방법
CN103092885A (zh) 稀疏索引的建立方法和装置、稀疏索引及查询方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 350002 19 Building, Citrus Industrial Park, 618 Jinshan Road, Cangshan District, Fuzhou, Fujian.

Patentee after: RUIJIE NETWORKS Co.,Ltd.

Address before: 350002 19 Building, Citrus Industrial Park, 618 Jinshan Road, Cangshan District, Fuzhou, Fujian.

Patentee before: Fujian Star Network Ruijie Networks Co.,Ltd.

CP01 Change in the name or title of a patent holder
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131120

Termination date: 20210617

CF01 Termination of patent right due to non-payment of annual fee