CN114125078A - 一种mac地址学习的方法及装置 - Google Patents

一种mac地址学习的方法及装置 Download PDF

Info

Publication number
CN114125078A
CN114125078A CN202111028241.3A CN202111028241A CN114125078A CN 114125078 A CN114125078 A CN 114125078A CN 202111028241 A CN202111028241 A CN 202111028241A CN 114125078 A CN114125078 A CN 114125078A
Authority
CN
China
Prior art keywords
mac address
message
information
target
learning
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.)
Pending
Application number
CN202111028241.3A
Other languages
English (en)
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.)
Hangzhou DPtech Information Technology Co Ltd
Original Assignee
Hangzhou DPtech Information Technology 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 Hangzhou DPtech Information Technology Co Ltd filed Critical Hangzhou DPtech Information Technology Co Ltd
Priority to CN202111028241.3A priority Critical patent/CN114125078A/zh
Publication of CN114125078A publication Critical patent/CN114125078A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Abstract

本申请提供了一种MAC地址学习的方法及装置,应用于网络设备,所述方法包括:解析接收到的目标报文,并获得对应的报文信息,其中,所述报文信息包含所述目标报文的目标报文类型;判断所述目标报文类型是否属于预设报文类型;如果判断结果为是,则针对所述目标报文进行MAC地址学习。本申请可以在不提高硬件性能与成本的前提下,减少网络设备所需处理的流量,避免流量超出网络设备的性能上限,或者减少由于超出性能上限而导致的丢包。同时,可以在不提高MAC地址信息的记录数量上限的前提下,减少网络设备所需学习的MAC地址信息的数量,以提高MAC地址学习模块的空间利用率。

Description

一种MAC地址学习的方法及装置
技术领域
本发明涉及通讯技术领域,尤其涉及一种MAC地址学习的方法及装置。
背景技术
根据国际标准化组织(ISO)所制订的七层模型(Open System Interconnection,OSI),每一层都有不同标识符,用来区分不同的设备,并实现彼此对等的进行通信。MAC地址属于该模型的第二层数据链路层的标识符,在数据链路层中标识一台唯一的设备。作为网络中交换与传输的数据单元,报文包含着源MAC地址与目标MAC地址。当接收到报文时,网络设备会根据目的MAC地址查找对应的输出端口,以通过查找到的输出端口对该报文进行转发。如果网络设备并未记录目的MAC地址和输出端口的对应关系,就会对除输入端口之外的所有端口进行“泛洪”,导致增加不必要的流量负担。
在相关技术中,网络设备在报文转发的过程中,会通过MAC地址学习来记录报文的源MAC地址与输入端口之间的对应关系,以用于后续对需要发送至该源MAC地址的报文进行快速转发至正确的端口。这种方式一定程度上的确有效地减少了流量负担。
然而,网络传输的流量在是动态变化的,当流量超出网络设备进行MAC地址学习的性能上限时,部分流量的MAC地址可能无法被学习到,导致出现丢包的现象。同时,网络设备能够学习的MAC地址信息存在数量上限,当需要学习的MAC地址信息过多时,即便流量不大也可能导致部分MAC地址信息无法记录。
发明内容
有鉴于此,本申请提供了一种MAC地址学习的方法及装置,以解决相关技术中存在的不足。
具体地,本申请是通过如下技术方案实现的:
根据本申请实施例的第一方面,提供了一种MAC地址学习的方法,应用于网络设备,所述方法包括:
解析接收到的目标报文,并获得对应的报文信息,其中,所述报文信息包含所述目标报文的目标报文类型;
判断所述目标报文类型是否属于预设报文类型;
如果判断结果为是,则针对所述目标报文进行MAC地址学习。
根据本申请实施例的第二方面,提供了一种MAC地址学习的装置,应用于交换机设备中,所述装置包括:
报文解析模块,用于解析接收到的目标报文,获得对应的报文信息,其中,所述报文信息包含所述目标报文的目标报文类型;
报文类型判断模块,用于判断所述目标报文类型是否为预设报文类型;
MAC地址学习模块,用于如果判断结果为是,则针对所述目标报文进行MAC地址学习。
根据本申请实施例的第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如第一方面所述的方法的步骤。
根据本申请实施例的第四方面,提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述的方法的步骤。
在本申请所提供的技术方案中,通过对接收到的报文进行类型识别,并仅对预设类型的报文进行MAC地址学习,而非针对所有报文均进行MAC地址学习,可以在不提高硬件性能与成本的前提下,减少网络设备所需处理的流量,避免流量超出网络设备的性能上限,或者减少由于超出性能上限而导致的丢包。同时,本申请可以减少网络设备需要学习的MAC地址,可以在不提高MAC地址信息的记录数量上限的前提下,减少网络设备所需学习的MAC地址信息的数量,避免超出上述的记录数量上限,或者减少由于超出记录数量上限而无法学习到的MAC地址信息的数量。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是根据本申请一示例性实施例提供的一种MAC地址学习的方法的流程示意图。
图2是MAC地址学习原理示意图。
图3是根据本申请一示例性实施例提供的另一种MAC地址学习的方法的流程示意图。
图4是根据本申请一示例性实施例中的一种电子设备的示意结构图。
图5是根据本申请一示例性实施例中的一种MAC地址学习的装置的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
本申请提供一种基于报文类型的MAC地址学习方法,该方法应用于网络设备,为对本申请的技术方案进行说明。下面通过具体实施例对本申请的技术方案进行阐述:
图1是根据本申请一示例性实施例提供的一种MAC地址学习的方法的流程图,如图1所示,该方法可以包括以下步骤:
S101,解析接收到的目标报文,并获得对应的报文信息,其中,所述报文信息包含所述目标报文的目标报文类型。
当一设备需要传输信息至另一台设备时,需要经过网络设备(例如交换机)的转发,那么可以将该网络设备所接收到的报文称为目标报文。而目标报文类型用于表征该所述目标报文的类型。
在一实施例中,可以通过解析目标报文中的类型字段得到该目标报文的原始报文类型,并将其作为上述的目标报文类型。例如,解析ARP报文中的“type”字段得到的报文类型为“0x0806”,同理可得到LLDP报文的报文类型为“0x88cc”。
在另一实施例中,可以在解析目标报文中的类型字段得到该目标报文的原始报文类型后,进一步确定出预先设置的与该原始报文类型一一对应的预设类型标识,并将该预设类型标识作为上述的目标报文类型。例如,在网络设备中设置一FPGA芯片,所述芯片通过烧录的配置文件形成有接收模块、解析模块以及下文所述的学习模块。接收模块接收到来自网络设备中的目标报文后,解析模块对该目标报文进行解析得到原始报文类型,且解析模块进而将原始报文类型替换成与之对应的预设类型标识。
其中,预设报文标识与原始报文类型之间一一对应。例如,上述的ARP报文的原始报文类型为“0x0806”,则对应的预设类型标识可以为“5’b00001”,ARP报文的原始报文类型为“0x88cc”,则对应的预设类型标识可以为“5’b00010”,VLAN、MPLS与其他类型的报文类型同理可得与之对应的预设类型标识。可以将上述的预设类型标识与原始报文类型之间的对应关系预先记录在报文关系对应表中,进而可以通过查询该表的方式将解析出的原始报文类型准确转换为对应的预设类型标识。
解析模块需要将报文信息传输至学习模块,以由学习模块进行处理,譬如进行MAC地址学习等。由于在解析模块与学习模块之间传输报文信息需要消耗一定的芯片资源,因而上述的预设类型标识的标识长度可以小于原始报文类型的长度,相当于对原始报文类型做了数据压缩,这样不仅可以在存储报文信息时减小空间占用,同时在解析模块向学习模块发送报文信息时,可以减小数据传输量,从而实现提高传输效率的目的。
S102,判断所述目标报文类型是否属于预设报文类型。
预设报文类型是预先设置的需要进行MAC地址学习的特定报文的类型。例如,预设报文类型中可以包含ARP报文、LLDP报文、VLAN报文、MPLS报文等中的一种或多种,当然还可以设置其他类型的报文,本申请并不对此进行限制。通过上述判断,可以确定是否需要对目标报文进行MAC地址学习:仅在目标报文类型属于预设报文类型的情况下,需要对该目标报文进行MAC地址学习。
在一实施例中,首先确定预先配置的待学习报文类型,将所述目标报文类型与所述待学习报文类型进行匹配。其中,预先配置的待学习报文类型可以类比于“白名单”的设计逻辑,例如,当ARP报文设置为预先配置的待学习报文类型,那么其他目标报文类型与待学习报文类型匹配时将会失败,无法进行MAC地址学习,仅ARP报文可以匹配成功并进行MAC地址学习。
在另一实施例中,首先确定预先配置的待滤除报文类型,将所述目标报文类型与所述待滤除报文类型进行匹配。其中,预先配置的待滤除报文类型可以类比于“黑名单”的设计逻辑,例如,当LLDP报文作为待滤除报文类型时,LLDP报文因为与待滤除报文类型匹配成功而无法进行MAC地址学习,当其他类型的报文与待滤除报文类型匹配失败故均可进行MAC地址学习。
与上文的预设类型标识相似,在一实施例中,可以使用判断标识表征预设报文类型。例如,可以规定判断标识为“5’b00001”时,则只允许ARP报文通过;判断标识为“5’b10010”,则只允许LLDP和其他报文通过;判断标识为“5’b11111”,则所有报文都可以通过。判断标识的优势在于采用二进制的方式表征预设报文类型,使得判断标识占用空间小,维护成本与难度较低,具备可操作性与易拓展性。
本领域技术人员易于想到的是,上述实施例中的判断标识的长度与格式可根据需要判断的报文类似数量来自由地设置,例如可以采用两位字节长度的八进制表征判断标识,或者也可以采用六位字节长度的十二进制表征判断标识,本申请并不对此进行限制。
S103,如果判断结果为是,则针对所述目标报文进行MAC地址学习。
在目标报文中存在部分类型的报文(例如TCP、UDP等IP报文)不属于数据链路层的协议报文,由于MAC地址是数据链路层的协议报文中区别设备的主要标识,且MAC地址学习技术针对主体是MAC地址本身,所以IP类型的报文在MAC地址学习中意义并不突出,也不法发挥出原有的作用。通过对目标报文的MAC地址学习前的报文类型判断操作,可以避免对无意义类型的报文进行MAC地址学习,将有限的设备算力和内存空间用于对诸如ARP、LLDP、VLAN、MPLS等协议的报文进行MAC地址学习,有助于提升对相关报文的转发效率和成功率。
针对目标报文进行MAC地址学习时,需要获取该目标报文的MAC地址信息,即该目标报文所含的源MAC地址与该目标报文在网络设备上对应的输入端口。通过对目标报文进行解析,可以获得上述的MAC地址信息。如前所述,可以通过FPGA上配置的解析模块对该目标报文进行解析,以得到MAC地址信息。
在一实施例中,解析模块对目标报文进行解析得到报文信息,该报文信息中包含目标报文类型和目标报文的MAC地址信息。解析模块将该报文信息发送至学习模块后,学习模块可以判断该报文信息中的目标报文类型是否属于所述预设报文类型:若是,则根据报文信息中的MAC地址信息开始MAC地址学习操作;若否,则不进行MAC地址学习操作。由于报文信息同时包含目标报文类型和MAC地址信息,因而如前文所述,通过将原始报文类型转换为长度较短的预设类型标识以作为目标报文类型,可以尽量减小该报文信息,从而降低解析模块与学习模块之间的数据传输量。
在另一实施例中,上述的报文信息中仅包含目标报文类型。此时,解析模块将该报文信息发送至学习模块,使得学习模块仅能据此判断该目标报文类型的是否属于所述预设报文类型,并将判断结果反馈至解析模块:若是,则解析模块进一步解析目标报文以获取MAC地址信息,并将该MAC地址信息发送至学习模块,以供学习模块进行MAC地址学习;若否,则解析模块无需进一步解析目标报文,学习模块也不会对目标报文进行MAC地址学习操作。由于仅在目标报文类型属于预设报文类型的情况下,解析模块才会解析目标报文的MAC地址信息并传输至学习模块,而非在所有情况下都会解析和传输目标报文的MAC地址信息,可以降低解析模块的处理压力,减小解析模块与学习模块之间的数据传输量。
网络设备可以参考如图2所示的方式,对目标报文的MAC地址信息进行学习。如图2所示,首先默认当前MAC地址表为初始状态,内容为空;当交换机的E0/2接口接收到由设备2发送的ARP报文时,会将其MAC地址“0000:0000:2222”和接口“E0/2”组合作为一条MAC地址信息保存在MAC地址表中。上述的ARP报文可以为本申请的目标报文,相应的MAC地址信息包括设备2的MAC地址“0000:0000:2222”与交换机接收到该ARP报文的接口“E0/2”,例如可以记录为“0000:0000:2222-E0/2”。以及,交换机将会根据该报文中携带的目标MAC地址去查询MAC地址表是否存在与之对应的MAC地址信息。显而易见地,此时的MAC地址表中除了上述的“0000:0000:2222-E0/2”之外,不存在其他的MAC地址信息。因此,交换机将该报文同时发送至同一网段下除设备2外的其他设备,即设备1、设备3……设备N,其中N代表该网段下的设备总数。假设此时该报文的目标MAC地址为设备1的MAC地址“0000:0000:1111”,通过进行泛洪操作,设备1在接收到报文后根据目标IP判断出报文的目标设备为本机,随后进行相应的处理与相应,其他设备则将会拒绝处理该报文的请求。如果设备1处理完毕后向设备2返回一报文,即该报文的目的MAC地址为设备2的MAC地址,由于MAC地址表中存在“0000:0000:2222-E0/2”的MAC地址信息,所以当交换机再次收到目的MAC为0000.0000.2222的报文,就会只从E0/2接口转发出去。
在一实施例中,如果目标报文类型属于预设报文类型,则初步确定为需要对目标报文进行MAC地址学习。进一步地,可以检测内存中存储的已学习MAC地址,以确定是否存在与目标报文相同的已学习MAC地址;如果已存在,则不需要重复学习;如果不存在,则从地址资源池中读取一个剩余的预分配内存地址,并写入所述目标报文的MAC地址信息;其中,所述地址资源池用于维护供存储已学习到的MAC地址的预分配内存地址。例如,假定内存中最多可以存储64条MAC地址信息,那么地址资源池在初始化时可以包含64个预分配内存地址。当需要学习一条MAC地址信息时,就可以从地址资源池中读取一个预分配内存地址,并将学习到的该条MAC地址信息写入读取的预分配内存地址,且读取的该预分配内存地址被从地址资源池中删除,使得地址资源池中剩余63个预分配内存地址。当地址资源池中的预分配内存地址减少为0时,就无法继续学习新的MAC地址信息。以及,若某一预分配内存地址所写入的MAC地址信息被删除,该预分配内存地址会重新加入地址资源池,以供重新学习新的MAC地址信息。可见,基于地址资源池能够对预分配内存地址实现精准管理,既能够确保所有预分配内存地址都能够被读取和使用,又可以防止其他内存空间被MAC地址信息所占用。
本领域技术人员易于想到的是,可以根据网络设备的内存大小来确定其最多能够学习的MAC地址信息的数量,而并不仅限于存储64个MAC地址信息,譬如可以存储更多或更少的MAC地址信息,本申请并不对此进行限制。换言之,硬件的自身条件并不会对MAC地址学习这一技术本身造成改变。同时,本申请中对地址资源池的实现方式也不进行限制,硬件条件允许的情况下,可以通过一种先进先出的数据缓存器(First In First Out,FIFO),或通过链表,队列等数据结构实现维护地址资源池的技术效果。
针对从地址资源池中读取的预分配内存地址,除了写入目标报文的MAC地址信息,还可以向该读取的预分配内存地址中的有效状态字段写入预定义的有效值。例如,该有效状态字段的取值可以利用1位二进制的数值表示;其中,当取值为1时可以认为是有效值,表征该读取的预分配内存地址中已写入学习到的MAC地址信息,而当取值为0时可以认为是无效值,表征该读取的预分配内存地址中尚未写入学习到的MAC地址信息。因此,可以根据有效状态字段的取值,准确识别出已学习到的MAC地址信息,便于统计已学习到的MAC地址信息的数量,以及对已学习到的MAC地址信息进行快捷的筛选或读取,减小了后期维护与排查问题故障时的难度。例如,当接收到查询请求后,网络设备可以确定出相应的有效状态字段为所述有效值的所有预分配内存地址,并显示所确定的预分配内存地址中记录的MAC地址信息。
除了有效值外,还可以向读取的预分配内存地址中写入所述目标报文类型。例如,当报文信息同时包含目标报文类型和MAC地址信息时,可以将该报文信息整体写入读取的预分配内存地址。再例如,当报文信息仅包含目标报文类型时,可以分别将该报文信息与MAC地址信息写入读取的预分配内存地址。相应的,在查看已学习的MAC地址信息时,可以按照报文类型对MAC地址信息进行分类显示,进一步减小了后期维护与排查问题故障时的难度。
在向上述读取的预分配内存地址写入学习的MAC地址信息时,还可以在该预分配内存地址中写入当前时刻(即写入相应MAC地址信息的时刻),以作为该目标报文的MAC地址信息的写入时刻,并用于确定该目标报文的MAC地址信息的存在时长。在对内存中存在时间过长的已记录MAC地址信息进行清除的“老化”过程中,可以根据存在时长和预设的老化时长,对各个预分配内存地址中的存储内容进行老化管理。例如,可以设置60秒作为老化时长,并每秒读取内存中所有MAC地址信息的写入时刻,用当前时刻减去写入时刻得到相应MAC地址信息的存在时长;其中,如果存在时长大于60秒,则会向对应地址进行清零操作,即清除该内存地址已写入的内容。例如,在第0秒时,学习模块将MAC地址信息A同当前写入时刻一同写入内存。在第30秒时,将另一MAC地址信息B以同样方法写入内存。当60秒过后,由于MAC地址信息A的存在时长大于60秒,故其所在的内存地址被清零,而MAC地址信息B的存在时间还有30秒,故其依然可以保留在内存中。通过将写入时刻与MAC地址信息一并存储,有效解决了已学习的MAC地址信息对内存空间的长期占用,尤其是对于一些使用率不高的MAC地址信息而言,可以提高内存空间的利用率。
除了定期对已学习的MAC地址信息进行老化之外,还可以结合考量MAC地址信息的热度。例如,在将目标报文A的MAC地址信息写入某一预分配内存地址后,如果收到目标报文B的MAC地址信息与该目标报文A的MAC地址信息相同,那么网络设备虽然不需要对该目标报文B的MAC地址信息重新学习,但是可以对先前已学习的MAC地址信息的写入时刻进行更新,使得该条MAC地址信息的老化周期得以更新。假定老化时长仍为60s,如果在30s时收到目标报文B,那么可以对相应的MAC地址信息的写入时刻进行更新,使得该MAC地址信息在60s时不会老化,而需要在90s时才可能发生老化。那么,如果每次都能在老化之前收到同一MAC地址信息对应的目标报文,就表明该MAC地址信息的热度很高,因而该MAC地址信息可以总是不会老化。
通过上述实施例可知,本申请中的MAC地址学习技术方案,在确保了不需要提高硬件设备的性能与成本的前提下,通过对特定类型的报文进行MAC地址学习,使得包含其余大部分不符合特定类型的报文的流量被过滤。以此解决了网络设备接收流量过大时,MAC地址学习模块无法及时处理并学习各报文的MAC地址所导致的丢包问题。同时,本申请可以减少网络设备需要学习的MAC地址,可以在不提高MAC地址信息的记录数量上限的前提下,减少网络设备所需学习的MAC地址信息的数量,避免超出上述的记录数量上限,或者减少由于超出记录数量上限而无法学习到的MAC地址信息的数量。又通过根据报文类型来维护与排查有关MAC地址表相关问题的方式,为该领域的技术人员减少了后续人力、时间成本,并提高了作业效率。
下面通过涉及交换机中的FPGA芯片对接收的报文进行MAC地址学习的实施例对本申请的技术方案进行详细阐述。
实际上,在上文实施例中已经涉及到通过编写FPGA芯片程序的得到的接收模块、解析模块和学习模块进行MAC地址学习的一系列操作。而FPGA芯片本身是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
关于交换机中的FPGA芯片对接收到的目标报文进行MAC地址学习的流程如图3所示,图3是根据本申请一示例性实施例提供的另一种MAC地址学习的方法的流程图,参考图3,该方法可以包括以下步骤:
S301,解析进入目标报文,获得对应原始报文类型的5bit预设报文类型标识以及报文中96bit长度的MAC地址信息作为报文信息。
首先,对于该实施例中FPGA芯片,我们假设FPGA芯片通过烧录的配置文件形成有接收模块、解析模块和学习模块。
在一实施例中,接收模块在接收到目标报文后,通过解析模块解析目标报文得到原始报文类型。解析模块读取预先建立的报文关系对应表,该表用于记录原始报文类型与预设类型标识的对应关系。因此,假定目标报文为ARP报文,即原始报文类型为“0x0806”,解析模块可以根据上述的报文关系对应表得到与之对应的预设类型标识“5’b00001”,并将该长度为5bit的预设类型标识与长度为96bit的MAC地址信息组成总长度为101bit报文信息。
S302,判断报文信息是否符合由5bit构成的预设报文类型。
在一实施例中,与报文类型对应表相似的,通过一个或多个长度为5bit的判断标识表征需要进行MAC地址学习的报文类型。具体地,假定预先设置判断标识为5’b00011,即只允许ARP和LLDP类型的报文进行MAC地址学习。同时,对于符合判断标识要求并最终通过的报文,可以正式地进入学习模块。如果不通过,则执行S310。
S303,轮询64个存储MAC地址信息的内存判断目标报文的MAC地址信息是否与内存中已存储的MAC地址信息重复。
在一实施例中,当报文信息进入学习模块后,学习模块将轮询FPGA芯片中64个用于存储MAC地址的内存地址,以检测是否存在与该报文信息的MAC地址信息一致的内容。如果不存在,则执行S304。如果存在相同的MAC地址信息,则执行S310。
S304,从存有0-63这64个值的地址资源池中读取对应的剩余深度为64,位宽为112bit的预分配内存地址。
在一实施例中,在FPGA芯片上电后,其学习模块对芯片上的地址资源池进行初始化操作。地址资源池可以通过FPGA上的数据缓冲器实现,比如该数据缓冲器可以为FIFO,该FIFO中可以写入0-63这64个值,这64个值表征了内存中的64个预分配内存地址,这些预分配内存地址分别用于记录学习到的64组MAC地址信息。
S305,将96bit的目标报文的MAC地址、5bit的报文类型标识、10bit的缓存时间以及1bit的有效位存储至读取的预分配内存地址。
在一实施例中,学习模块在获得剩余的预分配地址后,将MAC地址,报文类型标记号,当前时间,有效位共计112bits的数据一同写入上述地址中。
S306,根据接收到的查询请求,轮寻内存中64个地址,按照报文类型显示所有有效位是1的地址里的内容。
在一实施例中,如果用户需要检测当前已学习到的MAC地址信息,可以通过轮寻的方式读取内存中64个地址,根据报文类型对内存中所有有效位为1的地址内容进行显示。
S307,放弃目标报文的MAC地址学习。
具体地,当目标报文并不完全符合所规定的MAC地址学习条件,那么交换机将会对携带该目标报文的流量进行过滤操作,即放弃对该目标报文进行MAC地址学习。
通过上述实施例,可知交换机(即网络设备)中的FPAG芯片通过接收模块在接收到目标报文后,利用芯片中的解析模块,对目标报文中的MAC地址以及报文类型进行压缩与整合成为报文信息。其次,根据报文类型判断该报文信息是否属于用户所需要进行针对性MAC地址学习的报文类型。如果是,将会利用FPGA芯片中的地址资源池与内存地址通过学习模块将MAC地址信息以及其他报文信息写入预分配的内存地址中。当正常完成目标报文的MAC地址学习过程后,用户需要通过查看内存中当前已经被学习的MAC地址信息,是否属于一些基于数据链路层的协议报文(比如ARP,LLDP报文)时,便可以根据报文类型以及有效位来检索对用户而言有意义的MAC地址学习信息。通过上述实施例,可以允许ARP,LLDP,VLAN和MPLS报文中的一种或者几种进行mac地址学习,意味着其余流量在MAC地址学习过程中被过滤掉,从而有效减低了学习模块需要处理的流量负担,提高了MAC地址学习的效率;同时又因为ARP和LLDP报文的发送间隔很长,不会达到学习模块的性能瓶颈,从而不会造成MAC地址的漏统计进而导致丢包现象发生;再者本领域的工作人员通过本申请方案中可以按照报文类型来查看已学习的MAC的技术效果,以节约在维护与排查MAC地址表过程中所造成的不必要的时间成本和人力成本,进一步提高了对其的维护与维护效率。
图4是根据本申请一示例性实施例中的一种网络设备的示意结构图。请参考图4,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成MAC地址学习的装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
与前述MAC地址学习方法的实施例相对应,本申请还提供了MAC地址学习装置的实施例。
请参考图5,图5是根据本申请一示例性实施例中的一种MAC地址学习装置的框图,如图5所示,在软件实施方式中,该MAC地址学习装置可以包括:
报文解析单元510,解析接收到的目标报文,并获得对应的报文信息,其中,所述报文信息包含所述目标报文的目标报文类型;
报文类型判断单元520,判断所述目标报文类型是否属于预设报文类型;
MAC地址学习单元530,如果判断结果为是,则针对所述目标报文进行MAC地址学习。
可选的,所述电子设备中设置有FPGA芯片,所述FPGA芯片通过烧录的配置文件形成有接收模块、解析模块和学习模块;所述报文信息还包含所述目标报文的MAC地址信息;所述报文解析单元510具体用于:通过所述解析模块对所述接收模块接收到的所述目标报文进行解析,以得到所述报文信息;所述报文类型判断单元520具体用于:通过所述学习模块获取所述解析模块生成的所述报文信息,并判断所述报文信息所含的目标报文类型是否属于所述预设报文类型;所述MAC地址学习单元530具体用于:在判断结果为是的情况下,通过所述学习模块对所述报文信息所含的MAC地址信息进行MAC地址学习。
可选的,所述报文解析单元510具体用于:解析所述目标报文得到原始报文类型;确定对应于所述原始报文类型的预设类型标识,以作为所述目标报文类型;其中,所述预设类型标识的长度小于所述原始报文类型的长度。
可选的,所述MAC地址学习单元530具体用于:检测内存中存储的已学习MAC地址,以确定是否存在与所述目标报文相同的已学习MAC地址;如果不存在,则从地址资源池中读取一个剩余的预分配内存地址,并写入所述目标报文的MAC地址信息;其中,所述地址资源池用于维护供存储已学习到的MAC地址的预分配内存地址。
可选的,所述装置还包括:
有效值写入单元540,向读取的预分配内存地址中的有效状态字段写入预定义的有效值,以表征该读取的预分配内存地址中已写入学习到的MAC地址信息。
信息显示单元550,响应于接收到的查询请求,确定相应的有效状态字段为所述有效值的所有预分配内存地址,并显示所确定的预分配内存地址中记录的MAC地址信息。
可选的,所述装置还包括:类型写入单元560,用于向读取的预分配内存地址中写入所述目标报文类型。
所述信息显示单元550具体用于:按照报文类型对所确定的预分配内存地址中记录的MAC地址信息进行分类显示。
可选的,所述装置还包括:
时刻写入单元570,向读取的预分配内存地址中写入当前时刻,以用于确定相应的存在时长。
老化管理单元580,根据所述存在时长和预设的老化时长对所述读取的预分配内存地址中的存储内容进行老化管理。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (10)

