未知组播报文的处理方法

申请号 CN200510092956.X 申请日 2005-08-24 公开(公告)号 CN1744569A 公开(公告)日 2006-03-08
申请人 杭州华为三康技术有限公司; 发明人 邵炼成;
摘要 本 发明 涉及一种在未知组播报文的处理方法,所述处理方法包括步骤:A.将未知组播报文上送CPU;B.在CPU对该未知组播报文分析以后,若不需要对该未知组播报文进行处理,则为未知组播报文的组播地址建立MAC地址表项,并将相应的MAC地址表项配置为不向CPU端口转发。本发明所述方法以解决 现有技术 中未知组播报文对CPU的攻击问题,以提高CPU的资源利用率。
权利要求

1、一种未知组播报文的处理方法,其特征在于,包括:
A、将未知组播报文上送CPU;
B、在CPU对该未知组播报文分析以后,若不需要对该未知组播报文进 行处理,则为未知组播报文的组播地址建立MAC地址表项,并将相应的MAC 地址表项配置为不向CPU端口转发。
2、根据权利要求1所述未知组播报文的处理方法,其特征在于,将所述 未知组播报文的组播地址写入FDB表中的MAC地址表项中,且所述MAC 地址表项的内容包括:所述未知组播报文的目的MAC地址和除CPU端口外 的所有端口号。
3、根据权利要求1所述未知组播报文的处理方法,其特征在于,所述 CPU将所述未知组播报文的目的MAC地址在出端口处集合,并存放在VIDX 表的条目中,再将所述VIDX条目的索引内容写入所述FDB表的MAC地址 表项中。
4、根据权利要求3所述未知组播报文的处理方法,其特征在于,所述 VIDX表项的内容包括:除CPU端口外的所有端口号;所述MAC地址表项 的内容包括:所述未知组播报文的目的MAC地址。
5、根据权利要求2或4所述未知组播报文的处理方法,其特征在于,所 述步骤B的具体实现过程为:当CPU接收到所述未知组播报文时,判断是否 匹配到所述未知组播报文中的特征字段,若匹配到,则通过组播协议进行相 应的处理,否则,将所述未知组播报文的目的MAC地址写入FDB表的MAC 地址表项中,建立不向CPU转发的MAC地址表项。
6、根据权利要求1所述未知组播报文的处理方法,其特征在于,所述方 法还包括:当未知组播报文的MAC地址表项写入FDB表时,在内存软件表 写入一份软件MAC地址表项,预设一老化时间,执行软件MAC地址表项的 老化任务,若到达老化时间,则删除该软件MAC地址表项及其对应的MAC 地址表项。
7、根据权利要求6所述未知组播报文的处理方法,其特征在于,所述软 件MAC地址表项老化处理的具体过程为:
d)每次均将新的软件MAC地址表项写入软件表的尾处,并记录时间;
e)轮询该软件表中的第一个软件MAC地址表项;
f)判断所述当前系统时间与写入该第一个软件MAC地址表项的系统记 录时间之差是否大于预设软件MAC地址表项的老化时间,若大于,则删除所 述软件表中的软件MAC地址表项和FDB表中的MAC地址表项,否则,重 新执行步骤e)。
8、根据权利要求7所述未知组播报文的处理方法,其特征在于,使用线 性表来保存所述软件MAC地址表项。
9、根据权利要求7所述未知组播报文的处理方法,其特征在于,所述预 设软件MAC地址表项的老化时间小于FDB表中的MAC地址表项的老化时间。
10、根据权利要求7所述未知组播报文的处理方法,其特征在于,所述预 设软件MAC地址表项的最佳老化时间为5分钟。

说明书全文

技术领域

发明涉及网络通信技术,特别是涉及一种未知组播报文的处理方法。

背景技术

