CN102577273B - 反复解析和分类 - Google Patents
反复解析和分类 Download PDFInfo
- Publication number
- CN102577273B CN102577273B CN201080045654.6A CN201080045654A CN102577273B CN 102577273 B CN102577273 B CN 102577273B CN 201080045654 A CN201080045654 A CN 201080045654A CN 102577273 B CN102577273 B CN 102577273B
- Authority
- CN
- China
- Prior art keywords
- classification
- packet
- parsing
- cycle
- resolve
- 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
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
-
- 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
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开的一些实施例提供一种方法,包括至少部分地以数据分组的报头信息为基础,通过反复解析器和分类器引擎对所述数据分组执行第一解析和分类周期;至少部分地以执行所述第一解析和分类周期为基础生成第一解析和分类结果;并且至少部分地以所述数据分组的报头信息以及所述第一解析和分类结果为基础对所述数据分组执行第二解析和分类周期。还描述和请求保护了其它实施例。
Description
相关申请的交叉引用
本申请要求享有2009年11月16日递交的美国专利申请No.61/261,472的优先权,这里出于全部目的以引用的方式结合其整个说明书的整体,除了与本说明书不一致的部分,如果存在的话。
技术领域
本公开的实施例总体上涉及解析和分类,并且更加具体地涉及数据分组的反复解析和分类。
背景技术
除非这里以其它方式表明,在本部分中描述的方案不是对于本公开的权利要求的现有技术并且不通过包括该部分而被承认是现有技术。
分组通信网络典型地包括在该网络上传输、重新路由或者管理数据分组的流的诸如交换机、路由器、流量控制器和业务整形器的多个网络设备。除了数据,每一个数据分组还包括设置在该数据分组的报头中的多个控制字段。这样的字段例如包括数据分组的源地址和目的地地址、数据分组的类型、与数据分组相关联的协议和/或其它。经常通过解析器根据总体限定该数据分组的封装结构的一组预定义的网络协议和规则对数据分组进行解析。例如,在解析互联网协议(IP)数据分组时,解析器检查数据分组的IP版本号(例如版本4或者6)。分类器至少部分以该解析结果为基础对数据分组进行分类。
发明内容
在各种实施例中,本公开提供一种方法,包括至少部分地以数据分组的报头信息为基础,通过反复解析器和分类器引擎对数据分组执行第一解析和分类周期;至少部分地以执行第一解析和分类周期为基础生成第一解析和分类结果;并且至少部分地以数据分组的报头信息以及第一解析和分类结果为基础对数据分组执行第二解析和分类周期。
还提供一种片上系统(SOC),包括处理核;以及反复解析器和分类器引擎(IPAC),该IPAC包括配置以接收数据分组并且在第一反复周期期间根据数据分组的报头生成第一报头部分的分组报头偏移单元,三重内容可寻址存储器(TCAM),其中IPAC被配置以在第一反复周期期间使用第一报头部分在TCAM处执行第一查找,并且对第一查找做出响应而生成第一存储器地址,以及存储器,其中IPAC被配置以在第一反复周期期间访问来自存储器中的第一存储器地址的第一内容。
还提供一种方法,包括接收数据分组;使用数据分组的报头的第一报头部分在三重内容可寻址存储器(TCAM)处执行第一查找以以TCAM的输出为基础生成第一内容;并且使用数据分组的报头的第二报头部分以及第一内容来在TCAM处执行第二查找以生成第二地址。
附图说明
在下面的描述中,参照形成本发明一部分的附图,在整个附图中类似的附图标记指代类似的部件,并且其中仅以说明本公开原理的实施例的方式示出。要理解,在不偏离本公开的范围的情况下,可以利用其它实施例并且可以做出结构或者逻辑改变。因此,下面的详细描述不在限制意义上被采用,并且通过所附权利要求及其等同物限定根据本公开的实施例的范围。
图1示意性说明了根据本公开实施例的包括片上系统的分组通信系统,所述片上系统包括反复解析器和分类器引擎。
图2和图3更加详细地示意性说明了根据本公开实施例的图1的反复解析器和分类器引擎。
图4a示意性说明了根据本公开实施例在第一解析和分类周期期间到图1-3的反复解析器和分类器引擎的三重内容可寻址存储器的示例输入。
图4b示意性说明了根据本公开实施例的第一解析和分类周期。
图5a示意性说明了根据本公开实施例在第二解析和分类周期期间到图1-3的反复解析器和分类器引擎的三重内容可寻址存储器的示例输入。
图5b示意性说明了根据本公开实施例的第二解析和分类周期。
图6说明了根据本公开实施例用于操作图1-3的反复解析器和分类器引擎的示例方法。
具体实施方式
也被称为相关联存储器或者相关联存储的内容可寻址存储器(CAM)通常用于高速搜索。通常设计CAM以使得用户向该CAM供应数据字,并且CAM搜索其整个存储器以查看该数据字是否存储在CAM中的任何地方。如果在CAM中发现数据字(即如果数据字命中(hit)),则CAM返回与该数据字相关联的信息(例如返回与数据字相关联的地址和/或任何其它合适信息)。在一示例中,通过CAM返回的地址是存储器(例如随机访问存储器)的地址。二进制CAM采用完全由1和0组成的搜索项。三重CAM(TCAM)采用包括1、0以及“X”或者“不关心”位的第三状态的搜索项。“X”或者“不关心”位是其值与所进行的搜索不相关的位。
图1示意性说明了根据本公开实施例包括片上系统(SOC)14的分组通信系统10,该SOC 14包括反复解析器和分类器引擎20(以下也被称为IPAC 20)。SOC 14还包括一个或者多个处理核,以及分组处理器16。在一实施例中,分组处理器16是诸如以太网交换机、家庭网关或者任何其它分组处理设备的交换机的一部分。然而,当前公开并不局限于这样的实现。尽管SOC 14包括几个其它部件(例如通信总线、一个或者多个外围设备、接口和/或其它),但是出于说明清晰的目的,图1中没有说明这些部件。
IPAC 20从网络控制器12接收数据分组,并且对所接收的数据分组进行解析和/或分类。尽管图1中说明了网络控制器12位于SOC14的外部,但是在一实施例中,网络控制器12包括在SOC 14中。尽管图1仅说明了一个网络控制器12,但是在一实施例中,IPAC 20从多于一个网络控制器接收数据分组。尽管图1中未说明,但是在一实施例中,IPAC 20也从例如网络交换机、网络路由器、网络端口、以太网端口、分组处理器16和/或其它的其它设备接收数据分组,并且对所接收的数据分组进行解析和/或分类。
在一实施例中,IPAC 20实现在分组处理器中,例如实现在网络交换机、网络路由器、家庭网关中,实现在分组处理器16、具有网络连接性的任何合适设备和/或其它中。网络控制器12向例如设备12a、设备12b和/或设备12c的多个设备和/或从该例如设备12a、设备12b和/或设备12c的多个设备收发(例如发送和/或接收)数据分组。在一实施例中,设备12a、12b和/或12c也是例如网络交换机、网络路由器、网络端口、以太网端口、具有网络连接性的任何合适设备和/或其它的网络设备。
在一实施例中,IPAC 20包括被配置以从网络控制器12接收数据分组的分组报头偏移单元24。如这里在后面将更加详细讨论的,IPAC 20执行多个反复解析和分类周期以对数据分组进行解析和/或分类。分组报头偏移单元24从前一解析和分类周期接收解析和分类结果(除了在第一解析和分类周期期间),并且在部分地以从前一解析和分类周期接收的解析和分类结果为基础的当前解析和分类周期期间根据数据分组的报头输出报头信息。例如,在不同的解析和分类周期中,分组报头偏移单元24能够按照不同的方式偏移数据分组的报头,从而输出该报头的不同区域。
IPAC 20还包括TCAM 28。在每一个解析和分类周期期间,TCAM 28从分组报头偏移单元24和反馈46c接收输入、以该接收输入为基础在TCAM 28数据库中执行搜索、并且输出存储器地址。IPAC 20进一步包括被配置以从TCAM 28接收输出(例如存储器地址)并且输出反馈信息46a和分类信息44a(以下也分别被称为反馈46a和分类44a)的存储器32。在一实施例中,存储器32是任意适合类型的存储器,例如以静态随机访问存储器(RAM)(SRAM)为例的适合类型的RAM。
反馈46a由反馈处理单元36接收,该反馈处理单元36被配置以至少部分地以反馈46a为基础输出反馈信息46b和反馈信息46c(以下也分别被称为反馈46b和反馈46c)。在一实施例中并且如这里在后面将更加详细解释的,反馈46a与一个或者多个解析和分类周期的解析和分类结果相关联。反馈处理单元36处理反馈46a以生成反馈46b和46c。
在第一解析和分类周期期间,分组报头偏移单元24被配置以对于从网络控制器12接收的数据分组从该数据分组的报头选择性输出一个或者多个字节。在一个或者多个随后的解析和分类周期期间,分组报头偏移单元24被配置以对于从网络控制器12接收的数据分组,至少部分地以反馈46b为基础从该数据分组的报头选择性输出一个或者多个字节。TCAM 28被配置以接收分组报头偏移单元24的输出和反馈46c(例如在一个或者多个随后的解析和分类周期期间接收反馈46c),并且被配置以生成相对应的输出。
分类44a由分类单元40接收,该分类单元40被配置以至少部分地以分类44a为基础生成分类信息44b(也被称为分类44b)。在一实施例中,分类44a包括与由IPAC 20接收的数据分组的分类相关联的信息,并且分类单元40处理分类44a以生成分类44b。在一实施例中,分类44b对由IPAC 20接收的数据分组进行分类。例如,分类44b包括与所接收的数据分组的类型、优先级、目的地地址、队列地址和/或其它相关联的信息。
IPAC 20被配置以对该IPAC 20从网络控制器12接收的数据分组进行反复解析和分类。在一示例中,IPAC 20至少部分地以从网络控制器12接收的数据分组的报头信息为基础来对该数据分组执行第一解析和分类周期。IPAC 20然后至少部分地以执行第一解析和分类周期为基础生成第一解析和分类结果(例如包括反馈46a和分类44a)。IPAC 20随后至少部分地以该数据分组的报头信息以及第一解析和分类结果为基础(例如至少部分地以根据反馈46a生成的反馈46b和46c为基础)对该数据分组执行第二解析和分类周期。IPAC20继续这些操作直到该数据分组被完全解析和/或分类(例如直到生成该数据分组的完整解析和分类结果)。
在另一示例中,IPAC 20从网络控制器12接收数据分组。IPAC20使用该数据分组的报头的第一报头部分在TCAM 28处执行第一查找以生成第一地址。IPAC 20访问来自存储器32的第一地址的第一内容。随后,IPAC 20使用该数据分组的报头的第二报头部分和第一内容在TCAM 28处执行第二查找以生成第二地址。IPAC 20继续这些操作直到该数据分组被完全解析和/或分类。
图2更加详细地示意性说明了根据本公开实施例的图1的IPAC20。更具体地说,图2更加详细地说明了反馈处理单元36、分组报头偏移单元24、反馈46a、反馈46b以及反馈46c。
参照图1和图2,在一实施例中,反馈46b包括查找(LU)完成信号146b(这里也被称为LU完成146b)、下一个LU偏移索引146c以及偏移表写入访问146d。如这里在后面将更加详细讨论的,反馈46c包括附加信息148b(这里也被称为附加info 148b)以及LU标识146a(也被称为LU ID 146a)。
再次参照图1和图2,分组报头偏移单元24包括偏移表24a以及偏移选择器24b。如在图2中说明的,偏移选择器24b包括复用器。在一实施例中,分组报头偏移单元24(例如偏移选择器24b)从网络控制器12接收包括数据分组DP1的一系列数据分组。数据分组DP1包括报头H1。在另一实施例中,代替接收整个数据分组DP1,分组报头偏移单元24仅接收数据分组DP1的报头H1。
通过IPAC 20以反复的方式执行数据分组DP1的解析和分类。例如,使用第一解析和分类周期、第二解析和分类周期等等执行数据分组DP1的解析和分类,直到数据分组DP1被完全解析和分类。
在第一解析和分类周期期间,偏移选择器24b从数据分组DP1的报头H1输出一个或者多个数量的字节(被标记为报头部分H1a)。在一示例中,偏移选择器24b接收数据分组DP1的报头H1的前120个字节,并且选择且输出报头H1的前24个字节作为报头部分H1a。报头部分H1a中的“1”表明报头部分H1a与数据分组DP1相关联,并且报头部分H1a中的“a”表明报头部分H1a被在第一解析和分类周期期间输出。
在一实施例中,在第一解析和分类周期期间,通过偏移选择器24b输出的报头部分H1a与偏移表24a的输出无关(例如与反馈46b无关)。而且,在第一解析和分类周期期间,反馈46b的一个或者多个位不包括任何有意义信息(如在第一解析和分类周期期间,不根据数据分组DP1的任意之前解析和分类周期生成反馈46b的一个或者多个位)。然而,在随后的解析和分类周期期间,偏移选择器24b的输出至少部分地以偏移表24a的输出为基础,该偏移表24a以来自就在前一解析和分类周期的反馈46b为基础。例如,在第二解析和分类周期期间,由偏移选择器24b输出的报头部分H1b至少部分地以来自第一解析和分类周期的反馈46b为基础。
在一实施例中,在第一解析和分类周期期间,TCAM 28接收报头部分H1a,即偏移选择器24b的输出。尽管图1中未说明(但是图2中进行了说明),但是TCAM 28还例如从系统10的任何适合部件(例如从网络控制器12)接收端口ID信息216b(这里也被称为端ID 216b)。端口ID 216b包括与数据分组DP1相关联的端口的标识(例如数据分组DP1起源于其的端口的标识、从其接收数据分组DP1的端口的标识和/或其它)。
如前面讨论的,TCAM 28还接收反馈46c(即附加info 148b和LU ID 146a)。然而,在第一解析和分类周期期间,反馈46c的一个或者多个位不包括任何有意义信息(如在第一解析和分类周期期间,不根据数据分组DP1的任何之前解析和分类周期生成反馈46c的一个或者多个位)。因而,在第一解析和分类周期期间,反馈46c的这些位被TCAM 28看作为不关心位(例如位X)(例如TCAM 28接收和/或生成当前周期是第一解析和分类周期的指示,TCAM 28以该指示为基础将反馈46c的位看作为不关心位)。
在第一解析和分类周期期间,至少部分地以报头部分H1a和端口ID 216b(连同反馈46c的位,包括反馈46c的不关心位)为基础,TCAM 28在TCAM 28的内容处执行查找。例如,TCAM 28对所接收的数据与存储在TCAM 28中的数据进行比较。在发现匹配的情况下(即如果第一解析和分类周期是TCAM命中),则通过TCAM 28向存储器32输出相对应的信息。在一实施例中,以在第一解析和分类周期期间的TCAM命中为基础,TCAM 28输出相对应的地址A1a。地址A1a中的“1”表明地址A1a与数据分组DP1相关联,并且地址A1a中的“a”表明地址A1a与第一解析和分类周期相关联。
在一实施例中,地址A1a是存储器32的地址。继TCAM 28的查找之后,在第一解析和分类周期期间,存储器32输出存储在地址A1a中的数据。例如,存储器32输出反馈46a和分类44a。在一实施例中,如在图2中说明的,反馈46a包括LU ID 146a、LU完成146b、下一个LU偏移索引146c、偏移表写入访问146d和/或附加信息148a(这里也被称为附加info 148a)。
图2说明了接收和重发送LU完成146b、下一个LU偏移索引146c、偏移表写入访问146d以及LU ID 146a的反馈处理单元36。例如,在一实施例中,LU完成146b、下一个LU偏移索引146c、偏移表写入访问146d以及LU ID 146a通过反馈处理单元36接收,并且在没有对这些信号进行任何进一步处理的情况下被发送到其各自目的地。然而,在一实施例中,通过旁路反馈处理单元36,LU完成146b、偏移表写入访问146d以及下一个LU偏移索引146c被从存储器32发送到分组报头偏移单元24。类似地,在一实施例中,通过旁路反馈处理单元36,LU ID 146a被从存储器32发送到TCAM 28。
反馈处理单元36接收和处理附加info 148a。在一示例中,附加info 148a是14位信号,并且反馈处理单元36包括输出附加info 148a的一个或者多个位作为附加info 148b的复用器(被说明为每位选择器148c)。由反馈处理单元36执行的复用操作例如以附加info 148a的一个或者多个位和/或附加info 148b的一个或者多个位为基础。如在图2中说明的,反馈处理单元36纯粹是示例,并且可以至少部分地以例如IPAC 20的应用区域、由IPAC 20接收的数据分组的本质和/或其它为基础可配置。
在第一解析和分类周期期间,存储器32还输出分类44a。如先前讨论的,IPAC 20经历一个或者多个解析和分类周期用于对数据分组DP1进行解析和分类。在一实施例中,分类44a由分类处理单元40使用,以仅在对于数据分组DP1的最后解析和分类周期期间输出分类44b。例如,尽管图2中未说明,但是分类处理单元40接收当前解析和分类周期是对于数据分组的最后解析和分类周期的指示(例如根据反馈46a、分类44a和/或通过任何其它合适的方式),分类处理单元40以该指示为基础在当前解析和分类周期期间输出分类44b。例如,如果对于数据分组DP1使用三个解析和分类周期,则由存储器32在第三解析和分类周期期间输出的分类44a由分类处理单元40使用以输出分类44b。在另一实施例中,在每一个解析和分类周期之后更新分类44b。在再一实施例中,在每一个解析和分类周期之后更新与分类44b相关联的一些信号,而仅在对于数据分组DP 1的最后解析和分类周期期间更新与分类44b相关联的剩余信号。
在一实施例中,可以是单个位信号的LU完成146b(这里在后面更加详细地讨论其生成)表明进一步的解析和分类周期对于对数据分组DP1进行解析和/或分类是否必要。因而,LU完成146b作为解析和分类完成标记。LU完成146b的低值例如表明解析操作未完成并且要求进一步的解析和分类周期。LU完成146b的高值表明解析操作完成。例如,在第一解析和分类周期的结束处,如果LU完成146b为低(即,如果LU完成146b表明数据分组DP1的解析和/或分类操作未完成),则IPAC 20开始对于数据分组DP1的第二解析和分类周期。类似地,在第二解析和分类周期的结束处,如果LU完成146b为高(即如果LU完成146b表明数据分组DP1的解析和/或分类操作完成),则IPAC 20对于数据分组DP1不执行任何进一步的解析和分类周期。
在一实施例中,当前解析和分类周期的下一个LU偏移索引146c和偏移表写入访问146与数据分组DP1的报头的偏移相关联,以在下一个解析和分类周期期间由分组报头偏移单元24选择。例如,如先前讨论的,在第一解析和分类周期期间,报头部分H1a包括数据分组DP1的报头H1的前24个字节。而且,在第二解析和分类周期期间,分组报头偏移单元24从数据分组DP1的报头H1选择并且输出报头部分H1b。然而,与包括报头H1的前24个字节的报头部分H1a不同,至少部分地以第一解析和分类周期的下一个LU偏移索引146c和偏移表写入访问146为基础,报头部分H1b例如能够包括报头H1的任何其它字节。例如,在一实施例中,至少部分地以第一解析和分类周期的下一个LU偏移索引146c和偏移表写入访问146为基础,报头部分H1b包括从报头H1的字节号码12开始的14个字节。
在一实施例中,解析和分类周期的LU ID 146a与下一个解析和分类周期的查找标识相关联。例如,第一解析和分类周期的LU ID146a与第二解析和分类周期的查找标识相关联。第二解析和分类周期的查找标识例如识别要在第二解析和分类周期期间被搜索(或者查找)的TCAM 28的逻辑区域。作为一示例,如果第二解析和分类周期与将数据分组DP 1的优先级与TCAM 28的条目匹配相关联,则第一解析和分类周期的LU ID 146a包括与数据分组DP1的优先级相关联的数据字节。
在当前解析和分类周期期间输出的附加info 148b与要在下一个解析和分类周期期间在TCAM查找中使用的附加信息相关联。例如,在第一解析和分类周期期间输出的附加info 148b与要在第二解析和分类周期期间的TCAM查找中使用的附加信息相关联。在一实施例中,附加info 148b包括能够被从一个解析和分类周期传送下一个解析和分类周期的任何相关信息。例如,附加info 148b包括在当前解析和分类周期期间学习的任何知识,其在下一个解析和分类周期期间是相关的。附加info 148b字段例如以数据分组DP1的类型和结构、IPAC 20的应用区域和/或其它为基础。
图3更加详细地示意性说明了根据本公开实施例的图1的IPAC20。更具体地说,图3更加详细地说明了分类处理单元40、分类44a以及分类44b。
如先前讨论的,在一实施例中,分类44a由分类处理单元40使用,以仅在对于数据分组DP1的最后解析和分类周期期间输出分类44b。例如,如果对于数据分组DP1使用三个解析和分类周期,则由存储器32在第三解析和分类周期期间输出的分类44a由分类处理单元40使用以输出分类44b。在另一实施例中,在每一个解析和分类周期之后更新分类44b。在再一实施例中,在每一个解析和分类周期之后更新与分类44b相关联的信号中的一些,而仅在对于数据分组DP1的最后解析和分类周期期间更新与分类44b相关联的剩余信号。
在一实施例中,分类44a包括队列信息320a(这里也被称为队列info 320a)、结果信息324a(这里也被称为结果info 324a)和/或流标识信息328a(这里也被称为流ID info 328a)。
分类处理单元40包括被配置以分别处理队列info 320a、结果info 324a和流ID info 328a,并且被进一步配置以分别输出队列结果320c、结果info 324c和流ID info 328c的队列处理单元320b、结果info单元324b以及流ID单元328b。
如先前讨论的,分类44b对由IPAC 20接收的数据分组DP1进行分类。例如,队列结果320c包括与数据分组DP1相关联的队列信息(例如数据分组DP1初始属于的队列、数据分组DP1的目的地队列、数据分组DP1的优先级和/或其它)。结果info 324c例如包括与数据分组DP1相关联的数据分组DP1的类型(例如协议(类似IP版本4(IPv4)、IPv6等等))、与数据分组DP1相关联的命令(例如修改命令以修改数据分组DP1)和/或与数据分组DP1相关联的任何其它相关信息。流ID info 328c例如包括与数据分组DP1的流相关联的信息。例如,流ID info 328c包括与数据分组DP1相关联的流标识号码、路由信息、指针信息、流cookie信息和/或其它。
分类44b的队列结果320c、结果info 324c以及流ID info 328c仅是示例,并且在其它实施例中,分类44b可以包括数据分组DP1的任何其它相关分类信息。
图4a示意性说明了根据本公开实施例在第一解析和分类周期期间到TCAM 28的示例输入400a。图1-3的报头部分H1a形成输入400a的一部分,而图1-3的反馈46c形成输入400a的另一部分。输入400a中的字段和相关联的值纯粹是示例,并且绝不对本公开的教导形成限制。
如先前讨论的,反馈46c包括LU ID 146a。在第一解析和分类周期期间,LU ID 146a缺省为零,如图4a中说明的。而且,反馈46c还包括在图4a的示例输入400a中被设置为不关心情况x的附加字节(例如附加info 148b)。图4a的示例中的报头部分H1a包括数据分组DP 1的以太网类型(等于0x8100)、优先级位(等于0x1)以及包括附加的不关心位的几个其它字段。
图4b示意性说明了根据本公开实施例的第一解析和分类周期。在图4b的第一解析和分类周期中,图4a的输入400a用作到TCAM28的输入。
图4b说明了TCAM 28,其包括几个示例条目。例如,TCAM条目号码8包括为0的LU ID、为0x8100的以太网类型以及被说明为xxx的几个其它字段(例如优先级位字段)。另一示例TCAM条目号码12包括为1的LU ID以及被说明为xxx的几个其它字段(例如优先级位字段)。图4b中还说明了几个其它示例TCAM条目。尽管图4b中的几个TCAM字段被说明为包括xxx,但是这些字段实际上包括0或1,但是出于说明清晰并且不混淆本公开的教导的目的而在图4b中未说明。在一实施例中,xxx字段中的至少一些是对于TCAM28的不关心位。在第一解析和分类周期期间,LU ID 146a屏蔽其中LU ID字段具有值一的TCAM 28的数据库的一部分,并且仅在没有被LU ID 146屏蔽的TCAM 28的那些部分中执行在第一解析和分类周期期间的TCAM搜索。
图4b还说明了存储器32,其包括几个示例条目。例如,与存储器地址A1相对应的示例条目包括为1的LU ID以及为0的LU完成。在一实施例中,尽管地址A1包括几个其它字段,但是出于说明清晰的目的没有说明这些字段。与示例存储器地址A15相对应的另一示例字段包括为1的LU完成、为0x0的队列info(例如图3的队列info320a)、为0x1的结果info(例如图2的结果info 324a)以及为0x10的流ID info(例如图2的流ID info 328a)。图4b中还说明了与示例存储器地址A16和A22相对应的几个其它示例存储器条目。
再次参照图4a和4b,在第一解析和分类周期期间,输入400a与TCAM条目8匹配。在图4b中,以灰色阴影说明了TCAM条目8以说明与输入400a的匹配。因此,输入400a是TCAM命中,并且TCAM 28输出与TCAM条目8相关联的信息。例如,TCAM 28输出与TCAM条目8相关联的地址A1a
在一实施例中,地址A1a是存储器32的地址。例如,地址A1a与存储器32的地址A1相匹配。因而,以接收地址A1a为基础,在第一解析和分类周期期间存储器32输出存储在地址A1处的内容。在图4b中以灰色阴影说明了存储在地址A1处的存储器32的内容以说明存储器32输出该地址的内容。例如,存储器32输出分别与LUID 146a和LU完成146b相对应的值1和0。与LU完成146b相对应的值0表明第一解析和分类周期不是对于数据分组DP1的最终的第一解析和分类周期,并且至少另一解析和分类周期对于解析和/或分类数据分组DP1是必要的。与LU ID 146a相对应的值1代表对于第二解析和分类周期的查找标识。
图5a示意性说明了根据本公开实施例在第二解析和分类周期期间到TCAM 28的示例输入500a。报头部分H1b形成输入500a的一部分,而来自第一解析和分类周期的反馈46c形成输入500a的另一部分。
如先前讨论的,在第一解析和分类周期期间,如图4b中说明的,存储器32输出为1的LU ID 146a。因此,输入500a中的LU ID为1。图5a中的报头部分H1b被说明为与图4a中的报头部分H1a类似。然而,在其它实施例中,报头部分H 1b可以与图4a中的报头部分H1a不同,至少部分地以由存储器32和/或反馈处理单元36在第一解析和分类周期期间输出的反馈46b为基础。
图5b示意性说明了根据本公开实施例的第二解析和分类周期。在图5b的第二解析和分类周期中,图5a的输入500a用作到TCAM28的输入。图4b和5b中TCAM 28和存储器32的条目相似。例如,与图4b类似,图5b说明了TCAM 28的示例条目8、12、13和19,以及与存储器32中的地址A1a、A15、A16和A22相对应的示例条目。
再次参照图5a和5b,在第二解析和分类周期期间,输入500a与TCAM条目12相匹配。在图5b中,TCAM条目12被说明为灰色阴影以说明与输入500a相匹配。因此,输入500a是TCAM命中,并且TCAM 28在第二解析和分类周期期间输出与TCAM条目12相关联的信息。例如,TCAM 28输出与TCAM条目12相关联的地址A1b。
在一实施例中,地址A1b是存储器32的地址。例如,在图5b中,地址A1b与存储器32的地址A15相匹配。因而,以接收地址A1b为基础,在第二解析和分类周期期间,存储器32输出在地址A15处存储的内容。存储在地址A15处的存储器32的内容在图5b中被说明为灰色阴影以说明存储器32输出该地址的内容。例如,存储器32输出分别与LU完成146b、队列info队列info(例如图3的队列info 320a)、结果info(例如图2的结果info 324a)以及流ID info(例如图2的流ID info 328a)相对应的值1、0x0、0x1以及0x10。
与LU完成146b相对应的值1表明第二解析和分类周期是对于数据分组DP1的最后的第一解析和分类周期,并且任何附加的进一步解析和分类周期对于解析和/或分类数据分组DP1不是必要的。因此,在第二分类周期期间,分类处理单元40部分地以从存储器32接收的队列info、结果info以及流ID info为基础输出分类44b。
尽管图4a、4b、5a和5b说明了仅使用两个解析和分类周期对数据分组DP 1进行解析和分类,但是在一实施例中,可以使用较大数量(例如三个、八个或者更多)的解析和分类周期对数据分组DP1进行解析和分类。
在一实施例中,TCAM 28中的实际条目对于各个反复解析和分类周期的单独周期类似(例如对于第一和第二解析和分类周期)。然而,反馈46c用于在当前解析和分类周期中屏蔽TCAM 28中的一些线路,以使得在当前解析和分类周期中使用的TCAM 28的有效部分有限并且以从先前解析和分类周期获得的知识为基础。作为简单示例,由于LU ID 146a是第二解析和分类周期中的一个,因此在第二解析和分类周期期间屏蔽(即不搜索)TCAM条目的大部分(例如具有零的LU ID字段的条目)。因而,以从先前周期接收的反馈46c为基础,反馈46c有效地降低了要在当前周期中进行搜索的TCAM 28中的区域。因此,TCAM 28中的有效可搜索区域在解析和分类周期之间改变。例如,TCAM 28可以是包括大量条目的大的表。然而,在每一个解析和分类周期期间,如先前讨论的,反馈46c屏蔽大量的TCAM条目(即这些条目不被搜索)。仅没有被反馈46c屏蔽的一部分TCAM条目针对与分组报头偏移单元24的输出进行搜索(即报头部分H1a、H1b等等的搜索)。
因此,在每一个解析和分类周期期间,反馈46b通过方便报头部分H1a、H1b等等的选择而改善搜索键(要在TCAM 28中搜索)。另一方面,在每一个解析和分类周期期间,反馈46c通过屏蔽部分TCAM条目并且允许在TCAM的精简和有效数据库中执行搜索来改善TCAM 28的数据库。
在各种实施例中并且尽管在任何附图中未说明,但是实际TCAM条目也在各种解析和分类周期之间改变。
在一实施例中,TCAM 28和/或存储器32的内容至少部分地以例如SOC 14的应用区域、由IPAC 20处理的数据分组的类型和/或其它为基础被动态和/或周期地更新。TCAM 28和/或存储器32的内容的这样的更新确保了IPAC 20在不对IPAC 20的硬件配置进行任何实质修改的情况下解析和分类数据分组的几个类型。
如在当前公开中所公开的,反复解析和分类数据分组具有几个优点。例如,在单独解析和分类周期期间,数据分组的报头部分的相对应字段与TCAM 28中的各种字段相匹配。而且,在单独解析和分类周期期间,能够查找TCAM 28的单独逻辑区域。在一实施例中,由于反复解析和分类操作,与在传统解析和分类引擎中使用的TCAM相比较,TCAM 28的尺寸较小。在一实施例中,由于反复解析和分类操作(例如由于相对较小尺寸TCAM的使用),当前公开中所公开的解析和分类操作比传统解析和分类操作相对较快。进而,IPAC 20完全可编程,并且可以被配置以使得通过IPAC 20输出期望的分类数据(例如通过相应地对TCAM 28和/或存储器32编程)。而且,IPAC 20在IPAC 20的解析操作和分类操作之间提供灵活分隔(例如通过相应地对TCAM 28和/或存储器32编程)。而且,IPAC20使用SOC 14的一个或者多个处理核的最小资源或者不使用该资源,从而保留该一个或者多个处理核用于SOC 14的其它操作。
图6说明了根据本公开实施例用于操作图1-3的IPAC 20的示例方法600。方法600包括在604处(例如通过分组报头偏移单元24从网络控制器12)接收数据分组DP1。
在608处,IPAC 20对数据分组DP1执行解析和分类周期(例如第一解析和分类周期)。例如,分组报头偏移单元24在第一解析和分类周期期间生成数据分组的第一报头部分H1a,以该第一报头部分H1a为基础,IPAC 20在TCAM 28处执行第一查找。在一实施例中,第一查找也以数据分组的起始端口地址(例如端口ID 216)为基础。至少部分地以执行该第一查找为基础生成第一地址A1a。
在612处,IPAC 20以该解析和分类周期为基础(例如以从存储器32的第一地址A1a访问包括反馈46a和分类44a的第一内容为基础)生成解析和分类结果(例如包括反馈46b、反馈46c和分类44b的第一解析和分类结果)。
在616处,IPAC 20确定任何附加的解析和分类周期是否是必要的。第一解析和分类结果包括解析和分类完成标记(即LU完成146b)。例如,如果解析和分类完成标记为低,则在616处确定附加的解析和分类周期是必要的。另一方面,在616处,如果解析和分类完成标记为高,则确定附加的解析和分类周期不是必要的。
如果附加的解析和分类周期对于解析和分类数据分组不是必要的,则在620处,通过分类单元40从第一解析和分类周期输出分类44b。在输出分类44b之后,在624处,所接收的数据分组DP1的解析和分类结束。
如果附加的解析和分类周期是必要的,则在628处,第一解析和分类结果(在612处生成)用于下一个(例如第二)解析和分类周期。重复方框608、612、616和628的操作直到在620处确定附加的解析和分类周期不是必要的。
尽管这里说明和描述了具体实施例,但是本领域的普通技术人员和其他人将意识到,在不偏离本公开的范围的情况下,宽范围的替代和/或等同实现可以代替所示出和描述的具体实施例。本公开覆盖公平落入所附权利要求的范围内或者在等同物的声明下的全部方法、装置以及制造物品。本申请旨在覆盖这里所述实施例的任何改编或变化。因此,表明并且意欲使本公开仅由权利要求及其等同物限制。
Claims (15)
1.一种用于处理数据分组的方法,包括:
至少部分地以所述数据分组的报头信息为基础,通过反复解析器和分类器引擎对所述数据分组执行第一解析和分类周期;
至少部分地以执行所述第一解析和分类周期为基础生成第一解析和分类结果;
至少部分地以所述数据分组的报头信息以及所述第一解析和分类结果为基础对所述数据分组执行第二解析和分类周期;并且
至少部分地以执行所述第二解析和分类周期为基础生成第二解析和分类结果以使得所述第二解析和分类结果包括表明是否需要附加的解析和分类周期以对所述数据分组进行解析和分类的解析和分类完成标记;
如果所述解析和分类完成标记表明需要附加的解析和分类周期以对所述数据分组进行解析和分类,则至少部分地以所述数据分组的报头信息以及所述第二解析和分类结果为基础对所述数据分组执行第三解析和分类周期;并且
如果所述解析和分类完成标记表明不需要附加的解析和分类周期以对所述数据分组进行解析和分类,则输出所述数据分组的分类结果。
2.如权利要求1的方法,其中所述执行所述第一解析和分类周期进一步包括:
至少部分地以所述数据分组的报头部分为基础在内容可寻址存储器(CAM)处执行第一查找;
至少部分地以所述执行所述第一查找为基础生成第一存储器地址;并且
访问来自存储器的所述第一存储器地址的第一内容,所述第一内容包括所述第一解析和分类结果。
3.如权利要求1的方法,其中所述输出所述分类结果进一步包括:
至少部分地以包括在所述第二解析和分类结果中的分类信息为基础输出所述分类结果。
4.如权利要求1的方法,其中所述输出所述分类结果进一步包括:
输出包括与和所述数据分组相关联的队列、优先级和流标识中的一个或者多个相关联的信息的所述分类结果。
5.如权利要求1的方法,
其中执行所述第一解析和分类周期进一步包括至少部分地以所述数据分组的报头的第一报头部分为基础执行所述第一解析和分类周期;
其中执行所述第二解析和分类周期进一步包括至少部分地以所述数据分组的所述报头的第二报头部分为基础执行所述第二解析和分类周期,其中所述第二报头部分与所述第一报头部分不同。
6.如权利要求1的方法,其中执行所述第二解析和分类周期进一步包括:
至少部分地以包括在所述第一解析和分类结果中的报头偏移信息为基础执行所述第二解析和分类周期。
7.一种片上系统(SOC),包括:
处理核;以及
反复解析器和分类器引擎(IPAC),包括:
配置以接收数据分组并且(i)在第一反复周期期间根据所述数据分组的报头生成第一报头部分和(ii)在第二反复周期期间生成第二报头部分的分组报头偏移单元,
三重内容可寻址存储器(TCAM),其中所述IPAC被配置以在所述第一反复周期期间使用所述第一报头部分在所述TCAM处执行第一查找,并且对所述第一查找做出响应而生成第一存储器地址,
存储器,其中所述IPAC被配置以(i)在所述第一反复周期期间访问来自所述存储器中的所述第一存储器地址的第一内容,并且(ii)在所述第二反复周期期间访问来自所述存储器中的第二存储器地址的第二内容,
配置以(i)从所述存储器接收所述第一内容并且生成第一反馈的以及(ii)从所述存储器接收所述第二内容并且生成第二反馈的反馈处理单元,其中所述第二反馈包括表明是否需要附加反复周期以对所述数据分组进行解析和分类的解析和分类完成标记;以及
用于生成所述数据分组的分类信息的分类单元;
其中如果所述解析和分类完成标记表明附加的解析和分类周期以对所述数据分组进行解析和分类,则所述IPAC被进一步配置以至少部分地以所述数据分组的第三报头部分以及所述第二反馈为基础对所述数据分组执行第三解析和分类周期;并且
其中如果所述解析和分类完成标记表明没有附加的解析和分类周期以对所述数据分组进行解析和分类,则所述分类单元被配置以至少部分地以所述第二内容为基础输出对于所述数据分组的分类结果。
8.如权利要求7的SOC,其中所述分组报头偏移单元被进一步配置以至少部分地以所述第一反馈为基础在所述第二反复周期期间根据所述数据分组的所述报头生成所述第二报头部分。
9.如权利要求7的SOC,其中所述IPAC被进一步配置以:
至少部分地以所述第一内容为基础通过屏蔽所述TCAM的多个条目而生成所述TCAM的有效部分;以及
通过使用以所述第一内容为基础生成的所述第二报头部分在所述TCAM的所述有效部分处执行第二查找而执行所述第二反复周期。
10.如权利要求8的SOC,其中所述IPAC被进一步配置以:
在所述第二反复周期期间使用所述第二报头部分和所述第一反馈在所述TCAM处执行第二查找;并且
对所述第二查找做出响应而生成所述第二存储器地址。
11.如权利要求7的SOC,其中所述存储器是静态随机访问存储器(SRAM)。
12.如权利要求7的SOC,其中所述分组报头偏移单元被配置以从网络控制器接收所述数据分组。
13.一种用于处理数据分组方法,包括:
接收所述数据分组;
使用所述数据分组的报头的第一报头部分在三重内容可寻址存储器(TCAM)处执行第一查找以以所述TCAM的输出为基础生成第一内容;
使用所述数据分组的所述报头的第二报头部分以及所述第一内容在所述TCAM处执行第二查找以生成第二地址;并且
从所述存储器的所述第二地址访问第二内容,所述第二内容包括表明是否需要附加查找以对所述数据分组进行解析和分类的解析和分类完成标记;
如果所述解析和分类完成标记表明附加的解析和分类周期以对所述数据分组进行解析和分类,则使用所述数据分组的所述报头的第三报头部分以及所述第二内容在所述TCAM处执行第三查找以生成第三地址,其中至少部分地以所述第二内容为基础根据所述报头生成所述第三报头部分;并且
如果所述解析和分类完成标记表明没有附加的解析和分类周期以对所述数据分组进行解析和分类,则至少部分地以所述第二内容为基础输出所述数据分组的分类结果。
14.如权利要求13的方法,其中所述执行所述第一查找进一步包括:
执行所述第一查找以生成第一存储器地址;并且
通过访问存储器的所述第一存储器地址而生成所述第一内容。
15.如权利要求13的方法,其中:
所述第二报头部分至少部分地以所述第一内容为基础;并且
所述第二报头部分与所述第一报头部分不同。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US26147209P | 2009-11-16 | 2009-11-16 | |
US61/261,472 | 2009-11-16 | ||
PCT/US2010/056882 WO2011060436A1 (en) | 2009-11-16 | 2010-11-16 | Iterative parsing and classification |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102577273A CN102577273A (zh) | 2012-07-11 |
CN102577273B true CN102577273B (zh) | 2015-06-03 |
Family
ID=43517775
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201080045654.6A Expired - Fee Related CN102577273B (zh) | 2009-11-16 | 2010-11-16 | 反复解析和分类 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8599859B2 (zh) |
JP (2) | JP2013511223A (zh) |
CN (1) | CN102577273B (zh) |
WO (1) | WO2011060436A1 (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8848715B2 (en) | 2010-03-16 | 2014-09-30 | Marvell Israel (M.I.S.L) Ltd. | Combined hardware/software forwarding mechanism and method |
US9135560B1 (en) * | 2011-06-30 | 2015-09-15 | Sumo Logic | Automatic parser selection and usage |
KR20130093707A (ko) * | 2011-12-23 | 2013-08-23 | 한국전자통신연구원 | 패킷 분류 장치 및 그것의 패킷 분류 방법 |
US9319351B1 (en) | 2012-11-26 | 2016-04-19 | Marvell Israel (M.I.S.L.) Ltd. | Mechanism for wire-speed stateful packet inspection in packet processors |
US10284690B2 (en) * | 2014-01-08 | 2019-05-07 | Cavium, Llc | Methods and systems for distribution of packets among parsing clusters |
US9755972B1 (en) * | 2015-06-09 | 2017-09-05 | Google Inc. | Protocol-independent receive-side scaling |
US10341242B2 (en) * | 2016-12-13 | 2019-07-02 | Oracle International Corporation | System and method for providing a programmable packet classification framework for use in a network device |
US11038993B2 (en) | 2018-03-14 | 2021-06-15 | Fungible, Inc. | Flexible processing of network packets |
WO2019237029A1 (en) * | 2018-06-08 | 2019-12-12 | Fungible, Inc. | Directed graph traversal using content-addressable memory |
US10958770B2 (en) | 2018-10-15 | 2021-03-23 | Fungible, Inc. | Realization of a programmable forwarding pipeline through packet header summaries in a data processing unit |
CN109728883B (zh) * | 2018-12-13 | 2022-02-25 | 中国银行股份有限公司 | 数据交互方法及系统、源系统、目标系统 |
WO2020197720A1 (en) | 2019-03-27 | 2020-10-01 | Fungible, Inc. | Low latency packet switch architecture |
US11579802B2 (en) | 2019-10-04 | 2023-02-14 | Fungible, Inc. | Pipeline using match-action blocks |
US11579890B1 (en) * | 2020-01-29 | 2023-02-14 | Synopsys, Inc. | Frame parser executing subsets of instructions in parallel for processing a frame header |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7002965B1 (en) * | 2001-05-21 | 2006-02-21 | Cisco Technology, Inc. | Method and apparatus for using ternary and binary content-addressable memory stages to classify packets |
CN101242362A (zh) * | 2008-03-07 | 2008-08-13 | 华为技术有限公司 | 查找键值生成装置及方法 |
Family Cites Families (51)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805808A (en) * | 1991-12-27 | 1998-09-08 | Digital Equipment Corporation | Real time parser for data packets in a communications network |
US5414650A (en) * | 1993-03-24 | 1995-05-09 | Compression Research Group, Inc. | Parsing information onto packets using context-insensitive parsing rules based on packet characteristics |
US5473607A (en) * | 1993-08-09 | 1995-12-05 | Grand Junction Networks, Inc. | Packet filtering for data networks |
US5608662A (en) * | 1995-01-12 | 1997-03-04 | Television Computer, Inc. | Packet filter engine |
US5812760A (en) * | 1996-06-25 | 1998-09-22 | Lsi Logic Corporation | Programmable byte wise MPEG systems layer parser |
US5916305A (en) * | 1996-11-05 | 1999-06-29 | Shomiti Systems, Inc. | Pattern recognition in data communications using predictive parsers |
US5938736A (en) * | 1997-06-30 | 1999-08-17 | Sun Microsystems, Inc. | Search engine architecture for a high performance multi-layer switch element |
US6097724A (en) * | 1997-08-15 | 2000-08-01 | Lucent Technologies Inc. | Ram-based associative content-addressable memory device, method of operation thereof and ATM communication switching system employing the same |
US6480489B1 (en) * | 1999-03-01 | 2002-11-12 | Sun Microsystems, Inc. | Method and apparatus for data re-assembly with a high performance network interface |
US6356951B1 (en) * | 1999-03-01 | 2002-03-12 | Sun Microsystems, Inc. | System for parsing a packet for conformity with a predetermined protocol using mask and comparison values included in a parsing instruction |
US6611524B2 (en) * | 1999-06-30 | 2003-08-26 | Cisco Technology, Inc. | Programmable data packet parser |
US6392910B1 (en) * | 1999-09-10 | 2002-05-21 | Sibercore Technologies, Inc. | Priority encoder with multiple match function for content addressable memories and methods for implementing the same |
US6553453B1 (en) * | 1999-09-10 | 2003-04-22 | Sibercore Technologies, Inc. | Variable width content addressable memory device for searching variable width data |
US6961337B2 (en) * | 2000-01-06 | 2005-11-01 | International Business Machines Corporation | Interleaved processing system for processing frames within a network router |
US6775284B1 (en) * | 2000-01-07 | 2004-08-10 | International Business Machines Corporation | Method and system for frame and protocol classification |
US6970462B1 (en) * | 2000-04-24 | 2005-11-29 | Cisco Technology, Inc. | Method for high speed packet classification |
US6826180B1 (en) * | 2000-06-14 | 2004-11-30 | Mindspeed Technologies, Inc. | Communication packet processor with a look-up engine and content-addressable memory for storing summation blocks of context information for a core processor |
US6246601B1 (en) * | 2000-06-14 | 2001-06-12 | Netlogic Microsystems, Inc. | Method and apparatus for using an inter-row configurable content addressable memory |
JP3609358B2 (ja) * | 2000-08-17 | 2005-01-12 | 日本電信電話株式会社 | フロー識別検索装置および方法 |
US6606681B1 (en) * | 2001-02-23 | 2003-08-12 | Cisco Systems, Inc. | Optimized content addressable memory (CAM) |
US6879596B1 (en) * | 2001-04-11 | 2005-04-12 | Applied Micro Circuits Corporation | System and method for systolic array sorting of information segments |
US6862281B1 (en) * | 2001-05-10 | 2005-03-01 | Cisco Technology, Inc. | L4 lookup implementation using efficient CAM organization |
JP2003092598A (ja) * | 2001-09-18 | 2003-03-28 | Nec Corp | パケット転送処理装置 |
US7386525B2 (en) * | 2001-09-21 | 2008-06-10 | Stonesoft Corporation | Data packet filtering |
US6715029B1 (en) * | 2002-01-07 | 2004-03-30 | Cisco Technology, Inc. | Method and apparatus for possibly decreasing the number of associative memory entries by supplementing an associative memory result with discriminator bits from an original set of information |
US6871262B1 (en) * | 2002-02-14 | 2005-03-22 | Cisco Technology, Inc. | Method and apparatus for matching a string with multiple lookups using a single associative memory |
US7187694B1 (en) * | 2002-03-29 | 2007-03-06 | Pmc-Sierra, Inc. | Generic packet parser |
US20030212900A1 (en) * | 2002-05-13 | 2003-11-13 | Hsin-Yuo Liu | Packet classifying network services |
US7412507B2 (en) * | 2002-06-04 | 2008-08-12 | Lucent Technologies Inc. | Efficient cascaded lookups at a network node |
JP4105910B2 (ja) * | 2002-07-12 | 2008-06-25 | 富士通株式会社 | 連想メモリ装置及びそれを用いた中継装置 |
US7689485B2 (en) * | 2002-08-10 | 2010-03-30 | Cisco Technology, Inc. | Generating accounting data based on access control list entries |
US7941605B1 (en) * | 2002-11-01 | 2011-05-10 | Cisco Technology, Inc | Methods and apparatus for generating a result based on a lookup result from a lookup operation using an associative memory and processing based on a discriminator portion of a lookup word |
US7194626B2 (en) * | 2002-11-21 | 2007-03-20 | International Business Machines Corporation | Hardware-based secure code authentication |
US7415012B1 (en) * | 2003-05-28 | 2008-08-19 | Verizon Corporate Services Group Inc. | Systems and methods for high speed packet classification |
US7197597B1 (en) * | 2003-07-22 | 2007-03-27 | Cisco Technology, Inc. | Performing lookup operations in a content addressable memory based on hashed values of particular use in maintaining statistics for packet flows |
US7941606B1 (en) * | 2003-07-22 | 2011-05-10 | Cisco Technology, Inc. | Identifying a flow identification value mask based on a flow identification value of a packet |
US7240149B1 (en) * | 2003-11-06 | 2007-07-03 | Cisco Technology, Inc. | Multiple branch operations in an associative memory |
US20050132008A1 (en) * | 2003-12-10 | 2005-06-16 | International Business Machines Corporation | Database supported message routing |
US7304996B1 (en) * | 2004-03-30 | 2007-12-04 | Extreme Networks, Inc. | System and method for assembling a data packet |
JP2005353107A (ja) * | 2004-06-08 | 2005-12-22 | Hitachi Ltd | 半導体装置 |
JP4336625B2 (ja) * | 2004-06-17 | 2009-09-30 | 株式会社日立製作所 | パケット転送装置 |
JP4392316B2 (ja) * | 2004-10-04 | 2009-12-24 | 株式会社日立製作所 | フレーム中継装置 |
US20060182143A1 (en) * | 2005-02-11 | 2006-08-17 | Lu Hongqian K | System and method for filtering communications packets on electronic devices |
US7646771B2 (en) * | 2005-08-17 | 2010-01-12 | Cisco Technology, Inc. | Compilation of access control lists |
US7325074B2 (en) * | 2005-09-28 | 2008-01-29 | Cisco Technology, Inc. | Incremental compilation of packet classifications using fragmented tables |
JP2007243595A (ja) * | 2006-03-08 | 2007-09-20 | Fuji Xerox Co Ltd | ネットワーク制御装置および制御方法 |
AU2006235845A1 (en) * | 2006-10-13 | 2008-05-01 | Titus Inc | Method of and system for message classification of web email |
US7653063B2 (en) * | 2007-01-05 | 2010-01-26 | Cisco Technology, Inc. | Source address binding check |
US7978700B2 (en) * | 2007-03-12 | 2011-07-12 | Marvell Israel (Misl) Ltd. | Apparatus for determining locations of fields in a data unit |
US7894440B2 (en) * | 2009-03-13 | 2011-02-22 | Freescale Semiconductor, Inc. | Programmable hash-tuple generation with parallel rule implementation independence |
US8638800B2 (en) * | 2009-04-03 | 2014-01-28 | Freescale Semiconductor, Inc. | Technique for generating hash-tuple independent of precedence order of applied rules |
-
2010
- 2010-11-16 US US12/947,678 patent/US8599859B2/en not_active Expired - Fee Related
- 2010-11-16 JP JP2012539074A patent/JP2013511223A/ja active Pending
- 2010-11-16 CN CN201080045654.6A patent/CN102577273B/zh not_active Expired - Fee Related
- 2010-11-16 WO PCT/US2010/056882 patent/WO2011060436A1/en active Application Filing
-
2015
- 2015-07-29 JP JP2015149511A patent/JP2016001897A/ja active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7002965B1 (en) * | 2001-05-21 | 2006-02-21 | Cisco Technology, Inc. | Method and apparatus for using ternary and binary content-addressable memory stages to classify packets |
CN101242362A (zh) * | 2008-03-07 | 2008-08-13 | 华为技术有限公司 | 查找键值生成装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2011060436A1 (en) | 2011-05-19 |
US8599859B2 (en) | 2013-12-03 |
US20110116507A1 (en) | 2011-05-19 |
JP2016001897A (ja) | 2016-01-07 |
CN102577273A (zh) | 2012-07-11 |
JP2013511223A (ja) | 2013-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102577273B (zh) | 反复解析和分类 | |
CN104348716B (zh) | 一种报文处理方法及设备 | |
Vamanan et al. | EffiCuts: Optimizing packet classification for memory and throughput | |
CN104579940B (zh) | 查找访问控制列表的方法及装置 | |
US9627063B2 (en) | Ternary content addressable memory utilizing common masks and hash lookups | |
US7436830B2 (en) | Method and apparatus for wire-speed application layer classification of upstream and downstream data packets | |
US8335780B2 (en) | Scalable high speed relational processor for databases and networks | |
US20190036821A1 (en) | Efficient caching of TCAM rules in RAM | |
CN101411136A (zh) | 利用超过cam关键字长度的表索引执行查表操作的方法 | |
CN103248573A (zh) | 面向OpenFlow的集中管理交换机及其数据处理方法 | |
CN111988231B (zh) | 一种掩码五元组规则匹配的方法及装置 | |
CN101330466A (zh) | 一种组播报文的转发方法及装置 | |
US20140114995A1 (en) | Scalable high speed relational processor for databases and networks | |
US20050172025A1 (en) | Method of selecting and sorting packets provided to a piece of equipment by a data packet transmission network | |
US7593953B1 (en) | Table lookup mechanism for address resolution | |
Bando et al. | Range hash for regular expression pre-filtering | |
CN111950000B (zh) | 一种接入访问控制方法及设备 | |
Song et al. | Packet classification using coarse-grained tuple spaces | |
US20210044521A1 (en) | System and method of processing packet classification with range sets | |
CN111200542B (zh) | 一种基于确定性替换策略的网络流量管理方法及系统 | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
KR20130093707A (ko) | 패킷 분류 장치 및 그것의 패킷 분류 방법 | |
CN115834478A (zh) | 一种利用tcam实现pbr高速转发的方法 | |
CN108259504A (zh) | 一种基于组实现访问控制列表的方法及装置 | |
Byun et al. | Vectored-bloom filter implemented on FPGA for IP address lookup |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150603 Termination date: 20191116 |
|
CF01 | Termination of patent right due to non-payment of annual fee |