CN114900456B - 一种mac地址管理装置及方法 - Google Patents
一种mac地址管理装置及方法 Download PDFInfo
- Publication number
- CN114900456B CN114900456B CN202210533976.XA CN202210533976A CN114900456B CN 114900456 B CN114900456 B CN 114900456B CN 202210533976 A CN202210533976 A CN 202210533976A CN 114900456 B CN114900456 B CN 114900456B
- Authority
- CN
- China
- Prior art keywords
- module
- chain
- aging
- pointer
- mac address
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 91
- 230000032683 aging Effects 0.000 claims abstract description 203
- 238000012545 processing Methods 0.000 claims abstract description 60
- 230000004044 response Effects 0.000 claims abstract description 11
- 238000007726 management method Methods 0.000 claims description 154
- 230000015654 memory Effects 0.000 abstract description 19
- 238000010586 diagram Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/54—Organization of routing tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请提供一种MAC地址管理装置及方法,将FDB表划分为N个FDB表单元,为需要学习源MAC地址的FDB表单元分配链指针,并将链指针按照其对应的FDB表单元的地址依次连接形成学习链,通过建立学习链对FDB表进行管理。当有报文输入时,指针管理模块最大可同时分配出N个链指针,将采用传统方法进行处理时的并行处理转化为串行处理,减小对储存器访问带宽的需求。通过统计模块、老化模块与CPU管理模块之间的管理,减小CPU的响应时间。使得大容量交换芯片可以采用相对较低的时钟频率,降低对存储器的要求,进而实现采用常规的存储器能够满足二层转发的需求。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种MAC地址管理装置及方法。
背景技术
OSI(Open System Interconnect ion,开放式系统互联)模型将计算机网络体系结构划分为物理层、链路数据层、网络层、传输层、会话层、表示层和应用层。工作在数据链路层(OSI模型的第二层)的交换设备基于MAC(Media Access Control,媒体访问控制)地址对数据包进行转发,即二层转发。交换设备在接收到报文后,将报文的源MAC地址与接收端口以及VLAN(Virtual Local Area Network,虚拟局域网)的对应关系写入MAC地址表作为后续转发的依据,MAC地址表又称为FDB(Forwarding DataBase,转发数据库)表。
FDB表通常是交换设备根据接收到的报文里的源MAC地址自动学习而建立的。当有报文输入时,交换设备从报文中解析出源MAC地址和目的MAC地址,根据源MAC地址和目的MAC地址读取FDB表。如果FDB表中不存在该源MAC地址表项,交换设备则将该源MAC地址及其对应的端口和VLAN等信息作为一个新的表项添加到FDB表中。如果FDB表中已经存在该源MAC地址表项,则刷新FDB表。如果FDB表中存在目的MAC地址表项,则根据该目的MAC地址对应的端口对报文进行转发。如果FDB表中不存在目的MAC地址表项,则对报文向除该报文输入端口以外的所有端口转发。交换机在学习MAC地址时,同时给每个表项设置一个生存周期,如果在生存周期之内一直没有更新,则将该表项清空,这一过程即MAC地址的老化。
二层转发中,报文会对FDB表发起多次读写请求,通常通过划分时隙的方式来处理读写请求。但是基于大容量(T级别)交换芯片的二层转发需要较高的时钟频率,而较高的时钟频率对存储器的要求较高,常规存储器由于工艺的限制导致FDB表的访问带宽不能满足二层转发的需求。
发明内容
本申请提供了一种MAC地址管理装置及方法,以解决采用传统的方法处理FDB表的读写请求时,常规的存储器不能满足基于大容量交换芯片的二层转发的需求的问题。
一方面,本申请提供一种MAC地址管理装置,包括:控制模块、指针管理模块、统计模块、老化模块、CPU管理模块、表单元存储模块、地址存储模块以及指针存储模块。
所述控制模块、所述统计模块、所述老化模块、所述CPU管理模块、所述地址存储模块以及所述指针存储模块,皆与所述指针管理模块连接,所述CPU管理模块与所述统计模块连接,所述CPU管理模块与所述老化模块连接。
所述控制模块被配置为:获取FDB表,将所述FDB表按照地址均分为至少一个FDB表单元。当有报文输入时,学习所述报文的源MAC地址,获取学习结果,将所述学习结果写入所述FDB表单元。向所述指针管理模块发起建链请求。
所述指针管理模块被配置为:创建并初始化学习链,响应所述控制模块发起的建链请求,为储存所述源MAC地址学习结果的所述FDB表单元分配链指针。根据所述链指针指向的所述FDB表单元的地址,将所述链指针依次添加到所述学习链上。
所述统计模块被配置为,启动统计进程,对所述学习链执行统计处理,获取统计结果,根据所述统计结果限制学习的所述源MAC地址的数量。
所述老化模块被配置为,启动老化进程,初始化老化间隔和老化时间,若所述老化时间达到所述老化间隔,对所述学习链执行老化处理。
所述CPU管理模块被配置为,设置预设条件,启动管理进程,对所述学习链执行管理处理,删除符合所述预设条件的所述源MAC地址。
所述表单元存储模块被配置为,储存所述FDB表单元。
所述地址存储模块被配置为,储存所述链指针指向的地址。
所述指针存储模块被配置为,储存所述学习链中的所述链指针的下一跳指针。
另一方面,本申请提供一种MAC地址管理方法,应用于上述MAC地址管理装置,步骤包括:
控制模块获取FDB表,将所述FDB表按照地址均分为至少一个FDB表单元。当有报文输入时,学习所述报文的源MAC地址,获取学习结果,将所述学习结果写入所述FDB表单元,所述学习结果包括所述源MAC地址对应的端口和VLAN。向指针管理模块发起建链请求。
所述指针管理模块创建并初始化学习链,响应所述控制模块发起的建链请求,为储存所述学习结果的所述FDB表单元分配链指针。根据所述链指针指向的所述FDB表单元的地址,将所述链指针依次添加到所述学习链上。将所述链指针指向的地址写入所述地址存储模块,将所述链指针的下一跳指针写入所述指针存储模块。
统计模块创建统计表,所述统计表包括根据端口和VLAN设置的统计值和限制值。初始化所述所述统计值和所述限制。启动统计进程,对所述学习链执行统计处理,获取所述统计值,根据所述统计值和所述限制值,限制所述端口和所述VLAN学习的所述源MAC地址的数量。
老化模块初始化老化间隔和老化字段,获取老化时间。若老化时间达到所述老化间隔,启动老化进程,对所述学习链执行老化处理。
CPU管理模块设置预设条件,启动管理进程,对所述学习链执行管理处理,删除符合所述预设条件的所述源MAC地址。若启动管理进程时,所述统计模块正在执行所述统计处理,向所述统计模块发起统计中断指令,代替所述统计模块继续执行所述统计处理。若启动管理进程时,所述老化模块正在执行所述老化处理,向所述老化模块发起老化中断指令,代替所述老化模块继续执行所述老化处理。
统计模块响应所述统计中断指令,停止所述统计进程;当所述CPU管理模块结束所述管理进程后,重新启动所述统计进程。
老化模块响应所述老化中断指令,停止所述老化进程;当所述CPU管理模块结束所述管理进程后,重新启动所述老化进程。
本申请提供一种MAC地址管理装置及方法,控制模块将FDB表划分为N个FDB表单元,指针管理模块为需要学习源MAC地址的FDB表单元分配链指针,并将链指针按照其对应的FDB表单元的地址依次连接形成学习链,并将链指针的下一跳指针和链指针指向的地址写入指针存储模块和地址存储模块。当有报文输入时,指针管理模块最多可同时分配出N个链指针,将采用传统方法进行处理时的并行处理转化为串行处理,减小对储存器访问带宽的需求。统计模块、老化模块和CPU管理模块从学习链的首端到尾端进行轮询,分别执行统计处理、老化处理和管理处理。若CPU管理模块启动轮询进程时,统计模块正在执行统计处理或者老化模块正在执行老化处理,CPU管理模块中断正在进行的统计处理或者老化处理,执行管理处理的同时,接替统计模块或者老化模块继续执行对应的统计处理或者老化处理。CPU管理模块不需要等所述统计模块执行完统计处理或者老化模块执行完老化处理之后,再执行管理处理,减小CPU的响应时间。
本申请通过建立学习链对FDB表进行管理,轮询过程每次只需要处理一条学习链,减小对FDB表的访问带宽需求,通过统计模块、老化模块与CPU管理模块之间的管理,减小CPU的响应时间。使得大容量交换芯片可以采用相对较低的时钟频率,降低对存储器的要求,进而实现采用常规的存储器能够满足二层转发的需求。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种MAC地址管理装置结构示意图;
图2为本申请实施例提供的一种学习链建立流程示意图;
图3为本申请实施例提供的一种统计模块执行统计工作的流程示意图;
图4为本申请实施例提供的一种老化模块执行老化工作的流程示意图;
图5为本申请实施例提供的一种CPU管理模块执行管理工作的流程示意图。
具体实施方式
下面将详细地对实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下实施例中描述的实施方式并不代表与本申请相一致的所有实施方式。仅是与权利要求书中所详述的、本申请的一些方面相一致的系统和方法的示例。
FDB表中包含了与交换机相连的主机的MAC地址、与交换机连接主机的端口以及VLAN等信息,为了转发来自主机的报文,交换机需要对FDB表进行维护。在交换机刚启动时,FDB表中并没有表项,在交换机接收到报文时,会将报文的源MAC地址及其对应的端口和VLAN添加到FDB表中,这一过程即MAC地址学习。在二层转发中,报文会对FDB表多次发起读写请求,采用传统的通过划分时隙的方式来处理读写请求,对大容量(T级别)交换芯片来说,需要较高的时钟频率,而较高的时钟频率对存储器的要求较高,常规存储器由于工艺的限制导致FDB表的访问带宽不能满足二层转发的需求。基于以上问题,本申请实施例提供一种MAC地址管理装置及方法,采用链表的方式对FDB表进行管理,将并行的FDB表访问转换为串行处理,降低对存储器访问带宽的要求,使得采用常规的存储器能够满足大容量芯片二层转发的需求。
参见图1,本申请实施例提供一种MAC地址管理装置的结构示意图。所述装置包括控制模块、指针管理模块、统计模块、老化模块、CPU管理模块、表单元存储模块、地址存储模块以及指针存储模块。其中,控制模块、统计模块、老化模块、CPU管理模块、表单元存储模块、地址存储模块以及指针管理模块,皆与指针管理模块连接。统计模块和老化模块分别与CPU管理模块连接。
参见图2,本申请实施例提供的一种学习链建立流程示意图,在一种实施方式中,控制模块被配置为,获取FDB表,将FDB表根据地址均分为N个FDB表单元,N为不小于1的整数,FDB表单元存储在表单元存储模块,表单元存储模块可以采用单口RAM(Random AccessMemory,随机存取存储器)实现。
当有报文输入时,控制模块解析报文,获取报文的源MAC地址,计算出源MAC地址的哈希值。根据哈希值读取目标FDB表单元,若哈希值命中目标FDB表单元,证明该哈希值对应的源MAC地址已经被学习过,储存在了目标FDB表单元中,此时需要刷新FDB表单元中该源MAC地址对应的表项。若哈希值没有命中目标FDB表单元,证明该哈希值对应的源MAC地址没有储存在目标FDB表单元中,即没有被学习,此时需要学习该源MAC地址,获取学习结果,将学习结果作为一个新的源MAC地址表项添加到目标FDB表单元中。其中,FDB表单元的数量,即N,可以根据FDB表的大小及实际需求自行设置;源MAC地址对应的目标FDB表单元,即地址范围包括该源MAC地址的FDB表单元;源MAC地址的学习结果包括该源MAC地址以及该源MAC地址对应的端口和VLAN。
获取源MAC地址的学习结果之后,控制模块向指针管理模块发起建链请求,通过链表对FDB表进行管理,本申请实施例中将该链表定义为学习链。指针管理模块创建并初始化学习链,学习链包括链首指针和链尾指针,初始化时,学习链为空链,链首指针=链尾指针=0。当收到建链请求时,指针管理模块响应建链请求,为储存源MAC地址学习结果的目标FDB表单元分配链指针,链指针指向储存目标FDB表单元的地址。若某一时刻有多个报文输入时,多个哈希值读取目标FDB表单元,则最大同时会有N个目标FDB表单元被访问,根据哈希值的命中结果,如果N个目标FDB表单元都需要学习源MAC地址,指针管理模块可以一次分配出N个链指针。指针管理模块根据目标FDB表单元的地址的排列顺序,将目标FDB表单元对应的链指针依次添加到学习链上,并将链指针指向的目标FDB表单元的地址写入地址存储模块,将学习链中链指针的下一跳指针写入指针存储模块。此时链首指针为位于学习链首端的链指针,链尾指针为位于学习链尾端的链指针。其中,地址存储模块和表单元存储模块可以采用单口RAM,也可以采用其他存储器,本申请对此不做限制。
本申请实施例将FDB表根据地址划分为N个FDB表单元,当有报文输入时,指针管理模块为需要学习源MAC地址的FDB表单元分配链指针,指着管理模块一次最多可同时分配出N个链指针,并将链指针依次连接形成学习链,通过串行的方式对FDB表进行管理,减小对存储器访问带宽的需求。
由于存储器容量有限,FDB表中的源MAC地址表项不能被无限添加。在一种实施方式中,参见图3,本申请通过统计模块,根据端口和VLAN对学习的源MAC地址的数量进行限制。统计模块启动统计进程,通过轮询的方式对学习链执行统计处理,具体包括以下步骤:
步骤A1:创建统计表,统计表中的表项包括端口、VLAN、统计值和限制值,不同的端口和VLAN组合都对应一个统计值和限制值。
步骤A2:当学习链非空时,统计模块首先对统计值和限制值进行初始化,其中限制值可以根据需求自行设定。
步骤A3:从学习链首端的链指针开始,读取链指针对应的目标FDB表单元的地址,根据目标FDB表单元的地址读取链指针对应的源MAC地址的学习结果。
步骤A4:获取学习结果中源MAC地址对应的端口和VLAN,查询统计表,获取端口和VLAN对应的统计值和限制值,将获取的统计值和限制值进行比较。
步骤A5:若统计值等于或大于限制值,证明该端口和VLAN学习的MAC地址的数量已满,不能再对MAC地址进行学习,此时在学习链中删除该链指针,同时删除地址存储模块中储存的该链指针指向的地址,以及目标FDB表单元中存储的该链指针对应的源MAC地址的学习结果。执行步骤A7。
步骤A6:若统计值小于限制值,证明该端口和VLAN学习的MAC地址的数量未满,该源MAC地址的学习结果可以被添加在FDB表中,此时将统计值加1写回到统计表中,对该端口和VLAN对应的统计值进行更新。
步骤A7:读取学习链中该链指针的下一跳指针,如步骤A3所示方法,读取下一跳指针对应的源MAC地址的学习结果。
步骤A8:重复执行上述步骤A4~步骤A7,直到学习链的尾端链指针执行完上述统计处理后,统计模块结束统计进程。
当学习链上添加新的链指针时,统计模块重新启动统计进程,对新添加的链指针执行上述统计处理。本申请实施例提供的统计模块,通过轮询的方式对学习链上的链指针依次执行统计处理,根据端口和VLAN对学习的源MAC地址的数量进行限制。轮询过程每次只需要处理一条学习链,降低了对存储器的要求。
被添加到FDB表中的源MAC地址表项并非永远有效,每一条表项都有一个生存周期,如果在生存周期内源MAC地址表项没有被更新,该源MAC地址将被删除,这一过程称为MAC地址的老化。本申请提供的实施例中,将前述生存周期定义为老化间隔,对源MAC地址表项设置老化字段,老化字段包括第一数值和第二数值,当已被学习过的源MAC地址再次被访问的时候,即源MAC地址表项刷新时,将老化字段更新为第一数值。参见图4,老化模块启动老化进程对源MAC地址表项进行老化管理,初始化老化时间,统一设置老化间隔,每当老化时间到达老化间隔后,重新计算老化时间,同时对学习链执行老化处理。其中,老化间隔可以根据需求自行设置。
在一种实施方式中,老化模块对学习链执行老化处理,具体包括:
步骤B1:当老化时间到达老化间隔后,从学习链首端的链指针开始,读取链指针对应的目标FDB表单元的地址,根据目标FDB表单元的地址读取链指针对应的源MAC地址的学习结果和老化字段。
步骤B2:若该链指针对应的源MAC地址的老化字段为第二数值,证明该源MAC地址在老化间隔内被更新过,此时将该源MAC地址的老化字段修改为第一数值,执行步骤B5。在经历下一个老化间隔之后,再次读取该源MAC地址的老化字段,通过老化字段判断该源MAC地址是否被更新。
步骤B3:若该链指针对应的源MAC地址的老化字段为第一数值,证明该源AMC地址在老化间隔内没有被更新,此时在学习链中将该源MAC地址对应的链指针删除,同时删除地址存储模块中储存的该链指针指向的地址,以及目标FDB表单元中存储的该链指针对应的源MAC地址的学习结果。
步骤B4:根据删除的源MAC地址的学习结果,读取统计表中该源MAC地址对应的端口和VLAN的统计值,将统计值减1写回到统计表中,更新统计值。
步骤B5:读取学习链中该链指针的下一跳指针,如步骤B1所示方法,读取下一跳指针对应的源MAC地址的学习结果和老化字段。
步骤B6:重复执行上述步骤B2~步骤B5,直至学习链的尾端链指针执行完上述老化处理。
在老化模块对学习链从链首到链尾执行完一次轮询后,重复执行步骤B1~步骤B6,待老化时间再次达到老化间隔时,重新从学习链的首端链指针开始,执行老化处理。在一种实施方式中,老化字段的第一数值可以设置为1,第二数值可以设置为0,也可以根据需要进行设置,本申请对此不做限制。
本申请实施例提供的老化模块,对MAC地址表项设置老化字段和老化间隔,对整个学习链统一进行老化时间监控,当老化时间达到老化间隔时,对链指针对应的源MAC地址依次执行老化处理,如果老化字段为一第数值则将源MAC地址表项删除。如果老化字段为第二数值,则将老化字段更新为第一数值,等待一个老化间隔后,再次查询该老化字段。在一个老化间隔内,如果源MAC地址表项被刷新,则该老化字段被更新为第二字段,该源MAC地址不会被删除,如果源MAC地址表项没有被刷新,则老化字段仍然为第一数值,此时会将该源MAC地址删除。
传统的源AMC地址表项设有各自的老化时间,当源MAC地址表项刷新时,该源MAC地址的老化时间重新开始计算,对所有源MAC地址采用并行的方式,单独进老化管理。本申请实施例提供的老化模块通过设置老化字段,依靠学习链,对源MAC地址通过串行的方式进行老化管理,降低对存储器的访问带宽需求。
对FDB表的管理中,为了节省资源或者出于管理需求,会对一些源MAC地址表项进行删除。参见图5,本申请提供的实施例中,CPU管理模块启动管理进程,设置预设条件,对学习链执行管理处理,将符合预设条件源MAC地址表项进行删除管理。其中,预设条件可以为删除某个端口和/或VLAN下的源MAC地址表项,或者是直接指定删除某个源MAC地址表项,也可以为其他根据需求自行设置的删除源MAC地址表项的条件。
在一种实施方式中,CPU管理模块执行管理处理具体步骤如下:
步骤C1:从学习链首端的链指针开始,读取链指针对应的目标FDB表单元的地址,根据目标FDB表单元的地址读取链指针对应的源MAC地址的学习结果。
步骤C2:将该链指针对应的源MAC地址的学习结果与预设条件进行对比,根据学习结果中的端口、VLAN以及源MAC地址,判断该源MAC地址是否符合预设条件。若源MAC地址不符合预设条件,执行步骤C5。
步骤C3:若该源MAC地址符合预设条件,在学习链中将该源MAC地址对应的链指针删除,同时删除地址存储模块中储存的该链指针指向的地址,以及目标FDB表单元中存储的该链指针对应的源MAC地址的学习结果。
步骤C4:根据删除的源MAC地址的学习结果,读取统计表中该源MAC地址对应的端口和VLAN的统计值,将统计值减1写回到统计表中,更新统计值。
步骤C5:读取学习链中该链指针的下一跳指针,如步骤C1所示方法,读取下一跳指针对应的源MAC地址的学习结果。
步骤C6:重复上述步骤C2~步骤C5,直至所述学习链尾端的所述链指针执行完所述管理处理后,CPU管理模块结束管理进程。
当CPU管理模块启动管理进程时,若统计模块正在执行统计处理,CPU管理模块向所述统计模块发起统计中断指令。统计模块响应统计中断指令,停止统计进程,记录停止统计进程时正在执行统计处理的链指针,本申请实施例中将该链指针定义为统计中断指针。CPU管理模块在执行管理处理的同时,从统计中断指针开始,代替统计模块执行统计处理。
当CPU管理模块启动管理进程时,若老化模块正在执行老化处理,CPU管理模块向所述老化模块发起老化中断指令。老化模块响应老化中断指令,停止老化进程,记录停止老化进程时正在执行老化处理的链指针,本申请实施例中将该链指针定义为老化中断指针。CPU管理模块在执行管理处理的同时,从老化中断指针开始,代替老化模块执行老化处理。当CPU管理模块结束管理进程后,老化模块重新启动老化进程,执行老化处理。
本申请实施例提供的CPU管理模块同样采用串行的方式对源MAC地址进行管理,降低对存储器的要求。由于CPU管理可能发生在任意时刻,若此时统计模块正在执行统计处理或者老化模块正在执行老化处理,如果等待当前正在执行的进程结束,再执行CPU管理模块发起的管理进程,则会导致CPU响应缓慢。因此当CPU管理模块对源MAC地址进行管理时,将正在进行的统计进程和/或老化进程打断,CPU管理模块在执行管理处理的同时,代替统计模块和/或老化模块执行统计处理和/或老化处理。在满足功能需求的同时,减小CPU的响应时间,提高工作效率。
本申请实施例还提供一种MAC地址管理方法,应用于上述MAC地址管理装置,步骤包括:
控制模块获取FDB表,将所述FDB表按照地址均分为N个FDB表单元。当有报文输入时,学习所述报文的源MAC地址,获取学习结果,将所述学习结果写入所述FDB表单元,所述学习结果包括所述源MAC地址对应的端口和VLAN。向指针管理模块发起建链请求。
所述指针管理模块创建并初始化学习链,响应所述控制模块发起的建链请求,为储存所述学习结果的所述FDB表单元分配链指针。根据所述链指针指向的所述FDB表单元的地址,将所述链指针依次添加到所述学习链上。将所述链指针指向的地址写入所述地址存储模块,将所述链指针的下一跳指针写入所述指针存储模块。
统计模块创建统计表,所述统计表包括根据端口和VLAN设置的统计值和限制值。初始化所述所述统计值和所述限制。启动统计进程,对所述学习链执行统计处理,获取所述统计值,根据所述统计值和所述限制值,限制所述端口和所述VLAN学习的所述源MAC地址的数量。
老化模块初始化老化间隔和老化字段,获取老化时间。若老化时间达到所述老化间隔,启动老化进程,对所述学习链执行老化处理。
CPU管理模块设置预设条件,启动管理进程,对所述学习链执行管理处理,删除符合所述预设条件的所述源MAC地址。若启动管理进程时,所述统计模块正在执行所述统计处理,向所述统计模块发起统计中断指令,代替所述统计模块继续执行所述统计处理。若启动管理进程时,所述老化模块正在执行所述老化处理,向所述老化模块发起老化中断指令,代替所述老化模块继续执行所述老化处理。
统计模块响应所述统计中断指令,停止所述统计进程;当所述CPU管理模块结束所述管理进程后,重新启动所述统计进程。
老化模块响应所述老化中断指令,停止所述老化进程;当所述CPU管理模块结束所述管理进程后,重新启动所述老化进程。
本申请提供的一种MAC地址管理装置及方法,控制模块将FDB表划分为N个FDB表单元,指针管理模块为需要学习源MAC地址的FDB表单元分配链指针,并将链指针按照其对应的FDB表单元的地址依次连接形成学习链,并将链指针的下一跳指针和链指针指向的地址写入指针存储模块和地址存储模块。当有报文输入时,指针管理模块最大可同时分配出N个链指针,将采用传统方法进行处理时的并行处理转化为串行处理,减小对储存器访问带宽的需求。统计模块、老化模块和CPU管理模块从学习链的首端到尾端进行轮询,分别执行统计处理、老化处理和管理处理。若CPU管理模块启动轮询进程时,统计模块正在执行统计处理或者老化模块正在执行老化处理,CPU管理模块中断正在进行的统计处理或者老化处理,执行管理处理的同时,接替统计模块或者老化模块继续执行对应的统计处理或者老化处理。CPU管理模块不需要等所述统计模块执行完统计处理或者老化模块执行完老化处理之后,再执行管理处理,减小CPU的响应时间。
本申请通过建立学习链对FDB表进行管理,轮询过程每次只需要处理一条学习链,减小对FDB表的访问带宽需求,通过统计模块、老化模块与CPU管理模块之间的管理,减小CPU的响应时间。使得大容量交换芯片可以采用相对较低的时钟频率,降低对存储器的要求,进而实现采用常规的存储器能够满足二层转发的需求。
本申请提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本申请总的构思下的几个示例,并不构成本申请保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本申请方案所扩展出的任何其他实施方式都属于本申请的保护范围。
Claims (10)
1.一种MAC地址管理装置,其特征在于,包括:控制模块、指针管理模块、统计模块、老化模块、CPU管理模块、表单元存储模块、地址存储模块以及指针存储模块;
所述控制模块、所述统计模块、所述老化模块、所述CPU管理模块、所述表单元存储模块、所述地址存储模块以及所述指针存储模块,皆与所述指针管理模块连接;所述CPU管理模块与所述统计模块连接;所述CPU管理模块与所述老化模块连接;所述控制模块还与所述表单元存储模块连接;
所述控制模块被配置为:
获取转发数据库FDB表,将所述FDB表按照地址均分为至少一个FDB表单元;
当有报文输入时,学习所述报文的源MAC地址,获取学习结果,将所述学习结果写入所述FDB表单元;
向所述指针管理模块发起建链请求;
所述指针管理模块被配置为:
创建并初始化学习链,响应所述控制模块发起的建链请求,为储存所述源MAC地址学习结果的所述FDB表单元分配链指针;
根据所述链指针指向的所述FDB表单元的地址,将所述链指针依次添加到所述学习链上;
所述统计模块被配置为:启动统计进程,对所述学习链执行统计处理,获取统计结果,根据所述统计结果限制学习的所述源MAC地址的数量;
所述老化模块被配置为:启动老化进程,初始化老化间隔和老化时间,若所述老化时间达到所述老化间隔,对所述学习链执行老化处理;
所述CPU管理模块被配置为:设置预设条件,启动管理进程,对所述学习链执行管理处理,删除符合所述预设条件的所述源MAC地址;
所述表单元存储模块被配置为储存所述FDB表单元;
所述地址存储模块被配置为储存所述链指针指向的地址;
所述指针存储模块被配置为储存所述学习链中的所述链指针的下一跳指针。
2.根据权利要求1所述的MAC地址管理装置,其特征在于,包括:
若启动管理进程时,所述统计模块正在执行所述统计处理,所述CPU管理模块被配置为,向所述统计模块发起统计中断指令,代替所述统计模块继续执行所述统计处理;
所述统计模块被配置为,响应所述统计中断指令,停止所述统计进程;
若启动管理进程时,所述老化模块正在执行所述老化处理,所述CPU管理模块被配置为,向所述老化模块发起老化中断指令,代替所述老化模块继续执行所述老化处理;
所述老化模块被配置为,响应所述老化中断指令,停止所述老化进程;在所述CPU管理模块结束所述管理进程后,重新启动所述老化进程。
3.根据权利要求1所述的MAC地址管理装置,其特征在于,在将所述链指针依次添加到所述学习链上的步骤中,所述指针管理模块被进一步配置为:
将所述链指针指向的地址写入所述地址存储模块;
将所述链指针的下一跳指针写入所述指针存储模块。
4.根据权利要求1所述的MAC地址管理装置,其特征在于,在所述当有报文输入时,学习所述报文的源MAC地址,获取学习结果,将所述学习结果写入所述FDB表单元的步骤中,所述控制模块被进一步配置为:
获取所述报文的源MAC地址,计算所述源MAC地址的哈希值;
根据所述哈希值读取目标FDB表单元;所述目标FDB表单元为地址范围包括所述源MAC地址的所述FDB表单元;
若所述哈希值命中所述目标FDB表单元,刷新所述目标FDB表单元;
若所述哈希值没有命中所述目标FDB表单元,学习所述源MAC地址,获取学习结果,将所述学习结果添加到所述目标FDB表单元;所述学习结果包括所述源MAC地址对应的端口和VLAN。
5.根据权利要求4所述的MAC地址管理装置,其特征在于,在对所述学习链执行统计处理的步骤中,所述统计模块被进一步配置为执行以下步骤:
步骤A1:创建统计表;所述统计表包括根据端口和VLAN设置的统计值和限制值;
步骤A2:初始化所述统计值和所述限制值;
步骤A3:从所述学习链首端的所述链指针开始,获取所述链指针对应的所述源MAC地址的所述学习结果;
步骤A4:查询所述统计表,获取所述学习结果中的端口和VLAN对应的所述统计值和所述限制值,将所述统计值和所述限制值进行比较;
步骤A5:若所述统计值等于或大于所述限制值,删除该所述链指针、所述地址存储模块中储存的该所述链指针指向的地址、所述目标FDB表单元中储存的该所述源MAC地址的学习结果,执行步骤A7;
步骤A6:若所述统计值小于所述限制值,更新所述统计值;
步骤A7:获取所述学习链中下一跳指针对应的所述源MAC地址的学习结果;
步骤A8:重复执行步骤A4~步骤A7,直至所述学习链尾端的所述链指针执行完所述统计处理,结束所述统计进程。
6.根据权利要求5所述的MAC地址管理装置,其特征在于,所述老化模块还被配置为,设置老化字段,所述老化字段包括第一数值和第二数值;
在对所述学习链执行老化处理的步骤中,所述老化模块被进一步配置为执行以下步骤:
步骤B1:从所述学习链首端的所述链指针开始,获取所述链指针对应的所述源MAC地址的所述学习结果和所述老化字段;
步骤B2:若所述源MAC地址的所述老化字段为所述第二数值,将所述源MAC地址的所述老化字段更新为所述第一数值,执行步骤B5;
步骤B3:若所述源MAC地址的所述老化字段为所述第一数值,删除所述源MAC地址对应的所述链指针、所述地址存储模块中储存的该所述链指针指向的地址、所述目标FDB表单元中储存的该所述源MAC地址的学习结果;
步骤B4:根据删除的所述源MAC地址的所述学习结果,更新所述统计值;
步骤B5:获取所述学习链中下一跳指针对应的所述源MAC地址的所述老化字段;
步骤B6:重复执行步骤B2~步骤B5,直至所述学习链尾端的所述链指针执行完所述老化处理。
7.根据权利要求5所述的MAC地址管理装置,其特征在于,在对所述学习链执行管理处理,删除符合所述预设条件的所述源MAC地址的步骤中,所述CPU管理模块被进一步配置为:
步骤C1:从所述学习链首端的所述链指针开始,获取所述链指针对应的所述源MAC地址的所述学习结果;
步骤C2:将所述源MAC地址的所述学习结果与所述预设条件进行对比;若所述源MAC地址不符合所述预设条件,执行步骤C5;
步骤C3:若所述源MAC地址符合所述预设条件,删除所述源MAC地址对应的所述链指针、所述地址存储模块中储存的该所述链指针指向的地址、所述目标FDB表单元中储存的该所述源MAC地址的学习结果;
步骤C4:根据删除的所述源MAC地址的所述学习结果,更新所述统计值;
步骤C5:获取所述学习链中下一跳指针对应的所述源MAC地址的所述学习结果;
步骤C6:重复步骤C2~步骤C5,直至所述学习链尾端的所述链指针执行完所述管理处理后,结束所述管理进程。
8.根据权利要求2所述的MAC地址管理装置,其特征在于,包括:
在响应所述统计中断指令,停止所述统计进程的步骤中,所述统计模块还被配置为:记录统计中断指针;所述统计中断指针为所述统计模块停止所述统计进程时,执行所述统计处理的所述链指针;
在响应所述老化中断指令,停止所述老化进程的步骤中,所述老化模块还被配置为:记录老化中断指针;所述老化中断指针为所述老化模块停止所述老化进程时,执行所述老化处理的所述链指针。
9.根据权利要求8所述的MAC地址管理装置,其特征在于,包括:
在代替所述统计模块继续执行所述统计处理的步骤中,所述CPU管理模块进一步被配置为:从所述统计中断指针开始,继续执行所述统计处理;
在代替所述老化模块继续执行所述老化处理的步骤中,所述CPU模块进一步被配置为:从所述老化中断指针开始,继续执行所述老化处理。
10.一种MAC地址管理方法,应用于权利要求1-9任意一项所述的MAC地址管理装置,其特征在于,步骤包括:
控制模块获取FDB表,将所述FDB表按照地址均分为至少一个FDB表单元;当有报文输入时,学习所述报文的源MAC地址,获取学习结果,将所述学习结果写入所述FDB表单元;所述学习结果包括所述源MAC地址对应的端口和VLAN;向指针管理模块发起建链请求;
所述指针管理模块创建并初始化学习链;响应所述控制模块发起的建链请求,为储存所述学习结果的所述FDB表单元分配链指针;根据所述链指针指向的所述FDB表单元的地址,将所述链指针依次添加到所述学习链上;将所述链指针指向的地址写入所述地址存储模块;将所述链指针的下一跳指针写入所述指针存储模块;
统计模块创建统计表;所述统计表包括根据端口和VLAN设置的统计值和限制值;初始化所述所述统计值和所述限制值;启动统计进程,对所述学习链执行统计处理,获取所述统计值;根据所述统计值和所述限制值,限制所述端口和所述VLAN学习的所述源MAC地址的数量;
老化模块初始化老化间隔和老化字段;获取老化时间;若老化时间达到所述老化间隔,启动老化进程,对所述学习链执行老化处理;
CPU管理模块设置预设条件;启动管理进程,对所述学习链执行管理处理,删除符合所述预设条件的所述源MAC地址;若启动管理进程时,所述统计模块正在执行所述统计处理,向所述统计模块发起统计中断指令,代替所述统计模块继续执行所述统计处理;若启动管理进程时,所述老化模块正在执行所述老化处理,向所述老化模块发起老化中断指令,代替所述老化模块继续执行所述老化处理;
统计模块响应所述统计中断指令,停止所述统计进程;当所述CPU管理模块结束所述管理进程后,重新启动所述统计进程;
老化模块响应所述老化中断指令,停止所述老化进程;当所述CPU管理模块结束所述管理进程后,重新启动所述老化进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210533976.XA CN114900456B (zh) | 2022-05-17 | 2022-05-17 | 一种mac地址管理装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210533976.XA CN114900456B (zh) | 2022-05-17 | 2022-05-17 | 一种mac地址管理装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114900456A CN114900456A (zh) | 2022-08-12 |
CN114900456B true CN114900456B (zh) | 2023-10-31 |
Family
ID=82723137
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210533976.XA Active CN114900456B (zh) | 2022-05-17 | 2022-05-17 | 一种mac地址管理装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114900456B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0004738D0 (en) * | 2000-03-01 | 2000-04-19 | 3Com Corp | Network unit including address hashing |
US6901452B1 (en) * | 2000-03-02 | 2005-05-31 | Alcatel | Selectable prioritization for data communication switch |
CN101651627A (zh) * | 2009-09-23 | 2010-02-17 | 杭州华三通信技术有限公司 | 一种媒体访问控制mac地址表项学习方法和装置 |
CN102474449A (zh) * | 2009-11-02 | 2012-05-23 | 马维尔国际贸易有限公司 | 基于虚拟接口的交换装置和方法 |
CN105376154A (zh) * | 2014-08-11 | 2016-03-02 | 博科通讯系统有限公司 | 渐进式mac地址学习 |
CN105812264A (zh) * | 2016-03-15 | 2016-07-27 | 西安电子科技大学 | 多路并行的mac地址学习和地址查找的装置及方法 |
CN107171960A (zh) * | 2017-06-28 | 2017-09-15 | 华信塞姆(成都)科技有限公司 | 一种分布式动态二层转发表的维护方法 |
CN108616614A (zh) * | 2018-04-28 | 2018-10-02 | 深圳市风云实业有限公司 | Mac地址管理方法、装置及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7646773B2 (en) * | 2004-08-02 | 2010-01-12 | Extreme Networks | Forwarding database in a network switch device |
-
2022
- 2022-05-17 CN CN202210533976.XA patent/CN114900456B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0004738D0 (en) * | 2000-03-01 | 2000-04-19 | 3Com Corp | Network unit including address hashing |
US6731633B1 (en) * | 2000-03-01 | 2004-05-04 | 3Com Corporation | Network unit including address hashing |
US6901452B1 (en) * | 2000-03-02 | 2005-05-31 | Alcatel | Selectable prioritization for data communication switch |
CN101651627A (zh) * | 2009-09-23 | 2010-02-17 | 杭州华三通信技术有限公司 | 一种媒体访问控制mac地址表项学习方法和装置 |
CN102474449A (zh) * | 2009-11-02 | 2012-05-23 | 马维尔国际贸易有限公司 | 基于虚拟接口的交换装置和方法 |
CN105376154A (zh) * | 2014-08-11 | 2016-03-02 | 博科通讯系统有限公司 | 渐进式mac地址学习 |
CN105812264A (zh) * | 2016-03-15 | 2016-07-27 | 西安电子科技大学 | 多路并行的mac地址学习和地址查找的装置及方法 |
CN107171960A (zh) * | 2017-06-28 | 2017-09-15 | 华信塞姆(成都)科技有限公司 | 一种分布式动态二层转发表的维护方法 |
CN108616614A (zh) * | 2018-04-28 | 2018-10-02 | 深圳市风云实业有限公司 | Mac地址管理方法、装置及电子设备 |
Non-Patent Citations (2)
Title |
---|
《Design of an FDB based Intra-domain Packet Traceback System》;H Hazeyama 等;《IEEE》;全文 * |
《多功能安全网关预研》;张华;《中国优秀硕士学位论文全文数据库》;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114900456A (zh) | 2022-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240143169A1 (en) | Method for Improving Message Storage Efficiency of Network Chip, Device, and Storage medium | |
US11221763B2 (en) | Disk lock management method, apparatus, and system | |
US8325603B2 (en) | Method and apparatus for dequeuing data | |
CN109388590B (zh) | 提升多通道dma访问性能的动态缓存块管理方法和装置 | |
JP5851055B2 (ja) | データ格納方法および装置 | |
US20230195637A1 (en) | On-chip cache apparatus, on-chip cache read-write method, and computer-readable medium | |
CN106325758B (zh) | 一种队列存储空间管理方法及装置 | |
CN112632069B (zh) | 哈希表数据存储管理方法、装置、介质和电子设备 | |
US20240039995A1 (en) | Data access system and method, device, and network adapter | |
US7822915B2 (en) | Memory controller for packet applications | |
US9690713B1 (en) | Systems and methods for effectively interacting with a flash memory | |
CN109564502B (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
KR20030053457A (ko) | 증가된 대역폭을 위한 메모리 시스템 | |
CN115270033A (zh) | 一种数据访问系统、方法、设备以及网卡 | |
CN112506431B (zh) | 基于磁盘设备属性的i/o指令调度方法及装置 | |
CN114900456B (zh) | 一种mac地址管理装置及方法 | |
WO2023186115A1 (zh) | 表项读取方法、装置、网络设备及存储介质 | |
CN116909484A (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
CN113923061B (zh) | 基于智能网卡的gpu网络通信方法、智能网卡、介质、设备 | |
CN114567614B (zh) | 基于fpga实现arp协议处理的方法及装置 | |
CA3238254A1 (en) | Storage control method, storage controller, storage chip, network card, and readable medium | |
CN111694777B (zh) | 基于PCIe接口的DMA传输方法 | |
US10228883B2 (en) | Storage device that postpones completion of read command to begin execution of a non-read command | |
US10963183B2 (en) | Technologies for fine-grained completion tracking of memory buffer accesses | |
WO2024066545A1 (zh) | 多端口读写的缓存管理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |