CN103117931B - 基于哈希表和tcam表的mac地址硬件学习方法及*** - Google Patents

基于哈希表和tcam表的mac地址硬件学习方法及*** Download PDF

Info

Publication number
CN103117931B
CN103117931B CN201310055657.3A CN201310055657A CN103117931B CN 103117931 B CN103117931 B CN 103117931B CN 201310055657 A CN201310055657 A CN 201310055657A CN 103117931 B CN103117931 B CN 103117931B
Authority
CN
China
Prior art keywords
list item
tcam
hash table
virtual switch
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
Application number
CN201310055657.3A
Other languages
English (en)
Other versions
CN103117931A (zh
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.)
Fiberhome Telecommunication Technologies Co Ltd
Original Assignee
Fiberhome Telecommunication Technologies 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 Fiberhome Telecommunication Technologies Co Ltd filed Critical Fiberhome Telecommunication Technologies Co Ltd
Priority to CN201310055657.3A priority Critical patent/CN103117931B/zh
Publication of CN103117931A publication Critical patent/CN103117931A/zh
Priority to PCT/CN2013/080000 priority patent/WO2014127605A1/zh
Priority to MYPI2014703365A priority patent/MY170382A/en
Priority to CL2015000917A priority patent/CL2015000917A1/es
Application granted granted Critical
Publication of CN103117931B publication Critical patent/CN103117931B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3009Header conversion, routing tables or routing tags

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Small-Scale Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于哈希表和TCAM表的MAC地址硬件学习方法及***,涉及MAC地址学习领域,本发明在没有MAC地址冲突的时候,使用哈希表来存储学习到的MAC地址,哈希表硬件上用SRAM或者DRAM来实现;存在MAC地址冲突时,使用TCAM表来缓存冲突的MAC地址,TCAM表硬件上采用TCAM存储器来实现,由于TCAM硬件上是并行查找,一次搜索即可定位空闲表项,而且TCAM的表项个数就是实际能缓存的冲突的MAC地址个数。本发明在通用的可编程交换芯片上实现,不需专用硬件电路的支持,学习速率较高,占用的内存资源较少,采用通用的算法,应用灵活,能实现冲突概率完全可控。

Description