随着会议电视的规模使用和IPv6的发展,组播技术的应用越来越广泛。 组播报文的转发通常是由因特网组管理协议(IGMP,Internet Group Management Protocol)和组播路由协议配合实现的。具体实现方法是在组播网 络的每一台路由器运行组播路由协议,可以是距离向量组播路由选择协议 DVMRP,协议无关组播一密集模式PIM-DM,有核树组播路由协议CBT或 者协议独立组播一稀疏模式PIM-SM中的一种,对于处于域边界的路由器和 需要加入组播组的主机还需要运行IGMP。主机通过IGMP发送加入组播组的 请求,与主机直接相连的路由器收到请求后把该主机对应的端口加入响应的 组播组。在组播网络内部,组播路由协议根据加入组播组的接口拓扑图形成 组播的转发路由表。当源端口向组播网络发送目的地址为组播IP地址的报文 时,组播网络中的路由器根据组播路由协议生成的组播路由表进行转发,在 报文被转发到与主机相连的路由器后,路由器以组播的方式向主机所在的接 口发送报文。
目前,对于组播报文,将其分已知组播报文和未知组播报文。所述组播报 文的目的MAC地址(DMAC,Destination MAC)在MAC地址转发表(FDB 表,Forwarding Database(Filtering Database)中存在,则称该组播报文为已知组 播报文;反之,称为未知组播报文。也就是说,专用集成芯片(ASIC,Application Specific Integrated Circuit)在处理组播报文时,如果在FDB表中能匹配到组 播报文的DMAC,则所述组播报文可以根据MAC地址表项中的配置转发到 相应的本地端口中。而对于未知的组播报文,ASIC芯片则默认为所述组播报 文是在VLAN内的其它端口转发,并抄送CPU。所述CPU分析这些未知组 播报文是否为有用的组播报文,若有用,则组播协议报文进行相应的处理, 如果不是组播协议报文则丢弃之。
请参阅图1,为现有技术中已知和未知组播报文的转发方法的示意图。该 方法包括:当专用集成芯片端口接收到组播报文时,先在FDB表查询所述组 播报文的目的MAC地址,若查询到,则说明所述组播报文为已知组播报文, 然后,再根据所查询到的表项内容将所述组播报文转发到相应的端口中;否 则,将所述组播报文转发到其余端口,并抄送CPU。如图1所示,假设ASIC 芯片只有一个物理端口,当该端口接收到组播报文的DMAC(目的MAC地 址)分别为01-00-5E-01-02-03、01-02-03-04-05-06和01-00-C0-00-04-04时, 分别如图1中的(1)、(2)、(3)所示。由于目的MAC地址为01-00-5E-01-02-03 和01-02-03-04-05-06的组播报文在FDB表中可以查询到,则ASIC芯片根据 FDB表将所述组播报文转发到相应的本地端口去;而目的MAC地址为 01-00-C0-00-04-04的组播报文在FDB表中查找不成功,则将该报文定为为未 知组播报文。如图1所示的报文流向,该报文从端口3进入,转发到端口1、 2、和4,并同时抄送一份给CPU。该方法虽然能保证使用到组播报文,但是 这无意中也带来未知组播报文对CPU的冲击,这是因为在网络中各式各样的 的报文无法预计,一些非协议的组播报文也夹杂其中,这样的报文经过交换 机设备时无意中形成了对交换机CPU的攻击。虽然CPU不需要处理这样的报 文,但也送交CPU进行处理,白白浪费了CPU资源,严重时导致CPU无法 处理正常的网络协议报文,导致网络出现设备间协议运作不正常。
还请参阅图2,为带有智能性识别协议报文的ASIC芯片转发组播报文的 示意图。从图中可知利用智能芯片识别协议报文,并设置组播报文的转发流 向。其实现原理也比较简单,它比普通ASIC芯片多了对报文特征字段的分析 过程。例如,未知组播报文的DMAC为01-00-5E-01-02-03,用(4)表示; STP报文的DMAC为01-80-C2-00-00-00,用(5)表示;802.1X报文的DMAC 为01-80-C2-00-00-03且协议号为Ox888E,用(6)表示。当ASIC芯片接收 到组播报文时,如果所述组播报文的目的MAC地址没有匹配到这些特征字 段,再到FDB表中进行相应的查找操作,其之后的操作与图1的处理过程相 同,详见上述图1所述,在这里不再赘述。但是,随着因特网协议的不断发 展,目前已经出现的智能ASIC芯片永远不能完全跟上网络时代发展的需要。 所以未知组播报文对CPU的冲击方式还是普遍存在的。比如说,如果在一个 二层生成树协议(STP,Spanning Tree Protocol)网络里,交换机CPU频繁受 到未知组播报文的攻击,导致CPU不能及时处理STP报文,会引起网络的环 路,而导致广播暴。再者,如果在一个三层网络中,CPU频繁处理未知组 播报文,而来不及处理开放最短路径优先协议(OSPF,Open the Shortest Path First)报文,可能会导致OSPF链路断掉,从而导致网络路由的不通。这种未 知组播报文攻击CPU在网络中比较常见,特别是对于一些处于汇聚层且CPU 处理能不是很强的设备来说,比较容易受到攻击,并导致一定范围的网络 事故。

发明内容

本发明解决的技术问题是提供一种未知组播报文的处理方法,以解决现 有技术中未知组播报文对CPU的攻击问题,以提高CPU的资源利用率。
为解决上述问题,本发明提供一种未知组播报文的处理方法,包括步骤:
A、将未知组播报文上送CPU;
B、在CPU对该未知组播报文分析以后,若不需要对该未知组播报文进 行处理,则为未知组播报文的组播地址建立MAC地址表项,并将相应的MAC 地址表项配置为不向CPU端口转发。
将所述未知组播报文的组播地址写入FDB表中的MAC地址表项中,且 所述MAC地址表项的内容包括:所述未知组播报文的目的MAC地址和除 CPU端口外的所有端口号。
所述CPU将所述未知组播报文的目的MAC地址在出端口处集合,并存 放在VIDX表的条目中,再将所述VIDX条目的索引内容写入所述FDB表的 MAC地址表项中。
所述VIDX表项的内容包括:除CPU端口外的所有端口号;所述MAC 地址表项的内容包括:所述未知组播报文的目的MAC地址。
所述步骤B的具体实现过程为:当CPU接收到所述未知组播报文时,判 断是否匹配到所述未知组播报文中的特征字段,若匹配到,则通过组播协议 进行相应的处理,否则,将所述未知组播报文的目的MAC地址写入FDB表 的MAC地址表项中,建立不向CPU转发的MAC地址表项。
所述方法还包括:当未知组播报文的MAC地址表项写入FDB表时,在 内存软件表写入一份软件MAC地址表项,预设一老化时间,执行软件MAC 地址表项的老化任务,若到达老化时间,则删除该软件MAC地址表项及其对 应的MAC地址表项。
所述软件MAC地址表项老化处理的具体过程为:
d)每次均将新的软件MAC地址表项写入软件表的尾处,并记录时间;
e)轮询该软件表中的第一个软件MAC地址表项;
f)判断所述当前系统时间与写入该第一个软件MAC地址表项的系统记 录时间之差是否大于预设软件MAC地址表项的老化时间,若大于,则删除所 述软件表中的软件MAC地址表项和FDB表中的MAC地址表项,否则,重 新执行步骤e)。
使用线性表来保存所述软件MAC地址表项。
所述预设软件MAC地址表项的老化时间小于FDB表中的MAC地址表项 的老化时间。
所述预设软件MAC地址表项的最佳老化时间为5分钟。
与现有技术相比,本发明具有以下有益效果:本发明主要是针对未知组播 报文进行转发处理的。也就是说,当ASIC芯片将未知组播报文上送到CPU 时,CPU为防止这个组播报文继续冲击自己,则向FDB表中写入这个组播 报文的MAC地址与所述本地ASIC芯片的除CPU端口外的所有本地端口号。 当再有同一类组播报文从ASIC芯片的一个物理端口进入时,由于所述组播报 文匹配到FDB中的已经写入的MAC地址表项,则将MAC地址表项的内容 所述组播报文转发到所有的本地端口去,且不会再送到CPU。从而减少CPU 对未知组播报文处理时而占用大量的CPU资源,减少不必要的未知组播报文 对CPU冲击,即有效利用了CPU资源。
附图说明
图1是现有技术中普通ASIC芯片转发组播报文的示意图;
图2是现有技术中带有智能性识别协议报文的ASIC芯片转发组播报文的 示意图;
图3是本发所述明未知组播报文的处理的方法的流程图
图4是本发明所述方法的第一实施例
图5是本发明所述方法的第一实施例的一应用实例;
图6是本发明所述方法的第二实施例;
图7是本发明所述方法的第二实施例一应用实例;
图8是本发明所述方法第三实施例。

