CN107800631B - 使用ram中的散列表的tcam规则的有效匹配的方法和装置 - Google Patents
使用ram中的散列表的tcam规则的有效匹配的方法和装置 Download PDFInfo
- Publication number
- CN107800631B CN107800631B CN201710786696.9A CN201710786696A CN107800631B CN 107800631 B CN107800631 B CN 107800631B CN 201710786696 A CN201710786696 A CN 201710786696A CN 107800631 B CN107800631 B CN 107800631B
- Authority
- CN
- China
- Prior art keywords
- rule
- rules
- matching
- hash
- given
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- 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
-
- 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]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1006—Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
- G11C7/1009—Data masking during input/output
Abstract
一种包括从数据项目集合中提取分类密钥的方法。接收用于与分类密钥匹配的规则的语料库,每个规则包括一组相应的具有相应比特值的的未掩码比特,并且至少一些规则还包括掩码比特。从语料库提取规则模式,每个规则模式定义一个或多个规则符合的掩码和未掩码比特的相应序列。在RAM中定义多个散列表,每个散列表用于搜索与给定分类密钥相匹配的规则。给定散列表中给定规则的匹配结果也指示其他散列表中的哪一个将用于后续搜索。通过使用一个或多个散列表将相应的分类密钥与规则相匹配,来对数据项目进行分类。
Description
技术领域
本文描述的实施方式大体涉及网络通信,尤其涉及用于网络元件中的分类规则的有效存储和查找的方法和系统。
背景技术
需要高速数据网络中的数据包传输设备(如交换机和路由器)高速执行灵活且复杂的数据包分类。为此,许多交换机和路由器使用三态内容寻址存储器(TCAM)组件来存储要在处理数据包中应用的规则。为了搜索TCAM,数据包的多个字段(通常是标题字段)被连接以形成密钥。密钥和给定的TCAM条目之间的匹配可以用于触发网络设备中的各种动作,例如转发决定,数据包封装和解封装,安全过滤和服务质量的分类。
TCAM的有利之处在于:它能够保存搜索条目,其不仅包含与密钥匹配的一和零,而且还可以包含在密钥中与零或一匹配的“无关”比特。 TCAM条目中的这些“无关”比特通常被称为“掩码”比特,而具有定义值(1或0)的比特被称为“未掩码”比特。因此,TCAM在规则定义中提供了高度的灵活性。然而,相对于这些优点,TCAM在能耗和芯片面积方面是昂贵的,并且这些成本有效地限制了单个网络设备可以支持的规则数量。
发明内容
这里描述的实施方式提供了一种方法,包括从数据项目集合中提取分类密钥。接收用于与分类密钥匹配的规则的语料库,每个规则包括具有对应比特值的一组相应的未掩码比特,并且至少一些规则还包括掩码比特。从语料库提取规则模式,每个规则模式定义一个或多个规则符合的掩蔽和未掩码比特的相应序列。多个散列表在RAM中定义,每个散列表用于搜索与给定分类密钥相匹配的规则。给定散列表中给定规则的匹配结果也指示其他散列表中的哪一个将用于后续搜索。通过使用一个或多个散列表将各自的分类密钥与规则相匹配,由此对数据项目进行分类。
在一些实施方式中,匹配分类密钥包括根据各自的规则模式从分类密钥中提取未掩码比特的比特串,以及使用提取的未掩码比特的比特串搜索散列表中的匹配规则。在其他实施方式中,规则被分配各自的规则优先级,并且匹配分类密钥包括:基于匹配规则的规则优先级,从与给定分类密钥匹配并符合不同的各自规则模式的多个匹配规则中选择结果规则。在其他实施方式中,定义散列表包括:从根据给定规则随后搜索的其他散列表中,排除其整个规则与匹配给定规则的任何分类密钥不匹配的散列表。
在一个实施方式中,定义散列表包括:从根据给定规则随后搜索的其他散列表中,排除其规则都被分配给低于分配给给定规则的规则优先级的各自的规则优先级的散列表。在另一个实施方式中,定义散列表包括:基于分配给其他散列表的规则的规则优先级,确定其他散列表的扫描顺序。在另一个实施方式中,定义散列表包括:基于根据其他散列表中的规则要搜索的散列表的数量,确定其他散列表的扫描顺序。
在一些实施方式中,定义散列表包括:基于符合其他散列表的相应规则模式的规则的数量,确定其他散列表的扫描顺序。在其他实施方式中,定义散列表包括:为每个散列表中的规则分配一个或多个其他散列表的各自列表,以便在找到匹配规则时进行搜索,并响应于将规则添加到相应的给定散列表,包括基于添加的规则分配给其他散列表中的规则的列表中的给定散列表。在其他实施方式中,匹配分类密钥包括依次扫描多个散列表,并且基于先前发现的与分类密钥匹配的规则来适应散列表的扫描顺序。
根据本文所描述的实施方式,还提供了包括随机存取存储器(RAM) 和判定逻辑流水线的装置。RAM被配置为存储对应于规则语料库的散列表,每个规则包括具有相应比特值的一组相应的未掩码比特,并且至少一些规则除了包括未掩码比特之外,还包括掩码比特。规则符合各自的规则模式,每个规则模式定义一个或多个规则符合的不同的独立的掩码和未掩码比特的序列,并且每个散列表对应于相应的规则模式并且用于在符合该规则模式的规则中检索匹配给定的分类密钥的规则。在给定散列表中给定规则的匹配结果也指示其他散列表中的哪一个将被用于后续搜索匹配给定分类密钥的规则。判定逻辑流水线被配置为定义存储在 RAM中的散列表,从数据项目集合中提取相应的分类密钥,每个分类密钥包括一串比特,并且通过使用一个或多个散列表将相应的分类密钥和规则相匹配来对数据项目进行分类。
这些和其他实施方式将从结合附图的实施方式的下面详细描述中得到更充分的理解,其中:
附图说明
图1是示意性地示出根据本文所描述的实施方式的数据包交换机的框图;
图2是示意性地示出根据本文所描述的实施方式的用于规则匹配的判定逻辑的框图;
图3是示出根据本文所描述的实施方式的示例性规则匹配过程的示意图;
图4是示意性地示出根据本文所描述的实施方式的用于数据包分类的方法的流程图;
图5是示意性地示出根据本文所描述的实施方式的用于向匹配数据库添加规则的方法的流程图。
具体实施方式
综述
大规模的高速数据包网络,例如部署在现代数据中心中的那些,需要交换和转发元件来支持大量的用于数据包分类和处理的规则。新的网络管理标准和实践(如OpenFlow协议)正在推动需求,以增加网络元件实施的规则数量,并允许通过远程管理频繁修改规则。鉴于TCAM设备的成本、尺寸和功耗,需要基于RAM的数据包分类解决方案。基于RAM 的解决方案的优点在于,与致力于单一目的的TCAM相反,网络元件中的RAM可以在数据包分类和其他功能之间灵活共享。
本文描述的本发明的实施方式提供了使用存储在RAM中的规则条目来分类数据项目(例如数据包)的有效框架。所公开的实施方式包括以下组件:
·RAM(例如,静态RAM-SRAM),以存储可能与其他数据共享的大部分规则。
·小型的TCAM,以存储一小部分规则。
RAM中的规则被存储在匹配的数据库中,该数据库组织在对应于规则的相应的掩码和未掩码比特模式的相对较少数量的散列表中。通过使用散列表执行多个精确匹配查找,从而模拟类似TCAM的搜索。基于发现的匹配规则,省略了不相关规则模式的散列表中的搜索,从而实现更高的查找速率。
所公开的实施方式能够使用散列表精确匹配分类密钥。(散列表仅需要RAM,而不需要TCAM)。由于TCAM规则可以包括无关(“x”) 比特,因此它们不能直接用于精确匹配表中,因为散列函数通常不会映射所有将“x”比特与唯一的散列表条目匹配的规则。因此,在本实施方式中,仅使用未掩码的规则的比特(具有值“1”或“0”,而不是“x”) 将规则映射到RAM中的匹配表中的条目。该映射使用“规则模式”,其定义一个或多个规则符合的掩码和未掩码比特的序列。换句话说,将未掩码比特表示为“u”(其可以是“0”或“1”,但不是“x”),任何给定的规则模式由“u”比特的位置定义。然后可以使用“u”比特上的精确匹配来存储和检索属于规则模式的规则。
如果将整组规则模式用于匹配,则RAM中散列表的访问次数将随着规则模式的数量而增加,从而导致性能下降。所公开的实施方式以几种方式解决该问题:
·通过避免基于先前发现的匹配规则预期产生不匹配的规则模式。特殊标志也可以添加到规则中,以便在匹配不具有较高优先级的其他可能的匹配规则的规则时强制结束搜索。
·通过以可减少每个分类密钥扫描的散列表平均数量的顺序扫描散列表。
小型TCAM可用于临时存储新的规则,直到它们被并入到RAM中的匹配数据库中。属于具有少量规则的规则模式的规则也可以存储在 TCAM中。通常首先在RAM中查找每个密钥,并根据RAM查找的结果根据需要访问TCAM。
在一些所公开的实施方式中,网络元件或其他分类设备包括判定逻辑流水线。流水线从例如到达网络元件的数据包的数据项目集合中提取相应的分类密钥。每个分类密钥包括一串比特。在数据包分类中,例如,每个分类密钥包括从要分类的数据包的标题提取的一个或多个字段值。提供了一个规则的语料库,用于与分类密钥匹配,并从语料库中提取规则模式。如上所述,规则模式定义了一个或多个规则符合的掩码和未掩码比特的不同的相应序列。
使用规则模式计算与规则相对应的规则条目,并且这些规则条目存储在相应的散列表中。因此,所得到的数据结构包括一组散列表。组中的每个散列表对应于一个相应的规则模式(未掩码比特的唯一序列),并用于在符合该规则模式的规则中搜索与给定分类密钥相匹配的规则。散列表中给定规则的规则条目指示(可能除了其他参数之外)应当查找其他散列表中的哪一个以响应给定分类密钥与给定规则的匹配。
在本专利申请的上下文中并且在权利要求中,术语“指示哪个其他散列表将被搜索”是指肯定指示(例如,指定随后搜索的一个或多个散列表)或否定指示(例如,指定要删除且不搜索的一个或多个散列表) 或区分要搜索的散列表和要被删除且不搜索的散列表的任何其他指示。
判定逻辑流水线通过将各自的分类密钥与散列表中的规则条目相匹配来对数据项目进行分类。
注意:分类密钥可以匹配多个相应散列表中的多个规则。在一个实施方式中,基于分配给规则的规则优先级,判定逻辑从符合不同相应规则模式的多个匹配规则中选择结果规则。替代地或额外地,还可以使用用于选择结果规则的其他标准。
如上所述,规则条目指示在找到分类密钥和相应规则之间的匹配时应当查找其他散列表(或规则模式)中的哪一个。指定要搜索的散列表的具体方式取决于实施,并且许多实施是可能的。例如,在一些实施方式中,要搜索的散列表要肯定地指定。在这样的实施方式中,在编译规则和各自指定的散列表时考虑散列表的扫描顺序,使得之前跳过的散列表不会由于稍后发现的匹配规则而被查找。在其他实施方式中,匹配规则指定要从搜索中排除或删除的散列表。在这样的实施方式中,初始指定搜索所有散列表,并且当找到匹配规则时,从匹配规则指定的当前搜索中删除散列表。
在一些实施方式中,使用指示要搜索的当前指定的散列表的状态变量来执行扫描散列表。例如,状态变量可以指定要搜索的散列表,或者要删除且不搜索的散列表。当找到匹配规则时,状态变量将根据此匹配规则指定的散列表进行更新。
在一些实施方式中,给定规则指示的散列表(或相应的规则模式) 包括在一个在本文中也称为“RP列表”的列表中。可以使用任何合适的数据结构来实现RP列表。一般来说,指示为了匹配规则而要搜索的仅少量的散列表的RP列表是有利的。当在一些散列表中找到匹配规则时,其 RP列表用于遍历其他散列表,直到另一个散列表中发生另一个匹配,在这种情况下,RP列表被更新,或者直到整个RP列表被遍历。
为了构建给定规则的RP列表,将其他散列表中的规则与给定的规则进行比较。包含至少一个与匹配给定规则的密钥匹配的规则的散列表应包含在RP列表中。相反,如果所有与给定规则匹配的密钥在某些散列表中没有匹配规则,则该散列表可以从给定规则的RP列表中排除。在一些实施方式中,其规则的规则优先级比给定规则的规则优先级更低的散列表从给定规则的RP列表中排除。
在所公开的技术中,散列表通常一次一个地查找。散列表的扫描顺序通常对搜索效率有重大影响。在一些实施方式中,扫描顺序基于规则优先级。例如,在一个实施方式中,当找到具有给定优先级的匹配规则时,可以省略其规则的优先级比给定优先级低的散列表的查找。在一些实施方式中,扫描顺序基于填充各个散列表的规则的数量。从高度填充的散列表开始扫描可能是有利的,因为通常更有可能在高度填充的散列表中找到匹配规则。在一些实施方式中,基于RP列表的长度来确定扫描顺序,从而首先查找其规则具有短RP列表的散列表。在一些实施方式中,使用Bloom过滤器技术来缩短要扫描的散列表的初始列表。
向一些散列表添加新规则可能需要将此散列表添加到其他散列表中的规则的RP列表中。在一些实施方式中,响应于向给定散列表添加新规则,基于添加的规则,将所有其他散列表中的规则的RP列表更新为包括要搜索的给定散列表。在一些实施方式中,更新RP列表可能需要很长的时间,在此期间,即使当匹配规则的RP列表不包含给定的散列表时,也可以查找给定的散列表以响应寻找匹配规则。
在所公开的技术中,通过仅在散列表的部分子集中搜索匹配规则而不牺牲搜索精度来执行有效的规则查找。在典型的实际实施中,使用所公开的技术可以将搜索的散列表的数量减少一半。
系统描述
图1是示意性地示出了根据本发明的实施方式作为数据包分类装置运行的网络元件20的框图。通常,网络元件20被配置为网络交换机或路由器,例如,多个端口22连接到数据包通信网络。元件20内的判定逻辑24在端口22之间转发数据包26以及执行诸如封装和解封、安全过滤和/或服务质量功能的其他动作中应用分类规则。执行这种转发和其它功能所需的电路对于本领域技术人员来说将是显而易见的,为了简化起见,其在附图中省略,从而集中于判定逻辑24的实际分类功能。
在图示的实施方式中,判定逻辑24接收包含标题28和有效载荷数据30的数据包26。判决逻辑24中的处理流水线40从每个数据包26提取分类密钥,通常(尽管不是必须)包括标题28的某些字段的内容。例如,密钥可以包括源和目的地址和端口以及协议标识符。如下面详细描述的,流水线40将密钥与匹配数据库36匹配,该匹配数据库36包含在存储在网络元件20中的SRAM 32中的多个散列表中组织的一组规则条目。给定规则模式的散列表中的规则条目指示在相应规则匹配的情况下应当搜索哪个其他散列表(或规则模式)。如上所述,规则条目可以指定要确定搜索的散列表,或者替代地指定要从当前搜索中排除的散列表,如上所述。SRAM 32还包含当发现密钥与规则条目之一匹配时要执行的动作列表34。为此,每个规则条目通常包含一个指针,其指向在匹配的情况下逻辑24应用于数据包26的特定动作。
此外,网络元件20通常包括TCAM 38,其包含尚未被并入SRAM 32 中的匹配数据库36中的规则。TCAM 38可以包含如最近已经添加到网络元件20且未并入匹配数据库36的数据结构中的规则,和/或具有以低频率发生的规则模式的规则,从而将它们并入到匹配数据库36的数据结构中是不现实的。TCAM 38中的条目同样指向SRAM 32中的相应动作 34。流水线40可以将所有输入数据包26的分类密钥匹配到SRAM 32和 TCAM 38中的匹配数据库36。替代地,仅在给定分类密钥与数据库36 中的任何规则条目不匹配时,或者匹配规则条目指示(例如,基于指定标记的值)为了可能匹配到具有更高优先级的规则也应该检查TCAM 38时,可以访问TCAM38。
在一些实施方式中,类似于散列表的规则条目,TCAM中的规则条目指示要搜索的散列表。在这样的实施方式中,RP列表可以包括作为要查找的表的TCAM。在一个实施方式中,TCAM被配置为要搜索的最后一个表,在这种情况下,TCAM中的规则条目不应该保存任何RP列表。
SRAM 32中的数据库36中的规则条目集合的大小与TCAM 38的大小之间的平衡可在判定逻辑24的设计者方便时确定。在任何情况下, TCAM 38将比保存分类规则的整个语料库所需要的更小。在某些情况下, SRAM 32可以包含对应于所有分类规则的数据库36中的规则条目,在这种情况下可以删除TCAM 38。
与给定的规则语料库相对应的规则模式和规则条目可以由嵌入在分类装置本身中的合适的可编程处理器来计算。替代地或额外地,外部计算机可以接收规则并编译规则条目以下载到分类装置的存储器。
使用散列表的部分子集的有效规则匹配
传统的TCAM可以将给定的分类密钥与一个规则匹配,所述规则包含具有定义值的未掩码比特,以及与一个或多个其值未定义且被用作无关值的掩码比特。例如,规则‘100xxx01’有五个具有二进制值‘1’或‘0’的未掩码比特,三个表示为‘x’的无关比特。每个规则与相应的规则模式(RP)相关联,规则模式(RP)定义了表示规则的比特串中未掩码和掩码比特的位置。
规则模式中未掩码和掩码比特分别表示为‘u’和‘x’。例如,RP ‘uuuxxxuu’对应于规则‘100xxx01’。通常,多个规则可以符合共同的RP。例如,规则‘100xxx01’和‘111xxx00’都符合相同的规则模式‘uuuxxxuu’。
包括表示为R1...Rm的m个规则的语料库可以被划分成数量n个的规则模式RP1...RPn。在实际实施中,规则的数量远大于这些规则符合的RP的数量,即n<<m。
在所公开的实施方式中,根据n个规则模式对m个规则进行分类。使用专用搜索引擎来搜索符合给定规则模式的规则,该专用搜索引擎使用散列表实现,即总体上n个散列表来实现。注意:给定的分类密钥可以匹配n个散列表的部分子集中的规则,因此排除搜索不相关的散列表可大大降低搜索延迟。下面详细描述用于识别可以在不牺牲搜索精度的情况下从搜索中排除的散列表的方法。
图2是一个框图,示意性地示出了根据本文所描述的实施方式的用于规则匹配的判定逻辑24。为了清楚起见,图2仅描绘参与规则匹配过程的判定逻辑24的元件。
判定逻辑的匹配数据库36包括使用表示为HASH_RP1... HASH_RPn的散列表44实现的多个搜索引擎。散列表对应于相应的规则模式RP1...RPn,并存储在SRAM中。如下所述,给定一个分类密钥,每个散列表用于将密钥与符合相应RP的规则匹配。使用RAM中的整个散列表搜索匹配规则等效于使用存储相同m个规则的TCAM搜索密钥。
判定逻辑的流水线40包括一个未掩码比特提取器模块50,其接收分类密钥,并根据相应的规则模式RP1...RPn从密钥提取n个表示为U (RP1)...U(RPn)的未掩码的比特串。在一个实施方式中,流水线40 使用相应的掩码矢量来提取未掩码的比特串。例如,给定密钥K=‘11101100’和规则模式RP=‘uuuxxxuu’,提取的未掩码比特串由U (RP)=‘11100’给定。注意:使用不同RP提取的未掩码比特串可能具有不同的相应长度。
调度程序54接收提取的未掩码的比特串并将它们提供给匹配数据库 36。未掩码的比特串用于将密钥与相应散列表中的规则相匹配,即U (RPi)用于将密钥与散列表HASH_RPi中的规则相匹配。在一些所公开的实施方式中,调度程序54按照一些预定义的顺序依次扫描散列表。调度程序54可以跳过扫描其中匹配预期失败的一个或多个散列表,这将在下面详细描述。
散列表HASH-RPi将未掩码的比特串映射到符合相应规则模式RPi 的规则。散列表根据语料库中的实际规则进行填充。因此,语料库中的每个规则在与相应的RP对应的散列表之一中具有一个相应的规则条目。
在一些实施方式中,散列表中的每个规则条目存储指向动作表34中的特定动作的指针,判定逻辑24将在匹配的情况下应用于数据包26。在一些实施方式中,规则条目另外保存RP列表(或指向此列表的指针),其指定在与相应规则匹配的情况下要搜索的散列表。如上所述,RP列表可以替代地指定应当从当前搜索中删除或排除的散列表。RP列表可以使用任何合适的数据结构实现,并且预先构造和存储,这将在下面描述。例如,RP列表可以包括二进制向量,其中每个比特对应于相应的散列表,并确定是否应该搜索散列表。
当在HASH-RPi中找到匹配规则时,匹配数据库36将匹配规则和相应的RP列表传送到流水线40中的调度程序54。然后,调度程序54扫描所报告的RP列表中的散列表。规则选择器58从匹配数据库36接收一个或多个匹配规则,并使用预定义的标准从这些规则中选择最终规则(或结果规则)。在一个示例性实施方式中,为每个规则分配相应的规则优先级,并且规则选择器58选择具有最高规则优先级的匹配规则。或者,用于选择最终规则的其他标准也可以使用。
现在我们描述用于构造规则RP列表的实施方式。在一些实施方式中,构造RP列表是基于语料库规则的值。该构造基于与符合给定RP的规则匹配的密钥不一定匹配符合不同RP的规则的观察。因此,如果与给定规则匹配的所有密钥在某些其他散列表中没有匹配规则,则可以从给定规则的RP列表中排除该其他的散列表。
例如,考虑下表1中的规则。该实施例中的规则使用五元组(源IP,目标IP,协议,L4源端口和L4目标端口)定义。
表1:示例规则和相应RP
在表1中,规则R1符合规则模式RP1,规则R2和R3都符合另一共同规则模式,即RP2=RP3。注意:由于在R1和R2中,源IP分别以 130和140开始,与R1匹配的密钥不能与R2匹配。注意:从R1的RP 列表中删除包含R2的整个散列表取决于该散列表中的所有规则。例如,如果散列表包含表1的R2和R3,则该散列表应包含在R1的RP列表中,因为R1和R3都可以匹配共同密钥。
本文给出了在HASH-RP1中构建R1的RP列表的方法。首先将R1 的RP列表初始化至{RP2...RPn}。然后比较在HASH-RP2中的规则中也是未掩码比特的R1的未掩码比特。如果R1中给定比特位置的至少一个未掩码比特与HASH_RP2中所有规则中相同比特位置的未掩码比特不同,则从R1的RP列表中排除HASH_RP2。该过程类似地重复至 HASH-RPi,i=3...n。
在一个实施方式中,规则模式RPi,RPj的排除标准如下实施。定义一个比特掩码,用于提取在RPi和RPj中未掩码的比特。让Ri成为符合 RPi的规则。使用比特掩码从Ri提取未掩码的比特串Ui。将Ui与从符合RPj的每个规则中提取(使用相同的比特掩码)的未掩码的比特串Uj 比较。如果Ui与所有Uj不同,则将RPj从Ri的RP列表中排除。
在一些实施方式中,基于规则优先级构建RP列表。考虑规则匹配系统,其中每个规则在预定义的优先级范围内被分配相应的优先级。例如,如果在给定的散列表中找到匹配规则,并且该匹配规则具有优先级范围内的最高优先级,则可以省略在所有其他散列表中的搜索。更普遍地,对于其优先级被表示为Pi的HASH-RPi中的匹配规则Ri,其规则具有低于Pi的规则优先级的散列表HASH-RPj可以从Ri的RP列表中排除。
在一些实施方式中,分配给散列表中的规则的优先级属于优先级范围的各自不同的非重叠子范围。在这样的实施方式中,将散列表从最高优先级子范围扫描到最低优先级子范围。这是因为当删除仅基于规则优先级时,以递减的优先级顺序扫描散列表将导致最小的平均搜索时间。
包括流水线40的判定逻辑24通常包括专用或可编程硬件逻辑,其被配置为执行本文所述的功能。流水线40通常还包含用于实现Bloom过滤器(图中未示出)的多个专用存储器组,或者在与硬件逻辑相同的芯片上,或在单独的存储器芯片中。例如,判定逻辑的流水线40可以包括合适的专用集成电路(ASIC)。替代地或另外地,流水线40的至少一些功能可以在独立或嵌入式微处理器中实现。(例如,这样的微处理器可负责将由网络元件20接收的分类规则编译进匹配数据库36)。微处理器在软件指令的控制下执行其功能,软件指令通常存储在有形的、非暂时性的计算机可读的存储介质,例如电子的、光学或磁存储介质。
图3是示出根据本文描述的实施方式的示例性规则匹配过程的示意图。在图3中,判定逻辑24依次扫描散列表44,并且一旦在给定散列表中找到匹配规则,则根据匹配规则调整RP列表。图3的实施例涉及其中匹配数据库包括六个散列表的判定逻辑24。在该实施例中,RP列表肯定地指定要搜索的散列表。
初始RP列表由{1,2,3,4,5,6}给定,即所有散列表的顺序扫描。在该实施例中,在第一个散列表中找到一个匹配规则,与该匹配规则关联的 RP列表为{2,4,5,6},这表示在HASH-RP3中不能找到匹配规则。接下来,判定逻辑尝试在HASH-RP2中找到匹配规则,HASH-RP2是更新的RP 列表中的第一个散列表。在本实施例中,没有找到匹配规则,并且判定逻辑跳过HASH-RP3并继续在HASH-RP4中搜索,HASH-RP4是当前列表中的下一个散列表。在HASH-RP4中,找到一个匹配规则,其RP列表为{6}。因此,判定逻辑跳过HASH-RP5,并在HASH-RP6中找到匹配规则。在本实施例中,已经找到了三个匹配规则,即在HASH-RP1, HASH-RP4和HASH-RP6中。判定逻辑通过选择具有最高规则优先级的匹配规则来确定最终规则。
图4是一个流程图,示意性地示出根据本文所描述的实施方式的用于数据包分类的方法。该方法描述为由图1和图2的判定逻辑24执行。
在接收步骤100,判定逻辑接收分类密钥,该分类密钥来自图1的网络元件20中接收的数据包26的标题。在初始化步骤104,调度程序54 初始化RP列表以包括按顺序的所有规则模式RP1...RPn。在下面进一步描述排序RP列表的考虑。调度程序54还选择RP列表中的第一RP,即 RPi=RP1。尽管在这个实施例中,RP列表按照RP描述,但RP列表可以等效地根据相应的散列表进行描述。
在一些实施方式中,为了缩短搜索持续时间,例如使用Bloom过滤器技术,从步骤104的初始完整RP列表中排除一个或多个RP。在美国专利申请14/827,402中讨论了使用Bloom过滤器的分类的各个方面,其转让给了本专利申请的受让人,其公开内容通过引用并入本文。
在散列密钥生成步骤112中,提取器50根据RPi从分类密钥中提取未掩码的比特U(RPi)。在表搜索步骤116中,提取的未掩码的比特用作散列密钥,用于在散列表HASH-RPi中搜索匹配规则。在匹配检查步骤120,匹配数据库36检查在HASH-RPi中是否找到匹配规则,如果是,则在RP列表更新步骤124,匹配数据库将与匹配规则相关联的更新的 RP列表传送到调度程序,并且还将匹配规则传送给匹配规则选择器58。在规则选择步骤128,匹配规则选择器58通过保存具有最高优先级的匹配规则来更新最终匹配规则。
在循环终止步骤132,调度程序检查整个RP列表是否已被扫描。该步骤在步骤128之后执行,或者当在上述步骤120没有找到匹配规则时执行。如果在步骤132,更新的RP列表包含尚未扫描的RP,则调度程序将RP索引设置到RP列表中的下一个RPi,并循环回到步骤112,以基于所选择的RPi得到散列密钥。否则,搜索结束,并且在输出步骤140,判定逻辑输出由选择器58选择的最终匹配规则以及根据最终匹配规则应用于数据包的动作,并且该方法终止。如果在任何散列表中找不到匹配规则,则判定逻辑发出故障指示。
如上所述,要搜索的散列表的数量以及因此整个搜索持续时间取决于RP列表中RP的扫描顺序。排序RP列表可以通过各种方式完成。例如,在一些实施方式中,调度程序以每个散列表中规则的相应数量的降序扫描散列表,因为找到匹配规则的概率通常随散列表中的规则数量而增加。
在其他实施方式中,调度程序根据相应的规则优先级来扫描散列表。在这种方法中,如果在搜索的早期发现具有高优先级的匹配规则,则可以省略在其规则具有较低优先级的其他散列表中的搜索。
在一些实施方式中,每个规则分配一个指示规则的删减强度的删减因子。例如,删减因子被设置为相应RP列表的长度的倒数值,即从匹配具有较短RP列表的规则开始通常更有效。在这些实施方式中,RP列表中RP的顺序例如通过平均相应散列表中的删减因子并根据平均删减因子对RP进行排序来确定。
在一些实施方式中,调度程序适应性地改变RP列表的排序。例如,判定逻辑可以识别比其他规则更频繁出现的规则,并且在很少匹配的规则之前尝试将分类密钥与这些规则相匹配。
向匹配数据库添加规则
如上所述,符合规则模式RPi的规则的RP列表包含一些规则模式 RPj,取决于符合RPj的所有规则。因此,将新规则添加到某个规则模式 RPj的散列表中可能需要在匹配数据库中的一个或多个规则的RP列表中包含RPj。
图5是一个流程图,示意性地示出根据本文所描述的实施方式的用于将规则添加到匹配数据库的方法。该方法被描述为由图1和图2的判定逻辑24执行。
在规则接收步骤200,判定逻辑24接收具有待添加到匹配数据库36 中的散列表HASH-RPk的规则模式RPk的规则。该规则可以存储在 TCAM 38中并传送到匹配数据库36,或直接提供用于存储在匹配数据库中。
在列表计算步骤204,判定逻辑扫描散列表HASH-RPj中的规则,用于j=1...n且j≠k,并且如上所述构造用于接收到的规则的RP列表。在标识设置208处,判定逻辑设置一个标识,用于指示匹配数据库正在更新。更具体地,标识指示在更新期间,即使当发现的匹配规则的RP 列表不包含RPk时,也应该搜索HASH-RPk。
在规则添加步骤212,将接收到的规则添加到HASH-RPk。然后,在 RP列表更新步骤216,判定逻辑基于所添加的规则值、优先级或两者来扫描所有其他散列表中的规则并更新相应的规则RP列表以包括RPk。在标识复位步骤220,在更新整个匹配数据库之后,判定逻辑重置在上述步骤208中设置的标识,并且该方法终止。
上述实施方式是通过实施例给出的,并且也可以使用其它合适的实施方式。例如,尽管在上述实施方式中,散列表存储在如RAM的易失性存储器中,但是在替代实施方式中,散列表可以存储在如非易失性RAM (NVRAM)的非易失性存储器中。作为另一实施例,尽管在上述实施方式中,一次扫描一个散列表,但是在其他实施方式中,可以并行搜索两个或更多散列表,以进一步提高查找速率。
应当理解的是,上述实施方式是通过实施例而引用的,并且所附权利要求不限于上文特别示出和描述的内容。相反,保护范围包括上文描述的各种特征的组合和子组合,以及本领域技术人员在阅读前述描述后将会想到的在现有技术中未公开的变化和修改。在本专利申请中通过引用并入的文件被认为是申请的组成部分,除非在这些合并的文件中定义术语的方式与本说明书中明确或隐含的定做出的定义冲突,应当只考虑本说明书的定义。
Claims (12)
1.一种分类方法,包括:
在判定逻辑流水线(40)中从数据项目集合中提取(112)相应的分类密钥,每个分类密钥包括一串比特;
接收用于与分类密钥匹配的规则的语料库,每个规则包括一组相应的未掩码比特,所述一组相应的未掩码比特具有相应比特值,并且至少一些规则除了未掩码比特之外还包括掩码比特;
从语料库提取一个或多个规则符合的规则模式,每个规则模式定义不同的相应的掩码和未掩码比特的序列;
在随机存取存储器RAM(32)中定义多个散列表(44),其中每个散列表对应于相应的规则模式,并用于在符合所述规则模式的规则中搜索与给定分类密钥匹配的规则,并且其中在给定散列表中的给定规则的匹配结果还指定了一个或多个散列表,用于后续搜索与给定分类密钥匹配的规则,并且,作为定义多个散列表(44)步骤的一部分,根据给定规则从一个或多个后续要搜索的散列表中排除一个散列表,该散列表的规则全部被分配了相应的规则优先级,所述规则优先级低于分配给给定规则的规则优先级;且
通过使用指定的一个或多个散列表将相应的分类密钥与规则进行匹配,来对数据项目进行分类(116)。
2.根据权利要求1所述的方法,其中,匹配所述分类密钥包括:根据相应的规则模式从所述分类密钥中提取未掩码比特的比特串;以及使用提取的未掩码比特的比特串搜索所述散列表(44)中的匹配规则。
3.根据权利要求1所述的方法,其中,给所述规则分配相应的规则优先级,并且其中匹配分类密钥包括基于匹配规则的规则优先级从多个匹配规则中选择结果规则,其中多个匹配规则匹配给定分类密钥并符合不同的相应规则模式。
4.根据权利要求1所述的方法,其中定义所述散列表(44)包括:根据一个或多个后续要搜索的散列表中的规则,基于要搜索的散列表的数量,来确定所述一个或多个后续要搜索的散列表的扫描顺序。
5.根据权利要求1所述的方法,其中定义所述散列表(44)包括:基于符合一个或多个后续要搜索的散列表的相应规则模式的规则的数量,来确定所述一个或多个后续要搜索的散列表的扫描顺序。
6.根据权利要求1所述的方法,其中定义所述散列表(44)包括:当发现匹配规则时,给每个散列表中的规则分配多个后续要搜索的散列表中的一个的相应列表,并且响应于添加规则到相应的给定散列表,基于添加的规则,在分配给一个或多个散列表中的规则的列表中包括给定散列表。
7.根据权利要求1所述的方法,其中匹配所述分类密钥包括:依次扫描多个散列表(44),以及基于先前发现的与所述分类密钥匹配的规则来调整所述散列表的扫描顺序。
8.一种分类装置(20),包括:
随机存取存储器RAM(32),其被配置为存储对应于规则语料库的散列表(44),每个规则包括具有相应比特值的一组相应的未掩码比特,并且至少一些规则除了未掩码比特外还包括掩码比特,
其中规则符合相应的规则模式,一个或多个规则符合的每个规则模式定义不同的相应的掩码和未掩码比特的序列,并且每个散列表对应于相应的规则模式,并用于在符合所述规则模式的规则中搜索与给定分类密钥匹配的规则,并且其中给定散列表中的给定规则的匹配结果还指定了一个或多个散列表,用于后续搜索与给定分类密钥匹配的规则;和
判定逻辑流水线(40),其被配置为:
定义存储在RAM中的散列表(44),通过根据给定规则从一个或多个后续要搜索的散列表中排除一个散列表,该散列表的规则全部被分配了相应的规则优先级,所述规则优先级低于分配给给定规则的规则优先级;
从数据项的集合中提取(112)相应的分类密钥,每个分类密钥包括一串比特;且
通过使用指定的一个或多个散列表将相应的分类密钥与规则进行匹配,来对数据项目进行分类(116)。
9.根据权利要求8所述的分类装置(20),其中,所述判定逻辑流水线(40)被配置为根据相应的规则模式从所述分类密钥中提取未掩码比特的比特串,并且使用所提取的未掩码比特的比特串来搜索所述散列表(44)中的匹配规则。
10.根据权利要求8所述的分类装置(20),其中,给所述规则分配相应的规则优先级,并且其中所述判定逻辑流水线(40)被配置为:基于匹配规则的规则优先级,通过从匹配给定分类密钥并符合不同相应规则模式的多个匹配规则中选择结果规则来匹配所述分类密钥。
11.根据权利要求8所述的分类装置(20),其中,所述判定逻辑流水线(40)被配置为定义所述散列表(44),通过根据给定规则从一个或多个后续要搜索的散列表中排除一个散列表,该散列表的整个规则不与匹配给定规则的任何分类密钥匹配。
12.根据权利要求8所述的分类装置(20),其中,所述判定逻辑流水线(40)被配置为:基于分配给所述一个或多个后续要搜索的散列表的规则的规则优先级,来确定所述一个或多个后续要搜索的散列表的扫描顺序。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/257,957 | 2016-09-07 | ||
US15/257,957 US10068034B2 (en) | 2016-09-07 | 2016-09-07 | Efficient matching of TCAM rules using hash tables in RAM |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107800631A CN107800631A (zh) | 2018-03-13 |
CN107800631B true CN107800631B (zh) | 2021-11-12 |
Family
ID=59811240
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710786696.9A Active CN107800631B (zh) | 2016-09-07 | 2017-09-04 | 使用ram中的散列表的tcam规则的有效匹配的方法和装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10068034B2 (zh) |
EP (1) | EP3293929B1 (zh) |
CN (1) | CN107800631B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11088951B2 (en) * | 2017-01-16 | 2021-08-10 | Intel Corporation | Flow classification apparatus, methods, and systems |
WO2018138062A1 (en) * | 2017-01-24 | 2018-08-02 | Rockley Photonics Limited | Multi-field classifier |
US10476794B2 (en) | 2017-07-30 | 2019-11-12 | Mellanox Technologies Tlv Ltd. | Efficient caching of TCAM rules in RAM |
US10791091B1 (en) | 2018-02-13 | 2020-09-29 | Architecture Technology Corporation | High assurance unified network switch |
US11327974B2 (en) | 2018-08-02 | 2022-05-10 | Mellanox Technologies, Ltd. | Field variability based TCAM splitting |
US11003715B2 (en) | 2018-09-17 | 2021-05-11 | Mellanox Technologies, Ltd. | Equipment and method for hash table resizing |
US10944675B1 (en) | 2019-09-04 | 2021-03-09 | Mellanox Technologies Tlv Ltd. | TCAM with multi region lookups and a single logical lookup |
US11539622B2 (en) | 2020-05-04 | 2022-12-27 | Mellanox Technologies, Ltd. | Dynamically-optimized hash-based packet classifier |
CN111600796B (zh) * | 2020-05-20 | 2021-10-01 | 中国电子科技集团公司第五十四研究所 | 一种基于可配置解析字段的流识别装置及方法 |
US11782895B2 (en) | 2020-09-07 | 2023-10-10 | Mellanox Technologies, Ltd. | Cuckoo hashing including accessing hash tables using affinity table |
CN112311699B (zh) * | 2020-09-28 | 2021-08-03 | 清华大学无锡应用技术研究院 | 处理网络数据包的方法、装置及存储介质 |
US11917042B2 (en) | 2021-08-15 | 2024-02-27 | Mellanox Technologies, Ltd. | Optimizing header-based action selection |
US11929837B2 (en) | 2022-02-23 | 2024-03-12 | Mellanox Technologies, Ltd. | Rule compilation schemes for fast packet classification |
US11968285B2 (en) | 2022-02-24 | 2024-04-23 | Mellanox Technologies, Ltd. | Efficient memory utilization for cartesian products of rules |
CN116757203B (zh) * | 2023-08-16 | 2023-11-10 | 杭州北冥星火科技有限公司 | 一种自然语言匹配方法、装置、计算机设备及存储介质 |
Family Cites Families (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6611875B1 (en) | 1998-12-31 | 2003-08-26 | Pmc-Sierra, Inc. | Control system for high speed rule processors |
US20020089937A1 (en) | 2000-11-16 | 2002-07-11 | Srinivasan Venkatachary | Packet matching method and system |
US7061874B2 (en) * | 2001-01-26 | 2006-06-13 | Broadcom Corporation | Method, system and computer program product for classifying packet flows with a bit mask |
US7116663B2 (en) * | 2001-07-20 | 2006-10-03 | Pmc-Sierra Ltd. | Multi-field classification using enhanced masked matching |
US7054315B2 (en) * | 2001-09-17 | 2006-05-30 | Pmc-Sierra Ltd. | Efficiency masked matching |
US7394809B2 (en) * | 2003-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for packet classification using a forest of hash tables data structure |
US20050004857A1 (en) * | 2003-04-17 | 2005-01-06 | Portfolio Search, Inc. | Methods for evaluating the financial strength of a holding in comparison to other holdings |
US7234019B1 (en) * | 2003-12-12 | 2007-06-19 | Raza Microelectronics, Inc. | Method and apparatus for implementing a search engine using an SRAM |
KR100864888B1 (ko) * | 2007-02-12 | 2008-10-22 | 삼성전자주식회사 | 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법 |
US8619766B2 (en) * | 2007-03-02 | 2013-12-31 | At&T Intellectual Property Ii, L.P. | Method and apparatus for classifying packets |
US7657500B2 (en) | 2007-03-12 | 2010-02-02 | Sun Microsystems, Inc. | Concurrent extensible cuckoo hashing |
US8271564B2 (en) | 2008-07-14 | 2012-09-18 | Symbol Technologies, Inc. | Lookup table arrangement and related management method for accommodating concurrent processors |
US8290934B2 (en) | 2008-08-06 | 2012-10-16 | Fujitsu Limited | Method and system for processing access control lists using a hashing scheme |
US7808929B2 (en) | 2008-09-30 | 2010-10-05 | Oracle America, Inc. | Efficient ACL lookup algorithms |
US8305271B2 (en) | 2010-03-17 | 2012-11-06 | Microsoft Corporation | Cuckoo hashing to store beacon reference data |
US9406381B2 (en) * | 2010-08-01 | 2016-08-02 | Gsi Technology Israel Ltd. | TCAM search unit including a distributor TCAM and DRAM and a method for dividing a database of TCAM rules |
US20120275466A1 (en) | 2010-10-21 | 2012-11-01 | Texas Instruments Incorporated | System and method for classifying packets |
US9110936B2 (en) | 2010-12-28 | 2015-08-18 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
US8856203B1 (en) * | 2011-02-08 | 2014-10-07 | Pmc-Sierra Us, Inc. | System and method for algorithmic TCAM packet classification |
WO2013020003A1 (en) | 2011-08-02 | 2013-02-07 | Cavium, Inc. | Packet classification by an optimised decision tree |
US9171030B1 (en) | 2012-01-09 | 2015-10-27 | Marvell Israel (M.I.S.L.) Ltd. | Exact match lookup in network switch devices |
US9438505B1 (en) * | 2012-03-29 | 2016-09-06 | Google Inc. | System and method for increasing capacity in router forwarding tables |
US8762399B2 (en) | 2012-05-20 | 2014-06-24 | International Business Machines Corporation | Hash collision reduction system |
US9098601B2 (en) * | 2012-06-27 | 2015-08-04 | Futurewei Technologies, Inc. | Ternary content-addressable memory assisted packet classification |
EP2693717B1 (en) | 2012-07-29 | 2015-05-06 | Verint Systems Limited | System and method of high volume rule engine related applications |
US9367645B1 (en) | 2012-10-17 | 2016-06-14 | Marvell International Ltd. | Network device architecture to support algorithmic content addressable memory (CAM) processing |
CN103970829B (zh) * | 2013-01-30 | 2018-09-14 | 马维尔以色列(M.I.S.L.)有限公司 | 用于tcam共享的架构 |
US9424366B1 (en) * | 2013-02-11 | 2016-08-23 | Marvell International Ltd. | Reducing power consumption in ternary content addressable memory (TCAM) |
US10110492B2 (en) * | 2013-04-11 | 2018-10-23 | Marvell Israel (M.I.S.L.) Ltd. | Exact match lookup with variable key sizes |
US9367556B2 (en) | 2013-06-14 | 2016-06-14 | International Business Machines Corporation | Hashing scheme using compact array tables |
US9569561B2 (en) * | 2013-07-09 | 2017-02-14 | Cisco Technology, Inc. | Label masked addressable memory |
US9704574B1 (en) * | 2013-07-26 | 2017-07-11 | Marvell International Ltd. | Method and apparatus for pattern matching |
US9256631B2 (en) | 2013-07-31 | 2016-02-09 | Oracle International Corporation | Building a hash table using vectorized instructions |
US9659046B2 (en) | 2013-07-31 | 2017-05-23 | Oracle Inernational Corporation | Probing a hash table using vectorized instructions |
US9223711B2 (en) | 2013-08-13 | 2015-12-29 | Netspeed Systems | Combining associativity and cuckoo hashing |
US9384145B2 (en) | 2013-08-26 | 2016-07-05 | Oracle International Corporation | Systems and methods for implementing dynamically configurable perfect hash tables |
US9111615B1 (en) | 2013-10-01 | 2015-08-18 | Xilinx, Inc. | RAM-based ternary content addressable memory |
US9502111B2 (en) * | 2013-11-05 | 2016-11-22 | Cisco Technology, Inc. | Weighted equal cost multipath routing |
US9509809B2 (en) * | 2014-02-25 | 2016-11-29 | Alcatel-Lucent Usa Inc. | Packet classification using multiple processing units |
US20150242429A1 (en) | 2014-02-25 | 2015-08-27 | Alcatel Lucent | Data matching based on hash table representations of hash tables |
WO2015167559A1 (en) | 2014-04-30 | 2015-11-05 | Hewlett-Packard Development Company, L.P. | Partitionable ternary content addressable memory (tcam) for use with a bloom filter |
CN104702609B (zh) * | 2015-03-13 | 2017-07-25 | 广西大学 | 基于朋友机制的移动Ad Hoc网络路由入侵检测方法 |
US20160294625A1 (en) | 2015-03-31 | 2016-10-06 | Telefonaktiebolaget L M Ericsson (Publ) | Method for network monitoring using efficient group membership test based rule consolidation |
US10778612B2 (en) * | 2016-05-26 | 2020-09-15 | Arista Networks, Inc. | Variable TCAM actions |
-
2016
- 2016-09-07 US US15/257,957 patent/US10068034B2/en active Active
-
2017
- 2017-09-04 CN CN201710786696.9A patent/CN107800631B/zh active Active
- 2017-09-07 EP EP17189940.4A patent/EP3293929B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
EP3293929B1 (en) | 2020-07-29 |
CN107800631A (zh) | 2018-03-13 |
EP3293929A1 (en) | 2018-03-14 |
US10068034B2 (en) | 2018-09-04 |
US20180068032A1 (en) | 2018-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107800631B (zh) | 使用ram中的散列表的tcam规则的有效匹配的方法和装置 | |
US10496680B2 (en) | High-performance bloom filter array | |
US9984144B2 (en) | Efficient lookup of TCAM-like rules in RAM | |
US10476794B2 (en) | Efficient caching of TCAM rules in RAM | |
US11811660B2 (en) | Flow classification apparatus, methods, and systems | |
US10491521B2 (en) | Field checking based caching of ACL lookups to ease ACL lookup search | |
US8199652B2 (en) | IP address lookup method and apparatus by using Bloom filter and multi-hashing architecture | |
US6775737B1 (en) | Method and apparatus for allocating and using range identifiers as input values to content-addressable memories | |
US8233493B2 (en) | Packet router having improved packet classification | |
JP4452183B2 (ja) | プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置) | |
US8750144B1 (en) | System and method for reducing required memory updates | |
US20130301641A1 (en) | Method and apparatus for packet classification | |
US20050141519A1 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
US7613775B2 (en) | Network message filtering using hashing and pattern matching | |
WO2010065418A1 (en) | Graph-based data search | |
US7240041B2 (en) | Network message processing using inverse pattern matching | |
US9485179B2 (en) | Apparatus and method for scalable and flexible table search in a network switch | |
CN112667526B (zh) | 一种访问控制列表电路实现方法及其电路 | |
CN110830376B (zh) | 一种int报文的处理方法及装置 | |
CN109754021B (zh) | 基于范围元组搜索的在线包分类方法 | |
CN112667640B (zh) | 一种路由地址存储方法及装置 | |
KR100662254B1 (ko) | 라우팅 시스템에서의 패킷 분류 장치 및 이를 위한 룰 구축 방법 | |
US11929837B2 (en) | Rule compilation schemes for fast packet classification | |
Mikawa et al. | Run-based trie involving the structure of arbitrary bitmask rules | |
US20090210382A1 (en) | Method for priority search using a 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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230607 Address after: Yoknam, Israel Patentee after: Mellanox Technologies, Ltd. Address before: Israel Lai Ananna Patentee before: Mellanox Technologies TLV Ltd. |
|
TR01 | Transfer of patent right |