基于哈希表和TCAM表的MAC地址硬件学习方法及***
技术领域
本发明涉及MAC(Media Access Control,媒体访问控制)地址学习领域,特别是涉及一种基于HASH(哈希)表和TCAM(TernaryContent Addressable Memory,三态内容寻址存储器)表的MAC地址硬件学习方法及***。
背景技术
随着经济全球化的发展,越来越多的企业分布范围日益扩大,迫切需要电信运营商提供链路连接,以便将企业各分支机构囊括进来,组成企业内部的专用网络。在这样的市场需求下,VPLS(VirtualPrivate Lan Service,虚拟专用局域网业务)技术应运而生,VPLS技术结合了以太网技术和MPLS(Multi-Protocol Label Switching,多协议标签交换)技术的优势,通过运营商提供的IP(Internet Protocol,网际协议)/MPLS网络连接地域上隔离的多个由以太网构成的LAN(Local Area Network,局域网),实现了对传统LAN功能的仿真,使它们像一个LAN那样工作。
VPLS通过查找对应VSI(Virtual Switch Instance,虚拟转发实例)的MAC地址转发表,来指导用户报文的转发,而MAC地址转发表是通过MAC地址学习功能创建的。因此,MAC地址学习功能是实现VPLS的关键因素。
MAC地址学习的2个触发条件是:
(1)某个VSI收到源MAC是未知单播地址时;
(2)某个VSI收到一个已知的源MAC地址,但是对应的转发表项需要更新,例如:接收VP(Virtual Port,VSI中的虚拟交换端口)发生了变化。
在MAC地址学习中地址冲突是不可避免的问题,原因是MAC地址有48bit,而VSI根据设备容量的不同取值一般大于10bit(即最少支持1k个VSI)。理论上如果要避免MAC地址冲突,则需要穷举所有MAC地址组合情况,至少需要2^58=256P(计算机存储单位,1Peta=1024T)个表项,显然不可能用硬件来缓存如此大数量级的表项。
目前解决MAC地址冲突的方法有以下三种:
(1)依赖主控CPU(Central Processing Unit,中央处理器)来协助解决地址冲突:一种MAC地址软件学习方法,即在主控CPU上通过实现“冲突链表”算法来解决地址冲突问题。由于主控CPU通常用来运行复杂的路由协议,本身负担已经较重,因此,非常浪费宝贵的主控CPU处理资源,而且与MAC地址硬件学习方法相比,该MAC地址软件学习方法的学习速率比较低。
(2)单哈希表缓存冲突方法:一种MAC地址硬件学习方法,使用一个哈希表来缓存MAC地址冲突,即通过扩大哈希表的容量,以降低冲突产生的概率,是一种最简单、最常见的缓存冲突方法。
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,以实现数据的压缩,并通过将原始数据打散和离散,以抑制映射后产生的数据冲突。常用的哈希算法有MD2(Message DigestAlgorithm2,消息摘要算法第二版)、MD5(Message Digest Algorithm5,消息摘要算法第五版)、CRC(Cyclic Redundancy Check,循环冗余校验)32等。实际应用中常采用CRC32来作为哈希算法。以64K地址表为例,将VSI和源MAC用CRC32算法计算出32bit的哈希散列值,并将32bit结果的高、低16bit异或之后截取低16bit(2^16=64K)作为索引值,去索引RAM中的表项。如果两个MAC地址16bit离散值相同,则其中一个MAC地址无法被缓存;此时,只能期望两个MAC地址CRC32Hash值的bit17不同,并将表项容量由64k扩展128k,以此来进一步缓解冲突。
单哈希桶缓存冲突方法通过扩展离散值bit数的方法来降低冲突概率,每增加1bit离散值,需要将冲突表容量扩展一倍,因此对冲突表资源浪费很大。而且,由于这种办法完全依赖离散值进行表项的定位,不管如何扩容表项,始终无法缓存离散值完全相同的多个MAC地址。另外,当MAC地址样本发生变化时,并不能保证***设计时所允许的冲突概率。
(3)多桶缓存冲突方法:一种MAC地址硬件学习方法,该方法使用多个桶来缓解冲突,在一些ASIC(Application SpecificIntegrated Circuit,专用集成电路)芯片上实现,即采用硬件电路模拟多个冲突桶,每个冲突桶具备一定缓存冲突的能力。仍以64k地址表项为例,用CRC32算法离散MAC地址,并取32bit Hash值的低16bit作为离散结果,首先使用16bit离散值的低13bit(2^13=8K)去定位8K个冲突桶,每个冲突桶中有8个冲突表项;然后在当前定位的冲突桶中,去搜索8个冲突表项中空闲的表项,如果有空闲表项则放入空表项中;如果没有,则无法缓存冲突。
多桶缓存冲突方法很大程度上解决了单哈希桶无法缓存离散值相同的MAC地址的问题,而且硬件资源的利用效率也比较高,但是,该方法需要大量冲突桶协同工作,需要专用的硬件电路的支持,而且每个冲突桶中空闲表项的搜索方法需要专用的硬件电路来实现搜索算法,由于其实现的算法并未公开,因此应用不灵活;另外,由于该方法只利用当前冲突桶中空闲表项资源来缓存冲突,因此,只能缓存最多8个离散值相同的MAC地址,对更多离散值相同的恶劣情况其缓存冲突的能力有限。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种基于哈希表和TCAM表的MAC地址硬件学习方法及***,在通用的可编程交换芯片上实现,不需专用硬件电路的支持,学习速率较高;占用的内存资源较少,采用通用的算法,应用灵活,能实现冲突概率完全可控。
本发明提供的基于哈希表和TCAM表的MAC地址硬件学习方法,包括以下步骤:
S1、以报文所属的虚拟转发实例号和源MAC地址计算哈希值,并以哈希值为索引搜索哈希表;
S2、组织搜索TCAM表项的键值:虚拟转发实例号为报文所属的虚拟转发实例号;MAC地址为报文的源MAC地址;表项满标志置1,表示在已经学习到的TCAM表项中进行搜索;
S3、判断TCAM表项数据中有效标志是否置位,如果置位,则转到S4;否则,转到S6;
S4、比较TCAM表项数据中虚拟交换端口是否等于报文接收虚拟交换端口,如果是,则表项不需要更新,转到S15;否则,表示TCAM表项需要更新,转到S5;
S5、更新当前TCAM表项数据中虚拟交换端口为报文实际接收虚拟交换端口,转到S15;
S6、判断哈希表中数据有效标志是否置位,如果置位,则转到S8;否则,转到S7;
S7、将报文源MAC地址、报文所属虚拟转发实例号和报文接收的虚拟交换端口存储到当前哈希表项中,表项有效标志置1,转到S15;
S8、比较哈希表中虚拟转发实例号和MAC地址是否和报文所属的虚拟转发实例号及源MAC地址相匹配,如果匹配,则表示当前地址已经在哈希表中学到过,转到S9;否则,转到S11;
S9、比较当前哈希表中虚拟交换端口是否等于报文实际接收虚拟交换端口,如果相等,则哈希表项不需要更新,转到S15;否则,转到S10;
S10、更新当前哈希表项中的虚拟转发端口号为报文实际接收虚拟端口号,转到S15;
S11、产生哈希冲突,组织搜索TCAM表项的键值以寻找空闲TCAM表项缓存冲突:键值中虚拟转发实例号为0,MAC地址为0,表项满标志为0,表示在空闲TCAM表项中进行搜索;
S12、判断TCAM数据中有效标志是否置位,如果置位,表示找到第一个空闲表项,转到S14;否则,转到S13;
S13、TCAM存储器没有空闲表项,放弃学习,转到S15;
S14、将MAC地址缓存到当前空闲TCAM表项中:键值的虚拟转发实例号填写为报文所属虚拟转发实例号,掩码置1;MAC地址填写为报文的源MAC地址,掩码置1;表项满标志置1,掩码置1;数据中虚拟交换端口填写为报文实际接收虚拟交换端口,转到S15;
S15、MAC地址硬件学习流程结束。
在上述技术方案的基础上,步骤S1之前还包括表项初始化的步骤:判断初始化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断初始化表项索引值是否位于哈希表索引范围内,如果是,则初始化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断初始化表项索引是否为TCAM最后一项,如果是,则初始化最后一个TCAM表项,键值中所有字段均初始化为0,掩码为0,数据中的所有字段均赋值为0,表示该表项为TCAM最后一个表项;否则,将键值中表项满标志清0,掩码置1,表示当前表项初始状态为空,键值中其余字段清0,掩码清0,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,初始化结束。
在上述技术方案的基础上,步骤S15之后还包括老化的步骤:判断老化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断老化表项索引值是否位于哈希表索引范围内,如果是,则老化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断老化表项索引是否为TCAM最后一项,如果是,则表示TCAM最后一项是一个匹配任意键值的表项,结束老化;否则,将键值中表项满标志清0,掩码置1,其余字段清0,掩码清0,将表项状态置为空,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,老化结束。
在上述技术方案的基础上,所述哈希表存储在SRAM或者DRAM中。
在上述技术方案的基础上,所述TCAM表项存储在TCAM存储器中。
本发明还提供一种基于哈希表和TCAM表的MAC地址硬件学习***,包括搜索单元、TCAM表项判断单元、哈希表判断单元、哈希表比较单元和哈希冲突处理单元,其中:
所述搜索单元,用于:以报文所属的虚拟转发实例号和源MAC地址计算哈希值,并以哈希值为索引搜索哈希表;组织搜索TCAM表项的键值:虚拟转发实例号为报文所属的虚拟转发实例号;MAC地址为报文的源MAC地址;表项满标志置1,表示在已经学习到的TCAM表项中进行搜索;
所述TCAM表项判断单元,用于:判断TCAM表项数据中有效标志是否置位,如果置位,则比较TCAM表项数据中虚拟交换端口是否等于报文接收虚拟交换端口,如果是,则不更新表项;否则,更新当前TCAM表项数据中虚拟交换端口为报文实际接收虚拟交换端口;如果没有置位,产生哈希表判断触发信号,并发送到哈希表判断单元;
所述哈希表判断单元,用于:收到哈希表判断触发信号时,判断哈希表中数据有效标志是否置位,如果没有置位,将报文源MAC地址、报文所属虚拟转发实例号和报文接收的虚拟交换端口存储到当前哈希表项中,表项有效标志置1;如果置位,产生比较触发信号,并发送到哈希表比较单元;
所述哈希表比较单元,用于:收到比较触发信号时,比较哈希表中虚拟转发实例号和MAC地址是否和报文所属的虚拟转发实例号及MAC地址相匹配,如果匹配,则表示当前地址已经在哈希表中学到过,比较当前哈希表中虚拟交换端口是否等于报文实际接收虚拟交换端口,如果相等,则结束学习;否则,更新当前哈希表项中的虚拟转发端口号为报文实际接收虚拟端口号,结束学习;如果不匹配,产生哈希冲突处理触发信号,并发送到哈希冲突处理单元;
所述哈希冲突处理单元,用于:收到哈希冲突处理触发信号时,组织搜索TCAM表项的键值以寻找空闲TCAM表项缓存冲突:键值中虚拟转发实例号为0,MAC地址为0,表项满标志为0,表示在空闲TCAM表项中进行搜索;再判断TCAM数据中有效标志是否置位,如果置位,表示找到第一个空闲表项,将MAC地址缓存到当前空闲TCAM表项中:键值的虚拟转发实例号填写为报文所属虚拟转发实例号,掩码置1,MAC地址填写为报文的源MAC地址,掩码置1,表项满标志置1,掩码置1,数据中虚拟交换端口填写为报文实际接收虚拟交换端口,结束学习;如果没有置位,表示TCAM存储器没有空闲表项,放弃学习。
在上述技术方案的基础上,还包括初始化单元,用于:判断初始化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断初始化表项索引值是否位于哈希表索引范围内,如果是,则初始化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断初始化表项索引是否为TCAM最后一项,如果是,则初始化最后一个TCAM表项,键值中所有字段均初始化为0,掩码为0,数据中的所有字段均赋值为0,表示该表项为TCAM最后一个表项;否则,将键值中表项满标志清0,掩码置1,表示当前表项初始状态为空,键值中其余字段清0,掩码清0,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,初始化结束。
在上述技术方案的基础上,还包括老化单元,用于:判断老化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断老化表项索引值是否位于哈希表索引范围内,如果是,则老化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断老化表项索引是否为TCAM最后一项,如果是,则表示TCAM最后一项是一个匹配任意键值的表项,结束老化;否则,将键值中表项满标志清0,掩码置1,其余字段清0,掩码清0,将表项状态置为空,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,老化结束。
在上述技术方案的基础上,所述哈希表存储在SRAM或者DRAM中。
在上述技术方案的基础上,所述TCAM表项存储在TCAM存储器中。
与现有技术相比,本发明的优点如下:
(1)本发明的MAC地址硬件学习方法,完全在交换芯片上实现,不需要依赖任何主控CPU的协助,学习速率比较高。
(2)本发明在没有MAC地址冲突的时候,使用哈希表来存储学习到的MAC地址,哈希表硬件上用SRAM或者DRAM来实现,容量和带宽上可以做得比较大,首选哈希表来存放地址表项,能充分利用RAM大容量硬件资源的优势。存在MAC地址冲突时,使用TCAM表来缓存冲突的MAC地址,TCAM表硬件上采用TCAM存储器来实现,由于TCAM硬件上是并行查找,一次搜索即可定位空闲表项,而且TCAM的表项个数就是实际能缓存的冲突的MAC地址个数,因此,不仅能充分利用TCAM快速并行查找的优势,而且能实现冲突概率完全可控,此外,由于不用哈希表来缓存冲突的MAC地址,因此占用的内存资源较少。
(3)本发明在通用的可编程交换芯片上即可实现,不需要专用硬件电路的支持,采用通用的算法,应用十分灵活。
(4)本发明使用TCAM表来缓存冲突的MAC地址,能缓存的冲突的MAC地址总量为开辟的TCAM总量减1,冲突概率可控,能缓存的冲突的MAC地址的个数是确定不变的,不会随着MAC地址样本的变化而变化,缓存冲突的MAC地址的能力有保障,即使在冲突最恶劣的情况下,TCAM表仍然能缓存几乎所有的MAC地址冲突。
附图说明
图1是本发明实施例中表项初始化的流程图。
图2是本发明实施例中基于哈希表和TCAM表的MAC地址硬件学习方法的流程图。
图3是本发明实施例中老化的流程图。
具体实施方式
下面结合附图及具体实施例对本发明作进一步的详细描述。
TCAM是一种三态内容寻址存储器,TCAM中每个bit数据有三种状态:除了普通的“0”和“1”之外,还有一个“don’t care”(即不用匹配该bit)状态,所以称之为“三态”。“三态”的功能通过掩码来实现,即掩码为0,表示“dont’t care”给定的键值;掩码为1,表示需要精确匹配给定的键值。TCAM的这种特性使其既能完成精确匹配,也能完成模糊匹配。TCAM的另一个特点就是“并行查找”,即给定一个键值,则TCAM会同时匹配所有的硬件表项,并且返回地址索引值最小的那一条表项索引。
本发明实施例采用RAM存放哈希表,作为MAC地址学习的主存储器,结合TCAM存储器“三态存储”和“并行查找”的特点,来缓存冲突的MAC地址。在功能划分上,哈希表作为MAC地址的主存储器,而TCAM表负责完成缓存地址冲突的核心功能。哈希表和TCAM表互相配合共同完成MAC地址学习的功能,其实现上需要初始化、地址的学习和地址的老化三者的密切配合才能实现。
哈希表存储在SRAM或者DRAM中,TCAM表项存储在TCAM存储器中。
参见表1所示,哈希表的数据结构包括虚拟转发实例(Vsi)、Mac地址、表项有效标志(Valid)和虚拟交换端口(Vp)。
表1、哈希表的数据结构定义表
成员1 成员2 成员3 成员4
虚拟转发实例(Vsi) Mac地址 表项有效标志(Valid) 虚拟交换端口(Vp)
参见表2所示,TCAM表项的数据结构包括键值(Key)和数据(Data),键值(Key)包括虚拟转发实例(Vsi)、Mac地址和表项满标志(FlagFull),数据(Data)包括表项有效标志(Valid)和虚拟交换端口(Vp)。
表2、TCAM表项的数据结构定义表
参见图1所示,本发明实施例中表项初始化的流程如下:
步骤101、判断初始化表项索引是否大于表项最大值,如果是,则转到步骤102;否则,转到步骤103;
步骤102、初始化表项索引范围超过表项最大值,返回异常,转到步骤108;
步骤103、判断初始化表项索引值是否位于哈希表索引范围内,如果是,则转到步骤104;否则,转到步骤105;
步骤104、初始化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0,转到步骤108;
步骤105、判断初始化表项索引是否为TCAM最后一项,如果是,则转到步骤106;否则,转到步骤107;
步骤106、初始化最后一个TCAM表项,键值中所有字段均初始化为0,掩码为0,即该表项是一个“catch all”(匹配任意键值)的表项;数据中的所有字段均赋值为0,表示该表项为TCAM最后一个表项,不能用来缓存地址冲突,TCAM最后一个表项的作用是:(1)当业务转发查找到该表项时,可判断整个TCAM表项中没有缓存该MAC地址,因而需要继续搜索哈希表以指导业务转发;(2)当MAC地址学习搜索空闲表项时查找到该表项,则表示TCAM冲突缓存已满,无法再缓存冲突的MAC地址了;因此实际能缓存的冲突总量是TCAM表项总数减1,转到步骤108;
步骤107、将键值中表项满标志清0,掩码置1(表示当前表项初始状态为空),键值中其余字段清0,掩码清0,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,可以用来缓存冲突的MAC地址,转到步骤108;
步骤108、表项初始化的流程结束。
参见图2所示,本发明实施例提供一种基于哈希表和TCAM表的MAC地址硬件学习方法,包括以下步骤:
步骤201、以报文所属的虚拟转发实例号和源MAC地址计算哈希值,并以哈希值为索引搜索哈希表;
步骤202、组织搜索TCAM表项的键值:虚拟转发实例号为报文所属的虚拟转发实例号;MAC地址为报文的源MAC地址;表项满标志置1,表示在已经学习到的TCAM表项中进行搜索;
步骤203、判断TCAM表项数据中有效标志是否置位,如果置位,则转到步骤204;否则,转到步骤206;
步骤204、比较TCAM表项数据中虚拟交换端口是否等于报文接收虚拟交换端口,如果是,则表项不需要更新,转到步骤215;否则,表示TCAM表项需要更新,转到步骤205;
步骤205、更新当前TCAM表项数据中虚拟交换端口为报文实际接收虚拟交换端口,转到步骤215;
步骤206、判断哈希表中数据有效标志是否置位,如果置位,则转到步骤208;否则,转到步骤207;
步骤207、将报文源MAC地址,报文所属虚拟转发实例号和报文接收的虚拟交换端口存储到当前哈希表项中,表项有效标志置1,转到步骤215;
步骤208、比较哈希表中虚拟转发实例号和MAC地址是否和报文所属的虚拟转发实例号及源MAC地址相匹配,如果匹配,则表示当前地址已经在哈希表中学到过,转到步骤209;否则,转到步骤211;
步骤209、比较当前哈希表中虚拟交换端口是否等于报文实际接收虚拟交换端口,如果相等,则哈希表项不需要更新,转到步骤215;否则,转到步骤210;
步骤210、更新当前哈希表项中的虚拟转发端口号为报文实际接收虚拟端口号,转到步骤215;
步骤211、产生哈希冲突,组织搜索TCAM表项的键值以寻找空闲TCAM表项缓存冲突:键值中虚拟转发实例号为0,MAC地址为0,表项满标志为0,表示在空闲TCAM表项中进行搜索;
步骤212、判断TCAM数据中有效标志是否置位,如果置位,表示找到第一个空闲表项,转到步骤214;否则,转到步骤213;
步骤213、TCAM存储器没有空闲表项可以缓存冲突,放弃学习,转到步骤215;
步骤214、将MAC地址缓存到当前空闲TCAM表项中:键值的虚拟转发实例号填写为报文所属虚拟转发实例号,掩码置1;MAC地址填写为报文的源MAC地址,掩码置1;表项满标志置1,掩码置1;数据中虚拟交换端口填写为报文实际接收虚拟交换端口,转到步骤215;
步骤215、MAC地址硬件学习流程结束。
参见图3所示,本发明实施例中老化的流程如下:
步骤301、判断老化表项索引是否大于表项最大值,如果是,则转到步骤302;否则,转到步骤303;
步骤302、初始化表项索引范围超过表项最大值,返回异常,转到步骤308;
步骤303、判断老化表项索引值是否位于哈希表索引范围内,如果是,则转到步骤304;否则,转到步骤305;
步骤304、老化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0,转到步骤308;
步骤305、判断老化表项索引是否为TCAM最后一项,如果是,则转到步骤306;否则,转到步骤307;
步骤306、TCAM最后一项是一个“catch all”(匹配任意键值)的表项,一旦初始化则不需要对其进行操作,转到步骤308;
步骤307、将键值中表项满标志清0,掩码置1,其余字段清0,掩码清0,将表项状态置为空,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,可以用来缓存冲突的MAC地址,转到步骤308;
步骤308、MAC地址老化流程结束。
本发明实施例还提供一种基于哈希表和TCAM表的MAC地址硬件学习***,包括初始化单元、搜索单元、TCAM表项判断单元、哈希表判断单元、哈希表比较单元、哈希冲突处理单元和老化单元,其中:
初始化单元,用于:判断初始化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断初始化表项索引值是否位于哈希表索引范围内,如果是,则初始化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断初始化表项索引是否为TCAM最后一项,如果是,则初始化最后一个TCAM表项,键值中所有字段均初始化为0,掩码为0,数据中的所有字段均赋值为0,表示该表项为TCAM最后一个表项;否则,将键值中表项满标志清0,掩码置1,表示当前表项初始状态为空,键值中其余字段清0,掩码清0,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,初始化结束;
搜索单元,用于:以报文所属的虚拟转发实例号和源MAC地址计算哈希值,并以哈希值为索引搜索哈希表,哈希表存储在SRAM或者DRAM中;TCAM表项存储在TCAM存储器中,组织搜索TCAM表项的键值:虚拟转发实例号为报文所属的虚拟转发实例号;MAC地址为报文的源MAC地址;表项满标志置1,表示在已经学习到的TCAM表项中进行搜索;
TCAM表项判断单元,用于:判断TCAM表项数据中有效标志是否置位,如果置位,则比较TCAM表项数据中虚拟交换端口是否等于报文接收虚拟交换端口,如果是,则不更新表项;否则,更新当前TCAM表项数据中虚拟交换端口为报文实际接收虚拟交换端口;如果没有置位,产生哈希表判断触发信号,并发送到哈希表判断单元;
哈希表判断单元,用于:收到哈希表判断触发信号时,判断哈希表中数据有效标志是否置位,如果没有置位,将报文源MAC地址、报文所属虚拟转发实例号和报文接收的虚拟交换端口存储到当前哈希表项中,表项有效标志置1;如果置位,产生比较触发信号,并发送到哈希表比较单元;
哈希表比较单元,用于:收到比较触发信号时,比较哈希表中虚拟转发实例号和MAC地址是否和报文所属的虚拟转发实例号及MAC地址相匹配,如果匹配,则表示当前地址已经在哈希表中学到过,比较当前哈希表中虚拟交换端口是否等于报文实际接收虚拟交换端口,如果相等,则结束学习;否则,更新当前哈希表项中的虚拟转发端口号为报文实际接收虚拟端口号,结束学习;如果不匹配,产生哈希冲突处理触发信号,并发送到哈希冲突处理单元;
哈希冲突处理单元,用于:收到哈希冲突处理触发信号时,组织搜索TCAM表项的键值以寻找空闲TCAM表项缓存冲突:键值中虚拟转发实例号为0,MAC地址为0,表项满标志为0,表示在空闲TCAM表项中进行搜索;再判断TCAM数据中有效标志是否置位,如果置位,表示找到第一个空闲表项,将MAC地址缓存到当前空闲TCAM表项中:键值的虚拟转发实例号填写为报文所属虚拟转发实例号,掩码置1,MAC地址填写为报文的源MAC地址,掩码置1,表项满标志置1,掩码置1,数据中虚拟交换端口填写为报文实际接收虚拟交换端口,结束学习;如果没有置位,表示TCAM存储器没有空闲表项,放弃学习;
老化单元,用于:判断老化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断老化表项索引值是否位于哈希表索引范围内,如果是,则老化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断老化表项索引是否为TCAM最后一项,如果是,则表示TCAM最后一项是一个匹配任意键值的表项,结束老化;否则,将键值中表项满标志清0,掩码置1,其余字段清0,掩码清0,将表项状态置为空,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,老化结束。
本领域的技术人员可以对本发明实施例进行各种修改和变型,倘若这些修改和变型属在本发明权利要求及其等同技术的范围之内,则这些修改和变型也在本发明的保护范围之内。
说明书中未详细描述的内容为本领域技术人员公知的现有技术。