1.一种MAC地址学习的方法,其特征在于,应用于网络设备,所述方法包括:
解析接收到的目标报文,并获得对应的报文信息,其中,所述报文信息包含所述目标报文的目标报文类型;
判断所述目标报文类型是否属于预设报文类型;
如果判断结果为是,则针对所述目标报文进行MAC地址学习。
2.根据权利要求1所述的方法,其特征在于,所述网络设备中设置有FPGA芯片,所述FPGA芯片通过烧录的配置文件形成有接收模块、解析模块和学习模块;所述报文信息还包含所述目标报文的MAC地址信息;
所述解析接收到的目标报文,包括:通过所述解析模块对所述接收模块接收到的所述目标报文进行解析,以得到所述报文信息;
所述判断所述目标报文类型是否属于预设报文类型,包括:通过所述学习模块获取所述解析模块生成的所述报文信息,并判断所述报文信息所含的目标报文类型是否属于所述预设报文类型;
所述针对所述目标报文进行MAC地址学习,包括:在判断结果为是的情况下,通过所述学习模块对所述报文信息所含的MAC地址信息进行MAC地址学习。
3.根据权利要求1所述的方法,其特征在于,所述获得对应的报文信息,包括:
解析所述目标报文得到原始报文类型;
确定对应于所述原始报文类型的预设类型标识,以作为所述目标报文类型;其中,所述预设类型标识的长度小于所述原始报文类型的长度。
4.根据权利要求1所述的方法,其特征在于,所述针对所述目标报文进行MAC地址学习,包括:
检测内存中存储的已学习MAC地址信息,以确定是否存在与所述目标报文相同的已学习MAC地址信息;
如果不存在,则从地址资源池中读取一剩余的预分配内存地址,并写入所述目标报文的MAC地址信息;其中,所述地址资源池用于维护供存储已学习到的MAC地址信息的预分配内存地址。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
向读取的预分配内存地址中的有效状态字段写入预定义的有效值,以表征该读取的预分配内存地址中已写入学习到的MAC地址信息;
响应于接收到的查询请求,确定相应的有效状态字段为所述有效值的所有预分配内存地址,并显示所确定的预分配内存地址中记录的MAC地址信息。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
向读取的预分配内存地址中写入所述目标报文类型;
所述显示所确定的预分配内存地址中记录的MAC地址信息,包括:按照报文类型对所确定的预分配内存地址中记录的MAC地址信息进行分类显示。
7.根据权利要求4所述的方法,其特征在于,所述方法还包括:
向读取的预分配内存地址中写入当前时刻,以用于确定相应的存在时长;
根据所述存在时长和预设的老化时长对所述读取的预分配内存地址中的存储内容进行老化管理。
8.一种MAC地址学习的装置,其特征在于,应用于网络设备中,所述装置包括:
报文解析单元,用于解析接收到的目标报文,获得对应的报文信息,其中,所述报文信息包含所述目标报文的目标报文类型;
报文类型判断单元,用于判断所述目标报文类型是否为预设报文类型;
MAC地址学习单元,用于如果判断结果为是,则针对所述目标报文进行MAC地址学习。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1~7任一所述方法的步骤。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~7任一所述方法的步骤。
CN202111028241.3A 2021-09-02 2021-09-02 一种mac地址学习的方法及装置 Pending CN114125078A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111028241.3A CN114125078A (zh) 2021-09-02 2021-09-02 一种mac地址学习的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111028241.3A CN114125078A (zh) 2021-09-02 2021-09-02 一种mac地址学习的方法及装置

