MAC表项老化处理方法和装置与流程

文档序号:17072914发布日期:2019-03-08 23:28阅读:442来源:国知局
MAC表项老化处理方法和装置与流程

本公开涉及网络通信技术,特别涉及mac表项老化处理方法和装置。



背景技术:

在组网应用中,当网络设备通过接口接收报文时,根据报文的源mac地址在本地mac表中查找与报文的源mac地址匹配的mac表项,如果未查找到mac表项,则依据报文的源mac地址和接收到报文的接口生成一个与报文的源mac地址匹配的mac表项并记录至本地mac表(入接口信息、mac地址只是mac表项的最基本组成部分,视不同的应用mac表项还可能有vlanid或者vpnid等信息)。

基于本地mac表,则当网络设备发送报文时,会根据报文的目的mac地址在已学习的所有mac表项中查找匹配的mac表项,若查找到,则通过匹配的mac表项中的接口发送,否则,向除报文入口之外的所有接口泛洪报文。



技术实现要素:

本公开提供了mac表项老化处理方法和装置,以避免因率先学习到指定mac地址的转发板在一段时间内未接收到源mac地址为指定mac地址的报文而删除所有转发板上与指定mac地址匹配的mac表项。

本公开提供的技术方案包括:

一种mac表项老化处理方法,该方法应用于网络设备中转发板上的cpu,该方法包括:

扫描本地mac软件表中满足指定条件的mac软件表项,检查扫描到的mac软件表项对应的mac探测标识的当前值,所述mac探测标识在所述mac软件表项被创建时设置,初始值为第一值;

当检查出所述mac探测标识的当前值为第一值时,指示同一转发板上各转发芯片在收到源mac地址为指定mac地址的报文时向所述cpu返回第一mac探测消息,所述指定mac地址为所述mac软件表项中的mac地址,并在下次扫描mac软件表项之前若接收到第一mac探测消息,则向同一设备其他转发板发送第二mac探测消息;所述第二mac探测消息用于指示所述指定mac地址有效,以使收到所述第二mac探测消息的其他转发板维持所述指定mac地址匹配的mac软件表项、mac硬件表项有效。

一种mac表项老化处理装置,该装置应用于网络设备,所述网络设备包括至少两个转发板,每一转发板上包括cpu和至少一个转发芯片;其中,

转发板上的cpu,用于扫描本地mac软件表中满足指定条件的mac软件表项,检查扫描到的mac软件表项对应的mac探测标识的当前值,所述mac探测标识在所述mac软件表项被创建时设置,初始值为第一值;当检查出所述mac探测标识的当前值为第一值时,指示同一转发板上各转发芯片在收到源mac地址为指定mac地址的报文时向本cpu返回第一mac探测消息,所述指定mac地址为所述mac软件表项中的mac地址,并在下次扫描mac软件表项之前若接收到第一mac探测消息,则向同一设备其他转发板发送第二mac探测消息;所述第二mac探测消息用于指示所述指定mac地址有效,以使收到所述第二mac探测消息的其他转发板维持所述指定mac地址匹配的mac软件表项、mac硬件表项有效。

由以上技术方案可以看出,本公开中,由转发板上的cpu主动扫描mac软件表项,在扫描到的mac软件表项对应的mac探测标识的当前值为第一值,则指示同一转发板上各转发芯片在收到源mac地址为指定mac地址(mac软件表项中的mac地址)的报文时向本cpu返回第一mac探测消息,并在下次扫描mac软件表项之前若接收到第一mac探测消息,则向同一设备其他转发板发送第二mac探测消息,所述第二mac探测消息用于指示所述指定mac地址有效,以使得只要有转发板收到源mac地址为指定mac地址的报文,就不需要各转发板删除指定mac地址匹配的mac软硬件表项,避免现有因率先学习到指定mac地址的转发板在一段时间内未接收到源mac地址为指定mac地址的报文,就要求所有转发板删除指定mac地址匹配的mac软硬件表项所导致的丢包等问题。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为pe设备结构图;

图2为本公开提供的方法流程图;

图3为本公开提供的实施例示意图;

图4为本公开提供的装置结构示意图。

具体实施方式

在组网应用中,网络设备上任一转发板上任一转发芯片学习到新的mac地址时,网络设备内所有转发板上所有转发芯片都会记录该mac地址匹配的mac表项。这里,mac地址匹配的mac表项因执行主体、存储位置不同可分为mac硬件表项和mac软件表项。下面进行描述:

以网络设备为虚拟专用局域网服务(vpls:virtualprivatelanservice)组网中的服务提供商网络边缘(pe:provideredge)设备为例,假设pe设备内有n个转发板(board1至boardn),每个转发板上存在一个硬件转发芯片,如图1所示。

如图1所示,board1上转发芯片101通过接口port1_1收到报文。报文的源mac地址为mac100。转发芯片101在本转发芯片101的mac硬件表中查找mac100匹配的mac表项(记为mac硬件表项),若未查找到,则依据接口port1_1、mac100生成mac100匹配的mac硬件表项并记录至本转发芯片101的mac硬件表中。为便于描述,该生成的新的mac硬件表项记为表项a1。需要说明的是,本实施例中,若转发芯片101在本转发芯片101的mac硬件表中查找到包含mac100的mac硬件表项,则不执行源mac学习,直接按照现有转发流程转发报文即可。

在本实施例中,表项a1的表项类型为用于指示参与硬件老化机制的类型标识比如为selflearn。表项a1主要包括mac100、接口port1_1。这里,硬件老化机制是指:转发芯片101定时扫描表项类型为用于指示参与硬件老化机制的类型标识的各mac硬件表项,若扫描到的mac硬件表项未有老化标志,则在扫描到的mac硬件表项上设有老化标志,若扫描到的mac硬件表项有老化标志,则删除扫描到的mac硬件表项。当表项a1的表项类型为用于指示参与硬件老化机制的类型标识,则意味着转发芯片101会定时扫描表项a1。

转发芯片101将接口port1_1、mac100携带在通知中发送给同一转发板即board1上的cpu。

board1上的cpu收到上述通知时,依据通知中携带的接口port1_1、mac100生成mac100匹配的mac表项(记为mac软件表项)并记录至本板mac软件表中,并向设备内其它转发板发起mac学习通知。mac学习通知携带上述接口port1_1、mac100。

其它转发板接收mac学习通知。以board2为例,则:

board2上转发芯片102依据mac学习通知中携带的接口port1_1、mac100生成mac100匹配的mac表项(记为mac硬件表项)并记录至本转发芯片102的mac硬件表中。为便于描述,这里生成的新的mac硬件表项可记为表项a2,表项a2的表项类型不同于上述表项1的表项类型,其为用于指示不参与硬件老化机制的类型标识比如为static。当表项a2的表项类型为用于指示参与不硬件老化机制的类型标识,则意味着表项a2不参与上述的硬件老化机制,上述硬件老化机制在执行时是不会扫描表项a2。

board2上cpu依据mac学习通知中携带的接口port1_1、mac100生成mac100匹配的mac表项(记为mac软件表项)并记录至本板mac软件表中。

其它转发板接收mac学习通知后按照board2的方式执行,不再赘述。

至此,通过上面描述,board1至boardn上各转发芯片都会记录mac100匹配的mac软、硬件表项。

在具体实现时,mac100匹配的mac软、硬件表项是有老化时间的,如图1所示,board1上转发芯片101在硬件老化时间到时,如果之前一段时间内没有收到源mac地址为mac100的报文,则会从本转发芯片101的mac硬件表中删除mac100匹配的mac表项(即表项a1),并向本板cpu发送删除消息。

board1上的cpu收到删除消息时,在本板mac软件表中删除mac100匹配的mac表项(包含mac100),并向其它转发板发起mac删除通知。

其它转发板接收mac删除通知。以board2为例,则:

board2上转发芯片102在本转发芯片102的mac硬件表中删除mac100匹配的mac表项(即表项a2)。

board2上cpu在本板mac软件表中删除mac100匹配的mac表项(包含mac100)。