Claims (6)

1.一种基于哈希表和TCAM表的MAC地址硬件学习方法,其特征在于,包括以下步骤:
S1、以报文所属的虚拟转发实例号和源MAC地址计算哈希值,并以哈希值为索引搜索哈希表;
S2、组织搜索TCAM表项的键值:虚拟转发实例号为报文所属的虚拟转发实例号;MAC地址为报文的源MAC地址;表项满标志置1,表示在已经学习到的TCAM表项中进行搜索;
S3、判断TCAM表项数据中有效标志是否置位,如果置位,则转到S4;否则,转到S6;
S4、比较TCAM表项数据中虚拟交换端口是否等于报文接收虚拟交换端口,如果是,则表项不需要更新,转到S15;否则,表示TCAM表项需要更新,转到S5;
S5、更新当前TCAM表项数据中虚拟交换端口为报文实际接收虚拟交换端口,转到S15;
S6、判断哈希表中数据有效标志是否置位,如果置位,则转到S8;否则,转到S7;
S7、将报文源MAC地址、报文所属虚拟转发实例号和报文接收的虚拟交换端口存储到当前哈希表项中,表项有效标志置1,转到S15;
S8、比较哈希表中虚拟转发实例号和MAC地址是否和报文所属的虚拟转发实例号及源MAC地址相匹配,如果匹配,则表示当前地址已经在哈希表中学到过,转到S9;否则,转到S11;
S9、比较当前哈希表中虚拟交换端口是否等于报文实际接收虚拟交换端口,如果相等,则哈希表项不需要更新,转到S15;否则,转到S10;
S10、更新当前哈希表项中的虚拟转发端口号为报文实际接收虚拟端口号,转到S15;
S11、产生哈希冲突,组织搜索TCAM表项的键值以寻找空闲TCAM表项缓存冲突:键值中虚拟转发实例号为0,MAC地址为0,表项满标志为0,表示在空闲TCAM表项中进行搜索;
S12、判断TCAM数据中有效标志是否置位,如果置位,表示找到第一个空闲表项,转到S14;否则,转到S13;
S13、TCAM存储器没有空闲表项,放弃学习,转到S15;
S14、将MAC地址缓存到当前空闲TCAM表项中:键值的虚拟转发实例号填写为报文所属虚拟转发实例号,掩码置1;MAC地址填写为报文的源MAC地址,掩码置1;表项满标志置1,掩码置1;数据中虚拟交换端口填写为报文实际接收虚拟交换端口,转到S15;
S15、MAC地址硬件学习流程结束;
步骤S1之前还包括表项初始化的步骤:判断初始化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断初始化表项索引值是否位于哈希表索引范围内,如果是,则初始化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断初始化表项索引是否为TCAM最后一项,如果是,则初始化最后一个TCAM表项,键值中所有字段均初始化为0,掩码为0,数据中的所有字段均赋值为0,表示该表项为TCAM最后一个表项;否则,将键值中表项满标志清0,掩码置1,表示当前表项初始状态为空,键值中其余字段清0,掩码清0,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,初始化结束;
步骤S15之后还包括老化的步骤:判断老化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断老化表项索引值是否位于哈希表索引范围内,如果是,则老化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断老化表项索引是否为TCAM最后一项,如果是,则表示TCAM最后一项是一个匹配任意键值的表项,结束老化;否则,将键值中表项满标志清0,掩码置1,其余字段清0,掩码清0,将表项状态置为空,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,老化结束。
2.如权利要求1所述的基于哈希表和TCAM表的MAC地址硬件学习方法,其特征在于:所述哈希表存储在SRAM或者DRAM中。
3.如权利要求1所述的基于哈希表和TCAM表的MAC地址硬件学习方法,其特征在于:所述TCAM表项存储在TCAM存储器中。
4.一种基于哈希表和TCAM表的MAC地址硬件学习***,其特征在于,包括搜索单元、TCAM表项判断单元、哈希表判断单元、哈希表比较单元和哈希冲突处理单元,其中:
所述搜索单元,用于:以报文所属的虚拟转发实例号和源MAC地址计算哈希值,并以哈希值为索引搜索哈希表;组织搜索TCAM表项的键值:虚拟转发实例号为报文所属的虚拟转发实例号;MAC地址为报文的源MAC地址;表项满标志置1,表示在已经学习到的TCAM表项中进行搜索;
所述TCAM表项判断单元,用于:判断TCAM表项数据中有效标志是否置位,如果置位,则比较TCAM表项数据中虚拟交换端口是否等于报文接收虚拟交换端口,如果是,则不更新表项;否则,更新当前TCAM表项数据中虚拟交换端口为报文实际接收虚拟交换端口;如果没有置位,产生哈希表判断触发信号,并发送到哈希表判断单元;
所述哈希表判断单元,用于:收到哈希表判断触发信号时,判断哈希表中数据有效标志是否置位,如果没有置位,将报文源MAC地址、报文所属虚拟转发实例号和报文接收的虚拟交换端口存储到当前哈希表项中,表项有效标志置1;如果置位,产生比较触发信号,并发送到哈希表比较单元;
所述哈希表比较单元,用于:收到比较触发信号时,比较哈希表中虚拟转发实例号和MAC地址是否和报文所属的虚拟转发实例号及MAC地址相匹配,如果匹配,则表示当前地址已经在哈希表中学到过,比较当前哈希表中虚拟交换端口是否等于报文实际接收虚拟交换端口,如果相等,则结束学习;否则,更新当前哈希表项中的虚拟转发端口号为报文实际接收虚拟端口号,结束学习;如果不匹配,产生哈希冲突处理触发信号,并发送到哈希冲突处理单元;
所述哈希冲突处理单元,用于:收到哈希冲突处理触发信号时,组织搜索TCAM表项的键值以寻找空闲TCAM表项缓存冲突:键值中虚拟转发实例号为0,MAC地址为0,表项满标志为0,表示在空闲TCAM表项中进行搜索;再判断TCAM数据中有效标志是否置位,如果置位,表示找到第一个空闲表项,将MAC地址缓存到当前空闲TCAM表项中:键值的虚拟转发实例号填写为报文所属虚拟转发实例号,掩码置1,MAC地址填写为报文的源MAC地址,掩码置1,表项满标志置1,掩码置1,数据中虚拟交换端口填写为报文实际接收虚拟交换端口,结束学习;如果没有置位,表示TCAM存储器没有空闲表项,放弃学习;
还包括初始化单元,用于:判断初始化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断初始化表项索引值是否位于哈希表索引范围内,如果是,则初始化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断初始化表项索引是否为TCAM最后一项,如果是,则初始化最后一个TCAM表项,键值中所有字段均初始化为0,掩码为0,数据中的所有字段均赋值为0,表示该表项为TCAM最后一个表项;否则,将键值中表项满标志清0,掩码置1,表示当前表项初始状态为空,键值中其余字段清0,掩码清0,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,初始化结束;
还包括老化单元,用于:判断老化表项索引是否大于表项最大值,如果是,则返回异常;否则,判断老化表项索引值是否位于哈希表索引范围内,如果是,则老化哈希表,直接用初始化索引值定位哈希表项,并将表项内容全部清0;否则,判断老化表项索引是否为TCAM最后一项,如果是,则表示TCAM最后一项是一个匹配任意键值的表项,结束老化;否则,将键值中表项满标志清0,掩码置1,其余字段清0,掩码清0,将表项状态置为空,数据中表项有效标志置1,其余字段清0,表示该表项不是最后一个表项,老化结束。
5.如权利要求4所述的基于哈希表和TCAM表的MAC地址硬件学习***,其特征在于:所述哈希表存储在SRAM或者DRAM中。
6.如权利要求4所述的基于哈希表和TCAM表的MAC地址硬件学习***,其特征在于:所述TCAM表项存储在TCAM存储器中。
CN201310055657.3A 2013-02-21 2013-02-21 基于哈希表和tcam表的mac地址硬件学习方法及*** Active CN103117931B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201310055657.3A CN103117931B (zh) 2013-02-21 2013-02-21 基于哈希表和tcam表的mac地址硬件学习方法及***
PCT/CN2013/080000 WO2014127605A1 (zh) 2013-02-21 2013-07-24 基于哈希表和tcam表的mac地址硬件学习方法及***
MYPI2014703365A MY170382A (en) 2013-02-21 2013-07-24 Mac address hardware learning method and system based on hash table and tcam table
CL2015000917A CL2015000917A1 (es) 2013-02-21 2015-04-10 Método de aprendizaje de hardware de dirección mac, que comprende calcular clave hash en base a id de mensaje y mac origen, buscar clave en memoria ternaria (tcam), determinar si la bandera de datos tcam está establecida, comparar valores de puertos de conmutador virtual, actualizar el puerto del conmutador virtual tcam, determinar si la bandera de datos hash está establecida, almacenar la dirección mac de origen del mensaje, comparar id y dirección mac; sistema asociado

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310055657.3A CN103117931B (zh) 2013-02-21 2013-02-21 基于哈希表和tcam表的mac地址硬件学习方法及***

Publications (2)

Publication Number Publication Date
CN103117931A CN103117931A (zh) 2013-05-22
CN103117931B true CN103117931B (zh) 2015-07-01

Family

ID=48416209

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310055657.3A Active CN103117931B (zh) 2013-02-21 2013-02-21 基于哈希表和tcam表的mac地址硬件学习方法及***

Country Status (4)

Country Link
CN (1) CN103117931B (zh)
CL (1) CL2015000917A1 (zh)
MY (1) MY170382A (zh)
WO (1) WO2014127605A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103117931B (zh) * 2013-02-21 2015-07-01 烽火通信科技股份有限公司 基于哈希表和tcam表的mac地址硬件学习方法及***
CN104239337B (zh) * 2013-06-19 2019-03-26 中兴通讯股份有限公司 基于tcam的查表处理方法及装置
CN103678553A (zh) * 2013-12-06 2014-03-26 上海寰创通信科技股份有限公司 基于共享内存设计的无线终端数据库构建方法
CN103731355B (zh) * 2013-12-31 2017-01-25 迈普通信技术股份有限公司 避免mac地址学习时哈希冲突的方法及***
CN105812264B (zh) * 2016-03-15 2019-04-19 西安电子科技大学 多路并行的mac地址学习和地址查找的装置及方法
CN107770076B (zh) * 2016-08-23 2020-12-04 中兴通讯股份有限公司 一种哈希冲突的处理方法、装置及交换设备
CN107332774B (zh) * 2017-06-09 2019-12-03 烽火通信科技股份有限公司 一种vpls中基于软硬件协同进行mac地址学习的方法
CN108632148B (zh) * 2017-12-29 2020-06-16 西安电子科技大学 基于预读取方式的学习mac地址的装置及方法
CN108307001B (zh) * 2018-04-28 2021-07-27 深圳市风云实业有限公司 Mac地址老化方法、装置及电子设备
CN109582598B (zh) * 2018-12-13 2023-05-02 武汉中元华电软件有限公司 一种基于外部存储实现高效查找哈希表的预处理方法
CN112087389B (zh) * 2019-06-14 2023-01-24 深圳市中兴微电子技术有限公司 一种报文匹配查表方法、***、存储介质和终端
CN110674138B (zh) * 2019-09-23 2024-03-08 苏州雄立科技有限公司 一种报文搜索方法及装置
CN114268585B (zh) * 2019-11-07 2024-01-23 苏州盛科通信股份有限公司 基于tcam的三层路由转发的判断方法
CN112003792B (zh) * 2020-07-23 2022-04-15 烽火通信科技股份有限公司 一种软硬件协同的报文加速方法和装置
CN112118186B (zh) * 2020-08-28 2022-11-01 深圳市风云实业有限公司 一种交换芯片路由表项存储方法、转发方法及配置方法
CN112181309A (zh) * 2020-10-14 2021-01-05 上海德拓信息技术股份有限公司 一种海量对象存储的在线扩容方法
CN112328593B (zh) * 2020-10-21 2023-01-31 烽火通信科技股份有限公司 一种对地址学习表进行批量配置的方法、设备及***
CN112269784A (zh) * 2020-10-28 2021-01-26 中科驭数(北京)科技有限公司 一种基于硬件实现的哈希表结构以及***、查询和删除方法
CN112637072B (zh) * 2020-12-23 2022-08-02 北京时代民芯科技有限公司 一种用于交换芯片地址存储及查找的快速并行电路及方法
CN112866115B (zh) * 2020-12-31 2023-04-07 杭州迪普科技股份有限公司 一种实现透明串接的方法、装置、电子设备及存储介质
CN112667867B (zh) * 2020-12-31 2022-05-10 北京卓讯科信技术有限公司 一种基于tcam特征码的匹配冲突检查方法和设备
CN114764453A (zh) * 2021-01-14 2022-07-19 武汉斗鱼网络科技有限公司 一种数据处理方法、装置及电子设备
CN113489649B (zh) * 2021-06-29 2022-07-22 新华三信息安全技术有限公司 一种表项存储方法及装置
CN113709110B (zh) * 2021-07-27 2023-07-21 深圳市风云实业有限公司 一种软硬结合的入侵检测***及方法
CN113779320B (zh) * 2021-08-18 2024-02-27 北京计算机技术及应用研究所 一种表项存储地址冲突的解决方法
CN115733795A (zh) * 2021-08-24 2023-03-03 苏州盛科通信股份有限公司 一种报文的转发方法、网络转发设备及计算机存储介质
CN113726661B (zh) * 2021-08-27 2022-10-18 西安微电子技术研究所 一种高性能低功耗的路由哈希器及其控制方法
CN113765806B (zh) * 2021-09-02 2022-09-02 烽火通信科技股份有限公司 Mac地址学习方法、装置、设备及可读存储介质
CN113904987B (zh) * 2021-10-29 2022-11-15 西安微电子技术研究所 一种mac地址路由管理控制器、***及控制方法
CN114253979B (zh) * 2021-12-23 2023-10-03 北京百度网讯科技有限公司 一种报文处理方法、装置及电子设备
CN115065662A (zh) * 2022-06-13 2022-09-16 上海亿家芯集成电路设计有限公司 一种mac地址哈希冲突的处理方法及***
CN115297059B (zh) * 2022-07-18 2023-11-28 浙江大学 一种基于p4的传输层负载均衡***
CN117472838B (zh) * 2023-12-28 2024-03-15 苏州元脑智能科技有限公司 高速串行计算机扩展总线设备识别方法、装置及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101072178A (zh) * 2007-06-22 2007-11-14 中兴通讯股份有限公司 一种交换机路由表的管理方法
CN101247337A (zh) * 2008-02-18 2008-08-20 华为技术有限公司 一种报文转发的方法和设备
CN102880724A (zh) * 2012-10-23 2013-01-16 盛科网络(苏州)有限公司 处理哈希冲突的方法及***

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941559B2 (en) * 2002-04-23 2011-05-10 Tellabs Bedford, Inc. Media access control address translation for a fiber to the home system
CN1319325C (zh) * 2003-04-16 2007-05-30 华为技术有限公司 一种采用哈希链表查找路由表项的方法
CN100481820C (zh) * 2006-12-18 2009-04-22 杭州华三通信技术有限公司 Tcam路由表查找方法及tcam路由表查找装置
WO2011091581A1 (zh) * 2010-01-26 2011-08-04 华为技术有限公司 关键字存储、查找的方法及装置
CN101841473B (zh) * 2010-04-09 2011-12-28 北京星网锐捷网络技术有限公司 Mac地址表更新方法及装置
CN103117931B (zh) * 2013-02-21 2015-07-01 烽火通信科技股份有限公司 基于哈希表和tcam表的mac地址硬件学习方法及***

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101072178A (zh) * 2007-06-22 2007-11-14 中兴通讯股份有限公司 一种交换机路由表的管理方法
CN101247337A (zh) * 2008-02-18 2008-08-20 华为技术有限公司 一种报文转发的方法和设备
CN102880724A (zh) * 2012-10-23 2013-01-16 盛科网络(苏州)有限公司 处理哈希冲突的方法及***