Publications (1)

Publication Number Publication Date
CN114125078A true CN114125078A (zh) 2022-03-01

Family

ID=80441153

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111028241.3A Pending CN114125078A (zh) 2021-09-02 2021-09-02 一种mac地址学习的方法及装置

Country Status (1)

Country Link
CN (1) CN114125078A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826680A (zh) * 2022-03-30 2022-07-29 北京经纬恒润科技股份有限公司 车载数据处理方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1725731A (zh) * 2005-05-19 2006-01-25 杭州华为三康技术有限公司 控制二层以太环网设备mac地址学习数目的方法
CN103117928A (zh) * 2013-01-21 2013-05-22 中兴通讯股份有限公司 提高芯片转发性能的方法及装置
CN104468855A (zh) * 2013-09-25 2015-03-25 阿里巴巴集团控股有限公司 地址解析协议arp报文的处理方法和装置
CN105721315A (zh) * 2016-04-06 2016-06-29 烽火通信科技股份有限公司 一种集中式mac地址学习的控制方法
US20190253380A1 (en) * 2018-02-09 2019-08-15 Red Hat, Inc. Layer 2 address connectivity updates for packet routing
CN110365811A (zh) * 2019-07-22 2019-10-22 杭州迪普科技股份有限公司 一种mac地址学习限制方法、装置及设备
CN112350945A (zh) * 2021-01-08 2021-02-09 南京易科腾信息技术有限公司 Mac地址学习方法、网关设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1725731A (zh) * 2005-05-19 2006-01-25 杭州华为三康技术有限公司 控制二层以太环网设备mac地址学习数目的方法
CN103117928A (zh) * 2013-01-21 2013-05-22 中兴通讯股份有限公司 提高芯片转发性能的方法及装置
CN104468855A (zh) * 2013-09-25 2015-03-25 阿里巴巴集团控股有限公司 地址解析协议arp报文的处理方法和装置
CN105721315A (zh) * 2016-04-06 2016-06-29 烽火通信科技股份有限公司 一种集中式mac地址学习的控制方法
US20190253380A1 (en) * 2018-02-09 2019-08-15 Red Hat, Inc. Layer 2 address connectivity updates for packet routing
CN110365811A (zh) * 2019-07-22 2019-10-22 杭州迪普科技股份有限公司 一种mac地址学习限制方法、装置及设备
CN112350945A (zh) * 2021-01-08 2021-02-09 南京易科腾信息技术有限公司 Mac地址学习方法、网关设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
SAIDHIRAJ AMURU: "To Send or Not to Send - Learning MAC Contention", 《2015 IEEE GLOBAL COMMUNICATIONS CONFERENCE (GLOBECOM)》, 10 December 2015 (2015-12-10) *
熊伟;车任秋;: "一种工业以太网交换机ARP老化机制", 工业控制计算机, no. 05, 25 May 2020 (2020-05-25) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826680A (zh) * 2022-03-30 2022-07-29 北京经纬恒润科技股份有限公司 车载数据处理方法及装置
CN114826680B (zh) * 2022-03-30 2023-07-07 北京经纬恒润科技股份有限公司 车载数据处理方法及装置

Similar Documents

Publication Publication Date Title
US10778588B1 (en) Load balancing for multipath groups routed flows by re-associating routes to multipath groups
CN111385121B (zh) 一种操作管理维护iOAM报文的传输方法及相应装置
CN112737914B (zh) 报文处理方法、装置、网络设备及可读存储介质
CN102611620A (zh) 拥塞控制方法和报文处理设备
CN108206787A (zh) 一种拥塞避免方法和装置
CN104135548A (zh) 基于fpga的静态nat实现方法及装置
CN114125078A (zh) 一种mac地址学习的方法及装置
JP5957318B2 (ja) ネットワークシステム、情報中継装置、及びパケット配信方法
CN112260899B (zh) 基于mmu的网络监测方法和装置
CN107547381B (zh) 一种出方向路由过滤orf处理方法和装置
CN112688924A (zh) 网络协议分析系统
CN116319448A (zh) 丢包诊断方法、装置、电子设备及计算机可读存储介质
WO2022152230A1 (zh) 信息流识别方法、网络芯片及网络设备
CN107659966A (zh) 数据传输方法、网络设备、用户终端、网关设备
CN103997415A (zh) 一种实现报文统计的装置及方法
CN113992609B (zh) 一种处理多链路业务数据乱序的方法及系统
CN114615200A (zh) 一种基于acl的大象流检测方法及装置
CN110855574B (zh) 一种基于硬件实现数据流丢弃类型的统计方法及装置
CN116185598A (zh) 地址处理方法、装置、电子设备及可读存储介质
CN113518046A (zh) 一种报文转发方法及框式交换设备
CN112929197A (zh) 一种网络通信方法、装置、设备和存储介质
CN115514721B (zh) 未知组播数据的处理方法及装置、计算设备、存储介质
CN116319468B (zh) 网络遥测方法、装置、交换机、网络、电子设备和介质
CN115883466B (zh) 交换机的控制方法及装置、存储介质及电子装置
CN114157602B (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