CN101350771B - 三态内容可寻址存储器条目免排序存储方法及其系统 - Google Patents
三态内容可寻址存储器条目免排序存储方法及其系统 Download PDFInfo
- Publication number
- CN101350771B CN101350771B CN2008100316935A CN200810031693A CN101350771B CN 101350771 B CN101350771 B CN 101350771B CN 2008100316935 A CN2008100316935 A CN 2008100316935A CN 200810031693 A CN200810031693 A CN 200810031693A CN 101350771 B CN101350771 B CN 101350771B
- Authority
- CN
- China
- Prior art keywords
- subclauses
- clauses
- content addressable
- addressable memory
- execution
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种三态内容可寻址存储器条目免排序存储方法及其系统,规则条目无需进行排序处理,连续存储在三态内容可寻址存储器(TCAM)中,通过规则掩码计算出掩码优先级,并将其与操作指令一起存储在关联随机存储器(RAM)中;接收网络数据后,进行协议解析,提取约定字段组成匹配关键字送入TCAM进行匹配查找,根据匹配结果从关联RAM中得到对应数据包的操作指令,最终完成相应操作和输出转发;当有多匹配命中时,对所有命中条目的掩码优先级进行比较获得最优结果输出。本发明实现了输出判决与存储地址的有效剥离,消除了TCAM条目存储有序性要求,解除条目存储和管理的最大束缚,结合优化的条目管理策略,彻底解决条目更新复杂度问题。
Description
技术领域
本发明主要涉及到网络技术领域,特指一种三态内容可寻址存储器条目免排序存储方法及其系统。
背景技术
随着Internet的高速发展,网络中节点数目大幅度增长,路由器接口速率也越来越高,最坏情况下(以最短IP包为40字节计,100%流量负荷),10Gbps接口速率下处理能力要求达到31Mpps(packet per second),而40Gbps接口速率下的处理能力则要达到125Mpps。而随着各种新的网络应用的涌现,网络高质量服务要求越来越复杂,报文分类技术也面临着更大的挑战,传统的基于软件的路由查找和分类方法由于需要多次的内存交互,通常效率较低,根本不能满足高端设计需要。由于三态内容可寻址存储器(TCAM)的查表速度快,已成为目前业界常用的硬件解决方案。实际应用中,路由和报文分类规则条目需要频繁刷新,TCAM条目更新(一般包括条目删除和条目添加)时又必须中断正常的匹配操作,而现行应用中,TCAM对条目存放的有序性要求,使得条目更新和管理非常复杂,一旦条目更新占用的时间过长,必然影响查表和分类速度,非常容易引起处理队列阻塞甚至丢包,严重影响网络服务性能。本发明就是旨在消除条目存放的有序性要求,从根本上解决TCAM快速更新问题。
TCAM现行应用方式如图1所示,一般还需要一个同等容量的RAM与之配合使用,TCAM中存储规则条目,RAM对应地址中存储规则条目的操作指令。一般匹配流程是:从数据包中提取相关字段组成匹配关键字送入TCAM进行并行查找,当匹配关键字与规则表中某一条目匹配一致时,TCAM输出该条目所在地址,通过该地址直接读取RAM,最终获得该数据包对应的操作指令。
TCAM可以支持3种逻辑态:0,1或者X,其中X代表“不关心位”(Don’t care state),一般利用掩码实现。当设置成“不关心位”时,表示该数据位不参与匹配,并默认该数据位匹配成功,相当于一个通配数据位。目前不同厂商的器件对掩码的定义不同,本发明叙述过程中以掩码为‘0’时表示对应数据位为“不关心位”。
这种掩码机制使得TCAM可以存储那些包含有通配符的规则,从而很好的解决了路由查找中最长前缀匹配的问题,但同时也会出现匹配关键字与多个条目同时匹配命中的情况。现行应用中,当多匹配命中出现时,TCAM以条目存储地址作为判断依据,默认选取存储所在地址最低的条目作为最终结果输出。所以,为了在TCAM中实现最长前缀路由查找,初始规则表在存入TCAM之前,必须对所有条目进行排序处理,按照前缀由长到短的顺序从低地址到高地址依次存放,即将优先级较高的条目存放在较低的地址上。正是这种存储的有序性要求,让一次看似简单的条目删除或添加操作,可能引起多个条目的关联移动,使得TCAM的条目更新过程变得非常复杂。而报文分类应用中,由于参与匹配的数据类型更多,出现多匹配概率相应增大,由此引发的更新问题更为棘手。
简单以最长前缀匹配应用说明现行条目添加复杂度问题。初始规则表采用连续存储方式,把空闲空间都留在TCAM高地址段,首先,确定待添加条目不在当前规则表中,然后根据条目输出优先级确定其在当前规则表中的存储位置,为了维持前缀顺序,在写入该存储位置前,需要将优先级比它低的条目都顺序往高地址段移动,这样,如果初始规则表中前缀数目为N,最坏情况下需要移动N次为其腾出空间,即更新复杂度为O(N)。显然,这种条目存储方式下进行更新时,条目关联性太大,效率极低。
很多学者和机构针对路由更新展开了一系列的研究工作,改进方向主要有两个:第一种思路是弱化排序约束,优化空闲空间的使用和管理。最初提出的是将空闲空间的预留位置从TCAM末段(即高地址段)改为TCAM中段。这样,在更新时,关联条目的移动就由原来的只能往后的单向移动变为向中间的双向移动,可以在一定程度上提高更新速度,但是这种改进效果非常有限,而且存在很大的不确定性;随后的改进是将空闲空间分散到一定的集合中,当新增条目对应的集合中存在空闲空间时,直接写入,无需移动其他条目;而如果不存在空闲空间时,只须从相邻的集合中借用一个空闲地址即可写入。显然,该方法可以明显的减少条目的平均移动次数,但是在最坏情况下(如预留空闲空间出现连续满状态),算法复杂度仍然是O(N)。更进一步,结合TCAM工作原理分析,发现路由前缀查找只需要保证不同前缀长度条目的顺序关系即可,而对于相同前缀长度的条目则可以不用严格要求,这样就有效的将原本基于条目的排序存储改进为基于前缀长度的排序存储,算法复杂度为O(W)(W为前缀长度的个数),但是对于IPv4协议而言,该算法的最多移动次数仍有可能大于60,而对于IPv6以及报文分类应用则可能更加复杂。
另外一种改进的思路是通过数据结构设计,优化排序算法,减少更新时条目移动次数,从而降低更新复杂度。如Shah基于前缀链约束的路由排序方法,提出了CAO_OPT路由更新算法。根据这种Tries树数据结构,越靠近叶子节点的路由前缀将存储在TCAM越低的地址中,最差情况下,该算法的更新复杂度为O(D/2)(D为Tries树中最大链长度),平均情况下,该算法的更新复杂度可以到达O(A/2)(A为Tries树中所有链的平均长度),当路由表中的前缀数量较少时,A值也会比较小,CAO_OPT算法性能很好,但是一旦路由前缀增加,Tries树节点分布密度变大,A值也会随之增加,该算法的性能也相应下降,而且该算法对IPv6协议以及更为复杂的报文分类应用基本失效。还有一些算法通过压缩路由冗余来优化TCAM存储空间,以提高更新效率,但是随之而来的是复杂的预计算和节点管理,同样无法突破更新瓶颈。
比如中国专利:一种维护三态内容可寻址存储器表项的方法和系统,专利申请号200610109329.7,公开号101039215,其基本思路是预先对TCAM进行分块,并预置每个前缀块占有的表项数,采用这样的存储方式,可以减少增加或删除表项时对表项的操作次数。但是该方法只是由原来的以所有条目排序改为以前缀长度排序,减少的只是表项的平均操作次数,相当情况下仍然会出现大量的表项移动。
综上所述,网络设备使用三态内容可寻址存储器进行路由查找和报文分类应用时,由于以存储地址作为最优匹配结果输出的判决条件,使得条目必须按照优先级有序存储,导致了实时更新过程中需要通过频繁的移动关联条目保证条目的存储顺序,以保证最优匹配结果的正确输出,严重影响了正常匹配操作,降低了网络设备的实用性能。
发明内容
本发明要解决的问题就在于:针对现有技术存在的技术问题,本发明提供一种能够从根本上消除TCAM条目存储有序性要求、实现条目的免排序存储,从而解除条目存储和管理的最大束缚,并能够结合优化的条目管理策略,彻底解决条目更新复杂度问题的三态内容可寻址存储器条目免排序存储方法及其系统。
为解决上述技术问题,本发明提出的解决方案为:一种三态内容可寻址存储器条目免排序存储方法,其特征在于:将规则条目存储在三态内容可寻址存储器中,通过掩码计算出条目掩码优先级,并将条目操作指令和条目掩码优先级一并存储在关联随机存储器中;当接收到网络数据后,进行相应的协议解析,并提取约定字段组成匹配关键字送入三态内容可寻址存储器中进行匹配查找,根据匹配结果在关联随机存储器中得到对应数据包的条目操作指令,最终完成相应操作和输出转发;当多匹配命中出现时,对命中条目的条目掩码优先级进行比较决定后最优结果输出。
当三态内容可寻址存储器中的条目进行删除更新时,步骤为:
(701)、得到待删除条目和条目删除请求后,进入条目删除流程;
(702)、将待删除条目作为匹配关键字送入三态内容可寻址存储器中执行匹配操作;
(703)、结果处理模块对TCAM返回信息进行判断,如果没有匹配命中,执行步骤704;如果匹配命中,执行步骤705;
(704)、终止删除操作,并返回“待删除条目不在当前规则表内”信息;
(705)、进一步判断是否是多匹配情况,如果当前是唯一匹配命中,执行步骤707;如果是多匹配情况,执行步骤706;
(706)、采用并行流水作业方式,将各命中条目的掩码优先级和待删除条目的掩码优先级进行逐一比较;
(707)、进一步判断,如果命中条目掩码优先级和待删除条目的掩码优先级没有一致的情况,执行步骤704;如果有一致的,执行步骤708;
(708)、说明待删除条目在当前规则表中,对最终确定的命中结果所在地址上的数据覆盖全‘1’或‘0’,实现对该条目的删除;
(709)、将已删除条目的地址指针存放到存储回收队列中,刷新状态参数,条目删除操作完毕。
当三态内容可寻址存储器中的条目进行添加更新时,步骤为:
(801)、得到待添加条目和条目添加请求后,进入条目添加流程;
(802)、先检查三态内容可寻址存储器的存储状态,如果尚有可用存储空间,即三态内容可寻址存储器中有空闲空间或者回收队列中有可用地址指针时,则执行步骤804;如果既无空闲空间,同时回收队列也无可用地址指针,说明当前三态内容可寻址存储器的存储空间已满,执行步骤803;
(803)、终止条目添加操作,并返回“存储空间满”或“待添加条目已经在当前规则表中”信息;
(804)、将待添加条目作为匹配关键字送入三态内容可寻址存储器执行匹配操作;
(805)、对三态内容可寻址存储器的返回信息进行判断,如果没有匹配命中,说明待添加条目不在当前规则表中,执行步骤809;如果匹配命中,执行步骤806;
(806)、进一步判断是否是多匹配情况,如果是唯一匹配命中,执行步骤808;如果是多匹配情况,则执行步骤807;
(807)、采用并行流水作业方式,将各命中条目的条目掩码优先级和待添加条目的条目掩码优先级进行逐一比较;
(808)、判断掩码优先级比较情况,如果命中条目掩码优先级和待添加条目的掩码优先级没有一致的情况,说明待添加条目尚不在当前规则表中,执行步骤809;如果有一致的情况,说明待添加条目已经在当前规则表中,执行步骤803;
(809)、检查存储回收队列情况,如果回收队列中有可用地址指针,执行步骤810;如果回收队列中无可用地址,执行步骤811;
(810)、将新条目写入队列最前地址中,并将条目对应的掩码优先级和操作指令存入RAM的对应地址;
(811)、将新条目写入三态内容可寻址存储器的空闲存储空间当前最低地址中,并将条目对应的掩码优先级和操作指令存入RAM的对应地址;
(812)、刷新三态内容可寻址存储器的存储空间状态信息,条目添加操作完毕。
执行条目匹配流程时步骤为:
(501)、当有网络数据输入,开始启动匹配流程,首先从输入数据包中提取约定字段形成匹配关键字;
(502)、将匹配关键字送入三态内容可寻址存储器中进行匹配操作;
(503)、判断三态内容可寻址存储器的返回信息,如果没有匹配命中,说明该数据包不在需求范围内,对其执行丢弃操作步骤504;
(505)、进一步判断是否存在多匹配情况,如果没有,即当前为唯一匹配命中,执行步骤508;如果是多匹配情况,执行步骤506;
(506)、采用并行流水作业方式将所有匹配命中条目对应的条目掩码优先级一一读取并进行比较;
(507)、选取条目掩码优先级最高的匹配命中作为最优匹配结果输出;
(508)、根据最优匹配结果对应的后续操作指令完成对数据包的处理和输出转发。
所述多匹配情况时并行流水作业方式的步骤为:
(S1):获取三态内容可寻址存储器的匹配结果;
(S2):读取关联随机存储器RAM的信息,得到与上述匹配结果对应的条目掩码优先级和操作指令;
(S3):对条目掩码优先级比较;在每个操作时钟下,将最新匹配结果的条目掩码优先级与比较器中保存的掩码优先级进行比较,始终将较高的掩码优先级保存在比较器中,并将对应操作指令暂存在操作指令缓存器中,直至所有匹配结果比较完毕,届时操作指令缓存器中存放的就是对应数据包的最终处理指令。
一种三态内容可寻址存储器条目免排序存储系统,其特征在于它包括:
数据接收模块,用来接收网络数据,并根据要求进行协议解析,将解析后的数据包存入数据缓存模块;
数据处理模块,用来对已经完成协议解析的数据包进行约定字段提取,组成匹配关键字;
匹配模块,接收匹配关键字,通过指令、数据以及寄存器管理控制三态内容可寻址存储器实现匹配查找功能;
管理模块,用来对三态内容可寻址存储器和关联随机存储器RAM的管理;
结果处理模块,用来对匹配结果的分析处理;
数据输出模块,用来根据结果处理模块的匹配结果获取后续操作指令,从数据缓存模块中读取数据包的进行相应处理和输出转发;
三态内容可寻址存储器,用来存放规则条目,并根据指令完成匹配关键字与预存规则条目的并行匹配查找,输出匹配命中与否以及是否存在多匹配命中等匹配状态信息和匹配命中结果;
关联随机存储器RAM,用来存储条目操作指令和条目掩码优先级;
数据缓存模块,存储数据接收模块完成解析的数据包,并供数据输出模块读取实现数据包的相应处理和输出转发。
与现有技术相比,本发明的优点就在于:本发明通过引入掩码优先级概念,并使之替代存储地址成为最优匹配结果输出的判定依据,将条目输出优先级与存储地址关系有效剥离,从根本上消除了TCAM条目存储有序性要求,实现了条目的免排序存储,解除了条目存储和管理的最大束缚。这样,添加条目时,无需进行排序计算、关联条目移动等操作步骤,而是可以直接存入空闲地址中,更新复杂度为O(1)(即一个操作时钟周期),从而彻底的解决了条目快速更新问题。在此方法中,还有效保证了条目更新的正确性,并支持对条目输出优先级高效灵活的调整。此方法包含的条目管理优化策略,可以更高效的利用TCAM存储空间,进一步提高TCAM的更新性能,而依据此方法制成的三态内容可寻址存储器条目免排序存储系统同样具备复杂度降低、快速更新、调整灵活等优点。
附图说明
图1是现行三态内容可寻址存储器的应用示意图;
图2是本发明的应用示意图;
图3是本发明实施例系统结构图;
图4是本发明实施例系统工作模式示意图;
图5是本发明实施例中匹配输出的流程示意图;
图6是本发明实施例中多匹配结果并行流水作业示意图;
图7是本发明实施例中条目删除方法的流程示意图;
图8是本发明实施例中条目添加方法的流程示意图。
具体实施方式
本发明的三态内容可寻址存储器条目免排序存储方法,首先通过掩码计算出条目掩码优先级,将条目操作指令和条目掩码优先级一并存储在关联随机存储器RAM中,并将与条目操作指令对应的规则条目存储在三态内容可寻址存储器中;当接收到网络数据后,进行相应的协议解析,并提取约定字段组成匹配关键字送入三态内容可寻址存储器中进行匹配查找,根据匹配结果在关联随机存储器RAM中得到对应数据包的条目操作指令,最终完成相应操作和输出转发;当多匹配命中出现时,对命中条目的条目掩码优先级进行比较决定后最优结果输出。正是采用这种存储方式和优选方法,将条目输出优先级与存储地址关系有效剥离,当添加条目时,无需进行排序计算、关联条目移动等操作步骤,而是可以直接存入空闲地址中,实现更新复杂度为O(1)(即一个操作时钟周期),结合优化的条目管理策略,更有效的利用TCAM存储空间,彻底解决了条目快速更新问题。
由于三态内容可寻址存储器(TCAM)内规则表中条目无需根据前缀长度或其他条件进行排序处理,各条目存储位置没有关联性,也不需要为添加操作考虑,在有效条目之间预留存储空间,而是将TCAM空闲存储空间全部预留在高地址段,因此三态内容可寻址存储器(TCAM)中条目免排序连续存储。而关联随机存储器RAM不仅存放条目对应的后续操作指令,同时也存放对应条目的掩码优先级。当多匹配情况出现时,所有匹配命中条目对应的掩码优先级将被读取出来进行一一比较,以确定最优匹配结果。这样,将条目输出优先级与存储地址关系有效剥离,为实现TCAM条目免排序存储提供重要支持。
本发明技术方案关键点包括:
1、条目掩码优先级的确定和应用。通常应用情况下,条目掩码中“不关心位”越少,指示该条目限定的匹配条件越精确,也是用户最需要的,路由前缀匹配就是一个典型例子。本发明通过计算条目掩码中“不关心位”数量,确定对应条目的优先级,“不关心位”越少,掩码优先级就越高。
当有多匹配命中情况出现时,将所有匹配命中条目对应的掩码优先级读取出来进行一一比较,以确定最优匹配结果,而不是依据条目存储地址高低选择输出,彻底改变了最优匹配结果输出模式,实现真正的免排序存储结构,解除了条目存储的最大束缚。最显著的效果是,条目添加时,无需再进行排序计算、关联条目移动等操作步骤,而是可以直接存入空闲地址中,更新复杂度为O(1)(即一个操作时钟周期),从而彻底的解决了条目快速更新问题。
在本发明实现方法中,掩码优先级的引入还可以保证条目更新的正确性,具体而言就是保证判别待更新条目是否已在当前规则表中的正确性。条目更新之前,都需要将待更新条目作为匹配关键字送入TCAM,判断是否已经存在于当前规则表中。按照现行多数的实现方法,比较容易出现误判,导致条目的误删除和忽略添加。例如,如果当前规则表中已有条目“192.168.1.0”,其掩码为“255.255.0.0”,假设待更新条目为“192.168.11.0”,掩码为“255.255.255.0”,此时,待更新条目作为匹配关键字送入将会有匹配命中返回,如果当前是要进行删除操作,则会将原有正常条目误删除;如果当前是要进行添加操作,则因为误认为该条目已经存在而放弃操作。而在本发明的更新流程中,由于有掩码优先级比较环节,则可以很容易的将类似情况加以区分,保证条目更新的正确性。
另外,考虑到报文分类应用的多样性,条目掩码优先级除了根据条目掩码计算还可以进行人工设定,实现优先级实时灵活修改。在实际应用中,经常需要对已有条目输出优先级进行调整,在现行存储结构下,这种调整必须中断匹配操作,通过条目移动改变条目的存储顺序来实现,严重影响设备的正常工作;而在本发明的存储结构下,用户只需要单独修改RAM中对应条目的掩码优先级即可,无需移动TCAM中的条目和中断正常匹配操作,相比之下,更加高效和灵活。
2、条目管理方法优化。依据关键参数,对条目存储、删除和添加设计灵活高效的管理策略,更高效的利用TCAM存储空间,辅助实现条目的快速更新。主要包括:
(1)关键参数的建立和更新。将TCAM的空闲存储空间容量、起始地址、回收存储空间数量以及回收存储空间队列等作为关键参数,并在条目删除、添加操作过程中,实时进行更新,为高效管理提供保证。其中回收空间是指已删除条目所占空间,是区别于TCAM空闲空间的可用存储空间。由于本方法的免排序存储结构,当一个条目被删除后,无需移动其他条目填充该存储空间,可以将该存储空间地址存放在回收队列中,在条目添加操作时可以直接使用;
(2)删除操作时,对TCAM存储空间进行直接回收使用,即,当一个条目被删除后,利用本发明存储结构的无序性特性,无需移动其他条目填充该存储空间,而是将该存储空间地址放在回收队列中,可供条目添加操作时直接使用,并更新相应状态参数;
条目添加时,通过对关键参数的判断,优先使用回收队列中的可用空间,然后才是TCAM空闲存储空间,并实时更新相应状态参数。
下面结合附图和实施例对本发明的系统结构、工作模式以及免排序存储方法下的匹配、条目删除与添加流程进行说明。
本发明根据解决方案设计的TCAM条目以及相关RAM存储结构如图2所示,基本特征是:
1、TCAM中条目免排序连续存储:规则表中条目无需根据前缀长度或其他条件进行排序处理,各条目存储位置没有关联性,也不需要为添加操作考虑,在有效条目之间预留存储空间,而是将TCAM空闲存储空间全部预留在高地址段;
2、RAM中不仅存放条目对应的后续操作指令,同时也存放对应条目的掩码优先级。当多匹配情况出现时,所有匹配命中条目对应的掩码优先级将被读取出来进行一一比较,以确定最优匹配结果。这样,将条目输出优先级与存储地址关系有效剥离,为实现TCAM条目免排序存储提供重要支持。
请参见图3所示,为本发明系统结构图:
301数据接收模块,负责接收网络数据,并根据要求进行协议解析,一般包括链路层、网络层和传输层的多种协议类型,并将解析后的数据包存入数据缓存模块309;
302数据处理模块,负责对已经完成协议解析的数据包进行约定字段提取,组成匹配关键字;
303匹配模块,接收匹配关键字,通过指令、数据以及寄存器管理控制TCAM实现匹配查找功能;
304管理模块,负责TCAM和关联RAM的管理,具体包括掩码优先级的计算和调整,TCAM规则表的初始化和条目更新操作以及TCAM存储关键参数的建立与维护,是免排序存储方法实现和区别与其他基于TCAM系统的重要功能模块;
305结果处理模块,完成对匹配结果的分析处理,尤其是在多匹配命中情况下,采用并行流水作业方式将所有匹配命中条目对应的掩码优先级读取并进行一一比较,得到最优匹配结果,和管理模块一样,是免排序存储方法实现和区别与其他基于TCAM系统的重要功能模块;
306数据输出模块,根据结果处理模块305的匹配结果获取后续操作指令,从数据缓存模块309中读取数据包的进行相应处理和输出转发;
307 TCAM,系统的核心模块,存放规则条目,并根据指令完成匹配关键字与预存规则条目的并行匹配查找,输出匹配命中与否以及是否存在多匹配命中等匹配状态信息和匹配命中结果;
308 RAM,TCAM的协同工作单元,其中存储的各条目的掩码优先级供结果处理模块305实现匹配结果的优选功能,存储的操作指令供数据输出模块306实现数据包处理和转发功能;
309数据缓存,存储数据接收模块302完成解析的数据包,并供数据输出模块306读取实现数据包的相应处理和输出转发。
请参见图4所示,为本发明实施例系统工作模式示意图。
系统的工作模式根据TCAM的工作状态进行划分和转移,主要包括:
401初始化模式:系统在该状态下,最重要的工作是将初始规则表的载入TCAM,计算条目掩码优先级并和条目操作指令一起存入RAM,还包括各功能模块自检并设定初始状态,清空数据缓存,为系统正常工作做好准备,上述工作完成后,进入匹配查找模式402;
402匹配查找模式:系统成功完成初始化操作后,进入匹配查找模式,在该状态下,以匹配和结果处理模块为核心,各模块协同工作完成匹配查找操作:接收到网络数据后,进行相应的协议解析,并提取约定字段组成匹配关键字送入TCAM中进行匹配查找,根据匹配结果得到对应数据包的操作指令,最终完成相应操作和输出转发;在各模块工作正常和网络数据不断输入情况下,系统将持续进行上述流程,当出现异常而且无法自我排除时,系统可能采取复位方式转移到初始化模式401;如果有条目删除或者条目添加请求时,系统将中断当前流程,保护各模块状态,然后进入相应的操作模式;
403条目删除模式:当管理模块有条目删除请求时,系统将中断匹配查找模式402,进入条目删除模式。在该状态下,以管理模块和结果处理模块为核心,完成条目删除操作:先通过匹配操作判断待删除条目是否在当前规则表中,如果不在当前规则表中,说明该条目删除请求无效,直接返回匹配查找模式402;如果在当前规则表中,执行删除操作,回收删除条目所在存储空间,刷新相关参数,返回匹配查找模式402;
404条目添加模式:当管理模块有条目添加请求时,系统将中断匹配查找模式402,进入条目添加模式。在该状态下,以管理模块和结果处理模块为核心,完成条目添加操作:先通过匹配操作判断待添加条目是否在当前规则表中,如果已经在当前规则表中,说明该条目添加请求无效,返回匹配查找模式402;如果不在当前规则表中,将待添加条目直接存入当前空闲存储空间,并将计算好的掩码优先级与该条目操作指令一起存入RAM对应地址,刷新相关参数,返回匹配查找模式402。
请参见图5所示,为本发明实施例条目匹配流程图:
501当有网络数据输入,开始启动匹配流程。首先由数据处理模块从输入数据包中提取约定字段形成匹配关键字;
502匹配模块将匹配关键字送入TCAM进行匹配操作;
503结果处理模块判断TCAM返回信息,如果没有匹配命中,说明该数据包不在需求范围内,对其执行丢弃操作步骤504;
505结果处理模块进一步判断是否存在多匹配情况,如果没有,即当前为唯一匹配命中,执行步骤508;如果是多匹配情况,执行步骤506;
506结果处理模块采用并行流水作业方式将所有匹配命中条目对应的掩码优先级一一读取并进行比较;
507选取掩码优先级最高的匹配命中作为最优匹配结果输出;
508数据输出模块根据最优匹配结果对应的后续操作指令完成对数据包的处理和输出转发。
请参见图6所示,为本发明实施例多匹配结果并行流水作业示意图。
横坐标为时间轴,单位是操作时钟周期;纵坐标是具体操作步骤,当出现多匹配情况,需要进行匹配结果优选流程时,包括以下三个步骤并行流水作业执行:
S1:获取TCAM匹配结果;
S2:读取RAM信息,得到该匹配结果对应的掩码优先级和操作指令;
S3:掩码优先级比较。
其中,最关键的步骤是S3,在每个操作时钟下,将最新匹配结果的条目掩码优先级与比较器中保存的掩码优先级进行比较,始终将较高的掩码优先级保存在比较器中,并将对应操作指令暂存在操作指令缓存器中。直至所有匹配结果比较完毕,届时操作指令缓存器中存放的就是对应数据包的最终处理指令。
正是这种并行流水作业方式,保证了在多匹配情况出现时,增加的操作时钟周期是线性可控的。本实施例以出现4个匹配命中结果的情况为例,如图6所示,设t1时钟获得第一个匹配结果,那么,t6时钟时就能得到最终的操作指令。即当操作步骤数为s时,如果有m个命中,得到最终操作指令需要(m+s-1)个时钟周期,其中,操作步骤一般是固定的,本实施例中是s=3,所需处理时钟周期为(m+2),与匹配命中数量呈简单的线性关系。
请参见图7所示,为本发明实施例条目删除方法流程图。
701管理模块得到待删除条目和条目删除请求,进入条目删除流程;
702将待删除条目作为匹配关键字送入TCAM执行匹配操作;
703结果处理模块对TCAM返回信息进行判断,如果没有匹配命中,执行步骤704;
如果匹配命中,执行步骤705;
704终止删除操作,并返回“待删除条目不在当前规则表内”信息;
705结果处理模块进一步判断是否是多匹配情况,如果当前是唯一匹配命中,执行步骤707;如果是多匹配情况,执行步骤706;
706采用并行流水作业方式,将各命中条目的掩码优先级和待删除条目的掩码优先级进行逐一比较;
707进一步判断,如果命中条目掩码优先级和待删除条目的掩码优先级没有一致的情况,执行步骤704;如果有一致的,执行步骤708;
708说明待删除条目在当前规则表中,对最终确定的命中结果所在地址上的数据覆盖全‘1’或‘0’,实现对该条目的删除;
709将已删除条目的地址指针存放到存储回收队列中,刷新状态参数,条目删除操作完毕。
请参见图8所示,为本发明实施例条目添加方法流程图。
801管理模块得到待添加条目和条目添加请求,进入条目添加流程;
802管理模块先检查TCAM存储状态,如果尚有可用存储空间(TCAM有空闲空间或者回收队列中有可用地址指针),则执行步骤804;如果既无空闲空间,同时回收队列也无可用地址指针,说明当前TCAM存储空间已满,执行步骤803;
803终止条目添加操作,并返回“存储空间满”或“待添加条目已经在当前规则表中”信息;
804将待添加条目作为匹配关键字送入TCAM执行匹配操作;
805结果处理模块对TCAM返回信息进行判断,如果没有匹配命中,说明待添加条目不在当前规则表中,执行步骤809;如果匹配命中,执行步骤806;
806进一步判断是否是多匹配情况,如果是唯一匹配命中,执行步骤808;如果是多匹配情况,则执行步骤807;
807采用并行流水作业方式,将各命中条目的掩码优先级和待添加条目的掩码优先级进行逐一比较;
808判断掩码优先级比较情况,如果命中条目掩码优先级和待添加条目的掩码优先级没有一致的情况,说明待添加条目尚不在当前规则表中,执行步骤809;如果有一致的情况,说明待添加条目已经在当前规则表中,执行步骤803;
809检查存储回收队列情况,如果回收队列中有可用地址指针,执行步骤810;如果回收队列中无可用地址,执行步骤811;
810将新条目写入队列最前地址中,并将条目对应的掩码优先级和操作指令存入RAM的对应地址;
811将新条目写入TCAM空闲存储空间当前最低地址中,并将条目对应的掩码优先级和操作指令存入RAM的对应地址;
812刷新存储空间状态信息,条目添加操作完毕。
综上所述,为了从根本上消除了TCAM条目存储有序性要求,本发明根据掩码计算确定对应条目的优先级,并使之替代存储地址成为最优匹配结果输出的判定依据,将条目输出优先级与存储地址关系有效剥离,实现了条目的免排序存储,解除了条目存储和管理的最大束缚。这样,添加条目时,无需进行排序计算、关联条目移动等操作步骤,而是可以直接存入空闲地址中,更新复杂度为O(1),结合优化的条目管理策略,更有效利用TCAM空闲地址,彻底解决了条目快速更新问题。在此方法实现下,还有效保证了条目更新的正确性,并支持对条目输出优先级灵活高效调整,大大提高了基于三态内容可寻址存储器应用的设备的整体应用性能。
Claims (4)
1.一种三态内容可寻址存储器条目免排序存储方法,其特征在于:将规则条目存储在三态内容可寻址存储器中,通过掩码计算出条目掩码优先级,并将条目操作指令和条目掩码优先级一并存储在关联随机存储器中;当接收到网络数据后,进行相应的协议解析,并提取约定字段组成匹配关键字送入三态内容可寻址存储器中进行匹配查找,根据匹配结果在关联随机存储器中得到对应数据包的条目操作指令,最终完成相应操作和输出转发;当多匹配命中出现时,对命中条目的条目掩码优先级进行比较决定后最优结果输出;
所述执行条目匹配流程时步骤为:
(501)、形成匹配关键字;
(502)、将匹配关键字送入三态内容可寻址存储器中进行匹配操作;
(503)、判断三态内容可寻址存储器的返回信息,如果没有匹配命中,说明该数据包不在需求范围内,对其执行丢弃操作步骤504;
(505)、进一步判断是否存在多匹配情况,如果没有,即当前为唯一匹配命中,执行步骤508;如果是多匹配情况,执行步骤506;
(506)、采用并行流水作业方式将所有匹配命中条目对应的条目掩码优先级一一读取并进行比较;
(507)、选取条目掩码优先级最高的匹配命中作为最优匹配结果输出;
(508)、根据最优匹配结果对应的后续操作指令完成对数据包的处理和输出转发;
所述多匹配情况时并行流水作业方式的步骤为:
(S1):获取三态内容可寻址存储器的匹配结果;
(S2):读取关联随机存储器的信息,得到与上述匹配结果对应的条目掩码优先级和操作指令;
(S3):对条目掩码优先级比较;在每个操作时钟下,将最新匹配结果的条目掩码优先级与比较器中保存的条目掩码优先级进行比较,始终将较高的条目掩码优先级保存在比较器中,并将对应操作指令暂存在操作指令缓存器中,直至所有匹配结果比较完毕,届时操作指令缓存器中存放的就是对应数据包的最终处理指令。
2.根据权利要求1所述的三态内容可寻址存储器条目免排序存储方法,其特征在于当三态内容可寻址存储器中的条目进行删除更新时,步骤为:
(701)、得到待删除条目和条目删除请求后,进入条目删除流程;
(702)、将待删除条目作为匹配关键字送入三态内容可寻址存储器中执行匹配操作;
(703)、结果处理模块对三态内容可寻址存储器的返回信息进行判断,如果没有匹配命中,执行步骤704;如果匹配命中,执行步骤705;
(704)、终止删除操作,并返回“待删除条目不在当前规则表内”信息;
(705)、进一步判断是否是多匹配情况,如果当前是唯一匹配命中,执行步骤707;如果是多匹配情况,执行步骤706;
(706)、采用并行流水作业方式,将各命中条目的掩码优先级和待删除条目的掩码优先级进行逐一比较;
(707)、进一步判断,如果命中条目掩码优先级和待删除条目的掩码优先级没有一致的情况,执行步骤704;如果有一致的,执行步骤708;
(708)、说明待删除条目在当前规则表中,对最终确定的命中结果所在地址上的数据覆盖全‘1’或‘0’,实现对该条目的删除;
(709)、将已删除条目的地址指针存放到存储回收队列中,刷新状态参数,条目删除操作完毕。
3.根据权利要求1所述的三态内容可寻址存储器条目免排序存储方法,其特征在于当三态内容可寻址存储器中的条目进行添加更新时,步骤为:
(801)、得到待添加条目和条目添加请求后,进入条目添加流程;
(802)、先检查三态内容可寻址存储器的存储状态,如果三态内容可寻址存储器中有空闲空间或者回收队列中有可用地址指针时,则执行步骤804;如果既无空闲空间,同时回收队列也无可用地址指针,说明当前三态内容可寻址存储器的存储空间已满,执行步骤803;
(803)、终止条目添加操作,并返回“存储空间满”或“待添加条目已经在当前规则表中”信息;
(804)、将待添加条目作为匹配关键字送入三态内容可寻址存储器执行匹配操作;
(805)、对三态内容可寻址存储器的返回信息进行判断,如果没有匹配命中,说明待添加条目不在当前规则表中,执行步骤809;如果匹配命中,执行步骤806;
(806)、进一步判断是否是多匹配情况,如果是唯一匹配命中,执行步骤808;如果是多匹配情况,则执行步骤807;
(807)、采用并行流水作业方式,将各命中条目的条目掩码优先级和待添加条目的条目掩码优先级进行逐一比较;
(808)、判断掩码优先级比较情况,如果命中条目掩码优先级和待添加条目的掩码优先级没有一致的情况,说明待添加条目尚不在当前规则表中,执行步骤809;如果有一致的情况,说明待添加条目已经在当前规则表中,执行步骤803;
(809)、检查存储回收队列情况,如果回收队列中有可用地址指针,执行步骤810;如果回收队列中无可用地址,执行步骤811;
(810)、将新条目写入队列最前地址中,并将条目对应的掩码优先级和操作指令存入关联随机存储器的对应地址;
(811)、将新条目写入三态内容可寻址存储器的空闲存储空间当前最低地址中,并将条目对应的掩码优先级和操作指令存入关联随机存储器的对应地址;
(812)、刷新三态内容可寻址存储器的存储空间状态信息,条目添加操作完毕。
4.一种三态内容可寻址存储器条目免排序存储系统,其特征在于它包括:
数据接收模块(301),用来接收网络数据,并根据要求进行协议解析,将解析后的数据包存入数据缓存模块(309);
数据处理模块(302),用来对已经完成协议解析的数据包进行约定字段提取,组成匹配关键字;
匹配模块(303),接收匹配关键字,通过指令、数据以及寄存器管理控制三态内容可寻址存储器实现匹配查找功能;
管理模块(304),用来对三态内容可寻址存储器和关联随机存储器RAM的管理;
结果处理模块(305),用来对匹配结果的分析处理;
数据输出模块(306),用来根据结果处理模块(305)的匹配结果获取后续操作指令,从数据缓存模块(309)中读取数据包的进行相应处理和输出转发;
三态内容可寻址存储器(307),用来存放规则条目,并根据指令完成匹配关键字与预存规则条目的并行匹配查找,输出匹配命中与否以及是否存在多匹配命中的匹配状态信息和匹配命中结果;
关联随机存储器(308),用来存储条目操作指令和条目掩码优先级;
数据缓存模块(309),存储数据接收模块(302)完成解析的数据包,并供数据输出模块(306)读取实现数据包的相应处理和输出转发。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100316935A CN101350771B (zh) | 2008-07-07 | 2008-07-07 | 三态内容可寻址存储器条目免排序存储方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100316935A CN101350771B (zh) | 2008-07-07 | 2008-07-07 | 三态内容可寻址存储器条目免排序存储方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101350771A CN101350771A (zh) | 2009-01-21 |
CN101350771B true CN101350771B (zh) | 2010-12-29 |
Family
ID=40269361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100316935A Expired - Fee Related CN101350771B (zh) | 2008-07-07 | 2008-07-07 | 三态内容可寻址存储器条目免排序存储方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101350771B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239228A (zh) * | 2015-03-26 | 2017-10-10 | 爱思开海力士有限公司 | 提高重建效率的存储器系统和操作方法 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8527694B2 (en) | 2010-06-11 | 2013-09-03 | Beijing Star-Net Ruijie Networks Co., Ltd. | Method and apparatus for updating table entries of a ternary content addressable memory |
CN102819617A (zh) * | 2012-09-11 | 2012-12-12 | 苏州雄立科技有限公司 | 查找数据库中显性定义记录表项优先级的方法 |
CN102868779B (zh) * | 2012-09-20 | 2016-01-20 | 北京锐安科技有限公司 | 一种IPv6数据分区及快速查找方法 |
CN104035928A (zh) * | 2013-03-04 | 2014-09-10 | 杭州华三通信技术有限公司 | 一种tcam表空间回收的方法及装置 |
CN103546378B (zh) * | 2013-05-20 | 2018-06-01 | 北京百卓网络技术有限公司 | 基于tcam的范围多匹配2级分层查找方法 |
CN104753788A (zh) * | 2013-12-25 | 2015-07-01 | 深圳市中兴微电子技术有限公司 | 一种基于索引分配的数据转发方法及装置 |
CN104468361A (zh) * | 2014-12-15 | 2015-03-25 | 盛科网络(苏州)有限公司 | 带有优先级的tcam储存和查找方法及装置 |
CN107528782A (zh) * | 2016-06-20 | 2017-12-29 | 中兴通讯股份有限公司 | 一种tcam表项的更新方法、装置及tcam |
CN107018078B (zh) * | 2017-01-25 | 2020-08-07 | 华为技术有限公司 | 多分支跳转协处理方法及装置 |
CN108572921B (zh) * | 2017-05-15 | 2021-03-12 | 北京金山云网络技术有限公司 | 规则集更新方法、装置、规则匹配方法及装置 |
CN107729053B (zh) * | 2017-10-17 | 2020-11-27 | 安徽皖通邮电股份有限公司 | 一种实现高速缓存表的方法 |
CN108282403B (zh) * | 2018-01-31 | 2020-12-04 | 新华三技术有限公司 | 一种路径确定方法和装置 |
CN108874729B (zh) * | 2018-04-19 | 2022-04-01 | 北京中科睿芯科技集团有限公司 | 芯片互联多应用有效映射方法、系统及内容寻址存储器 |
CN111222017A (zh) * | 2018-11-23 | 2020-06-02 | 恒为科技(上海)股份有限公司 | 一种利用tcam实现浮动字符串匹配的系统 |
US11362948B2 (en) * | 2019-01-10 | 2022-06-14 | Marvell Israel (M.I.S.L) Ltd. | Exact match and ternary content addressable memory (TCAM) hybrid lookup for network device |
US10504595B1 (en) * | 2019-02-28 | 2019-12-10 | Palo Alto Networks, Inc. | Amortizing dissipated power and current demand in a ternary content addressable memory |
CN109995662A (zh) * | 2019-03-07 | 2019-07-09 | 盛科网络(苏州)有限公司 | 一种ACL短key匹配部分ipv6地址的芯片实现方法 |
CN112087389B (zh) * | 2019-06-14 | 2023-01-24 | 深圳市中兴微电子技术有限公司 | 一种报文匹配查表方法、系统、存储介质和终端 |
US11599649B2 (en) * | 2020-06-29 | 2023-03-07 | Rockwell Automation Technologies, Inc. | Method and apparatus for managing transmission of secure data packets |
US11606346B2 (en) | 2020-06-29 | 2023-03-14 | Rockwell Automation Technologies, Inc. | Method and apparatus for managing reception of secure data packets |
CN111917738B (zh) * | 2020-07-14 | 2022-03-18 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 可支持网络高层协议的处理方法及系统 |
TWI778716B (zh) * | 2020-07-23 | 2022-09-21 | 美商光禾科技股份有限公司 | 根據查表處理封包的方法和系統 |
CN111988231B (zh) * | 2020-08-20 | 2022-07-22 | 国家计算机网络与信息安全管理中心 | 一种掩码五元组规则匹配的方法及装置 |
CN112311698B (zh) * | 2020-09-28 | 2021-08-24 | 清华大学无锡应用技术研究院 | 处理网络数据包的方法、装置及存储介质 |
CN112311699B (zh) * | 2020-09-28 | 2021-08-03 | 清华大学无锡应用技术研究院 | 处理网络数据包的方法、装置及存储介质 |
CN112235198A (zh) * | 2020-10-15 | 2021-01-15 | 东莞飞思凌通信技术有限公司 | 一种基于fpga实现的多用户tcam掩码匹配算法 |
CN114244772B (zh) * | 2021-12-29 | 2023-05-30 | 厦门大学 | 一种更新复杂度为o(1)的tcam实现方法及系统 |
CN116156026B (zh) * | 2023-04-20 | 2023-07-04 | 中国人民解放军国防科技大学 | 一种支持rmt的解析器、逆解析器、解析方法及交换机 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1489849A (zh) * | 2001-01-30 | 2004-04-14 | ŵ�������ܱ�Ե·������˾ | 用于三重内容可寻址存储器(tcam)表管理的方法和设备 |
CN1561047A (zh) * | 2004-02-20 | 2005-01-05 | 清华大学 | 基于tcam的分布式并行ip路由查找方法 |
CN101009656A (zh) * | 2006-01-25 | 2007-08-01 | 三星电子株式会社 | 路由系统及其管理规则条目的方法 |
CN101039215A (zh) * | 2006-08-10 | 2007-09-19 | 华为技术有限公司 | 一种维护三态内容可寻址存储器表项的方法和系统 |
-
2008
- 2008-07-07 CN CN2008100316935A patent/CN101350771B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1489849A (zh) * | 2001-01-30 | 2004-04-14 | ŵ�������ܱ�Ե·������˾ | 用于三重内容可寻址存储器(tcam)表管理的方法和设备 |
CN1561047A (zh) * | 2004-02-20 | 2005-01-05 | 清华大学 | 基于tcam的分布式并行ip路由查找方法 |
CN101009656A (zh) * | 2006-01-25 | 2007-08-01 | 三星电子株式会社 | 路由系统及其管理规则条目的方法 |
CN101039215A (zh) * | 2006-08-10 | 2007-09-19 | 华为技术有限公司 | 一种维护三态内容可寻址存储器表项的方法和系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107239228A (zh) * | 2015-03-26 | 2017-10-10 | 爱思开海力士有限公司 | 提高重建效率的存储器系统和操作方法 |
CN107239228B (zh) * | 2015-03-26 | 2020-06-12 | 爱思开海力士有限公司 | 提高重建效率的存储器系统和操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101350771A (zh) | 2009-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101350771B (zh) | 三态内容可寻址存储器条目免排序存储方法及其系统 | |
CN110808910B (zh) | 一种支持QoS的OpenFlow流表节能存储架构及其方法 | |
EP1434148B1 (en) | Apparatus and method of implementing a multi-bit trie algorithmic network search engine | |
US9154442B2 (en) | Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors | |
CN100438481C (zh) | 分组处理装置 | |
USRE44151E1 (en) | Switching ethernet controller | |
JP4078446B2 (ja) | 探索可能なキャッシュ領域を備えるマルチコピーキュー構造 | |
CN108337172A (zh) | 大规模OpenFlow流表分级存储架构与加速查找方法 | |
US20040037276A1 (en) | System and method for packet storage and retrieval | |
US7313138B2 (en) | Router device and routing method | |
CN101009656A (zh) | 路由系统及其管理规则条目的方法 | |
CN1802836A (zh) | 网络协议卸载引擎存储器管理 | |
TWI257790B (en) | System for protocol processing engine | |
US20010049711A1 (en) | Pipeline processing type shaping apparatus and its method | |
CN111131029B (zh) | 一种支持规则依赖的高能效OpenFlow流表查找方法 | |
CN102439574A (zh) | 系统缓存中数据替换方法及多核通信处理器 | |
CN110535827A (zh) | 实现多连接管理的tcp协议全卸载ip核的方法及系统 | |
US7984235B2 (en) | Reducing content addressable memory (CAM) power consumption counters | |
CN100426791C (zh) | 一种路由转发表地址查找引擎装置 | |
CN1595910A (zh) | 一种网络处理器的数据包接收接口部件及其存储管理方法 | |
US20040111395A1 (en) | Mechanism to reduce lookup latency in a pipelined hardware implementation of a trie-based IP lookup algorithm | |
US6421660B1 (en) | Enhanced searching method and apparatus for variable bit chains | |
JP3446704B2 (ja) | シェーパ及びそれに用いるスケジューリング方法 | |
CN111541624B (zh) | 空间以太网缓存处理方法 | |
US20010015976A1 (en) | Table-type data retrieval mechanism, packet processing system using the same, and table-type data retrieval method for said packet processing system |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20101229 Termination date: 20130707 |