Also Published As

Publication number Publication date
MY170382A (en) 2019-07-27
CL2015000917A1 (es) 2015-07-17
WO2014127605A1 (zh) 2014-08-28
CN103117931A (zh) 2013-05-22

Similar Documents

Publication Publication Date Title
CN103117931B (zh) 基于哈希表和tcam表的mac地址硬件学习方法及***
US11102120B2 (en) Storing keys with variable sizes in a multi-bank database
US10623311B2 (en) Technologies for distributed routing table lookup
US10608866B2 (en) Forwarding Ethernet packets
US9565138B2 (en) Rule-based network traffic interception and distribution scheme
US20150023351A1 (en) Method and apparatus for performing link aggregation
JP5518135B2 (ja) データセンター向けの拡張可能なマルチキャスト転送方法および装置
US10621080B2 (en) Pipelined hash table with reduced collisions
US9716592B1 (en) Traffic distribution over multiple paths in a network while maintaining flow affinity
CN113381931B (zh) 一种在vxlan网络中支持mlag双活接入的方法及装置
CN106341338B (zh) 一种报文的转发方法及装置
CN102857414A (zh) 一种转发表写入、报文转发方法及装置
CN101267331A (zh) 一种组播转发表查找方法和装置
CN109743414B (zh) 利用冗余连接提高地址翻译可用性的方法及计算机可读存储介质
US7403526B1 (en) Partitioning and filtering a search space of particular use for determining a longest prefix match thereon
CN106789859B (zh) 报文匹配方法及装置
CN109639579A (zh) 组播报文的处理方法及装置、存储介质、处理器
CN103118149A (zh) 同一租户内服务器间的通信控制方法及网络设备
CN102291472A (zh) 一种网络地址查找方法及装置
WO2016106506A1 (zh) 一种路由方法和设备
CN106453091B (zh) 路由器转发平面的等价路由管理方法和装置
EP3198808B1 (en) Local packet switching at a satellite device
US11146476B2 (en) MSDC scaling through on-demand path update
CN106878185B (zh) 一种报文ip地址匹配电路及方法
US11018978B1 (en) Configurable hash-based lookup in network devices

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant