专利名称:一种GEMPORT ID和MAC地址映射的方法和存储设备
专利类型:发明专利
专利申请号:CN202111570287.8
专利申请(专利权)人:福建星网智慧科技有限公司
权利人地址:福建省厦门市思明区软件园二期观日路56号1001单元
专利发明(设计)人:陈荣观,黄永,张高旺,罗海斌
专利摘要:本发明涉及通信设备领域,特别涉及一种GEMPORT ID和MAC地址映射的方法和存储设备。所述一种GEMPORT ID和MAC地址映射的方法,包括步骤:进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中;响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息。该方法中hash表可直接使用FPGA的片内RAM资源来实现,节省可编程逻辑资源的占用,并且不需要依赖具体IP,能够适配更广泛的芯片,同时多层hash表并行计算查表,以提升查表速率。
主权利要求:
1.一种GEMPORTID和MAC地址映射的方法,其特征在于,包括步骤:进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中;
响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息;所述进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中,具体还包括步骤:对不同MAC值多层hash进行并行计算hash值,并行读出多层hash对应的表项,当第一层表项目未冲突时,未冲突的MAC值对应的GEMPORTID存入至第一层的hash表中,当第一层表项目冲突时,从第一层往下顺延选择未冲突的表项存储MAC值对应的MAC映射表地址,并更新每个表项的有效标识和冲突标识;
其中映射表学习的过程在FPGA的片内RAM上完成,映射表查询指令的执行过程在FPGA的片内RAM上完成。
2.根据权利要求1所述的一种GEMPORTID和MAC地址映射的方法,其特征在于,所述“进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中”,具体还包括步骤:若存在所有hash层都存在冲突的MAC值,则将其存储至预设好的GEMPORT‑MAC拓展表项。
3.根据权利要求1所述的一种GEMPORTID和MAC地址映射的方法,其特征在于,所述“响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息”,具体还包括步骤:响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,当第一层表项目未冲突时,直接使用第一层hash表中存储的GEMPORTID,当第一层表项目冲突时,顺延逐层读出其它层hash表对应的MAC映射表,根据所述MAC映射表匹配MAC找到对应的GEMPORTID。
4.根据权利要求2所述的一种GEMPORTID和MAC地址映射的方法,其特征在于,所述“响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息”,具体还包括步骤:响应映射表查询指令,当多层hash表并行计算待查询的MAC地址对应的hash值时,所述GEMPORT‑MAC拓展表项并行进行MAC匹配查找。
5.根据权利要求1至4任一项所述的一种GEMPORTID和MAC地址映射的方法,其特征在于,所述映射表采用FIFO机制管理。
6.根据权利要求5所述的一种GEMPORTID和MAC地址映射的方法,其特征在于,所述“所述映射表采用FIFO机制管理”,具体还包括步骤:当学习到新的映射表项时,从FIFO取出一个地址值,用来索引MAC映射表,将新学到的MAC和GEMPORTID信息填入对应地址的MAC映射表项,并把FIFO取出地址值存储至hash表项中;
当MAC表老化时释放的地址存回FIFO。
7.根据权利要求1至6任一项所述的一种GEMPORTID和MAC地址映射的方法,其特征在于,所述“进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中”,具体还包括步骤:进行映射表学习,将不同的MAC对应的映射信息存储至四层hash表中;
第一层hash设有8192个表项,第二层hash设有2048个表项,第三层hash设有1024个表项,第四层hash设有512个表项。
8.根据权利要求1至7任一项所述的一种GEMPORTID和MAC地址映射的方法,其特征在于,所述映射信息包括但不限于:GEMPORTID、MAC映射表地址。
9.一种存储设备,其中存储有指令集,其特征在于,所述指令集用于执行:权利要求1至
8任一项所述的一种GEMPORTID和MAC地址映射的方法。 说明书 : 一种GEMPORTID和MAC地址映射的方法和存储设备技术领域[0001] 本发明涉及通信设备领域,特别涉及一种GEMPORTID和MAC地址映射的方法和存储设备。背景技术[0002] 在通信设备领域中,OLT的上行口连接着以太网,OLT的下行口连接着ONU,其中在XGPONOLTMAC层,以太网报文转发给ONU设备时需要转换为XGTC报文转格式,报文转换涉及到GEMPORTID与MAC映射表的学习及GEMPORTID查找;故此需要设计一个查找效率高、资源消耗小的机制来实现报文的高速转换转发。[0003] 现有的技术方案:一、mac‑gemport直接成对建表,把表项目均分成多份,并且通过类似穷举的方式根据MAC值去遍历表条目,直到找到匹配MAC的GEMPORTID,该方案只能使用可编程逻辑单元,逻辑单元消耗量过大且布线复杂;二、使用FPGA开发工具集成的bcamIP核,该方案存在ip查表延时较大,且不能普遍适用不同型号芯片问题。[0004] 故此针对现有方案逻辑资源消耗大布线复杂或查表延时不理想及芯片普遍适用问题亟需提出一种新的解决方案。发明内容[0005] 鉴于上述问题,本申请提供了一种GEMPORTID和MAC地址映射的方法,用以解决现有GEMPORTID和MAC地址映射方法逻辑资源消耗大布线复杂或查表延时不理想及芯片普遍适用的问题。具体技术方案如下:[0006] 一种GEMPORTID和MAC地址映射的方法,包括步骤:[0007] 进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中;[0008] 响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息。[0009] 进一步的,所述“进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中”,具体还包括步骤:[0010] 对不同MAC值多层hash进行并行计算hash值,并行读出多层hash对应的表项,当第一层表项目未冲突时,未冲突的MAC值对应的GEMPORTID存入至第一层的hash表中,当第一层表项目冲突时,从第一层往下顺延选择未冲突的表项存储MAC值对应的MAC映射表地址,并更新每个表项的有效标识和冲突标识。[0011] 进一步的,所述“进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中”,具体还包括步骤:[0012] 若存在所有hash层都存在冲突的MAC值,则将其存储至预设好的GEMPORT‑MAC拓展表项。[0013] 进一步的,所述“响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息”,具体还包括步骤:[0014] 响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,当第一层表项目未冲突时,直接使用第一层hash表中存储的GEMPORTID,当第一层表项目冲突时,顺延逐层读出其它层hash表对应的MAC映射表,根据所述MAC映射表匹配MAC找到对应的GEMPORTID。[0015] 进一步的,所述“响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息”,具体还包括步骤:[0016] 响应映射表查询指令,当多层hash表并行计算待查询的MAC地址对应的hash值时,所述GEMPORT‑MAC拓展表项并行进行MAC匹配查找。[0017] 进一步的,所述映射表采用FIFO机制管理。[0018] 进一步的,所述“所述映射表采用FIFO机制管理”,具体还包括步骤:[0019] 当学习到新的映射表项时,从FIFO取出一个地址值,用来索引MAC映射表,将新学到的MAC和GEMPORTID信息填入对应地址的MAC映射表项,并把FIFO取出地址值存储至hash表项中;[0020] 当MAC表老化时释放的地址存回FIFO。[0021] 进一步的,所述“进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中”,具体还包括步骤:[0022] 进行映射表学习,将不同的MAC对应的映射信息存储至四层hash表中;[0023] 第一层hash设有8192个表项,第二层hash设有2048个表项,第三层hash设有1024个表项,第四层hash设有512个表项[0024] 进一步的,所述映射信息包括但不限于:GEMPORTID、MAC映射表地址。[0025] 为解决上述技术问题,还提供了一种存储设备,具体技术方案如下:[0026] 一种存储设备,其中存储有指令集,所述指令集用于执行:上述所提及的一种GEMPORTID和MAC地址映射的方法的任意步骤。[0027] 本发明的有益效果是:一种GEMPORTID和MAC地址映射的方法,包括步骤:进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中;响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息。该方法中hash表可直接使用FPGA的片内RAM资源来实现,节省可编程逻辑资源的占用,并且不需要依赖具体IP,能够适配更广泛的芯片,同时多层hash表并行计算查表,以提升查表速率。[0028] 进一步的,使用FIFO机制管理MAC‑GEMPORT映射表的存储模式,除了第一层hash表用于存储GEMPORTID外,其它层hash表中只需存储映射表的地址,以此减少hash表对RAM的消耗。[0029] 上述发明内容相关记载仅是本申请技术方案的概述,为了让本领域普通技术人员能够更清楚地了解本申请的技术方案,进而可以依据说明书的文字及附图记载的内容予以实施,并且为了让本申请的上述目的及其它目的、特征和优点能够更易于理解,以下结合本申请的具体实施方式及附图进行说明。附图说明[0030] 附图仅用于示出本申请具体实施方式以及其他相关内容的原理、实现方式、应用、特点以及效果等,并不能认为是对本申请的限制。[0031] 在说明书附图中:[0032] 图1为具体实施方式所述一种GEMPORTID和MAC地址映射的方法的流程图一;[0033] 图2为具体实施方式所述一种GEMPORTID和MAC地址映射的方法的流程图二;[0034] 图3为具体实施方式所述一种GEMPORTID和MAC地址映射的方法的流程图三;[0035] 图4为具体实施方式所述一种GEMPORTID和MAC地址映射的方法的表项示意图;[0036] 图5为具体实施方式所述一种存储设备的模块示意图。[0037] 上述各附图中涉及的附图标记说明如下:[0038] 500、存储设备。具体实施方式[0039] 为详细说明本申请可能的应用场景,技术原理,可实施的具体方案,能实现目的与效果等,以下结合所列举的具体实施例并配合附图详予说明。本文所记载的实施例仅用于更加清楚地说明本申请的技术方案,因此只作为示例,而不能以此来限制本申请的保护范围。[0040] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中各个位置出现的“实施例”一词并不一定指代相同的实施例,亦不特别限定其与其它实施例之间的独立性或关联性。原则上,在本申请中,只要不存在技术矛盾或冲突,各实施例中所提到的各项技术特征均可以以任意方式进行组合,以形成相应的可实施的技术方案。[0041] 除非另有定义,本文所使用的技术术语的含义与本申请所属技术领域的技术人员通常理解的含义相同;本文中对相关术语的使用只是为了描述具体的实施例,而不是旨在限制本申请。[0042] 在本申请的描述中,用语“和/或”是一种用于描述对象之间逻辑关系的表述,表示可以存在三种关系,例如A和/或B,表示:存在A,存在B,以及同时存在A和B这三种情况。另外,本文中字符“/”一般表示前后关联对象是一种“或”的逻辑关系。[0043] 在本申请中,诸如“第一”和“第二”之类的用语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何实际的数量、主次或顺序等关系。[0044] 在没有更多限制的情况下,在本申请中,语句中所使用的“包括”、“包含”、“具有”或者其他类似的表述,意在涵盖非排他性的包含,这些表述并不排除在包括所述要素的过程、方法或者产品中还可以存在另外的要素,从而使得包括一系列要素的过程、方法或者产品中不仅可以包括那些限定的要素,而且还可以包括没有明确列出的其他要素,或者还包括为这种过程、方法或者产品所固有的要素。[0045] 与《审查指南》中的理解相同,在本申请中,“大于”、“小于”、“超过”等表述理解为不包括本数;“以上”、“以下”、“以内”等表述理解为包括本数。此外,在本申请实施例的描述中“多个”的含义是两个以上(包括两个),与之类似的与“多”相关的表述亦做此类理解,例如“多组”、“多次”等,除非另有明确具体的限定。[0046] 请参阅图1至图4,首先对本实施例中会涉及到的一些名词和技术做以下解释说明:[0047] 在PON(PassiveOpticalNetwork,无源光纤网络)中,OLT(OpticalLineTerminal,中文名为光线路终端)是用于连接光纤干线的终端设备。PON中使用光纤连接到OLT,然后OLT连接到ONU(OpticalNetworkUnit,中文名为光网络单元。最后由ONU提供数据、IPTV(即交互式网络电视)、语音等业务给终端的用户。[0048] GEMPORTID:标识gem帧的ID。[0049] MAC地址:MediaAccessControlAddress,直译为媒体存取控制位址,也称为局域网地址(LANAddress),MAC位址,以太网地址(EthernetAddress)或物理地址(PhysicalAddress),它是一个用来确认网络设备位置的位址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层则负责MAC位址。MAC地址用于在网络中唯一标识一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并且会有一个唯一的MAC地址。[0050] Hash表:也叫哈希表,是根据关键码值(Keyvalue)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。[0051] 冲突:在hash表中,对不同的关键字可能得到同一散列表地址,即k1≠k2,而f(k1)=f(k2),这种现象称为冲突。[0052] 以下对本申请的核心技术思想展开说明:[0053] 本申请的核心技术思想在于:OLT上行口连接着以太网,以太网中数据帧的格式与其下行口连接的ONU完全不同,故此存在着报文格式需要转换的需求,而现有的技术如背景技术中提及的,其使用的是编程逻辑单元,就使得逻辑单元的消耗量很大且布线很复杂,及使用FPGA开发工具集成的bcamIP核,该方案存在IP查表延时较大,且不能普遍适用不同型号芯片问题。故此申请人就在想是否有办法可以不去消耗逻辑单元,而是直接使用FPGA的48片内RAM资源来实现。因考虑到以太网的MAC地址大小为48bit,若对其存放需要2 的存储空间,然而当转换到OLT的PON口时,其只有12bit的空间可用于存储{该设计的OLT的PON连接的ONU个数是256台,每台ONU目前配置最多可以分配8个MAC地址,所以,有2048(12bits)个GEMPORTID与MAC地址的映射对,MAC是hash表的key(48bits)},故此需要一个方法将48bit的数据压缩至12bit,申请人采取的是hash计算法,然而当用同一个参数对48bit的数据进行hash计算时会存在部分计算结果是一致的,即存在不同mac通过hash计算得到相同的hash值的可能,这种可能称之为存在冲突,故此本申请中采取的是多层hash表的计算,每层hash表的初始参数是不同的(每层表使用相同的hash算法,算法的初始参数不同,这样相同的mac在不同层的hash表计算出的hash值将是不同的),第一层存在的冲突项,则将其放至第二层计算,第一层未冲突的则直接将其对应的GEMPORTID存储至hash表中,第二层若仍然存在冲突的冲突项,则将其放至第三层计算,除了第一层为冲突的是直接将其对应的GEMPORTID存储至hash表外,其它层存的是在第一层有冲突时MAC‑GEMPORT隐射表地址。而当需要进行GEMPORTID查询时,直接四层hash并行计算查找即可,其中后三层查表需要结合通过MAC去匹配查找GEMPORTID。具体的实施方式和有益效果以下会进一步展开说明:[0054] 如图1所示,一种GEMPORTID和MAC地址映射的方法可应用在一种存储设备上,所述存储设备包括但不限于:个人计算机、服务器、通用计算机、专用计算机、网络设备、嵌入式设备、可编程设备、智能移动终端等。[0055] 具体实施方式如下:[0056] 步骤S101:进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中。[0057] 步骤S102:响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息。[0058] 在实际应用中,经过多次试验,在本实施例中,优选使用四层hash,且第一层hash设有8192个表项(桶)映射2048个key的hash_id,第二层hash设有2048个表项映射与第一层发生冲突的表项,第三层hash设有1024个表项映射与第一、二层都发生冲突的表项目,第四层hash设有512个表项映射与第一、二、三层都发生冲突的表项目。[0059] 其中各层的冲突概率计算分析如下:[0060] 第1层hash[0061][0062] 第2层hash[0063][0064] 第3层hash[0065][0066] 第4层hash[0067][0068] 其中hash表资源的设计规划如下:[0069] 第1层Hash表的表项字段规划[0070]有效标识 冲突 GEMPORTID1bits 1bits 16bits[0071] 有效标识:标识表项有效;[0072] 冲突:标识与底层hash表存在冲突的表项;[0073] GEMPORTID:mac映射的GEMPORTid;[0074] 2、3、4层Hash表的表项字段规划[0075] 预留 表有效标识 冲突 Mac映射表地址5bits 1bits 1bits 9bits[0076] 有效标识:标识表项有效用;[0077] 冲突:标识与底层hash表存在冲突的表项;[0078] Mac映射表地址:mac映射表的id。[0079] 其中映射信息包括但不限于:GEMPORTID、MAC映射表地址。[0080] Mac映射表的表项字段规划如下:[0081]预留 Mac地址 GemportID8bits 48bits 16bits[0082] 如图2所示,步骤S101的具体实施如下:[0083] 步骤S201:对不同MAC值多层hash进行并行计算hash值,并行读出多层hash对应的表项。[0084] 步骤S202:当第一层表项目未冲突时,未冲突的MAC值对应的GEMPORTID存入至第一层的hash表中。[0085] 步骤S203:当第一层表项目冲突时,从第一层往下顺延选择未冲突的表项存储MAC值对应的MAC映射表地址,并更新每个表项的有效标识和冲突标识。[0086] 如:以上四层hash表,通过概率统计计算得知,第一层hash可以命中约1800个ID,余下的冲突项通过后面3层hash存储;后面三层的hash不能直接存储GEMPORTID,需要把key值(MAC信息)也存下来,有冲突的表项通过对比key值来查找具体表项目;2048‑1800=248,需要存储key信息的表项约248个,这里保险分配512个。除了第一层hash表用于存储GEMPORTID外,其它层hash表中只需存储映射表的地址,以此减少hash表对RAM的消耗。[0087] 在一些实施例中,因考虑到可能通过多层hash表计算其仍然可能存在冲突的冲突项,故此所述“进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中”,具体还包括步骤:若存在所有hash层都存在冲突的MAC值,则将其存储至预设好的GEMPORT‑MAC拓展表项,如图4所示。[0088] 当响应映射表查询指令时,多层hash表并行计算待查询的MAC地址对应的hash值,同时GEMPORT‑MAC拓展表项会并行进行MAC匹配查找,以保证最优的查找速度。同样多层hash表并行计算也是为了提升查表速率。[0089] 在本实施例中,MAC映射表采用FIFO机制管理。其具体可为:[0090] 使用一个深度512宽度9bits的FIFO存储地址0~512,学习到新的MAC映射表项时,从FIFO取出一个地址值,用来索引MAC映射表,把新学到的MAC和GEMPORTID信息填入对应地址的MAC映射表项,并把FIFO取出地址值存到hash表项中;MAC表老化时释放的地址存回FIFO。老化释放地址空间给新的MAC映射表使用。[0091] 参阅图3,映射表的查找流程如下:[0092] 步骤S301:响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值。[0093] 步骤S302:当第一层表项目未冲突时,直接使用第一层hash表中存储的GEMPORTID。[0094] 步骤S303:当第一层表项目冲突时,顺延逐层读出其它层hash表对应的MAC映射表,根据所述MAC映射表匹配MAC找到对应的GEMPORTID。[0095] 上述过程中,无论是hash表、MAC映射表还是FIFO其都可以使用FPGA的片内RAM资源来实现,节省可编程逻辑资源的占用。并且无需依赖具体IP,能够适配更广泛的芯片。[0096] 请参阅图4至图5,在本实施方式中,一种存储设备500的具体实施方式如下:[0097] 一种存储设备500,其中存储有指令集,所述指令集用于执行:进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中;[0098] 响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值,根据所述hash值在hash表中查找对应的映射信息。[0099] 在实际应用中,经过多次试验,在本实施例中,优选使用四层hash,且第一层hash设有8192个表项(桶)映射2048个key的hash_id,第二层hash设有2048个表项映射与第一层发生冲突的表项,第三层hash设有1024个表项映射与第一、二层都发生冲突的表项目,第四层hash设有512个表项映射与第一、二、三层都发生冲突的表项目。[0100] 其中各层的冲突概率计算分析如下:[0101] 第1层hash[0102][0103] 第2层hash[0104][0105] 第3层hash[0106][0107] 第4层hash[0108][0109] 其中hash表资源的设计规划如下:[0110] 第1层Hash表的表项字段规划[0111]有效标识 冲突 GEMPORTID1bits 1bits 16bits[0112] 有效标识:标识表项有效;[0113] 冲突:标识与底层hash表存在冲突的表项;[0114] GEMPORTID:mac映射的GEMPORTid;[0115] 2、3、4层Hash表的表项字段规划[0116]预留 表有效标识 冲突 Mac映射表地址5bits 1bits 1bits 9bits[0117] 有效标识:标识表项有效用;[0118] 冲突:标识与底层hash表存在冲突的表项;[0119] Mac映射表地址:mac映射表的id。[0120] 其中映射信息包括但不限于:GEMPORTID、MAC映射表地址。[0121] Mac映射表的表项字段规划如下:[0122]预留 Mac地址 GemportID8bits 48bits 16bits[0123] 进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中的具体实施如下:[0124] 对不同MAC值多层hash进行并行计算hash值,并行读出多层hash对应的表项。[0125] 当第一层表项目未冲突时,未冲突的MAC值对应的GEMPORTID存入至第一层的hash表中。[0126] 当第一层表项目冲突时,从第一层往下顺延选择未冲突的表项存储MAC值对应MAC映射表地址,并更新每个表项的有效标识和冲突标识。[0127] 如:以上四层hash表,通过概率统计计算得知,第一层hash可以命中约1800个ID,余下的冲突项通过后面3层hash存储;后面三层的hash不能直接存储GEMPORTID,需要把key值(MAC信息)也存下来,有冲突的表项通过对比key值来查找具体表项目;2048‑1800=248,需要存储key信息的表项约248个,这里保险分配512个。除了第一层hash表用于存储GEMPORTID外,其它层hash表中只需存储映射表的地址,以此减少hash表对RAM的消耗。[0128] 在一些实施例中,因考虑到可能通过多层hash表计算其仍然可能存在冲突,故此进行映射表学习,将不同的MAC对应的映射信息存储至多层hash表中,具体还包括步骤:若存在所有hash层都存在冲突的MAC值,则将其存储至预设好的GEMPORT‑MAC拓展表项,如图4所示。[0129] 当响应映射表查询指令时,多层hash表并行计算待查询的MAC地址对应的hash值,同时GEMPORT‑MAC拓展表项会并行进行MAC匹配查找,以保证最优的查找速度。同样多层hash表并行计算也是为了提升查表速率。[0130] 在本实施例中,MAC映射表采用FIFO机制管理。其具体可为:[0131] 使用一个深度512宽度9bits的FIFO存储地址0~512,学习到新的MAC映射表项时,从FIFO取出一个地址值,用来索引MAC映射表,把新学到的MAC和GEMPORTID信息填入对应地址的MAC映射表项,并把FIFO取出地址值存到hash表项中;MAC表老化时释放的地址存回FIFO。老化释放地址空间给新的MAC映射表使用。[0132] 映射表的查找流程如下:[0133] 响应映射表查询指令,多层hash表并行计算待查询的MAC地址对应的hash值。[0134] 当第一层表项目未冲突时,直接使用第一层hash表中存储的GEMPORTID。[0135] 当第一层表项目冲突时,顺延逐层读出其它层hash表对应的MAC映射表,根据所述MAC映射表匹配MAC找到对应的GEMPORTID。[0136] 上述存储设备500指令运行过程中,无论是hash表、MAC映射表还是FIFO其都可以使用FPGA的片内RAM资源来实现,节省可编程逻辑资源的占用。并且无需依赖具体IP,能够适配更广泛的芯片。[0137] 最后需要说明的是,尽管在本申请的说明书文字及附图中已经对上述各实施例进行了描述,但并不能因此限制本申请的专利保护范围。凡是基于本申请的实质理念,利用本申请说明书文字及附图记载的内容所作的等效结构或等效流程替换或修改产生的技术方案,以及直接或间接地将以上实施例的技术方案实施于其他相关的技术领域等,均包括在本申请的专利保护范围之内。
专利地区:福建
专利申请日期:2021-12-21
专利公开日期:2024-06-18
专利公告号:CN114422478B