CN112637072B - 一种用于交换芯片地址存储及查找的快速并行电路及方法 - Google Patents
一种用于交换芯片地址存储及查找的快速并行电路及方法 Download PDFInfo
- Publication number
- CN112637072B CN112637072B CN202011539273.5A CN202011539273A CN112637072B CN 112637072 B CN112637072 B CN 112637072B CN 202011539273 A CN202011539273 A CN 202011539273A CN 112637072 B CN112637072 B CN 112637072B
- Authority
- CN
- China
- Prior art keywords
- mac address
- address
- module
- hash
- dpv
- 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
Images
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/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- 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
- H04L45/745—Address table lookup; Address filtering
- H04L45/7453—Address table lookup; Address filtering using hashing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Small-Scale Networks (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种用于交换芯片地址存储及查找的快速并行电路及方法,该电路包括MAC地址获取模块、DPV获取模块、HASH模块、SRAM存储模块和地址比较模块。本发明将MAC地址分为多组进行并行处理,以尽量少的硬件资源实现了高效能的二层交换地址表存储查找功能。本发明还设计了一种硬件电路由异或门和非门构成的11位并行快速Hash算法。该算法可以并行地将输入信号帧的物理MAC地址转换为11位的地址表查询地址,为减少哈希冲突且提高地址存储容量,本发明使用多个SRAM用于存储MAC地址,从而可快速准确地查询≥8192存储深度的地址表。采用该地址表查询算法的二层交换芯片可以实现线速交换,从而有效提高了所实现网络设备的性能。
Description
技术领域
本发明属于有线通信技术领域,特别涉及一种用于交换芯片地址存储及查找的快速并行电路。
背景技术
在计算机网络中,数据链路层完成节点到节点的通信,二层以太网交换芯片属于数据链路层设备。MAC(Media Access Control)地址是在网络通信用来识别主机的标识。交换芯片的缓存中有一个MAC地址表,需要转发数据时,交换芯片会在地址表查询是否有与目的MAC地址对应的表项,如果有,交换芯片立即将数据报文往该表项中的转发端口发送;如果没有,交换芯片则会将数据报文以广播的形式发送到除了接收端口外的所有端口,尽最大能力保证目的主机接收到数据报文,即泛洪。
因此,对于以太网交换芯片来说,主要工作是根据收到数据帧中的目的MAC(MediaAccess Control)地址,对MAC地址表进行查找,把数据帧转发到相应的端口。交换芯片地址表的构建和维护决定了数据转发的方向和效率,MAC地址表的查表效率直接影响交换芯片的性能。在MAC地址的学习和查找中,地址表的结构和实现方法是问题的关键,设计地址表需要考虑以下几个基本因素:(1)查找速度。查找速度必须足够快以保证线速的转发,而线速转发是二层交换设备必须做到的。(2)一定的容量。目前的交换芯片地址表从4K-64K不等。(3)学习速度。学习速度没有强制的要求,但作为衡量设备性能的指标之一,能达到线速是最理想的。传统的MAC地址表处理机制主要采用软件的方式实现。随着以太网链路接口的速率从1Gb/s发展到10Gb/s及以上,基于软件的算法在速度上受到串行计算机系统的制约。
MAC地址表存储查找多基于HASH算法。HASH算法已被广泛应用于网络设备的地址表存储查找,但不同HASH算法在HASH冲突与实现复杂度方面存在差异,因此选择一个合适的HASH算法可以有效地降低交换芯片的实现复杂度,并减少交换芯片工作过程中的Hash冲突。许多不同的Hash算法提出并得到应用,这些算法或者注重工作速度或者注重消耗的逻辑资源,但其中多数算法仅仅是理论上的研究,难以采用硬件来实现。
发明内容
本发明的目的在于克服上述缺陷,提供一种用于交换芯片地址存储及查找的快速并行电路,将MAC地址分为多路进行并行处理,以尽量少的硬件资源实现高效能的二层交换地址表存储查找功能;本发明还提供了一种用于交换芯片地址存储及查找的方法,采用该地址表查询算法的二层交换芯片实现了线速交换,从而有效提高了所实现网络设备的性能。
为实现上述发明目的,本发明提供如下技术方案:
一种用于交换芯片地址存储及查找的快速并行电路,包括MAC地址获取模块、DPV获取模块、HASH模块、SRAM存储模块和地址比较模块;
MAC地址获取模块:从数据帧中读取源MAC地址或从全局寄存器中读出通过CPU配置的MAC地址,并输出至HASH模块和SRAM存储模块;
从数据帧中读取目的MAC地址,并输出至HASH模块和地址比较模块;
所述MAC地址获取模块≥3个,将MAC地址分成多路数据并行处理;
DPV获取模块:将源MAC地址或CPU配置MAC的交换端口记录为DPV向量,并输出至SRAM存储模块;
HASH模块:接收由MAC地址获取模块输入的源MAC地址或CPU配置MAC地址,进行HASH运算后,得到指示源MAC地址或CPU配置MAC地址在SRAM存储模块中存储位置的HASH映射地址,并输出至SRAM存储模块;接收由MAC地址获取模块输入的目的MAC地址,进行HASH运算后,得到指示目的MAC地址在SRAM存储模块中的存储位置的HASH映射地址,并输出至SRAM存储模块;
SRAM存储模块:接收由MAC地址获取模块输入的源MAC地址或CPU配置MAC地址,DPV获取模块输入的相应的DPV向量,和HASH模块输入的相应的HASH映射地址,并按照所述HASH映射地址,将源MAC地址或CPU配置MAC地址、DPV向量,以及条目状态共同存储为地址翻译单元(ATU)条目;所述条目状态指示MAC地址老化时间;
接收HASH模块输入的目的MAC地址对应的HASH映射地址,并读取所述HASH映射地址指示的存储位置中存储的ATU条目MAC地址,将ATU条目MAC地址输出至地址比较模块;
接收地址比较模块输入的比较结果信号,根据比较结果信号读出该ATU条目MAC地址对应的DPV向量,进而根据该DPV向量得到对应发送端口,或进行泛洪。
所述SRAM存储模块为≥4个单端口同步SRAM,分别存储HASH运算后所得HASH映射地址相同的MAC地址;
地址比较模块:接收MAC地址获取模块输入的目的MAC地址,以及SRAM存储模块输入的ATU条目MAC地址后,将ATU条目MAC地址与目的MAC地址进行比较,将比较结果信号输出至SRAM存储模块。
进一步的,MAC地址经过HASH运算后所得HASH映射地址为11bit。
进一步的,上述单端口同步SRAM的存储宽度与ATU条目一致,存储深度为2048。
进一步的,上述HASH模块由异或门和非门组成。
进一步的,上述ATU条目包括48bit MAC地址,3bit条目状态和m个bit的DPV向量,其中m等于交换芯片的端口数。
一种用于交换芯片地址存储及查找的方法,采用上述一种用于交换芯片地址存储及查找的并行电路实现,具体步骤为:
(1)通过n个MAC地址获取模块,获取源MAC地址或CPU配置MAC地址,每个MAC地址获取模块读取所述MAC地址的1/n,并输出至HASH模块及SRAM存储模块;同时,DPV获取模块将所述MAC地址对应的交换端口记录为DPV向量,并输出至SRAM存储模块;n≥3;
(2)HASH模块接收源MAC地址或CPU配置MAC地址后进行HASH运算,得到对应的HASH映射地址,并输出至SRAM存储模块;
(3)SRAM存储模块将源MAC地址或CPU配置MAC地址及对应的DPV向量,结合条目状态,以ATU条目的形式存储在步骤(2)输入的HASH映射地址中;所述条目状态指示MAC地址老化时间;
(4)通过n个MAC地址获取模块,同时从数据帧中提取目的MAC地址,每个MAC地址获取模块提取目的MAC地址的1/n,并输出至HASH模块及地址比较模块;
(5)HASH模块进行HASH运算后得到目的MAC地址对应的HASH映射地址,后将HASH映射地址输出至SRAM存储模块;
(6)SRAM存储模块按照目的MAC地址对应的HASH映射地址,读取相应存储位置中的ATU条目MAC地址,将ATU条目MAC地址输出至地址比较模块;
(7)地址比较模块接将ATU条目MAC地址与目的MAC地址进行比较,如匹配则读出该ATU条目MAC地址对应的DPV向量,根据该DPV向量得到对应发送端口;如不匹配则进行泛洪。
进一步的,上述步骤(2)和步骤(5)中的HASH运算中,首先将输入的MAC地址分为若干部分,经过异或门和非门后生成中间信号,再经过异或门后得到最终结果。
进一步的,上述源MAC地址对应的条目状态指示≥7种MAC地址老化时间等级,所述CPU配置的MAC地址条目状态为定值,所述老化时间等级反应条目从ATU中清除的剩余时间。
进一步的,上述步骤(2)中,源MAC地址或CPU配置MAC地址存储的方法为:将所述MAC地址和对应DPV存储到HASH映射地址指示的第一个且不空闲的SRAM存储模块的对应地址中;若此HASH映射地址指示的所有SRAM存储模块对应地址都不空闲,则将所述MAC地址和对应DPV存储到老化时间等级最低的ATU条目的SRAM存储模块的对应地址中;如老化时间相同,则将所述MAC地址和对应DPV存储到第一个SRAM存储模块的非静态ATU条目中。
进一步的,还包括CPU配置MAC地址的静态学习过程:通过读取全局寄存器中配置好的MAC地址,将MAC地址存入SRAM存储模块中。
本发明与现有技术相比具有如下有益效果:
(1)本发明采用MAC地址的并行处理结构,将MAC地址分为多组进行并行处理,提高了地址处理速率,有利于实现交换芯片的低功耗设计。
(2)本发明设计了一种紧凑且易于实现的由异或门和非门构成的11位并行HASH算法,该算法可以并行地将接收数据帧的MAC地址转换为11位的地址表查询地址,再利用多个SRAM存储模块的设计,从而可快速准确地查询≥8192存储深度的地址表。采用该地址表查询算法的二层交换芯片实现了线速交换。极大地减少了二层以太网交换芯片地址表的尺寸并提高地址表的查找速度。
(3)本发明为了解决HASH冲突问题,在设计上采用了多块容量为2K的同步SRAM存储模块,这种方法既缓解了因碰撞造成地址丢失的压力,又在成本与性能之间取得一定的平衡。
(4)本发明在ATU(Address Translation Unit)条目的设计上对地址老化时间进行了等级划分,ATU(Address Translation Unit)中的条目状态值(EntryState)指示了地址老化时间等级,新增条目的条目状态值为0x7,被清除的或无效的条目状态值为0x0。值0x6到0x1指示了单播MAC地址的老化时间等级,0x1为最老的。这个策略使得ATU每个条目有7种年龄状态使得ATU条目中地址替代过程更精确。
(5)本发明不仅考虑了端口地址的自动学习,还考虑到了通过CPU配置的地址的静态学习,对MAC地址的获取更灵活。
附图说明
图1为本发明用于交换芯片地址存储及查找的快速并行电路框图;
图2为本发明ATU条目存储结构图;
图3为本发明HASH算法硬件电路图。
具体实施方式
下面通过对本发明进行详细说明,本发明的特点和优点将随着这些说明而变得更为清楚、明确。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
本发明设计了一种用于交换芯片地址存储及查找的快速并行电路,将MAC地址分为多路进行并行处理,以尽量少的硬件资源实现高效能的二层交换地址表存储查找功能。本发明还设计了一种硬件电路实现的快速并行HASH算法,该算法可以并行地将输入数据帧的MAC地址转换为11位的地址表查询地址,再通过采用多个SRAM的设计,从而可快速准确地查询8192存储深度的地址表。采用该地址表查询算法的二层交换芯片实现了线速交换,从而有效提高了所实现网络设备的性能。
本发明一种用于交换芯片地址存储及查找的快速并行电路,包括MAC地址获取模块、DPV获取模块、HASH模块、SRAM存储模块和地址比较模块;
MAC地址获取模块:从数据帧中读取源MAC地址或从全局寄存器中读出通过CPU配置的MAC地址,并输出至HASH模块和SRAM存储模块;
从数据帧中读取目的MAC地址,并输出至HASH模块和地址比较模块;
所述MAC地址获取模块≥3个,将MAC地址分成多路数据并行处理,提高了交换芯片地址处理速度;
DPV获取模块:将源MAC地址或CPU配置MAC的交换端口记录为DPV向量,并输出至SRAM存储模块;各端口收到数据帧后,在提取MAC的地址的同时,将接收数据帧进入的交换端口记录在各端口的DPV寄存器中,从端口DPV寄存器中可读出数据帧中的源MAC地址和目的MAC地址所对应的DPV向量。此外DPV获取模块还会读取全局寄存器中通过CPU配置的MAC所对应的DPV向量;
HASH模块:接收由MAC地址获取模块输入的源MAC地址或CPU配置MAC地址,进行HASH运算后,得到指示源MAC地址或CPU配置MAC地址在SRAM存储模块中存储位置的HASH映射地址,并输出至SRAM存储模块;接收由MAC地址获取模块输入的目的MAC地址,进行HASH运算后,得到指示目的MAC地址在SRAM存储模块中的存储位置的HASH映射地址,并输出至SRAM存储模块;
SRAM存储模块:接收由MAC地址获取模块输入的源MAC地址或CPU配置MAC地址,DPV获取模块输入的DPV向量,和HASH模块输入的相应的HASH映射地址,并按照HASH映射地址,将源MAC地址或CPU配置MAC地址、DPV向量,以及条目状态共同存储为ATU条目;所述条目状态指示MAC地址老化时间;
接收HASH模块输入的目的MAC地址对应的HASH映射地址,并读取所述HASH映射地址指示的存储位置中存储的ATU条目MAC地址,将ATU条目MAC地址输出至地址比较模块;
接收地址比较模块输入的比较结果信号,根据比较结果信号读出该ATU条目MAC地址对应的DPV向量,进而根据该DPV向量得到对应发送端口,或进行泛洪。
所述SRAM存储模块为≥4个单端口同步SRAM,分别存储Hash运算后所得HASH映射地址相同的MAC地址;SRAM存储模块的地址来自HASH模块输出的映射地址,多个SRAM存储模块的设计可以减少HASH冲突,一个HASH映射地址可对应多个MAC地址。根据HASH模块输出的映射地址,将MAC地址获取模块输出的源MAC地址、CPU配置的MAC地址和从DPV获取模块输出的DPV向量存到SRAM中。
地址比较模块:接收MAC地址获取模块输入的目的MAC地址,以及SRAM存储模块输入的ATU条目MAC地址后,将ATU条目MAC地址与目的MAC地址进行比较,将比较结果信号输出至SRAM存储模块。
进一步的,MAC地址经过HASH运算后所得HASH映射地址为11bit。
进一步的,上述单端口同步SRAM的存储宽度与ATU条目一致,存储深度为2048。
进一步的,上述HASH模块由异或门和非门组成,硬件实现简单,计算速度快。
一种用于交换芯片地址存储及查找的方法,采用上述一种用于交换芯片地址存储及查找的并行电路实现,具体步骤为:
(1)通过n个MAC地址获取模块,获取源MAC地址或CPU配置MAC地址,每个MAC地址获取模块读取所述MAC地址的1/n,并输出至HASH模块及SRAM存储模块;同时,DPV获取模块将所述MAC地址对应的交换端口记录为DPV向量,并输出至SRAM存储模块;n≥3;即MAC地址获取模块的数据来源有两种,一种来自从各端口接收数据帧中提取的源MAC地址和目的MAC地址,另一种来自从全局寄存器中读出的通过CPU配置的MAC地址。
(2)HASH模块接收源MAC地址或CPU配置MAC地址后进行HASH运算,得到对应的HASH映射地址,并输出至SRAM存储模块;
(3)SRAM存储模块将源MAC地址或CPU配置MAC地址及对应的DPV向量,结合条目状态,以ATU条目的形式存储在步骤(2)输入的HASH映射地址中;所述条目状态指示MAC地址老化时间;
(4)通过n个MAC地址获取模块,同时从数据帧中提取目的MAC地址,每个MAC地址获取模块提取目的MAC地址的1/n,并输出至HASH模块及地址比较模块;
(5)HASH模块进行HASH运算后得到目的MAC地址对应的HASH映射地址,后将HASH映射地址输出至SRAM存储模块;
(6)SRAM存储模块按照目的MAC地址对应的HASH映射地址,读取相应存储位置中的ATU条目MAC地址,将ATU条目MAC地址输出至地址比较模块;
(7)地址比较模块接将ATU条目MAC地址与目的MAC地址进行比较,如匹配则读出该ATU条目MAC地址对应的DPV向量,根据该DPV向量得到对应发送端口;如不匹配则进行泛洪。
进一步的,上述步骤(2)和步骤(5)中的HASH运算中,首先将输入的MAC地址分为若干部分,经过异或门和非门后生成中间信号,再经过异或门后得到最终结果。
进一步的,上述源MAC地址对应的条目状态指示≥7种MAC地址老化时间等级,所述CPU配置的MAC地址条目状态为定值,所述老化时间等级反应条目从ATU中清除的剩余时间。
进一步的,上述步骤(2)中,源MAC地址或CPU配置MAC地址存储的方法为:将源MAC地址或CPU配置MAC地址和对应DPV存储到HASH映射地址指示的第一个且不空闲的SRAM存储模块的对应地址中;若此HASH映射地址指示的所有SRAM存储模块对应地址都不空闲,则将所述源MAC地址或CPU配置MAC地址和对应DPV存储到老化时间等级最低的ATU条目的SRAM存储模块的对应地址中;如老化时间相同,则将所述源MAC地址或CPU配置MAC地址和对应DPV存储到第一个SRAM存储模块的非静态ATU条目中。
上述一种用于交换芯片地址存储及查找的方法,还包括自学习过程,源MAC地址的自学习过程为:在SRAM存储模块中存储新的源MAC地址和DPV向量,并更新条目状态,或更新已有源MAC地址的DPV向量和条目状态;CPU配置MAC地址的静态学习过程为通过读取全局寄存器中配置好的MAC地址,将MAC地址存入SRAM存储模块中。即MAC地址获取模块的数据来源有两种,一个来自交换端口接收到的数据帧,当输入帧的源地址不能在ATU条目中找到时,ATU条目进入自学习模式,并将新的MAC地址和DPV存储到ATU并刷新它的老化时间(将条目状态Entry State设置为7)。如果MAC地址已经在数据库中了,则DPV向量和条目状态EntryState被更新;一个来自CPU通过寄存器直接配置MAC地址,通过读取寄存器中配置好的MAC地址,将MAC地址写入ATU条目中。
综上,该电路对地址表处理主要包含MAC地址存储过程和MAC地址查找过程:
MAC地址存储过程:
交换芯片接收到数据帧后,MAC地址获取模块先将各端口的目的MAC地址和源MAC地址从数据帧中提取出来,同时将数据帧接收端口记录在DPV寄存器中。然后将提取的MAC地址与对应的DPV向量一起写入SRAM存储模块中。对于CPU配置的MAC地址和对应的DPV向量也要写入SRAM存储模块中。当增加一个源MAC地址或CPU配置的MAC地址到SRAM时,这个MAC地址先经过HASH运算,然后将MAC地址和对应的DPV向量存储到哈希映射地址的第一个SRAM存储模块对应地址中。如第一个SRAM存储模块对应的地址不空闲,则将MAC地址和对应的DPV向量写入第二个空闲的SRAM存储模块中,以此类推,如多个SRAM存储模块都不空闲,则使用最近最久未使用算法查找4个SRAM存储模块中ATU条目的老化时间,如老化时间都一样,则将MAC地址存到第一个SRAM存储模块的非静态条目中,如都是静态的,则这个帧的源MAC地址不会被学习,会向CPU产生一个ATU FULL的中断。
MAC地址查找过程:
从接收数据中提取的目的MAC地址先经过HASH运算后得到SRAM对应的存储地址,然后从SRAM存储模块中该地址处读出数据,寻找MAC地址匹配。由于在每个HASH映射地址对应多个SRAM存储模块中的MAC地址,因此要将接收数据帧的目的MAC地址与SRAM读出的MAC地址进行多次比较。如找到匹配,则根据DPV向量得到对应发送端口,如没有找到匹配的MAC地址则进行泛洪。
实施例1
如图1所示为该电路整体框图,下面以11端口交换芯片为例,说明各模块之间的连接关系和数据处理过程。
如图1所示,共有三个MAC获取模块:MAC地址获取_0、MAC地址获取_1、MAC地址获取_2,每个MAC地址获取模块分别对16bit MAC地址进行处理。每个MAC获取模块的输入数据有两种,一个来自端口接收数据帧的源MAC地址和目的MAC地址(P0_MAC<15:0>-P10_MAC<15:0);一个来自CPU通过全局寄存器直接配置的MAC地址(Global_REG_MAC<15:0>),二者传输路线相互独立,不要求同时存在。MAC地址获取模块主要由多路选择器构成,将从各端口接收到的数据帧中提取的源MAC地址或从寄存器中读出的CPU配置的MAC地址经过多路选择器后,分别生成三路16bit MAC地址(MAC<15:0>、MAC<31:16>、MAC<47:32>)。
如图1所示,DPV获取模块用于读取MAC地址对应的DPV向量。DPV获取模块的输入数据有两种,一种来自各端口收到数据帧后记录在各端口寄存器中的DPV(Port_REG_DPV<10:0>);一种来自全局寄存器中通过CPU配置的静态MAC所对应的DPV(Global_REG_DPV<10:0>)。DPV获取模块主要由多路选择器构成,将从各端口寄存器中读出的DPV和从全局寄存器中读出的DPV经过多路选择器生成一路DPV数据(DPV<10:0>)。DPV向量的位宽取决于交换芯片的端口数。本发明以11端口的交换芯片为例,如端口port0接收到数据帧,则该数据帧MAC地址对应的11bit DPV向量为00000000001,如端口port1接收到数据帧,则该数据帧MAC地址对应的DPV向量为00000000010,依次类推,如端口port10接收到数据帧,则该数据帧MAC地址对应的DPV向量为10000000000。
如图1所示,HASH模块用于将MAC地址获取模块输出的共48bitMAC地址(MAC<15:0>、MAC<31:16>、MAC<47:32>)通过HASH运算映射成11bit的哈希映射地址(Hash_ADDR<11:0>)即SRAM存储地址(ADDR<11:0>)。
如图1所示,4个SRAM存储模块(SRAM0、SRAM1、SRAM2、SRAM3)用于存储ATU条目。
SRAM存储模块的地址是通过MAC地址经过Hash运算后得到的映射地址来确定的。根据HASH模块输出的映射地址(Hash_ADDR<11:0>),将三个MAC地址获取模块输出的源MAC地址(MAC<15:0>、MAC<31:16>、MAC<47:32>)和从DPV获取模块输出的DPV(DPV<10:0>)存到SRAM存储模块中(WR_MAC<15:0>、WR_MAC<31:16>、WR_MAC<47:32>)。4个SRAM存储模块用于分别存储经过HASH运算后结果一样的MAC地址。SRAM的宽度与ATU条目一致,每个SRAM的存储深度为2048,4个SRAM共可以存放8192个ATU条目,即可支持8K的地址容量。选择哪个SRAM由以下决定:先将MAC和对应的DPV存储到哈希位置的第一个SRAM存储模块对应地址中。如第一个SRAM存储模块对应的地址不空闲,则将MAC地址和DPV写入第二个空闲的SRAM存储模块中,以此类推,如4个SRAM存储模块都不空闲,则使用最近最久未使用算法(LeastRecently Used,LRU)查找4个SRAM存储模块对应ATU条目的老化时间,如老化时间都一样,则将MAC地址和DPV存到第一个SRAM存储模块的非静态条目中,如都是静态的,则这个帧的源MAC地址不会被学习,会向CPU产生一个ATU FULL的中断。可采用单端口同步SRAM存储模块设计,4个SRAM存储模块用于分别存储Hash运算结果一样的MAC地址。SRAM的宽度与ATU条目一致,每个SRAM的存储深度为2048,4个SRAM共可以存放8192个ATU条目,即可支持8K的地址容量。
如图1所示,地址比较模块用于目的MAC地址匹配。先将三个数据获取模块输出的目的MAC地址进行哈希运算,得到该目的MAC地址在SRAM存储模块的存储位置(ADDR<11:0>),将4个SRAM存储模块中对应位置的ATU条目MAC地址读出(RD_MAC<15:0>、RD_MAC<31:16>、RD_MAC<47:32>),通过MAC地址比较模块与接收数据帧中提取的目的MAC地址进行匹配,如匹配上,则读出相应SRAM存储模块中该MAC地址所对应的DPV向量,从而得到了数据帧的发送端口,否则将数据帧进行泛洪。如图1所示,地址比较模块的4组输入信号(B0<15:0>、B0<31:16>、B0<47:32>;B1<15:0>、B1<31:16>、B1<47:32>;B2<15:0>、B2<31:16>、B2<47:32>;B3<15:0>、B3<31:16>、B3<47:32>)分别为从4个SRAM存储模块读出的MAC地址;输入信号(A<15:0>、A<31:16>、A<47:32>)为从MAC获取模块得到的目的MAC地址;4个输出信号EQ0、EQ1、EQ2、EQ3分别指示4个SRAM存储模块中读出的ATU条目MAC地址与接收的数据帧的目的MAC地址的比较结果,如输出信号置1说明地址匹配上,然后去控制相应SRAM存储模块读出该MAC地址所对应的DPV向量,即地址对比模块输出4个信号分别指示MAC地址与ATU条目MAC地址的比较结果,这4个信号又会输出至SRAM存储模块,作为SRAM存储模块的控制信号(图上的ctrl),从而控制将匹配上的SRAM存储模块的ATU条目MAC地址对应的DPV向量读出,该DPV就是数据帧最终要发送出去的目的端口。
ATU条目的内容有:48bit MAC地址、3bit条目状态(EntryState)和目的端口矢量DPV(即DPV向量),其中DPV向量占用的bit数由交换芯片的端口数决定(本发明以11个端口的交换芯片为例进行说明)。ATU条目使用每个端口收到的每个帧的目的MAC地址域和源MAC地址域。对所有端口,它以“线速”速率执行所有地址搜索、地址学习和地址老化功能(如对所有端口,目的MAC地址域DA和源MAC地址域SA查找/学习功能的执行时间,小于在任何端口收到的64字节帧的时间)。
如图2所示为ATU条目存储结构图,ATU条目各项内容含义如表1所示:
表1 ATU表项内容
ATU条目使用HASH运算技术用于快速存储和查找。将一个48Bit的地址哈希映射为11比特,这种操作会导致一些MAC地址有相同的哈希地址即产生哈希冲突,通过在每个哈希映射地址使用4个SRAM存储模块来解决,允许在每个哈希映射地址最多存储4个MAC地址。这使得ATU条目变得更小,但仍然可以保存相同的MAC地址。
ATU条目存储在嵌入式SRAM存储模块中,有8192个条目,这些条目有一个默认的老化时间,大概为300s(5min)。
交换芯片不断的运行地址老化过程(除非老化不使能)。老化由ATU条目的定期清除来完成。清除速度决定了老化时间。在ATU条目的每个老化清除中,ATU条目读取每个有效条目并通过缩减它的条目状态(EntryState)域来更新它的老化时间。当条目状态(EntryState)域减为0后,条目被认为是无效的并从ATU中清除。
新的或刚被更新的单播MAC地址的条目状态(EntryState)值为0x7。被清除的或无效的条目的条目状态(EntryState)值为0x0。值0x6到0x1指示了单播MAC地址的老化时间等级,0x1为最老的。ATU的老化时间可由用户通过寄存器来配置,老化时间可以从15s-64min(必须为15s的整数倍),条目状态(EntryState)将配置的这个老化时间分为了7个等级,如老化时间为30s,则可分为1s-5s(EntryState=1),5s-10s(EntryState=2),10s-15s(EntryState=3),15s-20s(EntryState=4),20s-25s(EntryState=5),25s-30s(EntryState=6)这6个区间。这个策略使得ATU每个条目有7种年龄状态使得ATU条目中地址替代过程更精确。
HASH模块用于将MAC地址获取模块输出的共48bitMAC地址通过HASH运算映射成11bit的哈希映射地址即SRAM存储地址。在每个映射地址最多可存储4个MAC地址。源MAC地址和静态配置的MAC地址(即CPU配置的MAC地址)经过Hash运算后生成的哈希映射地址用于地址存储时指示MAC地址和静态配置的MAC地址在SRAM中的存储位置。目的MAC地址经过Hash运算后生成的哈希映射地址用于地址查找时指示该目的MAC地址在SRAM中的存储位置。可采用一种硬件电路实现的快速并行Hash算法,实现电路均由异或门和非门实现。
如图3所示为Hash算法硬件电路图,该算法采用的Hash函数如下:
Ai=!(ai+!A(i-1)+A(i-14)+A(i-16)) (13<i<24;24<i<48)
Ai=(ai+A(i-1)+A(i-14)+A(i-16)) (i=24)
Ai=!(ai+!A(i-1)) (1<=i<=13)
Ai=ai (i=0)
Hash<10>=A42+A40;
Hash<9>=A38+A36;
Hash<8>=A46+A44;
Hash<7>=A35+A33;
Hash<6>=A37+A35;
Hash<5>=A39+A37;
Hash<4>=A41+A39;
Hash<3>=A43+A41;
Hash<2>=A45+A43;
Hash<1>=A47+A45;
Hash<0>=A47;
其中,a<47:0>为输入的48bit MAC地址,Hash<10:0>为经过HASH映射后的结果。
如图3所示,本发明的HASH模块结构特征:HASH硬件电路包括两个阶段的运算,对于第一阶段,将输入的48bitMAC地址分为5部分,分别为MAC地址的第0bit即a0,第1-13bit即a1-a13,第14-23bit即a14-a23,第24bit即a24,第25-47bit即a25-a47,每部分的电路结构相同。经过异或门和非门后输出A0-A47的中间信号。对于第二阶段,输入为中间信号A33、A35、A36、A37、A38…A47,经过异或门后生成最后的11bit Hash运算结果Hash<10:0>。
本实施例将48bit MAC地址分为三路进行并行处理,以尽量少的硬件资源实现高效能的二层交换地址表存储查找功能。本发明通过并行地将输入信号帧的48位物理地址转换为11位的地址表查询地址,并采用4个SRAM存储模块减少了HASH冲突问题,可以快速准确地查询8192存储深度的地址表,采用该地址表查询算法的二层交换芯片实现了线速交换,从而有效提高了所实现网络设备的性能。
以上结合具体实施方式和范例性实例对本发明进行了详细说明,不过这些说明并不能理解为对本发明的限制。本领域技术人员理解,在不偏离本发明精神和范围的情况下,可以对本发明技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本发明的范围内。本发明的保护范围以所附权利要求为准。
本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。
Claims (10)
1.一种用于交换芯片地址存储及查找的快速并行电路,其特征在于,包括MAC地址获取模块、DPV获取模块、HASH模块、SRAM存储模块和地址比较模块;
MAC地址获取模块:从数据帧中读取源MAC地址或从全局寄存器中读出通过CPU配置的MAC地址,并输出至HASH模块和SRAM存储模块;
从数据帧中读取目的MAC地址,并输出至HASH模块和地址比较模块;
所述MAC地址获取模块≥3个,将MAC地址分成多路数据并行处理;
DPV获取模块:将源MAC地址或CPU配置MAC的交换端口记录为DPV向量,并输出至SRAM存储模块;
HASH模块:接收由MAC地址获取模块输入的源MAC地址或CPU配置MAC地址,进行HASH运算后,得到指示源MAC地址或CPU配置MAC地址在SRAM存储模块中存储位置的HASH映射地址,并输出至SRAM存储模块;接收由MAC地址获取模块输入的目的MAC地址,进行HASH运算后,得到指示目的MAC地址在SRAM存储模块中的存储位置的HASH映射地址,并输出至SRAM存储模块;
SRAM存储模块:接收由MAC地址获取模块输入的源MAC地址或CPU配置MAC地址,DPV获取模块输入的相应的DPV向量,和HASH模块输入的相应的HASH映射地址,并按照所述HASH映射地址,将源MAC地址或CPU配置MAC地址、DPV向量,以及条目状态共同存储为ATU条目;所述条目状态指示MAC地址老化时间;
接收HASH模块输入的目的MAC地址对应的HASH映射地址,并读取所述HASH映射地址指示的存储位置中存储的ATU条目MAC地址,将ATU条目MAC地址输出至地址比较模块;
接收地址比较模块输入的比较结果信号,根据比较结果信号读出该ATU条目MAC地址对应的DPV向量,进而根据该DPV向量得到对应发送端口,或进行泛洪;
所述SRAM存储模块为≥4个单端口同步SRAM,分别存储HASH运算后所得HASH映射地址相同的MAC地址;
地址比较模块:接收MAC地址获取模块输入的目的MAC地址,以及SRAM存储模块输入的ATU条目MAC地址后,将ATU条目MAC地址与目的MAC地址进行比较,将比较结果信号输出至SRAM存储模块。
2.根据权利要求1所述的一种用于交换芯片地址存储及查找的快速并行电路,其特征在于,MAC地址经过HASH运算后所得HASH映射地址为11bit。
3.根据权利要求1所述的一种用于交换芯片地址存储及查找的快速并行电路,其特征在于,所述单端口同步SRAM的存储宽度与ATU条目一致,存储深度为2048。
4.根据权利要求1所述的一种用于交换芯片地址存储及查找的快速并行电路,其特征在于,所述HASH模块由异或门和非门组成。
5.根据权利要求1所述的一种用于交换芯片地址存储及查找的快速并行电路,其特征在于,所述ATU条目包括48bit MAC地址,3bit条目状态和m个bit的DPV向量,其中m等于交换芯片的端口数。
6.一种用于交换芯片地址存储及查找的方法,其特征在于,采用权利要求1-5任一项所述的一种用于交换芯片地址存储及查找的快速并行电路实现,具体步骤为:
(1)通过n个MAC地址获取模块,获取源MAC地址或CPU配置MAC地址,每个MAC地址获取模块读取所述MAC地址的1/n,并输出至HASH模块及SRAM存储模块;同时,DPV获取模块将所述MAC地址对应的交换端口记录为DPV向量,并输出至SRAM存储模块;n≥3;
(2)HASH模块接收源MAC地址或CPU配置MAC地址后进行HASH运算,得到对应的HASH映射地址,并输出至SRAM存储模块;
(3)SRAM存储模块将源MAC地址或CPU配置MAC地址及对应的DPV向量,结合条目状态,以ATU条目的形式存储在步骤(2)输入的HASH映射地址中;所述条目状态指示MAC地址老化时间;
(4)通过n个MAC地址获取模块,同时从数据帧中提取目的MAC地址,每个MAC地址获取模块提取目的MAC地址的1/n,并输出至HASH模块及地址比较模块;
(5)HASH模块进行HASH运算后得到目的MAC地址对应的HASH映射地址,后将HASH映射地址输出至SRAM存储模块;
(6)SRAM存储模块按照目的MAC地址对应的HASH映射地址,读取相应存储位置中的ATU条目MAC地址,将ATU条目MAC地址输出至地址比较模块;
(7)地址比较模块接将ATU条目的MAC地址与目的MAC地址进行比较,如匹配则读出该ATU条目的MAC地址对应的DPV向量,根据该DPV向量得到对应发送端口;如不匹配则进行泛洪。
7.根据权利要求6所述的一种用于交换芯片地址存储及查找的方法,其特征在于,所述步骤(2)和步骤(5)中的HASH运算中,首先将输入的MAC地址分为若干部分,经过异或门和非门后生成中间信号,再经过异或门后得到最终结果。
8.根据权利要求6所述的一种用于交换芯片地址存储及查找的方法,其特征在于,所述源MAC地址对应的条目状态指示≥7种MAC地址老化时间等级,所述CPU配置的MAC地址条目状态为定值,所述老化时间等级反应条目从ATU中清除的剩余时间。
9.根据权利要求6所述的一种用于交换芯片地址存储及查找的方法,其特征在于,所述步骤(2)中,源MAC地址或CPU配置MAC地址存储的方法为:将所述MAC地址和对应DPV存储到HASH映射地址指示的第一个且不空闲的SRAM存储模块的对应地址中;若此HASH映射地址指示的所有SRAM存储模块对应地址都不空闲,则将所述MAC地址和对应DPV存储到老化时间等级最低的ATU条目的SRAM存储模块的对应地址中;如老化时间相同,则将所述MAC地址和对应DPV存储到第一个SRAM存储模块的非静态ATU条目中。
10.根据权利要求6所述的一种用于交换芯片地址存储及查找的方法,其特征在于,还包括CPU配置MAC地址的静态学习过程:通过读取全局寄存器中配置好的MAC地址,将MAC地址存入SRAM存储模块中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011539273.5A CN112637072B (zh) | 2020-12-23 | 2020-12-23 | 一种用于交换芯片地址存储及查找的快速并行电路及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011539273.5A CN112637072B (zh) | 2020-12-23 | 2020-12-23 | 一种用于交换芯片地址存储及查找的快速并行电路及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112637072A CN112637072A (zh) | 2021-04-09 |
CN112637072B true CN112637072B (zh) | 2022-08-02 |
Family
ID=75321662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011539273.5A Active CN112637072B (zh) | 2020-12-23 | 2020-12-23 | 一种用于交换芯片地址存储及查找的快速并行电路及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112637072B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114785396B (zh) * | 2022-03-09 | 2024-04-12 | 西安电子科技大学 | 逻辑端口配置、查找映射及流量管理方法、系统及终端 |
CN115412511B (zh) * | 2022-07-29 | 2024-05-28 | 北京时代民芯科技有限公司 | 一种用于以太网交换芯片的高性能计数器电路及计数方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005045442A (ja) * | 2003-07-25 | 2005-02-17 | Hitachi Cable Ltd | 宛先判定回路 |
CN103117931A (zh) * | 2013-02-21 | 2013-05-22 | 烽火通信科技股份有限公司 | 基于哈希表和tcam表的mac地址硬件学习方法及系统 |
CN105812264A (zh) * | 2016-03-15 | 2016-07-27 | 西安电子科技大学 | 多路并行的mac地址学习和地址查找的装置及方法 |
CN106991056A (zh) * | 2015-12-10 | 2017-07-28 | Arm 有限公司 | 用于芯片内和芯片间哈希的系统地址映射 |
CN107666387A (zh) * | 2016-07-27 | 2018-02-06 | 北京计算机技术及应用研究所 | 低功耗并行哈希计算电路 |
US9929933B1 (en) * | 2015-09-01 | 2018-03-27 | Netronome Systems, Inc. | Loading a flow table with neural network determined information |
CN108737433A (zh) * | 2018-05-29 | 2018-11-02 | 冼汉生 | 基于物联网的传感器节点监测系统及传感器节点监测方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731355B (zh) * | 2013-12-31 | 2017-01-25 | 迈普通信技术股份有限公司 | 避免mac地址学习时哈希冲突的方法及系统 |
CN107770076B (zh) * | 2016-08-23 | 2020-12-04 | 中兴通讯股份有限公司 | 一种哈希冲突的处理方法、装置及交换设备 |
CN107689931B (zh) * | 2017-09-27 | 2021-05-14 | 广州海格通信集团股份有限公司 | 一种基于国产fpga的实现以太网交换功能系统及方法 |
-
2020
- 2020-12-23 CN CN202011539273.5A patent/CN112637072B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005045442A (ja) * | 2003-07-25 | 2005-02-17 | Hitachi Cable Ltd | 宛先判定回路 |
CN103117931A (zh) * | 2013-02-21 | 2013-05-22 | 烽火通信科技股份有限公司 | 基于哈希表和tcam表的mac地址硬件学习方法及系统 |
US9929933B1 (en) * | 2015-09-01 | 2018-03-27 | Netronome Systems, Inc. | Loading a flow table with neural network determined information |
CN106991056A (zh) * | 2015-12-10 | 2017-07-28 | Arm 有限公司 | 用于芯片内和芯片间哈希的系统地址映射 |
CN105812264A (zh) * | 2016-03-15 | 2016-07-27 | 西安电子科技大学 | 多路并行的mac地址学习和地址查找的装置及方法 |
CN107666387A (zh) * | 2016-07-27 | 2018-02-06 | 北京计算机技术及应用研究所 | 低功耗并行哈希计算电路 |
CN108737433A (zh) * | 2018-05-29 | 2018-11-02 | 冼汉生 | 基于物联网的传感器节点监测系统及传感器节点监测方法 |
Non-Patent Citations (3)
Title |
---|
James Thesing ; Dhireesha Kudithipudi.Secure Neural Circuits to Mitigate Correlation Power Analysis on SHA-3 Hash Function.《 2018 31st International Conference on VLSI Design and 2018 17th International Conference on Embedded Systems (VLSID)》.2018, * |
宇航用总线网络技术的发展;赵沛,闫攀,陶淑婷;《战略研究》;20190131;全文 * |
李苗.以太网交换技术研究及交换芯片的设计实现.《 中国优秀硕士论文电子期刊网》.2011, * |
Also Published As
Publication number | Publication date |
---|---|
CN112637072A (zh) | 2021-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6606681B1 (en) | Optimized content addressable memory (CAM) | |
CN112637072B (zh) | 一种用于交换芯片地址存储及查找的快速并行电路及方法 | |
US7953077B2 (en) | Network processor with single interface supporting tree search engine and CAM | |
US6230231B1 (en) | Hash equation for MAC addresses that supports cache entry tagging and virtual address tables | |
US6990102B1 (en) | Parallel lookup tables for locating information in a packet switched network | |
US20030026259A1 (en) | Method and apparatus for a four-way hash table | |
US7408930B2 (en) | Address learning to enable high speed routing table lookups | |
US6577636B1 (en) | Decision making engine receiving and storing a portion of a data frame in order to perform a frame forwarding decision | |
US20090282167A1 (en) | Method and apparatus for bridging | |
US7477639B2 (en) | High speed routing table learning and lookup | |
CN109981464B (zh) | 一种在fpga中实现的tcam电路结构及其匹配方法 | |
KR20170009961A (ko) | 패킷 처리를 위한 다중 테이블 해시 기반 룩업 | |
US7400623B2 (en) | Method and apparatus for managing medium access control (MAC) address | |
US7185172B1 (en) | CAM-based search engine devices having index translation capability | |
US20060277352A1 (en) | Method and system for supporting large caches with split and canonicalization tags | |
US6996664B2 (en) | Ternary content addressable memory with enhanced priority matching | |
US11038797B2 (en) | Forwarding table entry access | |
CN108632148B (zh) | 基于预读取方式的学习mac地址的装置及方法 | |
CN111614793B (zh) | 一种基于fpga的以太网交换机的mac地址管理装置及方法 | |
CN111857817B (zh) | 数据读取方法、数据读取装置及数据读取系统 | |
US7127547B2 (en) | Processor with multiple linked list storage feature | |
CN112087388B (zh) | 一种l2数据报文的转发方法 | |
CN108647161B (zh) | 一种记录访存地址历史的硬件监测电路 | |
EP4290821A1 (en) | Efficient hash table lookup | |
US20230236727A1 (en) | Circuit, Chip, and Electronic Device |
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 |