本发明涉及通信
技术领域:
:,尤其涉及一种地址表维护方法、装置、设备。
背景技术:
::介质访问控制(mediaaccesscontrol,mac)地址也称为物理地址,是识别局域网中网络设备节点的标识。在网络物理传输过程中,通过mac地址可以实现不同网络设备间的通信。以交换机为例,交换机的各端口具有学习和老化动态mac地址的功能。各端口学习数据帧中携带的mac地址,并将mac地址存储到硬件mac地址表中。目前,除了硬件mac地址表以及数据库所存储的软件mac地址表之外,还会在网络设备中建立与硬件mac地址表配套的另一软件mac地址表(为区分,该软件mac地址表称为影子mac地址表),以便用户对mac地址进行查询、路由等业务。当采用块级查询方式检测到硬件mac地址表和影子mac地址表所存储的mac地址信息不一致,负责维护硬件mac地址表的硬件模块需要产生地址学习(newaddress,na)消息或地址老化(agedaddress,aa)消息并发送给中央处理器(centralprocessingunit,cpu),以触发cpu基于接收到的na消息或aa消息来维护数据库所存储的软件mac地址表中对应的mac地址信息。但是,上述地址表维护方案的实现需要依赖于影子mac地址表,而影子mac地址表的创建和维护则依赖于网络设备中硬件mac地址表结构以及计算mac地址索引值时所采用的哈希(hash)算法。对于部分网络设备而言,通常难以获知交换芯片的硬件mac地址表结构以及相应地址存取方式,或与目前地址表维护方案中的存取方式存在一定差异,在这些情况下,显然也难以创建用于维护mac地址信息的影子mac地址表。此外,还有一些网络设备并不支持块级查询方式,因此也无法通过目前的地址表维护方案来维护mac地址信息。因此,如何维护网络设备中的mac地址信息,成为亟待解决的技术问题。技术实现要素:本发明实施例提供一种地址表维护方法、装置、设备,用以拓展地址表维护方案的适用范围,降低开发维护难度。第一方面,本发明实施例提供一种地址表维护方法,应用于网络设备包括的至少一个线卡中,该地址表维护方法包括:从删除操作指令中获取第一索引信息;从硬件mac地址表中删除与该第一索引信息对应的多个目标mac地址表项;从各个索引信息链表中选取与该第一索引信息对应的目标索引信息链表,并生成与该目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,多个链表元素分别对应的mac地址表项与该多个目标mac地址表项相同;向维护软件mac地址表的中央处理器cpu通告与多个链表元素分别对应的地址老化消息,以使cpu从该软件mac地址表中删除多个目标mac地址表项。第二方面,本发明实施例提供一种地址表维护装置,该地址表维护装置应用于网络设备包括的至少一个线卡中,该地址表维护装置包括:获取单元,用于从删除操作指令中获取第一索引信息;删除单元,用于从硬件mac地址表中删除与第一索引信息对应的多个目标mac地址表项;生成单元,用于从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并生成与该目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,多个链表元素分别对应的mac地址表项与多个目标mac地址表项相同;通告单元,用于向维护软件mac地址表的cpu通告与多个链表元素分别对应的地址老化消息,以使cpu从该软件mac地址表中删除多个目标mac地址表项。第三方面,本发明实施例提供一种电子设备,其中包括处理器和存储器,其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器至少可以实现第一方面中的地址表维护方法。本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现第一方面中的地址表维护方法。本发明实施例提供的地址表维护方案中,从删除操作指令中获取第一索引信息,进而,从硬件mac地址表中删除与第一索引信息对应的多个目标mac地址表项。获取第一索引信息后,为保证软件mac地址表与硬件mac地址表的一致性,还需要从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并生成与该目标索引信息链表中除链表头之外的多个链表元素分别对应的多个地址老化消息。由于目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项与多个目标mac地址表项相同,因而,通过与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,能够向维护软件mac地址表的cpu指示需要删除的多个目标mac地址表项,以使cpu从软件mac地址表中批量删除目标mac地址表项。该地址表维护方案中,通过从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并基于目标索引信息链表模拟与多个目标mac地址表项分别对应的mac地址表项对应的多个地址老化消息,通告给维护该软件mac地址表的cpu,无需依赖硬件mac地址表的结构以及对应的硬件哈希算法,也无需额外建立影子mac地址表,即可直接从软件mac地址表中批量删除多个目标mac地址,不仅实现了对硬件mac地址表和软件mac地址表的维护,还使得该地址表维护方案能够适配于具有不同结构硬件mac地址表或采用不同硬件哈希算法的网络设备,大大拓展地址表维护方案的适用范围,降低网络设备的开发维护难度。此外,本发明实施提供的地址表维护方案,还有助于及时更新cpu所维护的软件mac地址表,保障硬件mac地址表和软件mac地址表的一致性,提升网络设备的可靠性。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为一种地址表维护方法的原理示意图;图2为本发明实施例提供的一种地址表维护方法的流程示意图;图3为本发明实施例提供的一种地址表维护方法的原理示意图;图4为本发明实施例提供的另一种地址表维护方法的原理示意图;图5为本发明实施例提供的一种地址表维护装置的结构示意图;图6为与图5所示实施例提供的地址表维护装置对应的电子设备的结构示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。本发明实施例提供的技术方案涉及mac地址。mac地址是识别局域网中网络设备节点的标识。在网络物理传输过程中,通过mac地址可以实现不同网络设备间的通信。以交换机为例,交换机的各端口具有学习和老化动态mac地址的功能。各端口通过学习数据帧中携带的mac地址,将mac地址存储到硬件mac地址表中。目前,针对于硬件mac地址表、数据库所存储的软件mac地址表、以及与硬件mac地址表配套的影子mac地址表,主要采用如下地址表维护方式:当检测到硬件mac地址表和影子mac地址表所存储的mac地址信息不一致,负责维护硬件mac地址表的模块需要产生na消息或aa消息并发送给cpu,以触发cpu基于接收到的na消息或aa消息来维护数据库所存储的软件mac地址表中对应的mac地址信息。图1为目前一种地址表维护过程的原理示意图。实际应用中,图1示出的地址表维护过程可以是由如交换机等网络设备实现的。下面结合图1来说明目前地址表维护过程中存在的实际问题:在图1中,假设硬件mac地址表记为hw_fdb_table。假设与硬件mac地址表配套的影子mac地址表记为soft_fdb_shadow。具体地,通过对比hw_fdb_table和soft_fdb_shadow可以产生na消息和aa消息,用于维护数据库所存储的mac地址表。通过学习新增的mac地址(即macc)将该macc加入hw_fdb_table中。此情况下,通过对比hw_fdb_table和soft_fdb_shadow,发现soft_fdb_shadow中并不存在该macc,从而,基于该对比结果可以产生一个na消息并通告给网络设备的cpu,以便cpu接收到该na消息之后,将该macc添加到数据库所存储的软件mac地址表中。如果macd因预设时段内未命中被从hw_fdb_table中老化后,对比hw_fdb_table和soft_fdb_shadow后发现soft_fdb_shadow中仍存在该macd,此情况下,基于该对比结果会产生一个aa消息并通告给cpu,以便cpu接收到该aa消息后将通告的macd从软件mac地址表中删除。结合图1来说,本发明实施例提供的地址表维护方案所要解决的实际问题在于:目前的地址表维护方案依赖于影子mac地址表,而影子mac地址表的创建和维护则依赖于网络设备中硬件mac地址表结构以及计算mac地址索引值时所采用的哈希(hash)算法。对于部分网络设备而言,通常难以获知交换芯片的硬件mac地址表结构以及相应地址存取方式,或与上述地址表维护方案所描述的存取方式存在一定差异,在这些情况下,显然也难以创建用于维护mac地址信息的影子mac地址表。此外,还有一些网络设备并不支持块级查询方式,因此也无法通过目前的地址表维护方案来维护mac地址信息。因而,如何维护网络设备中的mac地址信息,成为亟待解决的技术问题。为解决上述技术问题,本发明实施例提供的地址表维护方案的核心思想是:从删除操作指令中获取第一索引信息(为区别,本文将从删除操作指令中获取的索引信息称为第一索引信息)之后,基于第一索引信息能够直接从硬件mac地址表中删除多个目标mac地址表项。为保证软件mac地址表与硬件mac地址表的一致性,还需要从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,以使维护软件mac地址表的cpu基于与多个链表元素分别对应的地址老化消息来维护软件mac地址表。比如,假设删除操作指令为删除port1端口下的所有动态mac地址。由此,可以从该删除操作指令中确定出第一索引信息为port1标识,基于该port1标识可以直接从硬件mac地址表中选取并删除port1端口下的所有动态mac地址对应的动态mac地址表项(即多个目标mac地址表项),并从多个索引信息链表中选取与port1标识对应的目标索引信息链表,并生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息。由于目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项与port1端口下的动态mac地址表项(即多个目标mac地址表项)相同,因而,通过上述地址老化消息能够向维护软件mac地址表的cpu指示需要删除的port1端口下的动态mac地址表项,从而使cpu从软件mac地址表中批量删除port1端口下所有动态mac地址对应的动态mac地址表项。实际上,mac地址表包括至少一个mac地址表项。mac地址表项中包括mac地址以及该mac地址对应的索引信息。由此,通过上述地址老化消息可使cpu依据第一索引信息从软件mac地址表中查询port1端口下所有动态mac地址对应的mac地址表项,并老化查询到的所有mac地址表项。上面给出的地址表维护方案的核心思路中,通过从各个索引信息链表中选取与索引信息对应的目标索引信息链表,并基于目标索引信息链表模拟与多个目标mac地址中除链表头之外的多个链表元素分别对应的mac地址表项对应的多个地址老化消息,通告给维护该软件mac地址表的cpu,无需依赖硬件mac地址表的结构以及对应的硬件哈希算法来建立影子mac地址表,也无需通过对比硬件mac地址表和影子mac地址表的差异来产生aa消息,即可直接将多个目标mac地址表项从软件mac地址表中删除,使得该地址表维护方案能够适配于具有不同结构硬件mac地址表或具有不同硬件哈希算法的网络设备,不仅大大拓展地址表维护方案的适用范围,降低网络设备的开发维护难度,还大大降低地址表维护过程的工作量,提升地址表维护效率。此外,目前的mac地址表维护方案主要是通过对比软件mac地址表(包括影子mac地址表)和硬件mac地址表实现的。在一些大型网络设备中,通常会存储几百甚至几十万条mac地址信息,目前的mac地址表维护方案使用的对比手段不仅工作量大、执行效率低,而且也难以避免因mac地址表项更新不及时导致的软件mac地址表和硬件mac地址表偏差较大,影响网络设备可靠性的问题。故而目前的地址表维护方案还存在执行效率低、影响网络设备可靠性等技术问题。对此,该地址表维护方案通过基于目标索引信息链表模拟与多个目标mac地址表项分别对应的地址老化消息,并通告给维护软件mac地址表的cpu,实现对软件mac地址表的批量化更新,保障硬件mac地址表和软件mac地址表的一致性,提升网络设备的可靠性。本发明实施例提供的技术方案适用于网络设备。本发明实施例所涉及的网络设备,可以是交换设备,或者接入点,或者可以是指接入网中在空中接口上通过一个或多个扇区与无线终端设备通信的设备。网络设备可以是交换设备,例如分布式交换机(也即分布式以太网交换机)、路由设备。交换机中包括线卡(或者板卡)以及管理板。分布式交换机主要指多台盒式或箱式交换机堆叠起来的设备、或分布式转发的箱式设备。该交换设备还可以是汇聚设备或核心设备,本发明实施例中并不限定。当然,本发明实施例提供的技术方案还可应用于各种交换芯片,或其他涉及mac地址表维护功能(尤其是mac地址表项删除功能)的电子模块。本发明实施例提供的技术方案适用于地址表维护场景,例如删除mac地址表项的场景、mac地址表项的更新场景。例如,需要在汇聚设备中批量删除几十甚至几万条动态地址的场景。下面结合以下实施例对地址表维护方法的执行过程进行说明。图2为本发明实施例提供的一种地址表维护方法的流程图。本发明实施例中提供的地址表维护方法可以应用于网络设备包括的至少一个线卡中。如图2所示,该地址表维护方法包括如下步骤:201、从删除操作指令中获取第一索引信息。202、从硬件mac地址表中删除与第一索引信息对应的多个目标mac地址表项。203、从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,该目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项与多个目标mac地址表项相同。204、向维护软件mac地址表的cpu通告与多个链表元素分别对应的地址老化消息,以使该cpu从软件mac地址表中删除多个目标mac地址表项。图2示出的地址表维护方法中,通过从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并基于目标索引信息链表模拟与多个目标mac地址表项分别对应的多个地址老化消息,通告给维护该软件mac地址表的cpu,无需依赖硬件mac地址表的结构以及对应的硬件哈希算法来额外建立影子mac地址表,也无需通过对比硬件mac地址表和影子mac地址表的差异来产生aa消息,即可直接从软件mac地址表中批量删除多个目标mac地址表项,使得该地址表维护方案能够适配于具有不同结构硬件mac地址表或具有不同硬件哈希算法的网络设备,大大拓展地址表维护方案的适用范围,降低软件mac地址表的开发复杂度和维护难度。本发明实施例中对mac地址表项的维护过程主要涉及mac地址表项的添加操作以及删除操作。mac地址表项可以存储于网络设备的数据库中,数据库可以是由网络设备的cpu维护的。实际应用中,以网络设备是交换机为例,维护软件mac地址表的cpu安装于交换机的管理板。实际上,当学习到一批mac地址时,通过网络设备的至少一个线卡生成这一批mac地址各自对应的mac地址表项,并将这一批mac地址各自对应的mac地址表项存储到交换机的硬件mac地址表,并由线卡将这一批mac地址上报到管理板。进而,管理板将接收到的这一批mac地址采用mac地址表项的形式添加到管理板数据库的软件mac地址表。实际应用中,mac地址表项包括mac地址以及与mac地址对应的第一索引信息。当需要删除这一批mac地址中的某些mac地址(比如某一port或vlan下的mac地址)时,通常是由线卡在硬件mac地址表中删除这些mac地址各自对应的mac地址表项,同时通过第一索引信息(比如port标识或vlan标识)以索引信息链表的形式查找出这些mac地址各自对应的mac地址表项,并生成与这些mac地址表项分别对应的多个地址老化消息,通告给管理板。由管理板从软件mac地址中删除这些mac地址表项。从而,保障硬件mac地址表和软件mac地址表的一致性,提升网络设备的可靠性。为便于理解本发明实施例中mac地址表项在软件mac地址表中所对应的存储方式,下面仍以交换机为例,假设交换机包括线卡和管理板。假设软件mac地址表为管理板维护的数据库中的软件mac地址表,基于上述假设,先介绍本发明实施例所提供的将mac地址表项加入数据库所存储的软件mac地址表的添加操作。一般来说,mac地址表项至少包括:mac地址信息以及mac地址对应的索引信息。与mac地址对应的索引信息比如是该mac地址所属设备所在的虚拟局域网(virtuallocalareanetwork,vlan)标识以及设备端口(port)标识。vlan标识例如是依据实际情况设置的vlan标识号(vlanid,vid)。实际应用中,数据库所存储的软件mac地址表中包括至少一个mac地址表项。可选地,在软件mac地址中基于mac地址添加mac地址表项前,还需要生成mac地址表项对应的索引信息(为区别,本文将mac地址存储过程中涉及的索引信息称为第二索引信息),用来标识该mac地址表项在数据库中对应的存储位置。对于一个待存储mac地址表项而言,该待存储mac地址表项包括需要存储的mac地址以及该mac地址对应的第二索引信息。除了通过vlan标识以及mac地址计算得到的哈希索引值外,本发明实施例还增加了基于mac地址对应的port标识和/或vlan标识得到的第二索引信息。基于mac地址对应的port标识得到的第二索引信息用于指示设备端口与mac地址表项的映射关系。基于mac地址对应的vlan标识得到的第二索引信息用于指示vlan与mac地址表项的映射关系。mac地址对应的哈希索引值主要用于对该mac地址对应的mac地址表项进行哈希存储。这里的mac地址表项包括下文中待删除的多个目标mac地址表项。实际应用中,同一索引信息链表中除链表头之外的多个链表元素对应的mac地址表项均包括同一个索引信息。具体地,在将待存储mac地址表项添加到软件mac地址表的过程中,会将待存储mac地址表项按照各自的第二索引信息划分为多组,并将各组待存储mac地址表项以链表形式分别挂接到索引信息链表中。实际上,为避免额外占用存储空间,以指针域的形式在各个索引信息链表的链表元素中记录待存储mac地址表项的存储位置,从而以各个索引信息链表的形式保存对应的各组待存储mac地址表项。也就是说,待存储mac地址表项对应的存储位置则记录在该待存储mac地址表项对应的链表元素中。在一可选实施例中,202之前,还可确定待存储mac地址表项对应的第二索引信息,在各个索引信息链表的链表头中查找第二索引信息,若查找到第二索引信息,则将待存储mac地址表项对应的链表元素挂接到以第二索引信息为链表头的索引信息链表中。若未查找到第二索引信息,则建立第二索引信息为链表头的索引信息链表,并将待存储mac地址表项对应的链表元素挂接到以第二索引信息为链表头的索引信息链表中。具体来说,若查找到第二索引信息,则说明已建立有与第二索引信息对应的索引信息链表,此情况下,无需新建索引信息链表,可直接将待存储mac地址表项对应的链表元素挂接到以第二索引信息为链表头的索引信息链表中。若未查找到第二索引信息,则说明目前并不存在与第二索引信息对应的索引信息链表,此情况下,需要新建索引信息链表,即建立以第二索引信息为链表头的索引信息链表,并将待存储mac地址表项对应的链表元素挂接到以第二索引信息为链表头的索引信息链表中。可选地,如果一个待存储mac地址表项包括多个第二索引信息,此情况下,该待存储mac地址表项对应的链表元素分别作为多个索引信息链表中的链表元素。举例来说,假设某一待存储mac地址表项包括一个mac地址以及与该mac地址对应的两个第二索引信息,即port1(即port标识)和vlan2(即vlan标识),此情况下,该待存储mac地址表项的存储位置可以记录在该待存储mac地址表项对应的链表元素中,并将该链表元素分别挂接到与port1对应的索引信息链表以及与vlan2对应的索引信息链表。实际应用中,第二索引信息包括port标识和/或vlan标识。port标识比如是端口名称、端口号。vlan标识比如是vlan编号。索引信息链表包括但不限于:与port标识对应的索引信息链表和/或与vlan标识对应的索引信息链表。具体而言,对于待存储mac地址表项,可以获取与该待存储mac地址表项对应的port标识和/或vlan标识,作为该待存储mac地址表项对应的第二索引信息。例如,假设待存储mac地址表项包括的mac地址记为mac_entry1,获取该mac_entry1表项对应的port_list和vlan_list作为该mac_entry1表项对应的第二索引信息,其中,port_list为port标识,vlan_list为vlan标识。进而,查找已建立的各个索引信息链表的链表头中是否有上述第二索引信息(即port_list和vlan_list)。若在已建立的各个索引信息链表的链表头中未查找到上述第二索引信息,则分别建立以port_list和vlan_list作为链表头的索引信息链表,进而,将该mac_entry1表项的存储位置记录于链表元素中,并将该链表元素分别挂接到分别以port_list和vlan_list作为链表头的索引信息链表中。接上文示例,在一组待存储mac地址表项(假设这一组mac地址表项包括的mac地址分别记为mac_entry1、……、mac_entryn)中,这一组待存储mac地址表项中各个待存储mac地址表项对应的第二索引信息相同,均为port_list和vlan_list。这一组待存储mac地址表项的存储位置分别记录于各自对应的链表元素中,从而,由这一组待存储mac地址表项对应的链表元素组成如图3所示的3个索引信息链表。在图3中,上述3个索引信息链表的链表头分别为port_list、vlan_list以及hash_lis,其中,port_list为port标识,port_list为数组fdb_port_head[1:n]中的一个元素,vlan_list为vlan标识,vlan_list为数组fdb_vlan_head[1:n]中的一个元素,hash_list为哈希索引值。实际应用中,链表头通常存储在线卡维护的数据库(database,db)的指针数组中,以便线卡基于第二索引信息查找到对应的索引信息链表以及索引信息链表中挂接的链表元素对应的mac地址表项。实际上,索引信息链表中挂接的链表元素对应的mac地址表项是通过指针形式挂接到链表头(例如,上文介绍的将mac地址表项的存储位置记录在链表元素的指针域中),并不额外占用线卡维护的数据库的存储资源。除了上文描述的这种添加操作实现过程之外,还可以采用其他方式将待存储的mac地址表项添加至软件mac地址表中对应索引信息所指示的存储位置,此处暂不展开。介绍完对mac地址表项的添加操作之后,下面继续以交换机为例,假设交换机包括线卡和管理板。假设软件mac地址表仍为管理板数据库中的软件mac地址表为例,介绍本发明实施例所提供的将mac地址表项从软件mac地址表中删除的删除操作。首先,201中,从删除操作指令中获取第一索引信息。其中,删除操作指令中携带有与mac地址表项相关的信息,也就是第一索引信息。与上文描述的第二索引信息类似,此处的第一索引信息比如是vlan标识、port标识。例如,假设删除操作指令为删除某vlan下的动态mac地址。假设某vlan与两个port端口绑定。此情况下,除了要在交换机中删除某vlan外,还需要删除某vlan绑定的两个port端口下的所有动态mac地址对应的mac地址表项。这里,从该删除操作指令中获取某vlan标识,并将某vlan标识确定为第一索引信息。可选地,还可以从该删除操作指令中获取某vlan标识,并将某vlan标识以及与某vlan绑定的两个port端口的port标识确定为第一索引信息。从而,基于第一索引信息可以确定出需要删除的mac地址表项。本文中,为区分,将需要删除的mac地址表项称为目标mac地址表项。可以理解的是,目标mac地址表项应至少包括:需要删除的目标mac地址、与目标mac地址对应的某vlan标识、以及与某vlan绑定的任一port端口的port标识。本发明实施例中删除操作指令包括涉及地址删除操作的各种指令。删除操作指令可以是用于动态地址批量删除的各种指令。比如,涉及地址删除操作的命令行界面(command-lineinterface,cli)指令、链路故障断开时触发的各种指令、关闭(shutdown)端口时触发的各种指令。实际应用中,在一些大型网络设备(如汇聚设备或核心设备)所存储的mac地址表项数量常常达到几万甚至几十万条。一般来说,对于这些大型网络设备需要对mac地址表项进行批量化的维护操作,如批量删除mac地址表项。此情况下,可以采用上述用于动态地址批量删除的各种指令来批量删除mac地址表项。比如,通过cli指令可以删除所有mac地址表项,即删除所有端口下的mac地址表项。再比如,通过链路故障断开或者用户shutdown端口时触发的指令可以删除指定端口下的mac地址表项。例如,某一链路故障断开时会触发删除某些端口的指令,此情况下从该指令可以获知需要对这些端口对应的动态地址进行删除。通过步骤201可以将从与地址删除操作相关的各种指令中解析出第一索引信息,以便后续步骤中通过第一索引信息实现在硬件mac地址表和软件mac地址表中批量定位多个目标mac地址表项,提高mac地址表的维护效率。在201中获取删除操作指令携带的第一索引信息之后,202中,从硬件mac地址表中删除与第一索引信息对应的多个目标mac地址表项。本发明实施例中,删除操作指令携带的第一索引信息包括port标识和vlan标识。由此,上述多个目标mac地址表项中分别包括各个目标mac地址以及各个目标mac地址对应的port标识和vlan标识。具体而言,在一可选实施例中,假设第一索引信息包括port标识。基于此,通过port标识在硬件mac地址表中查询出该端口下的所有mac地址表项,进而,从硬件mac地址表中删除查询到的这些mac地址表项。实际应用中,对于具有交换芯片的网络设备,可以通过调用交换芯片提供的api接口来删除硬件mac地址表中与port标识对应的多个目标mac地址表项。比如,调用交换芯片提供的api接口通过port方式删除指定port端口下的所有mac地址表项。另一实施例中,假设第一索引信息包括vlan标识,基于此,通过vlan标识在硬件mac地址表中查询出与该vlan标识绑定的端口下的所有mac地址表项,进而,从硬件mac地址表中删除查询到的这些mac地址表项。当然,实际应用中,对于具有交换芯片的网络设备,也可以通过调用交换芯片提供的api接口来删除硬件mac地址表中与vlan标识对应的多个目标mac地址表项。实际应用中,可选地,从硬件mac地址表中删除与第一索引信息对应的多个目标mac地址表项之前,还可以关闭与第一索引信息对应的port端口和/或vlan的学习能力。这样,可以避免各种因学习能力而造成的软件mac地址表维护问题,例如mac地址表项被从硬件mac地址表中删除后又重新学习时,被软件mac地址表错误删除的问题,从而提升mac地址表的准确性,也有助于保证硬件mac地址表和软件mac地址表一致,提升网络设备的可靠性。进而,获取第一索引信息后,203中,还需要从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息。其中,目标索引信息链表包括的除链表头之外的多个链表元素分别对应的mac地址表项与多个目标mac地址表项相同。基于上文描述的mac地址表项存储方式,本文涉及的目标索引信息链表需要满足以下条件:链表头为从删除操作指令中获取的第一索引信息。比如,从删除操作指令中获取的第一索引信息为port1和vlan1,那么,目标索引信息链表实际上是:链表头为port1的索引信息链表(即与port1对应的索引信息链表)、链表头为vlan1的索引信息链表(即与vlan1对应的索引信息链表)。具体而言,基于上文描述,假设索引信息链表和待删除链表均是数组链表。假设第一索引信息包括port标识和/或vlan标识,203中,从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,可以具体实现为:从各个索引信息链表中的链表头中查找port标识和/或vlan标识;将查找到的以port标识和/或vlan标识为链表头的索引信息链表作为目标索引信息链表。例如,假设删除操作指令中获取的第一索引信息包括port1和vlan1,那么,203中,从各个索引信息链表中查找port1和vlan1,从而,将查找到的以port1为链表头的索引信息链表以及以vlan1为链表头的索引信息链表作为目标索引信息链表。进而,仍基于上述假设,203中,生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,可以具体实现为:将目标索引信息链表中除链表头之外的多个链表元素移动至待删除链表;获取待删除链表中除链表头之外的多个链表元素各自对应的mac地址表项;生成获取的各个mac地址表项对应的多个地址老化消息。上述步骤中,由目标索引信息链表中除链表头之外的多个链表元素迁移至待删除链表,从而重新组成待删除链表。可以理解的是,待删除链表的名称仅为示例。实际上,该数组链表也可称为轮询链表、待处理链表,本发明实施例中并不限定。具体来说,203中,将目标索引信息链表中除链表头之外的多个链表元素移动至待删除链表的步骤,可以实现为:将目标索引信息链表中除链表头之外的多个链表元素迁移至待删除链表的链表头之下。具体而言,就是将目标索引信息链表中多个链表元素所挂接的链表头从第一索引信息更新为待删除标识。接上文示例,假设目标索引信息链表的当前链表头为port_list和vlan_list。假设port_list为fdb_port_head[1:n]中的一个元素,vlan_list为fdb_vlan_head[1:n]中的一个元素。假设该目标索引信息链表中链表头挂接的一组链表元素对应的mac地址表项记为mac_entry1、mac_entry2、……、mac_entryn。假设基于port标识创建的待删除标识记为fdb_port_aa_head[1:n]。假设基于vlan标识创建的待删除标识记为fdb_vlan_aa_head[1:n]。其中,n用于表示待删除链表的位数。可选地,基于不同类型索引信息创建的待删除链表的位数不同。基于上述这些假设,202中,将目标索引信息链表的链表头从当前的port_list更新为fdb_port_aa_head[1:n]中对应的元素。同时,还可以将该目标索引信息链表的链表头从当前的vlan_list更新为fdb_vlan_aa_head[1:n]中对应的链表元素,以使上述两个索引信息链表中的各个链表元素(即mac_entry1、mac_entry2、……、mac_entryn等mac地址表项各自对应的链表元素)迁移至对应的待删除链表(即fdb_port_aa_head[1:n]和fdb_vlan_aa_head[1:n]),如图4所示。在图4中,两条虚线箭头表示更新前链表头与后续mac地址表项对应链表元素的映射关系,数据库(即图4中的db)与mac_entry1对应链表元素之间的两条斜线箭头表示更新后链表头与后续mac地址表项对应链表元素的映射关系。实际应用中,以交换机为例,这里的数据库可以是由线卡维护管理的。进而,203中,获取待删除链表中除链表头之外的多个链表元素各自对应的mac地址表项,可以具体实现为:以预设周期遍历待删除链表中除链表头之外的各个链表元素;判断在当前预设周期内已遍历链表元素的总数是否小于设定阈值。若确定已遍历链表元素的总数小于设定阈值,则获取当前遍历的链表元素对应的mac地址表项。基于上文介绍的mac地址表项存储方式,在链表元素中记录有与该链表元素对应的mac地址表项的存储位置。实际上,在软件mac地址表中mac地址存储于该mac地址对应的mac地址表项,因此,可通过链表元素获取对应的mac地址表项的存储位置,以实现对目标mac地址表项的定位。基于此,获取当前遍历的链表元素对应的mac地址表项之后,生成获取的mac地址表项对应的地址老化消息的一种实现方式为:对于当前遍历的链表元素对应的mac地址表项,获取mac地址表项中包括的mac地址以及该mac地址对应的port标识、vlan标识以及哈希索引值;基于获取的mac地址、该mac地址对应的port标识、vlan标识以及哈希索引值,生成该mac地址表项对应的地址老化消息。该地址老化消息至少携带有port标识、vlan标识、哈希索引值的一种。通过上述步骤,既能够获取待删除链表中各个链表元素对应的目标mac地址表项,生成与各个目标mac地址表项对应的地址老化消息,从而,保证硬件mac地址表和软件mac地址表的一致性,又能够通过限制每一预设周期内对链表元素的遍历数量,以避免批量删除mac地址表项时地址老化消息数量过多带来的卡顿,提升设备运行效率。具体来说,若已遍历链表元素的总数不小于设定阈值,则说明当前待通告的地址老化消息数量过多,可能会造成网络传输拥塞,此情况下需要停止遍历待删除链表,并在下一预设周期重新遍历待删除链表。其中,设定阈值比如是2000。在一可选实施例中,停止遍历时可以记录当前遍历到的链表元素在待删除链表中的位置,并在下一预设周期从该位置开始重新遍历待删除链表,以提升遍历操作的效率。可选地,若确定已遍历链表元素的总数小于设定阈值,并且当前遍历的链表元素处于待删除链表中的末位,则说明对整个待删除链表的遍历操作已完成,此情况下,针对于前文描述的关闭学习能力的操作,可以重新开启port端口和/或vlan端口的学习能力。上面介绍了203中如何生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息的具体执行过程。需要说明的是,步骤203可以是由一个或多个线程执行的,本发明实施例中并不限定。举例来说,为了提升多个目标mac地址表项的维护效率,可以由多个线程来实现203中的具体执行过程。以两个线程为例,由第一线程从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表。进而,由第二线程生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息。参考前文描述及上述假设,具体地,第一线程可以从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,然后将该目标索引信息链表的链表头更新为待删除标识,以使目标索引信息链表中除链表头之外的各个链表元素迁移至待删除链表。对于待删除链表,第二线程可以以预设周期遍历该待删除链表中除链表头之外的各个链表元素,以判断在当前预设周期内已遍历链表元素的总数是否小于设定阈值。若确定已遍历链表元素的总数小于设定阈值,则第二线程可以获取当前遍历的链表元素所对应的mac地址表项,生成该mac地址表项对应的地址老化消息。若确定已遍历链表元素的总数不小于设定阈值,则第二线程可以暂停遍历待删除链表,并记录当前遍历的链表元素在待删除链表中的位置,在下一预设周期重新从记录的链表元素开始遍历待删除链表。最终,在203中生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息之后,204中,向维护软件mac地址表的cpu通告与多个链表元素分别对应的地址老化消息,这些地址老化消息分别携带有多个链表元素各自对应的目标mac地址表项,以便通过这些地址老化消息指示该cpu从软件mac地址表中删除多个目标mac地址表项。在一可选实施例中,可以将生成的与目标索引信息链表对应的地址老化消息,直接通告给维护软件mac地址表的中央处理器(比如设置于交换机管理板上的cpu)。该cpu检测是否接收到地址老化消息,若接收到地址老化消息,则将地址老化消息所指示的待处理的多个目标mac地址表项从软件mac地址表中删除。以交换机为例,假设管理板维护的数据库中存储有软件mac地址表,该软件mac地址表的mac地址表项中存储有mac地址以及mac地址对应的索引信息。假设线卡维护的数据库中的多个索引信息链表中包括mac地址表项对应的链表元素。基于此,线卡除了从硬件mac地址表中删除与第一索引信息对应的多个目标mac地址表项外,还可通过调用各个索引信息链表中与第一索引信息对应的目标索引信息链表,模拟生成与该目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,从而,向管理板通告与多个链表元素分别对应的地址老化消息,以指示管理板从软件mac地址表中删除多个目标mac地址表项。图2示出的地址表维护方法的执行过程中,从删除操作指令中获取第一索引信息,进而,从硬件mac地址表中删除与该第一索引信息对应的多个目标mac地址表项。获取第一索引信息后,为保证软件mac地址表与硬件mac地址表的一致性,还需要从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息。由于目标索引信息链表包括的除链表头之外的多个链表元素分别对应的mac地址表项与多个目标mac地址表项相同,因而,与目标索引信息链表中除链表头之外的多个链表元素分别对应的地址老化消息能够向维护软件mac地址表的cpu指示需要删除的多个目标mac地址表项,以使cpu从软件mac地址表中删除多个目标mac地址表项。该地址表维护方案中,通过从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并基于目标索引信息链表模拟与多个目标mac地址表项分别对应的多个地址老化消息,通告给维护该软件mac地址表的cpu,无需依赖硬件mac地址表的结构以及对应的硬件哈希算法,也无需额外建立影子mac地址表,即可直接从软件mac地址表中批量删除多个目标mac地址表项,不仅实现了对硬件mac地址表和软件mac地址表的维护,还使得该地址表维护方案能够适配于具有不同结构硬件mac地址表或具有不同硬件哈希算法的网络设备,大大拓展地址表维护方案的适用范围,降低网络设备的开发维护难度。此外,目前的mac地址表维护方案还存在执行效率低、影响网络设备可靠性等技术问题。对于目前地址表维护方案存在的这些技术问题,图2示出的地址表维护方法中,通过第一索引信息能够直接从软件mac地址表中选取出多个目标mac地址表项,从而直接对软件mac地址表进行维护,无需额外建立影子mac地址表,更无需通过对比硬件mac地址表和影子mac地址表的差异来产生aa消息,大大降低地址表维护过程的工作量,提升地址表维护效率。同时,还有助于及时更新数据库所存储的软件mac地址表,保障硬件mac地址表和软件mac地址表的一致性,提升网络设备的可靠性。以下将详细描述本发明的一个或多个实施例的地址表维护装置。本领域技术人员可以理解,这些地址表维护装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。图5为本发明一实施例提供的地址表维护装置的结构示意图。该地址表维护装置应用于网络设备包括的至少一个线卡中。如图5所示,该地址表维护装置包括:获取单元501,用于从删除操作指令中获取第一索引信息;删除单元502,用于从硬件mac地址表中删除与第一索引信息对应的多个目标mac地址表项;生成单元503,用于从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表,并生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,该目标索引信息链表包括的除链表头之外的多个链表元素分别对应的mac地址表项与多个目标mac地址表项相同;通告单元504,用于向软件mac地址表的cpu通告与多个链表元素分别对应的地址老化消息,以使cpu从软件mac地址表中删除多个目标mac地址表项。可选地,该装置还包括存储单元。该存储单元用于:确定待存储mac地址表项对应的第二索引信息;在各个索引信息链表的链表头中查找第二索引信息;若查找到第二索引信息,则将待存储mac地址表项对应的链表元素挂接到以第二索引信息为链表头的索引信息链表中;或者若未查找到第二索引信息,则建立第二索引信息为链表头的索引信息链表,并将待存储mac地址表项对应的链表元素挂接到以第二索引信息为链表头的索引信息链表中。可选地,若索引信息包括port标识和/或vlan标识,则删除单元502在从各个索引信息链表中选取与第一索引信息对应的目标索引信息链表的过程中,具体用于:从各个索引信息链表中的链表头中查找所述port标识和/或所述vlan标识;将查找到的以所述port标识和/或所述vlan标识为链表头的索引信息链表作为所述目标索引信息链表。可选地,生成单元503在生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息的过程中,具体用于:将目标索引信息链表中除链表头之外的多个链表元素移动至待删除链表;获取待删除链表中除链表头之外的多个链表元素各自对应的mac地址表项;生成获取的各个mac地址表项对应的多个地址老化消息。其中,可选地,生成单元503将目标索引信息链表中除链表头之外的多个链表元素移动至待删除链表的过程中,具体用于:将目标索引信息链表中除链表头之外的多个链表元素迁移至所述待删除链表的链表头之下。可选地,生成单元503获取待删除链表中除链表头之外的多个链表元素各自对应的mac地址表项的过程中,具体用于:以预设周期遍历待删除链表中除链表头之外的各个链表元素;判断在当前预设周期内已遍历链表元素的总数是否小于设定阈值;若确定已遍历链表元素的总数小于设定阈值,则获取当前遍历的链表元素对应的mac地址表项。可选地,生成单元503还用于:若确定已遍历链表元素的总数不小于设定阈值,则停止遍历待删除链表,在下一预设周期重新遍历待删除链表。可选地,该装置还包括学习能力控制单元,用于在删除单元502从硬件mac地址表中删除与第一索引信息对应的多个目标mac地址之前,还用于:关闭与第一索引信息对应的port端口和/或vlan的学习能力。可选地,学习能力控制单元还用于:若确定已遍历链表元素的总数小于设定阈值,并且当前遍历的链表元素处于待删除链表中的末位,则重新开启port端口和/或vlan端口的学习能力。图5所示的地址表维护装置可以实现前述图2至图4所示实施例中提供的方法,本实施例未详细描述的部分,可参考前述实施例的相关说明,在此不再赘述。在一个可能的设计中,上述图5所示的地址表维护装置的结构可实现为一电子设备。如图6所示,该电子设备可以包括:处理器601、存储器602。其中,存储器602上存储有可执行代码,当所述可执行代码被处理器601执行时,至少使处理器601可以实现如前述图2所示实施例中提供的地址表维护方法。其中,该电子设备的结构中还可以包括通信接口603,用于与其他设备通信。另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行前述图2所示实施例中提供的地址表维护方法。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的各个模块可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。通过以上的实施例的描述,本领域的技术人员可以清楚地了解到各实施例可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对本发明做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页1 2 3 当前第1页1 2 3 
技术特征:1.一种地址表维护方法,应用于网络设备包括的至少一个线卡中,其特征在于,包括:
从删除操作指令中获取第一索引信息;
从硬件mac地址表中删除与所述第一索引信息对应的多个目标mac地址表项;
从各个索引信息链表中选取与所述第一索引信息对应的目标索引信息链表,并生成与所述目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,所述多个链表元素分别对应的mac地址表项与所述多个目标mac地址表项相同;
向维护软件mac地址表的中央处理器cpu通告与所述多个链表元素分别对应的地址老化消息,以使所述cpu从所述软件mac地址表中删除所述多个目标mac地址表项。
2.根据权利要求1所述的方法,其特征在于,还包括:
确定待存储mac地址表项对应的第二索引信息;
在各个索引信息链表的链表头中查找所述第二索引信息;
若查找到所述第二索引信息,则将所述待存储mac地址表项对应的链表元素挂接到以所述第二索引信息为链表头的索引信息链表中;或者
若未查找到所述第二索引信息,则建立所述第二索引信息为链表头的索引信息链表,并将所述第待存储mac地址表项对应的链表元素挂接到以所述第二索引信息为链表头的索引信息链表中。
3.根据权利要求1所述的方法,其特征在于,若所述第一索引信息为设备端口port标识和/或虚拟局域网vlan标识,则所述从各个索引信息链表中选取与所述第一索引信息对应的目标索引信息链表,包括:
从各个索引信息链表的链表头中查找所述port标识和/或所述vlan标识;
将查找到的以所述port标识和/或所述vlan标识为链表头的索引信息链表作为所述目标索引信息链表。
4.根据权利要求1所述的方法,其特征在于,所述生成与所述目标索引信息链表中除链表头之外的多个链表元素分别对应的地址老化消息,包括:
将所述目标索引信息链表中除链表头之外的多个链表元素移动至待删除链表;
获取所述待删除链表中除链表头之外的多个链表元素各自对应的mac地址表项;
生成获取的各个mac地址表项对应的地址老化消息。
5.根据权利要求4所述的方法,其特征在于,所述将所述目标索引信息链表中除链表头之外的多个链表元素移动至所述待删除链表,包括:
将所述目标索引信息链表中除链表头之外的多个链表元素迁移至所述待删除链表的链表头之下。
6.根据权利要求4所述的方法,其特征在于,所述获取所述待删除链表中除链表头之外的多个链表元素各自对应的mac地址表项,包括:
以预设周期遍历所述待删除链表中除链表头之外的各个链表元素;
判断在当前预设周期内已遍历链表元素的总数是否小于设定阈值;
若确定已遍历链表元素的总数小于所述设定阈值,则获取当前遍历的链表元素对应的mac地址表项。
7.根据权利要求6所述的方法,其特征在于,还包括:
若确定已遍历链表元素的总数不小于所述设定阈值,则停止遍历所述待删除链表,在下一预设周期重新遍历所述待删除链表。
8.一种地址表维护装置,其特征在于,所述地址表维护装置应用于网络设备包括的至少一个线卡中,所述地址表维护装置包括:
获取单元,用于从删除操作指令中获取第一索引信息;
删除单元,用于从硬件mac地址表中删除与所述第一索引信息对应的多个目标mac地址表项;
生成单元,用于从各个索引信息链表中选取与所述第一索引信息对应的目标索引信息链表,并生成与所述目标索引信息链表中除链表头之外的多个链表元素分别对应的mac地址表项对应的地址老化消息,所述多个链表元素分别对应的mac地址表项与所述多个目标mac地址表项相同;
通告单元,用于向维护软件mac地址表的cpu通告与所述多个链表元素分别对应的地址老化消息,以使所述cpu从所述软件mac地址表中删除所述多个目标mac地址表项。
9.一种电子设备,其特征在于,包括:处理器和存储器,其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至7中任一项所述的地址表维护方法。
技术总结本发明实施例提供一种地址表维护方法、装置、设备。该方法包括:从删除操作指令中获取第一索引信息;从硬件MAC地址表中删除与第一索引信息对应的多个目标MAC地址表项;从各个索至少一个引信息链表中选取与第一索引信息对应的目标索引信息链表,并生成与目标索引信息链表中除链表头之外的多个链表元素分别对应的MAC地址表项对应的地址老化消息,通告给维护软件MAC地址表的CPU,以使CPU从软件MAC地址表中批量删除目标MAC地址表项。通过模拟生成多个目标MAC地址表项对应的多个地址老化消息,实现对硬件MAC地址表和软件MAC地址表的维护,无需依赖硬件地址表结构及硬件哈希算法,即可从软件MAC地址表中批量删除目标MAC地址表项,降低网络设备的开发维护难度。
技术研发人员:王善明
受保护的技术使用者:锐捷网络股份有限公司
技术研发日:2020.12.04
技术公布日:2021.03.12