具体实施方式

本发明的核心是当中央处理器(CPU,Central Processing Unit)将接收到 专用集成芯片(ASIC Application Specific Integrated Circuit)上报的未知组播 报文时,所述未知组播报文的定义为:如果要转发的组播报文的目的媒体接 入控制(MAC,Media Access Control)地址在FDB表(MAC地址转发表), Forwarding Database或Filtering Database)中不能匹配到,则所述组播报文定 义为未知组播报文,如果匹配到,则所述组播报文定义为已知组播报文;CPU 通过分析确定所述未知组播报文是不需要处理的组播报文时,为了防止所述 未知组播报文继续冲击CPU,CPU向FDB表中写入所述未知组播报文的MAC 地址表项,所述MAC地址表项的内容包括:所述未知组播报文的目的MAC 地址(DMAC,Destination MAC)和该ASIC芯片中除CPU端口外的所有端 口号。当再有同一类组播报文从ASIC芯片的一个物理端口进入时,由于所述 组播报文匹配到FDB中的MAC地址表项,则将所述组播报文转发到所有本 地端口去,且不会送到CPU。因此,本发明所述的技术方案便起到了保护CPU 的目的,从而提高CPU的资源利用率。
下面结合附图对本发明做进一步的说明。
请参阅图3,为本发明所述未知组播报文的处理的方法的流程图,所述方 法包括:
步骤S11:将未知组播报文上送CPU;
步骤S12:在CPU对该未知组播报文分析以后,若不需要对该未知组播 报文进行处理,则为未知组播报文的组播地址建立MAC地址表项,并将相应 的MAC地址表项配置为不向CPU端口转发。
其中,将所述未知组播报文的组播地址写入FDB表中的MAC地址表项 中,且所述MAC地址表项的内容包括:所述未知组播报文的目的MAC地址 和除CPU端口外的所有端口号。
本发明所述的技术方案是对现有技术方案的改进,也就是说,为了改进现 有技术在组播报文转发的过程中,各式各样的未知组播报文对CPU会造成一 定的冲击,因此,本发明提供一种为未知组播报文在FDB表中设置MAC地 址表项的方法,来减小未知组播报文对CPU的冲击。即当ASIC芯片再收到 同一类的未知组播报文时,在FDB表中就可以匹配到相应的MAC地址表项, 而不用再将所述未知组播报文发送到CPU,从而减小所述未知组播报文对 CPU的冲击。其具体的实现过程为:当专用集成芯片ASIC的物理端口接收 到组播报文时,先在FDB表查询所述组播报文的目的MAC地址表项,若查 询到,则说明所述组播报文为已知组播报文,再根据所查询到的MAC地址表 项的内容将所述已知组播报文转发到相应的本地端口中去;否则,所述组播 报文为未知组播报文,则将所述未知组播报文转发到其余端口中去,并抄送 CPU;当CPU接收到所述未知组播报文时,将所述未知组播报文的目的MAC 地址写入FDB表的MAC地址表项中,且所述写入FDB表的MAC地址表项 的内容还包括所述除CPU端口外的所有本地端口号。其中不包括CPU端口的 目的是:使所述未知组播报文只在本地端口间转发,而不再上送CPU,从而 减少CPU对未知组播报文处理时而占用大量的CPU资源,即不必要的未知组 播报文减少对CPU冲击。
还请参考图4,为本发明所述方法的第一实施例;
如图4所示,本实施例中对于已知组播报文通过ASIC芯片的转发过程具 体如上述图3中所述,在这里不再赘述;主要描述本发明对于未知组播报文 通过ASIC芯片的转发过程,以及CPU对所述未知组播报文的处理过程。其 实现过程具体为:①当ASIC芯片将未知组播报文(比如,DMAC为 01-00-C0-00-04-04未知组播报文)上送到CPU时,②CPU为防止这个组播报 文继续冲击自己,则向FDB表中写入这个组播报文的MAC地址与所述本地 ASIC芯片的除CPU端口外的所有本地端口号(比如,端口号为P1、P2、P3、 P4)。再写入FDB表的表项中不包括CPU端口的目的是为了让所述未知组播 报文只在本地端口间进行转发,而不再上送CPU。如图4中的FDB表中黑色 的表项便是未知组播报文上送了CPU之后,由CPU添加的只包含所有本地端 口号而不包含CPU端口的表项。因此,当ASIC芯片的物理端口再接收到同 一类的未知组播报文进入时,由于其报文的目的MAC地址已经写入到FDB 表中,所以对于同一类的组播报文都能匹配到FDB中的MAC地址表项,并 根据所匹配到MAC地址表项的内容将所述组播报文转发到所有本地端口中 去,且该不会再发送到CPU。这样便起到了保护CPU的目的。从而减少了未 知组播报文对CPU的冲击,也就是说减少不必要的未知组播报文对CPU冲击。
还请参考图5,为本发明所述方法第一实施例的一应用实例,其对未知组 播报文的转发处理过程与图4基本相同,而不同之处却是二者使用的芯片不 同,即图4所用的芯片为普通的ASIC芯片,而图5所用的芯片为智能ASIC 芯片,所述智能ASIC芯片除具有普通ASIC芯片的功能外,还能识别未知组 播报文是否是组播协议报文。因此,由于使用的芯片不同,所述图5与图4 的转发处理过程也不同,其不同之处为:当CPU接收到未知组播报文时,先 匹配所述组播报文的特征字段(比如,DMAC,协议号等),如果能匹配到, 则说明所述未知组播报文为组播协议报文,可以通过组播协议对该组播协议 报文进行相应的处理;如果匹配不到,则说明所述未知组播报文为不需要处 理的未知组播报文,CPU可以将所述未知组播报文的目的MAC地址以及该 ASIC芯片除CPU端口外所有的本地端口号写入到FDB表中。这样CPU就可 以对不必要的未知组播报文进行处理时而浪费CPU资源,从而起到保护CPU 的目的。如图5所示,比如,未知组播报文的DMAC为01-00-C0-00-04-04, 用(a)表示;STP报文的DMAC为01-80-C2-00-00-0用(b)表示;802.1X 报文的DMAC为01-80-C2-00-00-03且协议号为0x888E,用(c)表示。当 ASIC芯片接收到组播报文时,先查询FDB表的MAC地址表项,如果能查询 到,则将所述组播报文转发到相应的端口;如果没有查询到,①将所述组播 报文上送到CPU,所述CPU匹配所述组播报文的特征字段(比如目的MAC 地址、协议号等),如果还没有匹配到,则CPU认为所述组播报文是不需要 处理的组播报文,则执行步骤②,即CPU向FDB表中写入这个组播报文的 MAC地址与除CPU端口外的所有本地端口号。其之后的操作步骤与图4的 处理过程相同,详见上述图4所述,在这里不再赘述。
此外,所述方法还包括:当未知组播报文的MAC地址表项写入FDB表 时,在内存软件表写入一份软件MAC地址表项,预设一老化时间,执行软件 MAC地址表项的老化任务,若到达老化时间,则删除该软件MAC地址表项 及其对应的MAC地址表项。其中,所述软件MAC地址表项老化处理的具体 过程为:d)每次均将新的软件MAC地址表项写入软件表的尾处,并记录时 间;e)轮询该软件表中的第一个软件MAC地址表项;f)判断所述当前系 统时间与写入该第一个软件MAC地址表项的系统记录时间之差是否大于预 设软件MAC地址表项的老化时间,若大于,则删除所述软件表中的软件MAC 地址表项和FDB表中的MAC地址表项,否则,重新执行步骤e)。
一般情况下,如果所述MAC地址表项的流不存在了,经过MAC地址表 项老化时间之后,芯片(包括ASIC芯片或智能ASIC芯片)可以自动的将该 MAC地址表项老化掉。但是,在某些情况下,网络管理员可能会把MAC地 址的老化时间设置很长,甚至不老化,这样一来,FDB表的资源可能被一些 未知组播占用,为了避免这种情况发生,引入一个软件表专执行未知组播 MAC地址老化任务,也就是说,将未知组播报文的目的MAC地址写入FDB 表的MAC地址表项时,同时在内存的软件表中保留一份软件MAC地址表项, 软件MAC地址表项的内容包括:MAC地址和写入该MAC地址的系统记录 时间。CPU启动定时任务器定时论询软件表的软件MAC地址表项,定时任 务器会查找软件表的软件MAC地址表项,并从该软件MAC地址表项中获取 MAC地址和写入该MAC地址的系统记录时间;再判断所述当前系统时间与 记录MAC地址表项的时间之差是否大于预设的软件MAC地址表项的老化时 间,若大于,则删除所述软件表的软件MAC地址表项和FDB表的MAC地 址表项;如果小于,则返回,重新定时查询,定时可选择十秒一个间隔。
还请参阅图6,为本发明所述方法的第二实施例,所述实施例包括:
步骤M11:将未知组播报文上送CPU;
步骤M12:在CPU对该未知组播报文分析以后,若不需要对该未知组播 报文进行处理,则将所述未知组播报文的MAC地址在出端口处集合,并存放 在VIDX表的条目中,再将所述VIDX条目的索引内容写入所述FDB表的 MAC地址表项中,且所述MAC地址表项配置为不向CPU端口转发。
其中,所述VIDX表项的内容包括:除CPU端口外的所有端口号;所述 MAC地址表项的内容包括:所述未知组播报文的目的MAC地址。
本发明所述方法与上述方法的部分实现过程完全相同,即当专用集成芯 片ASIC的物理端口接收到组播报文时,先在FDB表查询所述组播报文的目 的MAC地址表项,若查询到,则说明所述组播报文为已知组播报文,再根据 所查询到的MAC地址表项的内容将所述已知组播报文转发到相应的本地端 口中去;否则,所述组播报文为未知组播报文,则将所述未知组播报文转发 到其余端口中去,并抄送CPU。其不同之处为:当所述CPU接收到未知组播 报文将时,将所述组播报文的目的MAC地址在其出端口处集合,并将所述目 的MAC地址存放在一个VIDX表的条目中,并只将所述VIDX条目的索引内 容按队列的方式写入所述FDB表中,且索引内容包括:除CPU端口外所述芯 片的所有端口号。当ASIC芯片再接收到同一类未知组播报文时,根据所述 FDB表中的索引内容查找到VIDX条目进行报文复制转发。其实现流程与上 述方法的实现原理基本相同,软件MAC地址表项的设置及老化机制与上述方 法相同(软件MAC地址表项是相同的,只是硬件表由一个FDB表变成了FDB 表+VIDX表)。其中,所述VIDX表实际上是一种出端口组织的方式。当ASIC 芯片拥有几十个端口的时候,在FDB表中维护该组播组的出端口集合将相当 浪费硬件表项资源。而将出端口用单独的表项进行管理,既减小了FDB表的 体积,又使得FDB表能够灵活引用出端口集。
但是,再实际应用中,还有某些厂商再实现ASIC芯片对组播报文进行转 发时,关闭未知组播报文上送CPU的选项,使得所有的未知组播报文只再本 地端口之间转发而不上送CPU。而对于需要上送CPU的未知组播报文的 DMAC为组播的协议报文时,为其专门设置一个FDB表的MAC地址表项, 即所有本地端口和CPU或者只包括CPU而不包括本地端口。但是,这种方法 虽然能减少未知组播报文对CPU的冲击,但其也有其局限性,因为目前交换 设备的FDB表的MAC地址表项都是基于MAC+VLAN进行查找的,如果设 备上配满了4K VLAN,则需要为该协议配置4K条FDB表的MAC地址表项, 这也是对资源的浪费。
再请参阅图7,为本发明所述方法的第二实施例的一应用实例
如图7中所示,如果CPU要将未知组播报文组的目的MAC地址为 01-80-C2-00-00-04、01-80-C2-00-00-05和01-80-C2-00-00-06在FDB表写入 MAC地址表项,首先现将未知组播报文组的出端口集合,并将除CPU端口 外所有的本地端口存放在VIDX表的条目中,然后将所述VIDX条目的索引 内容写入所述FDB表的MAC地址表项中。这样所述未知组播报文组时便可 以共用一条出端口集合进行转发。因此,本发明所述方法使用VIDX方案只 是出端口集的位置与上述方法不一样,再进行同一类组播报文转发时,根据 所述FDB表项中的索引内容(即所有本地端口集)进行转发。其它方面,如 软件MAC地址表项设置,老化机制等都是基本相同的。具体详见上述,在这 里不再赘述。
在请参阅图8,为本发明所述方法的第三实施例,当未知组播报文的MAC 地址表项写入FDB表时,在内存软件表尾处写入一份软件MAC地址表项, 如果所述MAC地址表项对应的流不存在,则启动定时任务器定时论询该流所 对应软件MAC地址表项,并根据轮询结果对软件MAC地址表项进行相应的 处理。其具体的实现过程为:
步骤N10:预设组播报文的软件MAC地址表项的老化时间;
步骤N11:定时轮询所述软件表的MAC地址表项,并获取该MAC地址 表项中记录的MAC地址以及写入该MAC地址的系统记录时间;
步骤N12:判断当前系统时间与写入该MAC地址的系统记录时间之差是 否大于所述预设软件MAC地址表项的老化时间;
步骤N13:若大于所述预设MAC地址表项的老化时间,则删除所述软件 表中的软件MAC地址表项和FDB表中的MAC地址表项,否则,重新执行 步骤N11。
其中,所述软件MAC地址表项是CPU将所述组播报文的MAC地址表 项写入FDB表时,而在内存中保留的表项。其保存的形式可以根据不同软件 实现的复杂程度来使用不同的数据结构保存所述软件MAC地址表项。比如使 用线性表的形式来保存软件MAC地址表项等。
一般情况下,在CPU向FDB中写入一条未知组播报文的动态的MAC地 址表项时,简单来说,所述MAC地址表项内容包含未知组播报文的目的MAC 地址和该芯片的本地端口号。所述ASIC芯片本身具有MAC地址的自动老化 机制,如果在FDB表中的一条MAC地址表项所对应的流不存在了,则再经 过MAC地址表项的老化时间之后,所述芯片可以自动的将该MAC地址表项 老化掉。而所述MAC地址表项的老化时间一般可以采用默认值,也可以由管 理员根据网络的大小和经验来配置适当的老化时间值。但是,如果管理员出 于某种目的将MAC地址表项的老化时间配置得较长,或者配置为MAC地址 表项不老化,则即使这条流早就不存在了,可MAC地址表项却仍然占着FDB 表的一个MAC地址表项,这样就浪费了FDB表中的硬件资源。
为此,本发明提供上述在网络通信中老化FDB表中组播表项的方法,其 具体的实现过程为:在CPU写FDB表之后,同时在内存的软件表中保留一份 软件MAC地址表项,软件MAC地址表项中记录MAC地址的时间和写软件 MAC地址表项的当前时间t1。所述软件MAC地址表项根据软件实现复杂程 度的不同来使用不同的数据结构保存,最为简单的方式就是用线性表来保存, 也可以根据先进先出(比如队列)的原则保证每次加入一个新未知组播报文 的MAC地址表项都是加在该软件表的最后。然后根据MAC老化时间的经验 值定义一个折中的时间值Δt(比如5分钟,但并不限于5分钟,可以根据网 络情况和经验值具体来设定)作为软件老化防攻击软件MAC地址表项的时 间,即老化时间。该老化过程由一个定时任务器来查询当前的软件MAC地址 表项,并执行软件老化过程。即:CPU启动定时任务器在固定(比如10秒钟) 去轮询软件表,并获取该软件表中记录MAC地址表项的时间和写入该MAC 地址表项的当前记录时间;如果软件MAC地址表项的老化时间已经大于等于 经验值Δt,则删除软件MAC地址表项,并同时删除FDB中的MAC地址表 项。若小于,则等待下一个老化时间重新进行。这是因为在添加软件MAC地 址表项时,后加的总是加到表项的尾部,所以一旦轮询到时间差值小于Δt的 软件MAC地址表项,则说明后面的软件MAC地址表项也都是小于Δt的, 没必要继续轮询下去,可以在下一个固定时间(比如等10秒钟),进行下一 次轮询。
下面仍以图4为例来说明在网络通信中老化FDB表中组播表项的方法。 如图4中所示,将DMAC为01-00-C0-00-04-04的未知组播报文上CPU;所 述CPU将该报文的目的MAC地址01-00-C0-00-00-04和当前的时间t1保存在 软件表的末尾。定时任务器从表的第一个软件MAC地址表项开始遍历整个表 项,当遍历到01-00-C0-00-00-04表项的时候,用当前的时间t与t1比较,如 果t-t1≥Δt,则删除软件MAC地址表项和FDB表项MAC地址表项;如果 t-t1<Δt,则等待下一下周期再遍历表项。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普 通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润 饰,这些改进和润饰也应视为本发明的保护范围。
QQ群二维码
意见反馈