从上面描述可以看出,之所以删除mac100匹配的mac表项,是因为率先学习到mac100匹配的mac表项的一个转发板即board1在一段时间内未接收到源mac地址为mac100的报文,并非所有转发板上所有转发芯片都在一段时间内未接收到源mac地址为mac100的报文,这会出现以下问题:若率先学习到mac100匹配的mac表项的一个转发板即board1在一段时间内未接收到源mac地址为mac100的报文,即使其他转发板接收到源mac地址为mac100的报文,最后也会导致所有转发板删除mac100匹配的mac表项。

而事实上,即使率先学习到mac100匹配的mac表项的一个转发板即board1在一段时间内未接收到源mac地址为mac100的报文,若其他转发板接收到源mac地址为mac100的报文,是没有必要删除mac100匹配的mac表项,还可以继续依据mac100匹配的mac表项转发报文,防止删除mac100匹配的mac表项后收到目的mac地址为mac100的报文因查不到mac表项而广播所导致的丢包。

本公开中,为了防止率先学习到mac100匹配的mac表项的一个转发板即board1在一段时间内未接收到源mac地址为mac100的报文,所有转发板上转发芯片删除mac100匹配的mac表项,本实施例提供了如图2所示的流程:

参见图2,图2为本实施例提供的方法流程图。该流程应用于网络设备。这里的网络设备可为pe设备,也可为其他设备,本设备并不具体限定。

在本实施例中的网络设备包括至少两个转发板,每一转发板上包括cpu和至少一个转发芯片。

如图2所示,该流程可包括以下步骤:

步骤201,转发板上的cpu扫描本地mac软件表中满足指定条件的mac软件表项,检查扫描到的mac软件表项对应的mac探测标识的当前值,所述mac探测标识在所述mac软件表项被创建时设置,初始值为第一值。

作为一个实施例,cpu是依据同一转发板上启动的定时器定时扫描mac软件表项。其中,定时器的定时时间小于预先配置的硬件表项老化时间。比如,定时器的定时时间为硬件表项老化时间的一半等。

作为另一个实施例,cpu还可按照预设周期扫描本地mac软件表中满足指定条件的mac软件表项。

需要说明的是,上述第一值只是为便于描述而进行的命名,并非具体限定,其可取值为0。

步骤202,当检查出所述mac探测标识的当前值为第一值时,指示同一转发板上各转发芯片在收到源mac地址为指定mac地址的报文时向本cpu返回第一mac探测消息,所述指定mac地址为所述mac软件表项中的mac地址,并在下次扫描mac软件表项之前若接收到第一mac探测消息,则向同一设备其他转发板发送第二mac探测消息。

在上面描述中,指定mac地址为所述mac软件表项中的mac地址。

这里的第二值可为不同于第一值的任何值,比如为1。

在一个例子中,当检查出所述mac探测标识的当前值为第一值,本步骤202可进一步包括:将所述mac探测标识的当前值从第二值更改为第一值。

当接收到第一mac探测消息时,本步骤202可进一步包括:将所述mac探测标识的当前值更改为与所述第一值不同的第二值,并指示同一转发板上各转发芯片停止返回第一mac探测消息,以防止频繁返回第一mac探测消息增加cpu负荷。

在上面描述中,上述的第二mac探测消息用于指示所述指定mac地址有效,以使收到所述第二mac探测消息的其他转发板维持所述指定mac地址匹配的mac软件表项、mac硬件表项有效。基于此,对于任一其他转发板,当收到第二mac探测消息时,在一个例子中,若此时还未开始扫描mac软件表项,则直接在即将开始的整个扫描时间段内维持包含所述指定mac地址的mac软件表项(记为目标mac软件表项)有效;

在另一个例子中,若此时已扫描到包含所述指定mac地址的mac软件表项(记为目标mac软件表项),则当目标mac软件表项对应的mac探测标识的当前值为第二值时,将所述mac探测标识的当前值从第二值更改为第一值,并且,若之前已指示同一转发板上各转发芯片返回第一mac探测消息,则指示同一转发板上各转发芯片停止返回第一mac探测消息;当目标mac软件表项对应的mac探测标识的当前值为第一值时,在当前整个扫描时间段内维持mac探测标识的当前值为第一值。

