CN110557335B - 三态内容寻址存储器tcam表项处理方法及装置 - Google Patents
三态内容寻址存储器tcam表项处理方法及装置 Download PDFInfo
- Publication number
- CN110557335B CN110557335B CN201810565576.0A CN201810565576A CN110557335B CN 110557335 B CN110557335 B CN 110557335B CN 201810565576 A CN201810565576 A CN 201810565576A CN 110557335 B CN110557335 B CN 110557335B
- Authority
- CN
- China
- Prior art keywords
- entry
- tcam
- information
- item
- state
- 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
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种三态内容寻址存储器TCAM表项处理方法及装置,该方法包括:根据用户需求获取第一TCAM表项;比较第一TCAM表项和本地存储的第二TCAM表项,确定第一TCAM表项中的条目信息与第二TCAM表项中的条目信息的匹配的状态;根据上述状态对第二TCAM表项进行处理。通过本发明,解决了相关技术中TCAM表项更新时引起的网络震荡的问题。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种三态内容寻址存储器(TernaryContent Addressable Memory,简称为TCAM)表项处理方法及装置。
背景技术
三态内容寻址存储器TCAM是在CAM的基础上发展而来,它的每个bit位除具有“0”和“1”两种状态外,还具有“don’t care”状态,它既可以用于精确匹配,也可以根据掩码规则进行模糊查找,因此被称为三态内容寻址存储器。TCAM查找时,整个表项空间的所有数据在同一时刻被查询,查找速度不受表项空间数据大小影响,每个时钟周期完成一次查找,平均查找速度是基于静态随机存取存储器(Static Random Access Memory,简称为SRAM)算法查找的6倍,最快可以达到128倍。由于这一特点,在通信领域中,它广泛应用于路由表的查找,访问控制列表(Access Control List,简称为ACL)、基于流的服务质量(Quality ofService,简称为QOS)、策略路由及各种网络安全策略中。
如应用与于基于流的服务质量中时,将需要匹配的报文内容写入TCAM表项中,当报文经过交换机时,报文中的特定内容与表项中的所有条目进行比较,如命中,执行该条目对应的动作(如permit、deny,修改报文优先级策略及执行流量限速等)。当有多个条目同时匹配上该报文时,根据条目优先级策略,取最靠前的一条生效。
由于多个条目同时匹配上报文时,执行最靠前的条目对应的动作。因此,下发表项时要对表项条目顺序进行排序,根据实际需求,预先设置条目的相对位置,使其存储位置保持顺序性。
TCAM表项会根据用户实际的需求进行添加、删除、变更等操作,为了保证更新后的表项仍保持顺序性,目前的网络通信系统大多采用将旧表删除,然后下发更新后的所有表项条目的方法。这种方法可以满足多个条目同时匹配时需生效用户预先希望其生效的条目(即下发时将该条目写入硬件表项靠前位置),但是由于在删除旧表到添加新表的过程中,原来不需要变更的条目也会进行一次先删除后添加的过程,此过程持续时间长短取决于删除与添加表项条目总数大小,但即使条目总数为2,持续时间极短,对于40G、100G的网络环境中也会引起网络震荡,降低网络安全性,当变更条目多时,大量突发的报文就会引起更加严重的后果。
发明内容
本发明实施例提供了一种三态内容寻址存储器TCAM表项处理方法及装置,以至少解决相关技术中TCAM表项更新时引起的网络震荡的问题。
根据本发明的一个实施例,提供了一种三态内容寻址存储器TCAM表项处理方法,包括:根据用户需求获取第一TCAM表项;比较所述第一TCAM表项和本地存储的第二TCAM表项,确定所述第一TCAM表项中的条目信息与所述第二TCAM表项中的条目信息的匹配的状态;根据所述状态对所述第二TCAM表项进行处理。
可选地,比较所述第一TCAM表项和本地存储的所述第二TCAM表项包括:获取所述第二TCAM表项的预定条目信息;查找所述第一TCAM表项中是否存在与所述预定条目信息相同的条目信息;如果不存在,则标记所述预定条目信息为删除状态,所述删除状态用于指示处理过程中在所述第二TCAM表项中删除所述预定条目信息;如果存在,则标记所述预定条目信息为维持状态,所述维持状态用于指示处理过程中在所述第二TCAM表项中维持所述预定条目信息不变。
可选地,比较所述第一TCAM表项和本地存储的所述第二TCAM表项包括:查找所述第一TCAM表项中不包含在所述第二TCAM表项中的条目信息;将所述不包含在所述第二TCAM表项中的条目信息标记为添加状态,所述添加状态用于指示处理过程中在所述第二TCAM表项中添加不包含在所述第二TCAM表项中的条目信息。
可选地,对所述第二TCAM表项进行处理包括:获取标记有添加状态的条目信息的优先级;根据所述优先级确定所述标记有添加状态的条目信息写入所述第二TCAM表项中的位置;将所述标记有添加状态的条目信息写入所述确定的位置。
可选地,将所述标记有添加状态的条目信息写入所述确定的位置包括:获取所述确定的位置相对于所述第二TCAM表项的表头的第一距离和所述确定的位置相对于所述第二TCAM表项的表尾的第二距离;在确定所述第一距离小于所述第二距离时,向所述表头侧上移所述第二TCAM表项中表头和所述确定位置之间的和所述确定位置上的已存在的条目信息,并将标记有添加状态的条目信息写入所述确定的位置;在确定所述第一距离大于等于所述第二距离时,向所述表尾侧下移所述第二TCAM表项中表尾和所述确定位置之间的和所述确定位置上的已存在的条目信息,并将标记有添加状态的条目信息写入确定的位置。
可选地,在将标记有添加状态的条目信息写入确定的位置之前,还包括:确定将标记有添加状态的条目信息写入确定的位置时所需搬移的条目信息需要搬移到的目标位置;将所需搬移的条目信息搬移到目标位置;将标记有添加状态的条目信息写入确定的位置。
可选地,对第二TCAM表项进行处理包括:根据删除状态,确定需要删除的条目信息;在第二TCAM表项中删除需要删除的条目信息。
根据本发明的另一个实施例,还提供了一种三态内容寻址存储器TCAM表项处理装置,包括:获取模块,用于根据用户需求获取第一TCAM表项;比较模块,用于比较所述第一TCAM表项和本地存储的第二TCAM表项;处理模块,用于根据比较结果对所述第二TCAM表项进行处理。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,根据用户需求获取第一TCAM表项;比较第一TCAM表项和本地存储的第二TCAM表项,确定所述第一TCAM表项中的条目信息与所述第二TCAM表项中的条目信息的匹配的状态;根据所述状态对第二TCAM表项进行处理。由于比较第一TCAM表项和本地存储的第二TCAM表项,确定第一TCAM表项中的条目信息与第二TCAM表项中的条目信息的匹配的状态,进而根据该状态对第二TCAM表项进行处理,使得只需更新第二TCAM表项中与第一TCAM表项不同的条目信息,而无需变化的表项条目可以在第二TCAM表项中始终存在,避免了通过删除全部第二TCAM表项,下发新表项的方式造成的网络震荡,因此,可以解决相关技术中TCAM表项更新时引起的网络震荡的问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明实施例的一种三态内容寻址存储器TCAM表项处理方法的移动终端的硬件结构框图;
图2是根据本发明实施例的三态内容寻址存储器TCAM表项处理方法的流程图;
图3是根据本发明实施例的资源表项管理装置基本模块流程图;
图4是根据本发明实施例的软件比较模块基本流程图;
图5是根据本发明实施例的TCAM中已经存在的硬件表项;
图6是根据本发明实施例的添加一个条目的示意图;
图7是根据本发明实施例的删除一个条目的示意图;
图8是根据本发明实施例的ACL规则插入流程图;
图9是根据本发明实施例的ACL规则删除或更新流程图;
图10是根据本发明实施例的三态内容寻址存储器TCAM表项处理装置的结构框图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
现今的网络设备中,大多都需要实现访问控制列表(Access Control List,简称为ACL),这些技术中最关键部分就是规则匹配,但是因为规则中的字段很多,匹配方式也不同,所以当规则很多时,匹配速度就成了性能瓶颈。现以ACL举例,传统的ACL由五元组构成:源IP地址,目的IP地址,源端口号,目的端口号,协议。一般的实现中,IP地址使用前缀匹配,协议使用精确匹配,而端口则使用范围匹配。目前实现ACL主要有两种途径,一种是使用软件实现,最典型的就是RFC(Recursive Flow Classification)算法;另一种就是使用硬件实现,最典型的就是TCAM。当然硬件实现肯定比软件快很多,尤其是在一些高速网络中,一般都使用硬件进行加速。因此,本发明中主要论述ACL方面的TCAM表项处理的技术,上述技术可以应用在路由器,交换机,防火墙,入侵检测系统等网络设备。
实施例1
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本发明实施例的一种三态内容寻址存储器TCAM表项处理方法的移动终端的硬件结构框图。如图1所示,移动终端10可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述移动终端的结构造成限定。例如,移动终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的三态内容寻址存储器TCAM表项处理方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于上述移动终端的三态内容寻址存储器TCAM表项处理方法,图2是根据本发明实施例的三态内容寻址存储器TCAM表项处理方法的流程图,如图2所示,该流程包括如下步骤:
步骤S202,根据用户需求获取第一TCAM表项;
步骤S204,比较第一TCAM表项和本地存储的第二TCAM表项,确定第一TCAM表项中的条目信息与第二TCAM表项中的条目信息的匹配的状态;
步骤S206,根据上述状态对第二TCAM表项进行处理。
通过上述步骤,由于比较第一TCAM表项和本地存储的第二TCAM表项,确定第一TCAM表项中的条目信息与第二TCAM表项中的条目信息的匹配的状态,进而根据该状态对第二TCAM表项进行处理,使得只需更新第二TCAM表项中与第一TCAM表项不同的条目信息,而无需变化的表项条目可以在第二TCAM表项中始终存在,避免了通过删除全部第二TCAM表项,下发新表项的方式造成的网络震荡,因此,可以解决相关技术中TCAM表项更新时引起的网络震荡的问题。
可选地,上述TCAM表项中存在若干条目,此时如果需要更新TCAM表项,则可以通过软件记录新表项所有条目信息。
可选地,更新后的TCAM表项可以包括新增若干条目,删除已有条目,更改已有条目以及维持原有条目四种情况;而解析到硬件下发层则可以分为添加、删除和维持原有硬件表项三种情况;因此,需要将更新后的新表与TCAM中已存在的旧表对应的软件记录进行比较,对比下发的优先级相同的硬件表项是否相同,以便对已存在的旧表进行处理。
例如,比较第一TCAM表项和本地存储的第二TCAM表项包括:获取第二TCAM表项的预定条目信息;查找第一TCAM表项中是否存在与预定条目信息相同的条目信息;如果不存在,则标记预定条目信息为删除状态,删除状态用于指示处理过程中在第二TCAM表项中删除预定条目信息;如果存在,则标记预定条目信息为维持状态,维持状态用于指示处理过程中在第二TCAM表项中维持预定条目信息不变。
又例如,比较第一TCAM表项和本地存储的第二TCAM表项包括:查找第一TCAM表项中不包含在第二TCAM表项中的条目信息;将不包含在第二TCAM表项中的条目信息标记为添加状态,添加状态用于指示处理过程中在第二TCAM表项中添加不包含在第二TCAM表项中的条目信息。
又例如,比较第一TCAM表项和本地存储的第二TCAM表项包括:获取第二TCAM表项的预定条目信息还可以包括:对于旧表(第二TCAM表项)中的每条数据信息,查找相同优先级的新表中是否存在,如果不存在,则为需要删除的表项条目,标记为删除硬件表项的状态;如果存在,再与硬件下发的内容(即第一TCAM表项中对应表项条目的内容)比较是否相同,相同时,则为不需要变更的条目,标记为维持原有硬件表项的状态;若不同,则为需要变更的条目,在新表中标记为添加硬件表项的状态同时在旧表中标记为删除硬件表项的状态;新表中未被查找到的条目默认设置为需要添加的硬件条目。
可选地,对第二TCAM表项进行处理包括:获取标记有添加状态的条目信息的优先级;根据优先级确定标记有添加状态的条目信息写入第二TCAM表项中的位置;将标记有添加状态的条目信息写入确定的位置。
可选地,将标记有添加状态的条目信息写入确定的位置包括:获取确定的位置相对于第二TCAM表项的表头的第一距离和确定的位置相对于第二TCAM表项的表尾的第二距离;在确定第一距离小于第二距离时,向表头侧上移第二TCAM表项中表头和确定位置之间的和确定位置上的已存在的条目信息,并将标记有添加状态的条目信息写入确定的位置;在确定第一距离大于等于第二距离时,向表尾侧下移第二TCAM表项中表尾和确定位置之间的和确定位置上的已存在的条目信息,并将标记有添加状态的条目信息写入确定的位置。
例如,新下发的表项中被标记为添加状态的条目需要写入硬件表项(第二TCAM表项),根据条目对应的优先级确定其在表项中的写入位置,然后计算出所述写入位置相对于表尾需要上移的条目数和所述写入位置相对于表头下移的条目数,确定是需要上移已存在的条目或是下移已存在的条目(移动的规则是基于最少移动次数),并在TCAM中找到合适位置区域块。
可选地,移动TCAM硬件条目时,可以先在新的位置复制一份需要搬移的硬件表项条目,然后再删除旧的表项条目,再然后移动新位置上的硬件表项条目到合适的位置;
可选地,可以在空出的位置添加被标记为添加状态的硬件表项条目(即条目信息),然后,将标记为需要删除的硬件表项条目进行删除。
需要说明的是,上述实施例的基本思想是:通过更改TCAM表项更新的方法,即无需变化的表项条目在表项更新过程中始终存在,需要变更的表项条目遵循先添加后删除的原则,确保在TCAM表项更新的过程中外界不受感知,避免网络震荡,提高网络性能。
可选地,在将标记有添加状态的条目信息写入确定的位置之前,还包括:确定将标记有添加状态的条目信息写入确定的位置时所需搬移的条目信息需要搬移到的目标位置;将所需搬移的条目信息搬移到目标位置;将标记有添加状态的条目信息写入确定的位置。通过上述步骤,可以防止插入某条条目信息后将附近已生效条目搬移以后,再插入另一段条目信息时又需要将这些已生效条目再次搬移。
例如,在需要添加的条目信息数目至少为2时,可以通过对平台新条目信息(即第一TCAM表项中的条目信息)和老条目信息(即第二TCAM表项中的条目信息)的对比,系统获取到的需要插入的条目信息可能为不连续的多条信息。为了防止插入某条条目信息后将附近已生效条目搬移以后,再插入另一段条目信息时又需要将这些已生效条目再次搬移,因此,根据所述优先级确定所述标记有添加状态的条目信息写入所述第二TCAM表项中的位置包括但不限于:根据优先级计算出所有添加的条目信息申请到的优先级对应的优先级位置,根据该优先级位置确定附近已生效条目信息最终需要搬移到的优先级位置,然后,再执行条目信息的添加与搬移工作。通过上述方式,可以保证插入新条目信息需要的搬移操作较少,插入、删除、更新操作处理速度较快。
可选地,对第二TCAM表项进行处理包括:根据删除状态,确定需要删除的条目信息;在第二TCAM表项中删除需要删除的条目信息。通过上述步骤,不需要搬移附近已生效条目信息,可以防止反复删除某些条目信息导致震荡。
例如,确定需要删除的条目信息后,可以直接删除并释放优先级位置编号到空闲优先级位置资源池。因此,不需要搬移附近已生效条目信息,可以防止反复插入删除某些条目信息导致震荡,需要说明的是,当前所有已生效条目信息的优先级可能并不一定是连续的。
可选地,在确定需要更新的条目信息,获取该已生效条目信息的优先级编号,然后更新对应编号的结果动作表即可。
下面通过附图及具体实施例对本发明再做进一步的详细说明。
本发明实施例提供一种基于内容查找方法的资源表项管理的方法,图3是根据本发明实施例的资源表项管理装置基本模块流程图,如图3所示,该装置包括以下3个模块:
用户配置模块101,用于下发用户配置的TCAM表项内容,解析出表项信息,写入软件记录,用于后续与TCAM中已存在的表项进行比较及硬件下发等;
软件比较模块102,用于通过查找比较的方法,比较新旧表项条目信息,标记出需要添加、删除以及维持不变的条目,用于后续更新硬件表项。
更新硬件表项模块103,包括搬移、复制、添加、删除几个过程,在确定新插入的表项条目插入的位置后,搬移是为了给新插入的表项条目空出位置;在搬移过程中复制不需要变更的条目确保在搬移的过程中不会引起网络震荡,复制后删除原条目;然后添加新的硬件条目,删除被标记为需要删除的硬件条目。
软件比较模块基本流程图如图4所示,该模块执行处理包括以下7个步骤:
步骤401:获取用户更新后的表项信息,记为B表,再根据更新的表项索引获取TCAM表项中存在的旧表对应的软件记录,记为A表;
步骤402:遍历A表,以表项条目优先级为key查找B表,如果查找到,转步骤403,否则转步骤404;
步骤403:B表中存在与A表中同一优先级的条目,比较需要匹配的内容是否相同,相同时,说明更新后的表项中仍需存在该条目,转步骤405,否则转步骤406;
步骤404:B表中不存在与A表中同一优先级的条目,说明更新后的新表项中没有此优先级对应的条目,需要将其删除,在A表中标记该条目为Delete状态,此条比较结束,继续下一条比较;
步骤405:将A表中标记该条目为Reserve状态,后续写硬件表项时不再更新该条目,B表中直接删除此条软件记录;此条比较结束,继续下一条比较;
步骤406:B表中存在与A表中同一优先级的条目,但是下发的内同不同,此条目内容需要变更,在A表中标记该条目为Delete状态,B表中标记为Add状态,此条比较结束,继续下一条比较;
步骤407:当A表中所有条目均遍历后,比较结束,同时B表中存在,而A表不存在的条目在整个遍历过程中未被标记,默认为Add状态。
更新硬件表项模块包括添加和删除两个过程,但是由于添加时需要在合适的位置插入,因此涉及到搬移其它条目的过程;删除时需要将空出的位置重新填充为低优先级的条目,所以也需要涉及到搬移的过程。如图5所示,为TCAM中已经存在的硬件表项,假设有n条,优先级顺序逐渐降低。
图6是根据本发明实施例的添加一个条目的示意图,如图6所示,其展示了添加一个条目时的过程:
在第k-1条与第k条之间添加一个条目,比较向上搬移次数(k次)与向下搬移次数(n-k+1),取最小值的方向搬移。
步骤601:假设(n-k+1)<=k,向下搬移,在第n+1位置复制第n条,同时将第n条查找标识置为invalid,表示该条已删除,在第n条的位置复制第n-1条,置invalid标识,以此类推,直到空出k位置;
步骤602:在第k位置写入需要添加的条目。
图7是根据本发明实施例的删除一个条目的示意图,如图7所示,该过程包括:
步骤701:删除第k条时,直接将第k条查找标识置为invalid,然后
步骤702:与添加时搬移过程类似,通过逐条复制的方法将空出的第k个位置填充。
需要说明的是,TCAM是一种专用三态内容可寻址存储器,可以进行快速大量并行搜索。搜索的时候,存储器中所有的条目同时与搜索关键字比较,搜索结果就是匹配项的物理地址。在进行条目匹配时,条目的每个位可以是0,1,x三种状态,如果是x,那么该位不参与比较,默认是成功,否则关键字和条目的相应位进行比较,如果相同则成功否则失败。在比较过程中,如果某位不匹配,那么该条目匹配失败;如果所有位都匹配,那么该条目匹配成功。
TCAM硬件的固有特性使得TCAM非常适合进行精确匹配和前缀匹配,这时可以使用TCAM直接表示这些字段。比如MAC地址表、MPLS(多协议标签交换)转发表就是精确匹配,而IPv4/v6路由表则是前缀匹配。但是当TCAM用于范围匹配时,比如TCP/UDP端口范围,那么这时就无法简单的直接表示这些字段。而本发明实施例对于ACL规则中的TCP/UDP端口范围采用前缀扩展方式分解为多条规则。本系统实现了全量式下发ACL规则,通过新旧数据比较获取到增量ACL规则数据,实现ACL规则数据前缀扩展分解后的带优先级管理,包括插入、删除、更新操作,同时处理过程中已有的ACL规则依据优先级持续生效,插入操作时保证ACL规则的优先级关系所做的搬移操作(已生效ACL规则条目的先增加后删除)尽量少。
本发明实施例提供了一种ACL快速更新方法,主要包括如下4个部分:
(1)系统资源初始化
系统获取前缀扩展分解后的增量ACL规则数据,利用HASH表管理ACL规则唯一标识RULEID和优先级的对应关系,HASH表中不会存放重复的RULEID,所以一张ACL表中支持多个WORKTYPE重复RULEID有多个HASH表。对于已经生效的ACL规则可以通过RULEID查找到它的优先级。ACL规则内容存放在数组中,而数组索引是优先级,由于优先级的唯一性一张ACL表只需要一个ACL规则内容数组。可以通过优先级查找到ACL规则内容。
对于容量为M的ACL表来说,优先级范围是1-M,管理方式是多个双向链表和数组,所有的优先级1-M都在一个数组中。由于不同WORKTYPE、LRID和ACLNO的ACL规则之间都没有优先级先后关系,所以需要放在不同的链表中维护,在ACL插入流程中只需要考虑本双向链表中的节点搬移,减少搬移次数。
(2)增量ACL规则的插入流程
如图8所示,插入操作输入数据的基本格式是,在指定WORKTYPE、LRID和ACLNO的RULEID X规则之后插入n条新规则,RULEID分别是Y1Y2...Yn。入参合法性判断,Rule X需要在WORKTYPE对应的HASH表中,Rule Y1Y2...Yn不能存在于HASH表中。根据指定WORKTYPE、LRID和ACLNO找到对应双向链表,Rule X需要存在于双向链表中。以Rule X的优先级索引M为中心,其左右两个方向的双向链表中的节点对应优先级索引分别为L1L2...Ln和R1R2...Rn。如果在M之后插入n条ACL规则,M和R1之间的空闲优先级足够的话就可以直接写入不需要有搬移操作。如果空闲优先级不够这需要在L1和M以及R1和R2之间继续寻找空闲优先级,插入同时就要对M或者R1优先级对应ACL规则做搬移操作。为了搬移最少链表上的优先级节点,需要计算出L1-L2L2-L3...Ln-1-Ln以及R1-R2R2-R3...Rn-1-Rn之间空闲优先级个数,从低位往高位逐级累加优先级总数以超过需要插入的ACL规则格式为达到要求,然后在达到要求的所有累加组合中选择累加级数最少的,这样操作在单次插入中需要搬移的优先级节点就最少。
(3)增量ACL规则的删除流程
如图9所示,删除操作输入数据的基本格式是,删除指定WORKTYPE、LRID和ACLNO的RULEID Y1Y2...Yn规则。入参合法性判断,Rule Y1Y2...Yn需要在WORKTYPE对应的HASH表中。根据指定WORKTYPE、LRID和ACLNO找到对应双向链表,Rule Y1Y2...Yn需要存在于双向链表中。根据Rule Y1Y2...Yn的优先级索引执行删除操作,包括从HASH表和双向链表中删除对应数据。
(4)增量ACL规则的更新流程
如图2所示,更新操作输入数据的基本格式是,更新指定WORKTYPE、LRID和ACLNO的RULEID Y1Y2...Yn规则。入参合法性判断,Rule Y1Y2...Yn需要在WORKTYPE对应的HASH表中。根据指定WORKTYPE、LRID和ACLNO找到对应双向链表,Rule Y1Y2...Yn需要存在于双向链表中。根据Rule Y1Y2...Yn的优先级索引执行更新操作。
采用上述实施例的方法可以有效的实现TCAM的ACL带优先级管理操作。本发明实施例不仅可以支持ACL,同时还可以扩展到QoS和BGP Flowspec。,需要说明的是,上述实施例方法可以支持多个无优先级先后关系的ACL组合在一张表中处理,处理过程中已有的ACL规则依据优先级持续生效,插入新ACL条目需要的搬移操作较少,插入、删除、更新操作处理速度较快等。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种三态内容寻址存储器TCAM表项处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图10是根据本发明实施例的三态内容寻址存储器TCAM表项处理装置的结构框图,如图10所示,该装置包括:
获取模块102(相当于上述用户配置模块101),用于根据用户需求获取第一TCAM表项;
比较模块104(相当于上述软件比较模块102),连接至上述获取模块102,用于比较第一TCAM表项和本地存储的第二TCAM表项,确定所述第一TCAM表项中的条目信息与所述第二TCAM表项中的条目信息的匹配的状态;
处理模块106(相当于上述更新硬件表项模块103),连接至上述比较模块104,用于根据所述状态对第二TCAM表项进行处理。
可选地,比较模块104,还用于获取第二TCAM表项的预定条目信息;查找第一TCAM表项中是否存在与预定条目信息相同的条目信息;如果不存在,则标记预定条目信息为删除状态,删除状态用于指示处理过程中在第二TCAM表项中删除预定条目信息;如果存在,则标记预定条目信息为维持状态,维持状态用于指示处理过程中在第二TCAM表项中维持预定条目信息不变。
可选地,比较模块104,还用于查找第一TCAM表项中不包含在第二TCAM表项中的条目信息;以及将不包含在第二TCAM表项中的条目信息标记为添加状态,添加状态用于指示处理过程中在第二TCAM表项中添加不包含在第二TCAM表项中的条目信息。
可选地,本发明实施例还提供了一种基于内容查找方法的表项资源管理装置,包括:
用户配置模块,下发用户需要的TCAM表项内容;
软件比较模块,比较用户新下发的条目与TCAM表项中已存在条目,标记出需要添加、删除和维持不变的条目;
写入硬件驱动模块(相当于上述更新硬件表项模块103),确定需要添加条目的位置同时搬移已经存在的TCAM硬件表项,然后写入需要添加的硬件条目并且删除被标记为需要删除的硬件条目。
本发明实施例通过只更新需要变更的TCAM软件条目并且插入新的表项条目时,先将旧的条目复制一份的方法,保证TCAM表项更新过程中不会出现网络震荡,提供网络安全性能。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
实施例3
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,根据用户需求获取第一TCAM表项;
S2,比较第一TCAM表项和本地存储的第二TCAM表项,确定第一TCAM表项中的条目信息与第二TCAM表项中的条目信息的匹配的状态;
S3,根据上述状态对第二TCAM表项进行处理。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。可选地,将图1中的存储器104作为该电子装置中的一种存储器的一种示例。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,根据用户需求获取第一TCAM表项;
S2,比较第一TCAM表项和本地存储的第二TCAM表项,确定所述第一TCAM表项中的条目信息与所述第二TCAM表项中的条目信息的匹配的状态;
S3,根据上述状态对第二TCAM表项进行处理。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种三态内容寻址存储器TCAM表项处理方法,其特征在于,用于实现访问控制列表ACL,所述方法包括:
根据用户需求获取第一TCAM表项;
比较所述第一TCAM表项和本地存储的第二TCAM表项,确定所述第一TCAM表项中的条目信息与所述第二TCAM表项中的条目信息的匹配的状态;
根据所述状态,对所述第二TCAM表项进行处理;
比较所述第一TCAM表项和本地存储的所述第二TCAM表项包括:
获取所述第二TCAM表项的预定条目信息;
查找所述第一TCAM表项中是否存在与所述预定条目信息相同的条目信息;
如果不存在,则标记所述预定条目信息为删除状态,所述删除状态用于指示处理过程中在所述第二TCAM表项中删除所述预定条目信息;
如果存在,则标记所述预定条目信息为维持状态,所述维持状态用于指示处理过程中在所述第二TCAM表项中维持所述预定条目信息不变。
2.根据权利要求1所述的方法,其特征在于,比较所述第一TCAM表项和本地存储的所述第二TCAM表项包括:
查找所述第一TCAM表项中不包含在所述第二TCAM表项中的条目信息;
将所述不包含在所述第二TCAM表项中的条目信息标记为添加状态,所述添加状态用于指示处理过程中在所述第二TCAM表项中添加不包含在所述第二TCAM表项中的条目信息。
3.根据权利要求2所述的方法,其特征在于,对所述第二TCAM表项进行处理包括:
获取标记有添加状态的条目信息的优先级;
根据所述优先级确定所述标记有添加状态的条目信息写入所述第二TCAM表项中的位置;
将所述标记有添加状态的条目信息写入所述确定的位置。
4.根据权利要求3所述的方法,其特征在于,将所述标记有添加状态的条目信息写入所述确定的位置包括:
获取所述确定的位置相对于所述第二TCAM表项的表头的第一距离和所述确定的位置相对于所述第二TCAM表项的表尾的第二距离;
在确定所述第一距离小于所述第二距离时,向所述表头侧上移所述第二TCAM表项中表头和所述确定位置之间的和所述确定位置上的已存在的条目信息,并将标记有添加状态的条目信息写入所述确定的位置;
在确定所述第一距离大于等于所述第二距离时,向所述表尾侧下移所述第二TCAM表项中表尾和所述确定位置之间的和所述确定位置上的已存在的条目信息,并将标记有添加状态的条目信息写入确定的位置。
5.根据权利要求3所述的方法,其特征在于,在所述将所述标记有添加状态的条目信息写入所述确定的位置之前,还包括:
确定将所述标记有添加状态的条目信息写入所述确定的位置时所需搬移的条目信息需要搬移到的目标位置;
将所述所需搬移的条目信息搬移到所述目标位置;
将所述标记有添加状态的条目信息写入所述确定的位置。
6.根据权利要求1所述的方法,其特征在于,所述对所述第二TCAM表项进行处理包括:
根据所述删除状态,确定需要删除的条目信息;
在所述第二TCAM表项中删除所述需要删除的条目信息。
7.一种三态内容寻址存储器TCAM表项处理装置,其特征在于,用于实现访问控制列表ACL,所述装置包括:
获取模块,用于根据用户需求获取第一TCAM表项;
比较模块,用于比较所述第一TCAM表项和本地存储的第二TCAM表项,确定所述第一TCAM表项中的条目信息与所述第二TCAM表项中的条目信息的匹配的状态;
处理模块,用于根据所述状态对所述第二TCAM表项进行处理;
比较所述第一TCAM表项和本地存储的所述第二TCAM表项包括:
获取所述第二TCAM表项的预定条目信息;
查找所述第一TCAM表项中是否存在与所述预定条目信息相同的条目信息;
如果不存在,则标记所述预定条目信息为删除状态,所述删除状态用于指示处理过程中在所述第二TCAM表项中删除所述预定条目信息;
如果存在,则标记所述预定条目信息为维持状态,所述维持状态用于指示处理过程中在所述第二TCAM表项中维持所述预定条目信息不变。
8.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至6任一项中所述的方法。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至6任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810565576.0A CN110557335B (zh) | 2018-06-04 | 2018-06-04 | 三态内容寻址存储器tcam表项处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810565576.0A CN110557335B (zh) | 2018-06-04 | 2018-06-04 | 三态内容寻址存储器tcam表项处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110557335A CN110557335A (zh) | 2019-12-10 |
CN110557335B true CN110557335B (zh) | 2022-06-17 |
Family
ID=68735995
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810565576.0A Active CN110557335B (zh) | 2018-06-04 | 2018-06-04 | 三态内容寻址存储器tcam表项处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110557335B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114124421B (zh) * | 2020-08-31 | 2024-04-12 | 深圳市中兴微电子技术有限公司 | Acl规则处理方法、装置、计算机设备和可读介质 |
CN113901274B (zh) * | 2021-09-10 | 2023-03-21 | 锐捷网络股份有限公司 | 一种移动tcam表项的方法、装置、设备及介质 |
CN117278341A (zh) * | 2023-11-23 | 2023-12-22 | 成都卓拙科技有限公司 | Acl规则更新方法、装置、设备及存储介质 |
CN117312176B (zh) * | 2023-11-30 | 2024-02-23 | 深圳市楠菲微电子有限公司 | 一种基于uvm的芯片验证测试方法、系统及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866357A (zh) * | 2010-06-11 | 2010-10-20 | 福建星网锐捷网络有限公司 | 一种三态内容寻址存储器的表项更新方法及装置 |
CN102035727A (zh) * | 2010-11-17 | 2011-04-27 | 杭州华三通信技术有限公司 | 一种路由的处理方法和设备 |
CN102291296A (zh) * | 2011-08-04 | 2011-12-21 | 中兴通讯股份有限公司 | 一种路由表的更新方法及系统 |
CN106713132A (zh) * | 2016-11-23 | 2017-05-24 | 华为技术有限公司 | 用于更新转发表项的方法和装置 |
CN107168900A (zh) * | 2017-05-26 | 2017-09-15 | 杭州迪普科技股份有限公司 | 一种配置acl表项的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8300525B1 (en) * | 2009-01-30 | 2012-10-30 | Juniper Networks, Inc. | Managing a flow table |
-
2018
- 2018-06-04 CN CN201810565576.0A patent/CN110557335B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101866357A (zh) * | 2010-06-11 | 2010-10-20 | 福建星网锐捷网络有限公司 | 一种三态内容寻址存储器的表项更新方法及装置 |
CN102035727A (zh) * | 2010-11-17 | 2011-04-27 | 杭州华三通信技术有限公司 | 一种路由的处理方法和设备 |
CN102291296A (zh) * | 2011-08-04 | 2011-12-21 | 中兴通讯股份有限公司 | 一种路由表的更新方法及系统 |
CN106713132A (zh) * | 2016-11-23 | 2017-05-24 | 华为技术有限公司 | 用于更新转发表项的方法和装置 |
CN107168900A (zh) * | 2017-05-26 | 2017-09-15 | 杭州迪普科技股份有限公司 | 一种配置acl表项的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN110557335A (zh) | 2019-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110557335B (zh) | 三态内容寻址存储器tcam表项处理方法及装置 | |
CN110301120B (zh) | 流分类装置、方法和系统 | |
US8090901B2 (en) | TCAM management approach that minimize movements | |
US7509674B2 (en) | Access control listing mechanism for routers | |
US7058642B2 (en) | Method and data structure for a low memory overhead database | |
US7774538B2 (en) | Method for ternary contents address memory table management | |
US10148571B2 (en) | Jump on a match optimization for longest prefix match using a binary search tree | |
EP3777055B1 (en) | Longest prefix matching | |
US10284472B2 (en) | Dynamic and compressed trie for use in route lookup | |
US7327727B2 (en) | Atomic lookup rule set transition | |
CN107528783B (zh) | 利用对前缀长度进行两个搜索阶段的ip路由缓存 | |
US8059658B1 (en) | Method and system for automatic expansion and contraction of IP host forwarding database | |
EP3661153B1 (en) | Building decision tree for packet classification | |
US20030056001A1 (en) | Selective routing of data flows using a TCAM | |
US20120127997A1 (en) | Method for optimizing a network prefix-list search | |
JP2007202152A (ja) | ルーティングシステム及びルーティングシステムのルールエントリー管理方法 | |
EP3280104B1 (en) | Ip routing lookup | |
US10616113B2 (en) | Longest prefix match using a binary search tree with compressed hash tables | |
CN106487769B (zh) | 一种访问控制列表acl的实现方法及装置 | |
US10515015B2 (en) | Hash table-based mask length computation for longest prefix match caching | |
US10897422B2 (en) | Hybrid routing table for routing network traffic | |
US10546018B2 (en) | System and method of coalescing writes to a hardware table in a non-disruptive fashion | |
CN106789727B (zh) | 报文分类方法和装置 | |
CN109688126B (zh) | 一种数据处理方法、网络设备及计算机可读存储介质 | |
CN113660165A (zh) | 一种基于tcam的掩码规则匹配方法、电子设备和存储介质 |
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 |