至此,完成图2所示流程。

作为一个实施例,满足指定条件的mac软件表项包括:出接口为聚合口的mac软件表项;或者,出接口为等价链路口的mac软件表项。之所以这样限制,原因是:对于聚合口或者为等价链路口,来自同一mac地址的报文有可能因接口变化而更换不同接口。以图1所示,pw口是聚合口,每个转发板(board1至boardn)上都有一个成员口加入这个聚合口,图1示出了board1上的port1_1为pw口的成员口。假若开始,源mac地址为mac100的报文从board1的port1_1进入,经过某段时间,board1上的成员口port1_1退出了pw口,则从pw到ac方向,源mac地址为mac100的报文不再进入board1的接口port1_1,假设进入board2上的接口port1_2。在接口发生更换时,原先的接口board1的port1_1始终不会再接收到源mac地址为mac100的报文,而mac100匹配的mac硬件表项也不再会命中,最终会老化删除,board1上mac100匹配的mac软件表项也会删除,并同步删除其他board上mac100匹配的mac硬件表项和mac软件表项。这样,后续其他board比如board2至boardn再收到源mac地址为mac100的报文时就会出现上述技术问题:因为查不到mac表项而产生泛洪广播导致丢包。

而为避免上述技术问题,基于图2所示流程,在本公开中,由转发板上的cpu主动定时扫描mac软件表项,在扫描到的mac软件表项对应的mac探测标识的当前值为第一值,则指示同一转发板上各转发芯片在收到源mac地址为指定mac地址(mac软件表项中的mac地址)的报文时向本cpu返回第一mac探测消息,并在下次扫描mac软件表项之前若接收到第一mac探测消息,则向同一设备其他转发板发送第二mac探测消息,所述第二mac探测消息用于指示所述指定mac地址有效,以使得只要有转发板收到源mac地址为指定mac地址的报文,就不需要各转发板删除指定mac地址匹配的mac软硬件表项,避免现有因率先学习到指定mac地址的转发板在一段时间内未接收到源mac地址为指定mac地址的报文,就要求所有转发板删除指定mac地址匹配的mac软硬件表项所导致的丢包等问题。

在本公开中,各转发板都会按照图2所示流程执行。

对于任一转发板,当接收到其他转发板发送的第二mac探测消息,则检查所述mac软件表项对应的mac探测标识的当前值为第一值还是第二值;当所述mac软件表项对应的mac探测标识的当前值为第二值时,将所述mac探测标识的当前值从第二值更改为第一值,并且,若之前已指示同一转发板上各转发芯片返回第一mac探测消息,则指示同一转发板上各转发芯片停止返回第一mac探测消息;当所述mac软件表项对应的mac探测标识的当前值为第一值时,在当前整个扫描时间段内维持mac探测标识的当前值为第一值(即控制所述mac软件表项不被老化)。

需要说明的是,上述步骤201中,若当前扫描到的mac软件表项对应的mac探测标识的当前值不为第一值,该可进一步包括:

当预先配置的硬件表项老化时间已到达、且也未收到同一设备其他转发板发送的第二mac探测消息,则删除当前扫描到的mac软件表项,并通知同一转发板上各转发芯片删除所述mac软件表项对应的mac硬件表项,所述mac硬件表项的表项类型为第一类型标识,所述mac硬件表项与所述mac软件表项包括相同的mac地址。最终实现了所有转发板上所有转发芯片都在一段时间内未接收到源mac地址为上述mac地址的报文时才删除该mac地址匹配的mac软、硬件表项。

下面通过一个具体实施例对图2所示流程:

以图3所示的pe设备为例:

如图3所示,pe设备内有n个转发板(board1至boardn),每个转发板上存在一个硬件转发芯片。

在图3中,ac口是普通的二层以太口,pw口是聚合口,board1上的接口port3_1至boardn上的接口portn_1为pw口的成员口。

如图3所示,board1上转发芯片301通过接口port3_1收到报文。报文的源mac地址为mac100。转发芯片301在本转发芯片301的mac硬件表中查找mac100匹配的mac表项(记为mac硬件表项),若未查找到,则依据接口port3_1、mac100生成mac100匹配的mac硬件表项并记录至本转发芯片301的mac硬件表中。为便于描述,该生成的新的mac硬件表项记为表项b1。表项b1中的出接口为port3_1所属的聚合口pw口。需要说明的是,本实施例中,若转发芯片301在本转发芯片301的mac硬件表中查找到包含mac100的mac硬件表项,则不执行源mac学习,直接按照现有转发流程转发报文即可。

在本实施例中,表b1的表项类型为用于指示不参与硬件老化机制的第一类型标识比如为static。表项b1主要包括mac100、pw口。这里,硬件老化机制是指:转发芯片301定时扫描表项类型为第一类型标识的各mac硬件表项,若扫描到的mac硬件表项未有老化标志,则在扫描到的mac硬件表项上设有老化标志,若扫描到的mac硬件表项有老化标志,则删除扫描到的mac硬件表项。转发芯片301定时扫描的时间是依据老化定时器,老化定时器的定时时间为预先配置的硬件表项老化时间。

当表项b1的表项类型为第一类型标识,则意味着转发芯片301不会扫描表项b1。

转发芯片301将mac100、pw口携带在通知中发送给同一转发板即board1上的cpu。

board1上的cpu收到上述通知时,依据通知中携带的mac100、pw口生成mac100匹配的mac表项(记为mac软件表项)并记录至本板mac软件表中,这里的mac软件表项记为表项c1。在一个例子中,本公开为表项c1设置了对应的mac探测标识(通过bisprobing表示),并记录当前时间为表项c1的表项学习时间。bisprobing当前取值为第一值比如0。

board1上的cpu向设备内其它转发板发起mac学习通知。mac学习通知携带上述pw口、mac100。

其它转发板接收mac学习通知。以board2为例,则:

board2上转发芯片302依据mac学习通知中携带的pw口、mac100生成mac100匹配的mac表项(记为mac硬件表项)并记录至本转发芯片302的mac硬件表中。为便于描述,这里生成的新的mac硬件表项可记为表项b2,表项b2的表项类型与上述表项b1的表项类型相同,为第一类型标识比如为static。

board2上cpu依据mac学习通知中携带的pw口、mac100生成mac100匹配的mac表项(记为mac软件表项)并记录至本板mac软件表中。这里的mac软件表项记为表项c2。在一个例子中,本公开为表项c2设置了对应的mac探测标识(通过bisprobing表示),并记录当前时间为表项c2的表项学习时间。bisprobing当前取值为第一值比如0。

其它转发板接收mac学习通知后按照board2的方式执行,不再赘述。

至此,通过上面描述,board1至boardn上都会记录mac100匹配的mac软、硬件表项。

依次类推,最终board1至boardn上都会记录各mac匹配的mac软、硬件表项。

下面描述mac表项老化机制:

在本实施例中,board1至boardn设置了定时器(为区分现有的老化定时器,这里的定时器可记为mac探测定时器)。mac探测定时器的定时时间小于预先配置的硬件表项老化时间(也即老化定时器的定时时间,记为t)。作为一个实施例,mac探测定时器的定时时间为t/2。以board1为例下面描述mac表项老化处理:

board1上的cpu依据mac探测定时器定时扫描本板mac软件表中出接口为pw口的mac软件表项。以当前扫描到的mac软件表项为上述的表项c1为例:

board1上的cpu检查表项c1对应的bisprobing为第一值比如0,则将表项c1对应的bisprobing从第一值修改为第二值比如1,指示本board1所有转发芯片在收到源mac地址为mac100的报文时向本cpu返回第一mac探测消息。

board1上的cpu如果在下次扫描mac软件表项之前收到第一mac探测消息,表明探测到本board1接收到源mac地址为mac100的报文,此时mac100匹配的mac软、硬件表项不能老化,则将表项c1对应的bisprobing从第二值修改为第一值,更新表项c1的表项学习时间,指示本board1上各转发芯片停止返回第一mac探测消息,并向同一设备其他转发板(board2至boardn)发送第二mac探测消息。第二mac探测消息指示mac100有效。

需要说明的是,本实施例中,若board1上的cpu检查表项c1对应的bisprobing为第二值,则当表项c1的硬件表项老化时间已到达、且也未收到同一设备其他board发送的上述第二mac探测消息,则意味着表项c1老化,删除表项c1,并通知本board1上各转发芯片删除对应的mac硬件表项(即上述的表项b1)。

其他转发板(board2至boardn)接收第二mac探测消息,以board2为例:

board2上的cpu收到第二mac探测消息,查找到mac100匹配的mac软件表项(即上述的表项c2),若表项c2此时对应的bisprobing取值为第二值,则将表项c2对应的bisprobing从第二值修改为第一值,更新表项c1的表项学习时间,并在本cpu之前已指示本board2上各转发芯片返回第一mac探测消息的前提下,则指示本board2上各转发芯片停止返回第一mac探测消息(即不再消耗资源主动探测是否收到源mac地址为mac100的报文)。

至此,完成本实施例的描述。

下面对本申请提供的装置进行描述:

参见图4,图4为本申请提供的装置结构图。该装置应用于网络设备,所述网络设备包括至少两个转发板,每一转发板上包括cpu和至少一个转发芯片;其中,

转发板上的cpu定时扫描本地mac软件表中满足指定条件的mac软件表项,若当前扫描到的mac软件表项对应的mac探测标识的当前值为第一值,则将所述mac探测标识的当前值更改为与所述第一值不同的第二值,并指示同一转发板上各转发芯片在收到源mac地址为指定mac地址的报文时向本cpu返回第一mac探测消息,所述指定mac地址为所述mac软件表项中的mac地址;所述mac软件表项在被创建时设置对应的mac探测标识、且该设置的mac探测标识取值为所述第一值;

转发板上的cpu在下次扫描mac软件表项之前若接收到第一mac探测消息,则将所述mac探测标识的当前值从第二值更改为第一值,指示同一转发板上各转发芯片停止返回第一mac探测消息,并向同一设备其他转发板发送第二mac探测消息,所述第二mac探测消息用于指示所述指定mac地址有效,以使收到所述第二mac探测消息的其他转发板维持所述指定mac地址匹配的mac软件表项、mac硬件表项有效。

在一个例子中,所述cpu是依据同一转发板上启动的定时器定时扫描mac软件表项;

所述定时器的定时时间小于预先配置的硬件表项老化时间。

在一个例子中,所述满足指定条件的mac软件表项包括:

出接口为聚合口的mac软件表项;或者,

出接口为等价链路口的mac软件表项。

在一个例子中,转发板上的cpu在当前扫描到的mac软件表项所对应的mac探测标识的当前值不为第一值时,进一步在所述mac软件表项对应的硬件表项老化时间已到达、且也未收到同一设备其他转发板发送的第二mac探测消息时,删除所述mac软件表项,并通知同一转发板上各转发芯片删除所述指定mac地址匹配的mac硬件表项,所述mac硬件表项的表项类型为用于指示不参与硬件老化机制的类型标识;

在一个例子中,转发板上的cpu在接收到其他转发板发送的第二mac探测消息时,进一步检查所述mac探测标识的当前值为第一值还是第二值,若为第二值,将所述mac探测标识的当前值从第二值更改为第一值,并且,若之前已指示同一转发板上各转发芯片返回第一mac探测消息,则指示同一转发板上各转发芯片停止返回第一mac探测消息;若为第一值,则在当前扫描mac软件表项的整个时间段内维持mac探测标识的当前值为第一值。

在一个例子中,转发板上的转发芯片通过本地接口接收源mac地址为所述指定mac地址的报文,依据所述报文学习所述指定mac地址匹配的mac硬件表项并记录至本转发芯片的mac硬件表中,所述mac硬件表项的表项类型为用于指示不参与硬件老化机制的类型标识。

至此,完成图4所示装置结构图。

以上所述仅为本公开的较佳实施例而已,并不用以限制本公开,凡在本公开的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本公开保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1