CN104718731B - 三重内容可寻址内存协助的包分类的方法、装置以及网络路由器 - Google Patents
三重内容可寻址内存协助的包分类的方法、装置以及网络路由器 Download PDFInfo
- Publication number
- CN104718731B CN104718731B CN201380034498.7A CN201380034498A CN104718731B CN 104718731 B CN104718731 B CN 104718731B CN 201380034498 A CN201380034498 A CN 201380034498A CN 104718731 B CN104718731 B CN 104718731B
- Authority
- CN
- China
- Prior art keywords
- prefix
- label
- tcam
- rule
- trie
- 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
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/901—Buffering arrangements using storage descriptor, e.g. read or write pointers
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种由网络路由器实现的包分类方法,所述方法包括:获取包,其中所述包的包头包括由规则集指定的多个维度字段;将至少两个所述维度字段的一个或多个比特与储存于三重内容可寻址内存(TCAM)中的对应表项进行匹配;基于与所述TCAM中的所述对应表项关联的数据生成哈希键,其中所述关联数据储存于至少一个非TCAM内存中;用所述哈希键搜索储存于所述至少一个非TCAM内存中的多维trie树;基于所述搜索将所述包映射到所述规则集中的一条或多条规则。
Description
相关申请
本申请要求于2013年6月25日由Zixiong Wang提交的、申请号为13/926,303、发明名称为“三重内容可寻址内存协助的包分类”的美国非临时专利申请的优先权,所述非临时专利申请又要求于2012年6月27日由Zixiong Wang提交的、申请号为61/664,796、发明名称为“三重内容可寻址内存协助的包分类算法”的美国临时专利申请的优先权,两者的全部内容都通过引用结合在本申请中。
关于美国联邦政府资助的研发项目的声明
不适用。
缩微胶片附件的引用
不适用。
发明背景
在网络通信中,不断提高网络运营的效率和安全性是互联网用户的重要目标。数据包分类可基于包头中携带的信息的多种维度对包进行区分或分类,从而实现接入控制、流量工程、入侵检测及很多其他网络服务。更具体地,网络路由器可将收到的包分成不同的流,然后根据该分类进行适当的动作。
包分类器可使用一套过滤器或规则来指定包的类别。例如接入控制列表(ACL)中的规则可指定一套源网络地址前缀和目的网络地址前缀,并将所述规则与对应动作相关联(如,拒绝或允许接入某个服务或设备)。ACL可包括使用包头中不同字段的规则集,其中每个字段也可称为一个维度。例如,对于使用传输层协议(TCP)的包,可使用源端口号、目的端口号、源互联网协议(IP)网络地址前缀、目的IP网络地址前缀及网络协议等五个维度。各种网络服务或设备,如服务器、路由器及交换机,可配备或受控于ACL。例如,在数据中心(DC)和云应用中,可能需要进行高速(如,百万兆每秒级)的包分类和ACL,且可能需要较低的网络ACL查找时延。高吞吐量的目标为包分类算法的高效实现带来了挑战。
发明内容
在一个实施例中,本发明包括一种由网络路由器实现的包分类方法,所述方法包括:获取包,其中所述包的包头包括由规则集指定的多个维度字段;将至少两个所述维度字段的一个或多个比特与储存于三重内容可寻址内存(TCAM)中的对应表项进行匹配;基于与所述TCAM中的所述对应表项关联的数据生成哈希键,其中所述关联数据储存于至少一个非TCAM内存中;用所述哈希键搜索储存于所述至少一个非TCAM内存中的多维trie树;基于所述搜索将所述包映射到所述规则集中的一条或多条规则。
在另一实施例中,本发明包括一种装置,所述装置包括:TCAM,用于储存规则集指定的多个维度中的至少两个的表项;至少一个非TCAM内存,用于储存与所述TCAM中的所述表项关联的数据,以及所述至少两个维度的多维trie树;接收器,用于接收包,所述包包括所述多个维度的多个字段;处理器,与所述接收器、所述TCAM及所述至少一个非TCAM内存相连,用于将每个至少两个所述字段中的一个或多个比特与所述表项进行匹配;基于与所述表项关联的所述数据生成哈希键;用所述哈希键搜索所述多维trie树;基于所述搜索将所述包映射到所述规则集中的一条或多条规则。
在又一实施例中,本发明包括一种网络路由器,包括:TCAM,用于储存源地址前缀和目的地址前缀;TCAM关联数据(AD)表,与所述TCAM相连,用于储存所述源地址前缀和所述目的地址前缀的关联数据;哈希化分trie树表,与所述TCAM AD表相连,用于储存由一个或多个分trie树表示的多个网络地址前缀,所述一个或多个分trie树属于多维trie树,其中每个分trie树可由哈希键至少部分基于储存在所述TCAM中的每个前缀的关联数据进行定位;乘积表,与所述哈希化分trie树表相连,用于储存为所述多个地址前缀分配的标签对;规则表,与所述乘积表相连,用于储存规则,其中每个所述规则对应所述乘积表中的标签对。
为更清楚地理解这些及其它特性,以下将结合附图及权利要求书对其进行详细描述。
附图说明
为了更完整地理解本发明,请结合附图及具体实施例参考以下附图说明,其中相似的附图标号表示相似的部件。
图1A示出了较佳的规则数据库;
图1B从另一角度示出了图1A所示的规则数据库的一部分维度;
图2示出了处理器系统的一个实施例;
图3示出了包分类实现方式的一个实施例;
图4示出了标签分配实现方式的一个实施例;
图5示出了包分类方法的一个实施例;
图6示出了网络单元的一个实施例。
具体实施方式
首先,应理解,尽管以下对一个或多个实施例的实现方式进行了举例说明,但所公开的系统和/或方法可通过任意多的已知或现有技术实现。本申请绝不限于以下阐述的实现方式、附图和技术,包括本发明中图示和说明的典型设计及实现方式,而是可以在所附权利要求及其所有同等替代的范围内进行修改。
一些现有的仅基于三重内容可寻址内存(TCAM)的或基于算法的包分类方案或方法可能有潜在的问题。包分类所使用的示例算法可包括启发式多维切分算法、多维trie树搜索算法及TCAM协助的算法,每种算法都可能有其自身的缺陷。例如,启发式切分算法要求较高的内存带宽,这个问题可能因数据中心应用的高吞吐量要求而恶化。再如,现有多维trie树搜索算法可能引起较长的时延,可能不具备区域效率。
又如,现有的TCAM协助的算法使用TCAM,TCAM为一种特殊类型的内容可寻址内存(CAM),其允许“X”的三重匹配状态,或“不关心”储存的数据词中的一个或多个比特,如网络地址。与此相比,非TCAM内存(如二元CAM),使用全1和全0组成的数据搜索词。TCAM的使用可有助于为企业网络处理单元(NPU)芯片组实现低成本和高区域效率的搜索引擎。然而,现有TCAM协助的算法可能消耗TCAM中相对较大的区域,而TCAM通常又很昂贵。这样,对于数据中心和云应用,使用现有算法可能难以满足高吞吐、快更新和低时延等期望属性。因而,仍然需要对包分类和ACL的实现进行改进,以应对现代数据中心的挑战。
本发明公开的示例实施例允许通过TCAM及储存于非TCAM内存的多维哈希化trie树协助进行包分类和ACL。根据一示例实施例,所述TCAM可用于储存源地址前缀和目的地址前缀。在使用中,包括源网络地址和目的网络地址的包可由网络路由器接收,所述网络路由器然后确定所述TCAM中与所述源地址匹配的源地址前缀,和/或所述TCAM中与所述目的地址匹配的目的地址前缀。进而,所述路由器可计算哈希键,所述哈希键基于与所述前缀关联的数据及所述包中的所述地址生成。可用所述哈希键搜索属于所述哈希化trie树的分trie树。进一步,所述分trie树可包括地址前缀及为每个分trie树分配的标签,以此反映各关联前缀的父子关系。基于所述分trie树搜索,可确定出乘积表中的源标签和目的标签对,且可为所述包匹配出对应的规则。总的来说,本发明所公开的实施例有助于实现数据中心和云应用的高吞吐、快更新及低时延。
图1A示出了较佳的规则表或数据库100。示例性地,所述规则数据库100包括10条规则(表示为R0-R9),其中每条规则包括5个维度或方面。应理解规则数据库中可包括任意条数的规则,且规则可包括任意适当数量的维度。如图1所示,每条规则可由源地址前缀、目的地址前缀、源端口、目的端口及网络协议等维度指定或表征。所述源地址前缀和目的地址前缀可由任意适当类型的网络地址的一部分构成,如互联网协议(IP)地址和媒体接入层(MAC)地址。根据实现需要,所述源端口和目的端口可具有任意合适数量的端口,如80或大于1024。同样,所述规则数据库100中可使用任意适当的网络协议,如传输控制协议(TCP)。在使用中,当全部维度与包头包含的信息都匹配时,可认为网络路由器接收的包完全匹配一条或多条规则。
图1B从另一角度示出了所述规则数据库100的一部分维度。具体地,图1B示出了所述规则数据库100的两个维度:1)源网络地址前缀(简称源前缀),表示为P0-P5,组织在二元trie树120中;2)目的网络地址前缀(简称目的前缀),表示为Q0-Q7,组织在二元trie树150中。前缀P0-P5及Q0-Q7的取值分别在前缀表130和140中指定,所述前缀表包含图1A中指定的前缀值(6个唯一源前缀和8个唯一目的前缀)。
所述trie树120和150可为用于组织用于包分类的网络地址前缀的数据结构。具体地,所述trie树120可包括多个节点或顶点101-110,表示所述前缀表130中的源前缀;所述trie树150可包括多个节点或顶点151-163,表示所述前缀表140中的目的前缀。在所述trie树120中,左子节点可表示0,右子节点可表示1。例如,根节点101的左子节点102对应1,根节点101的右子节点103对应1。所述trie树120和150中所有其他节点都遵循这一规律。例如,从根节点101到叶节点110进行遍历可经过一个右向遍历到节点103,一个左向遍历到节点105,一个左向遍历到节点107,以及一个左向遍历到节点110。这样就得到节点110表示取值为1000的前缀P2。进而,如图1B所示,节点101-110的编号基于宽度优先顺序,其中父节点可先于子节点,左子节点可先于右子节点。
注意,前缀后的星号(*)表示其后比特的任意组合,且不是前缀本身的一部分。例如,所述前缀表140中的Q2代表“*”,表示Q2可为任意网络地址的前缀。因为根节点151不需在trie树150中进行任何遍历,所以节点151即表示Q2。再如,P4代表“11*”,表示P4可为任意以“11”开头的网络地址的前缀。也就是说,P’4对应网络地址前缀“11”,由节点106表示。并且,注意所述trie树120被构建来表示网络路由器中储存的前缀。因此,所述trie树120中的一些节点可不对应任何前缀。这些非前缀或中间节点在图1B中用白圈表示,而前缀节点用黑圈表示。
要对收到的包括,如其头部包括,源网络地址和目的网络地址的包进行分类,可能要先查找所述trie树120和150。所述源网络地址可匹配到一个或多个源前缀,所述目的网络地址可匹配到一个或多个目的前缀,以确定与所述收到的包对应的一条或多条规则。在所述地址查找过程中,可以一次检查所述源或目的网络地址的多个比特。每次检查的比特数可称为步幅。如图1B所示,所述表示前缀P0-P5的trie树120可划分为分trie树,每个分trie树表示一个步幅的树遍历。这样,所述trie树120可称为多比特trie树。分trie树还具有父子关系,且这种关系是可变的。例如,如果分trie树B是分trie树A的子分trie树,而分trie树C是分trie树B的子分trie树,则认为分trie树C也是分trie树A的子分trie树。
如图1B所示,所述数据库100中的每个所述规则R0-R9由连接两个实心顶点的虚线表示。可有独立规则和从属规则。独立规则,包括R3、R4和R6,可由源前缀和目的前缀中的叶子前缀标识,而从属规则可有至少一个不是叶子前缀的前缀。在使用中,如果包匹配独立规则,则所述包不能匹配任何其他规则;另一方面,如果所述包匹配从属规则,则所述包还可匹配其他一条或多条规则(多匹配)。
在现有TCAM协助的算法中,对于独立规则,可减少TCAM区域。具体地,所述叶子前缀可储存到TCAM,而剩余维度的字段(如端口号、协议)可储存到非TCAM内存,如静态随机接入内存(SRAM)。对于从属规则,可仍然需要将全部维度整体储存到TCAM。例如,对于所述规则数据库100,独立规则R3、R4和R6可储存于相对较窄的TCAM和SRAM,而从属规则,如R0-R2和R5,可整体储存在较宽的TCAM(就物理宽度而言)。相比之下,本发明说提出的实施例可使用TCAM协助的多维哈希化trie树,从而对独立规则和从属规则都缩小TCAM区域。
图2示出了处理器系统200的一个实施例,所公开的查找算法可在其中进行运算。所述系统200可包括如图2所设置的TCAM 210、TCAM关联数据(AD)表220、分trie树表230、乘积表240、规则表250、优先级选择单元或模块260及动作表270。如前所述,所述TCAM 210可为特殊类型的CAM,其允许“X”的三重匹配状态,或“不关心”储存的数据词中的一个或多个比特,如网络地址。本发明中,所述TCAM 210可用于储存独立IP和/或MAC trie树(如trie树120和trie树150)的一个或多个根节点对。例如,所述TCAM210中储存的根节点对可包括所述源trie树120的根节点(如,所述根节点102)和所述目的trie树150的根节点(如,所述根节点151)。为区分IP和MAC地址,储存在所述TCAM 210中的每个根节点可包括类型字段。注意各根节点可具有不同的长度。
(作为表项储存在所述TCAM 210中的)根节点对的关联数据可储存在所述TCAM AD表220的表项中。TCAM AD表的表项可包括关联数据,所述关联数据指示或指定其根节点对的每个根节点的长度,所述关联根节点是否为前缀,和/或所述根节点比特后附加的用于生成哈希键的网络地址比特的长度。可用每个关联根节点的所述附加比特及所述TCAM表项的标识生成或计算所述哈希键,其中所述附加比特表示为PartKey。然后,可用所述哈希键定位所述分trie树表230中的表项。在哈希命中时,可读取所述分trie树表230中的关联表项,所述表项表示所述独立多维trie树内的分trie树对,所述分trie树对可为所述源trie树120和所述目的trie树150的组合,其中公共根节点对储存在所述TCAM内在中。然后,可用其PartKey之后的源和目的网络地址比特在所述分trie树内进行前缀匹配搜索。
注意本发明中所述各表可实现为储存于至少一个非TCAM内存,如静态随机存取内存(SRAM),的数据结构。例如所述分trie树表230和/或所述乘积表240可实现为哈希表,用哈希键进行搜索。进一步地,所述分trie树230和/或所述乘积表240可划分为两个(或更多个)表,如用于键值的哈希运算的2-left哈希表和储存所述关联数据的线性表。虽然以2-left哈希表为例进行描述,但应理解也可使用其他任意适当类型的哈希表。进一步地,所述规则表250及所述动作表270可实现为线性表。
分trie树的编码可使用各种方案。例如,可将密度相对高的分trie树编码为位图,而将密度相对低的分trie树编码为富前缀节点或多层的增强trie树节点和富前缀节点。使用增强trie树节点和/或富前缀节点时,所关联的PartKey可添加为用于哈希验证的trie树编码的一部分。分trie树编码的更详细描述,可参考由Z.Wang等在2012年5月4日提交的,专利号为13/464,840,发明名称为“基于优化Trie树的地址查找”的美国专利申请,以及由Z.Wang在2013年6月18日提交的,专利号为13/920,306,发明名称为“通过统一哈希化Trie树进行的互联网协议和以太网查找”的美国专利申请,两者的内容都通过引用结合在本发明中。
图3示出了包分类实现方式300的一个实施例,可用于处理器系统,如所述系统200。示例性地,所述实现方式300仍然使用所述规则数据库100来说明所公开实施例的原理,但本领域普通技术人员可认识到同类方法也可适用于其他适当规则或流。如图3所示,TCAM(如所述TCAM 210)包括两个TCAM表项,所述TCAM表项可用于以(源前缀,目的前缀)的格式储存信息。例如,第一表项为(0*,*),第二表项为(1*,*)。这里,所述第一表项(0*,*)可指示其匹配源前缀为0*且目的前缀为*的一个或多个规则。应理解被发明使用的所述格式或数据形式可作为示例,但在本发明所公开的原理范围内可使用任何其他格式或形式。
与所述TCAM表项关联的数据可储存于TCAM AD表(如所述TCAM AD表220)。在一实施例中,所述关联数据可采用(TCAM源前缀长度,TCAM目的前缀长度),即(srcKeyPartLen,dstKeyPartLen)的格式。这里,标记srcKeyPartLen和dstKeyPartLen可分别指示紧跟所述匹配的TCAM源前缀长度和目的前缀长度的源地址比特和目的地址比特的个数。这样,所述第一TCAM AD表项(1,0);(0,1)可指示所述对应TCAM表项的源前缀长度为1比特(简称1b)且目的前缀长度为0b,所述网络地址中没有比特可用于生成哈希键,且所述目的网络地址的第一个比特应用于生成哈希键,用于分trie树哈希运算。
分trie树表中可包含多个哈希化分trie树,如图3所示的分trie树A-F。或者,如果需要,每个分trie树可实现为单独的分trie树表。可生成哈希键,用于在所述多个哈希化分trie树中定位哈希化分trie树(如,所述哈希化分trie树A)。这样,由于其可用哈希键进行搜索,可将所述包括所述多个哈希化分trie树的trie树看作哈希化的trie树。所述哈希键可用所述TCAM AD表中储存的关联数据生成。除所述TCAM AD表项中定义的所述源地址比特和目的地址比特外,标识对应TCAM表项的信息(如TCAM地址或为所述TCAM表项分配的软件标识)也可用作所述分trie树哈希运算中的键的一部分,用来区分不同TCAM表项。为描述清晰,与所述哈希化trie树A对应的所述哈希键在图3中示为(*,1),其中1指示所述目的网络地址的第一个比特的取值为1,而与所述哈希化trie树B对应的所述哈希键在图3中示为(*,0),其中0指示所述目的网络地址的第一个比特的取值为0。
与所述第一TCAM AD表项相似,第二TCAM AD表项(1,0);(1,2)可指示所述TCAM表项的源前缀长度为1b且目的前缀长度为0b,第二个源地址比特中应用于生成所述哈希键,且所述目的地址的前两个比特应用于生成哈希键,用于分trie树哈希运算。同样,与所述哈希化分trie树C对应的所述哈希键示为(1,10),其中1指示所述源地址的第二个比特取值为1,10指示所述目的地址的前两个比特取值为10。
所述哈希化分trie树A可具有根节点在P0的包括前缀P0和P1的源分trie树(如,所述trie树120中的分trie树),以及根节点在Q3的包括前缀Q3、Q4、Q6和Q5的目的分trie树。可将所述哈希化分trie树A的一层或多层编码为位图、增强trie树节点、富前缀节点、或其组合。
在一实施例中,除进行分trie树编码外,还可为哈希化分trie树中每个源前缀和目的前缀分配标签。例如,图4示出了标签分配实现方式400,可用于图3所示的哈希化分trie树A。所述实现方式400显示,可为Q3分配标签D0,为Q4分配标签D1,为Q6分配标签D2,为Q5分配标签D3。进一步地,每个标签可包括两个参数,用(Value,Mask)表示。对于具体的分trie树(包括源分trie树和目的分trie树),如所述哈希化分trie树A,所述源分trie树中的标签的Value部分在所述源分trie树中的所有标签可以是唯一的。同样,所述目的分trie树中的标签的Value部分在所述目的分trie树中的所有标签可以是唯一的。
在一实施例中,所述源分trie树和目的分trie树中的所述标签分配可反映其关联的前缀的父子关系。在所述实现方式400中,可对所述Value和Mask进行配置,使Mask中设置的比特(如,1)指示要关心对应的Value比特,而Mask中未设置的比特(如,0)指示“不关心”所述对应Value比特。例如,从图1B中可以看出,Q4(带标签D1)为Q6(带标签D2)的父前缀,因此可将D1和D2设计为使以下等式成立:
D2.Value&D1.Mask==D1.Value&D1.Mask (1)
使用图4中的值,等式(1)转换为01&10==00&10,等于00。也就是说,使用D2.Value和D1.Mask的和(&)逻辑运算的结果与使用D1.Value和D1.Mask的&运算的结果相等。
注意所述等式(1)证明Q4为Q6的父前缀,而相反则所述等式(1)不成立。也就是说,可将D1和D2设计为使以下等式成立:
D1.Value&D2.Mask!=D2.Value&D2.Mask (2)
例如,使用图4中的值,等式(2)中D1.Value&D2.Mask=00&11=00,但其不等于D2.Value&D2.Mask=01&11=01。
进一步地,以上原理对两个没有父子关系的前缀也可成立。例如,Q5(带标签D3)和Q4(带标签D1)没有父子关系,因此可将D1和D3设计为使以下两个等式成立:
D3.Value&D1.Mask!=D1.Value&D1.Mask (3)
D1.Value&D3.Mask!=D3.Value&D3.Mask (4)
对图4中的值进行快速验证可以证明等式(3)和(4)都成立。应理解,只要父前缀和子前缀的关系可以验证,标签中的Value和Mask部分可使用任意适当的值。
现在重新参考图3。在一实施例中,在搜索所述哈希化分trie树A时,在其源分trie树部分进行的源网络地址查找可同时返回最短前缀匹配(SPM)(用S.SPM表示)和最长前缀匹配(LPM)(用S.LPM表示)的标签。同样,在其目的分trie树部分进行的目的网络地址查找可同时返回所述SPM(用D.SPM表示)和LPM(用D.LPM表示)的标签。例如,假设收到的包(带源地址和目的地址)匹配到规则R7,其中规则R7与源前缀P1(标签为S1)和目的前缀Q5(标签为D3)相关联。在查找过程中,可将所述源地址的比特与所述trie树120中的源地址进行匹配。如果匹配到R7,查找结果可返回标签S0为S.SPM,S1为S.LPM。进一步地,可将所述目的地址的比特与所述trie树150中的目的地址进行匹配。如果匹配到R7,查找结果可返回标签D0为D.SPM,D3为D.LPM。
在一实施例中,可生成第二哈希键,用于定位乘积表中的表项(或者根据具体实现,定位乘积表表项的字段)。所述第二哈希键的生成可考虑最短匹配的标签的Value部分(用S.SPM.Value和D.SPM.Value表示)以及所述哈希化分trie树表中的哈希化分trie树地址。例如,对于匹配规则R7的包,其对应的第二哈希键可用标签S0、标签D0及所述哈希化分trie树A的地址进行计算。为描述清晰,规则R7对应的所述第二哈希键,在图3中用(S0,D0)表示,可用来访问乘积表的表项U。注意在所述哈希键的计算中可不需要S0和D0的Mask部分(使用Value部分)。
所述乘积表表项U内的字段可将所述哈希化分trie树A的标签与所述数据库100中的规则相关联。例如,可将规则R7与字段(S1,D3)关联,其中S1对应S.LPM,D3对应D.LPM。由于对分trie树(如所述哈希化分trie树A)的查找可返回S.SPM,S.LPM,D.SPM及D.LPM,在满足以下两个条件时,可将所述结果看作与具有源标签(用FS表示)和目的标签(用FD表示)的字段相匹配:
条件1:
FS与S.SPM或S.LPM相同,或者FS为S.SPM的子标签及S.LPM的父标签。
条件2:
FD与D.SPM或D.LPM相同,或者FD为D.SPM的子标签及D.LPM的父标签。
所述条件1和2可通过以下举例进行理解。从图1可以看出,规则R8和规则R7具有相同的源前缀P1,相同的源端口和目的端口,及相同的协议,且R8的目的前缀Q3为R7的目的前缀Q5的父前缀,因此R8包含R7。第一示例中,假定包包括的(源地址,目的地址)为(010000,110000)。使用所述源地址和目的地址的查找可返回S0为S.SPM,S1为S.LPM,D0为D.SPM,以及D3为D.LPM。应用上述条件1和2,可以看出字段(S1,D0)和(S1,D3),由于同时满足条件1和2,因此都与查找结果匹配,而字段(S0,D1)和(S0,D2),由于不满足条件2,因此与查找结果不匹配。在第二示例中,假定(源地址,目的地址)为(010000,100000)的键返回S0为S.SPM,S1为S.LPM,D0为D.SP,以及D1为D.LPM。在所述第二示例中,由于D2和D3不满足条件2,因此字段(S0,D2)and(S1,D3)与所述键不匹配。但是,字段(S1,D0)和(S0,D1),由于同时满足条件1和2,因此与所述键相匹配。这些字段的关联规则为R8和R9,所述规则R8和R9有交叉。具体地,所述R9对应的源前缀P0为所述R8对应的源前缀P1的父前缀,而所述R8对应的目的前缀Q3为所述R9对应的目的前缀Q4的父前缀。进一步地,由于共享同样的源端口、目的端口及协议,因此所述规则R8和R9为相交规则。
在一实施例中,乘积表表项U内的字段可根据其关联规则的优先级进行排序,所述优先级可通过规则表确定。例如,可认为所述乘积表表项U中的第一个匹配字段具有最高优先级。这样,具有地址比特(010000,110000)的包可解析为与规则R7关联的(S1,D3),而具有地址比特(010000,100000)的包可解析为与规则R8关联的(S1,D0)。
如图3所示,乘积表可用于将规则映射到多维度的标签。在乘积表表项中,每个字段可具有指向规则表中的关联数据的索引或指针,并且所述规则表中的每个表项可储存对应其匹配规则的源端口、目的端口及协议的信息。在使用中,可将包的源端口、目的端口和协议字段与所述规则表中的关联表项进行比较,匹配即表明所述包的完整分类。从而,可实现通过多维的哈希化分trie树及乘积表进行高效搜索,进行规则匹配。
图3中,可以看出一些所述哈希化分trie树在其源分trie树部分的标签中可不具有父子关系。例如,所述哈希化分trie树F的源分trie树部分的标签没有父子关系。这样,从所述分trie树F到所述乘积表的两个哈希键中的每一个可与同一字段的项相关联。这是因为分trie树F与叶子规则(如R0和R6)相关联,所述叶子规则有至少一个具有叶子前缀(如,P2为规则R0的源前缀)的维度。在使用中,如果所述规则数据库由叶子规则主导,则所述乘积表结构及搜索过程可相应简化以获得益处,如节省芯片面积。
注意,除了储存多维哈希化分trie树的公共根节点外,TCAM(如所述TCAM 210)还可用于储存包分类规则(如R0-R9中的一条或多条)。为支持包同时匹配所述TCAM中的规则和所述TCAM中的trie/分trie树的情况,所述TCAM可用于支持多匹配指示。在一实施例中,TCAM AD表(如所述TCAM AD表220)中的表项可指示其关联TCAM表项是规则还是分trie树根节点。如果所述TCAM表项为规则,则所述TCAM AD表项可进一步指示与所述规则对应的优先级信息及动作表指针。
进一步地,当包匹配所述TCAM中的多条规则和所述TCAM中的trie/分trie树根节点时,所述优先级信息可用于选择具有最高优先级的规则。对于匹配的分trie树根节点,其在分trie树表(如,所述分trie树表230)、乘积表(如所述乘积表240)和规则表(如所述规则表250)中的关联表项可用本发明所述的流程进行搜索。可在所述规则表中添加规则优先级字段和动作表指针。可通过比较所述规则表中的优先级并从所述匹配的规则(储存在所述TCAM 210中)中选出最高优先级来进行优先级选择。进一步地,可使用优先级选择模块(如所述优先级选择模块260)选择具有较高优先级的规则,以对动作表(所述动作表270)进行索引。
所公开的各实施例可应用于网络地址匹配所述TCAM中多个分trie树根节点的情况。此时,由于支持多匹配,通常昂贵的TCAM可仍然只搜索一次,而其他数据结构,包括所述分trie树表、所述乘积表和/或所述规则表可搜索两次或两次以上。对所述其他数据结构的每次搜索可针对每个匹配的TCAM分trie树根节点。而且,可进行优先级选择,找出具有最高优先级的匹配规则,以对所述动作表进行索引。
图5示出了包分类方法500的一个实施例,所述方法可由包括处理器系统(如,所述系统200)的网络设备实现。从步骤510开始,所述方法500可获取或接收包括源地址和目的地址的包。注意所述包可在本地获取,或从其他网络设备远程获取,可采用任意适当结构作为其格式,并且可包括其他信息维度,如源端口、目的端口、协议等。
在步骤520,所述方法500可确定所述源地址中一个或多个最高有效位(MSB)与TCAM(如所述TCAM 210)中储存的源地址前缀的匹配项,或所述目的地址中一个或多个MSB与所述TCAM中储存的目的地址前缀的匹配项,或两者。如前所述,如果储存在所述TCAM中的源地址前缀或目的地址前缀就是“*”,则任意收到的包都可视为与其匹配。
在步骤530,所述方法500可基于与所述源地址前缀和所述目的地址前缀的至少一个相关联的数据生成哈希键,其中所述关联数据储存于至少一个非TCAM内存(如,所述TCAMAD表220)。例如,所述TCAM AD表中的表项可指定用什么信息来计算所述哈希键,如,是否使用与所述源地址前缀,或所述目的地址前缀、或所述两者关联的数据。进一步地,用于计算所述哈希键的所述信息可包括,例如,PartKey(TCAM中的前缀之后的一些比特)和对应TCAM表项的地址或为所述TCAM表项分配的软件定义标识。
在步骤540,所述方法500可用所述哈希键搜索储存于所述至少一个非TCAM内存中的多维trie树。例如,所述多维trie树可储存为分trie树表中的哈希化分trie树,且可在搜索过程中定位属于所述哈希化多维trie树的多个分trie树(如,源分trie树和目的分trie树)。在步骤540,所述方法500可基于所述搜索将所述收到的包映射到一条或多条规则。注意映射所述包还可进一步基于其他结果,因此术语“基于”可指示完全或部分的相关性。在步骤550,所述方法500可将所述源地址中的比特(如所述PartKey后的比特)与属于所述分trie树的一个或多个源地址前缀进行匹配。在步骤560,所述方法将所述目的地址中的比特(如所述PartKey后的比特)与属于所述分trie树的至少一个目的地址前缀进行匹配。在一实施例中,所述一个或多个匹配过的源地址前缀包括SPM和LPM,其中所述SPM的标签可表示为S.SPM,所述LPM的标签可表示为S.LPM;所述至少一个匹配过的目的地址前缀包括SPM和LPM,其中所述SPM的标签可表示为D.SPM,所述LPM的标签可表示为D.LPM。因此,在搜索所述多维trie树后可返回所述S.SPM、S.LPM、D.SPM及D.LPM。
在步骤570,所述方法可,对所述接收的包,基于所述一个或多个匹配过的源地址前缀及至少一个目的地址前缀,确定储存于乘积表中(如在乘积表的表项中)的一个或多个匹配的源标签和目的标签对。如前所述,可为每个所述一个或多个源地址前缀及所述至少一个目的地址前缀分配标签,从而得到多个标签。进一步地,如前所述,每个标签反映了关联前缀的父子关系。可用S.SPM、S.LPM、D.SPM及D.LPM确定所述一个或多个匹配的源标签和目的标签对。在一实施例中,本发明所公开的条件1和2可用于确定所述匹配的对。
例如,假设属于所述分trie树的前缀较佳地包括两个前缀:第一前缀和第二前缀,其中所述第二前缀为所述第一前缀的子前缀,所述第一前缀可为源地址前缀或目的地址前缀。进一步地,假设为所述第一前缀分配第一标签,所述第一标签包括第一Value和第一Mask;为所述第二前缀分配第二标签,所述第二标签包括第二Value和第二Mask。基于本发明的等式(1)和(2),可以看出使用所述第二Value和所述第一Mask的逻辑和运算的结果等于使用所述第一Value和所述第一Mask的逻辑和运算的结果,且使用所述第一Value和所述第二Mask的逻辑和运算的结果不等于使用所述第二Value和所述第二Mask的逻辑和运算的结果。
与此相反,假设所述第一和第二前缀没有父子关系。基于本发明的等式(3)和(4),可以看出使用所述第二Value和所述第一Mask的逻辑和运算的结果不等于使用所述第一Value和所述第一Mask的逻辑和运算的结果,且使用所述第一Value和所述第二Mask的逻辑和运算的结果不等于使用所述第二Value和所述第二Mask的逻辑和运算的结果。
在步骤580,所述方法500可将每个所述一条或多条规则映射到一个匹配的源标签和目的标签对。如前所述,所述规则可储存在规则表或所述TCAM中。如果在步骤580对多条规则进行了映射,则在步骤590,所述方法500可根据所述规则在所述乘积表中的储存顺序从所述多条规则中选择具有最高级的规则。在步骤592,所述方法500可基于所述选择的规则确定要对所述包进行的动作。所述动作可在动作表中指定,所述动作表可通过所述规则进行索引。
本领域普通技术人员理解,在实现中,所述方法500可能有各种变化,某些步骤有时可省略,必要是可新增其他步骤,且当一个步骤不依赖于前一步骤时,执行顺序可以改变。例如,如果对所述包只匹配到一条规则,则步骤590可以省略,因为没有必要进行优先级选择。
本领域普通技术人员应理解,尽管本发明大都使用源地址和目的地址作为规则的两个较佳维度来阐述匹配多维trie树的原理,但在不脱离所公开的原理的前提下也可使用源地址和目的地址之外的其他维度(如,源端口、目的端口、协议或任意其他适当维度)。进一步地,如果需要,可使用两个以上的维度进行多维trie树的匹配。通常,包头可包括多个维度字段(简称字段),所述多个字段可由规则集指定。如上所述,在本发明公开的包分类中,可用所述TCAM中储存的对应表项以及储存于至少一个非TCAM内存的所述多维trie树中储存的数据,将所述包中的至少两个所述字段与所述规则的两个维度进行匹配。
总的来说,本发明提出了TCAM协助的包分类的各实施例,以期为数据中心和/或云应用提供高速度低时延等期望属性。通过支持低成本的片装搜索引擎实现方式,可明显节省内存。
图6示出了网络设备或单元600的一个实施例,所述网络设备或单元600可为任意用于通过网络传送数据包的设备。例如,所述网络单元600可为网络路由器,其中所述内存系统200位于所述网络路由器。所述网络单元600可包括与接收器612(Rx)连接的一个或多个入端口610,其中所述接收器612可用于从其他网络部件接收包或帧。所述网络单元600可包括逻辑单元或处理器620,所述逻辑单元或处理器620与所述接收器612相连,用于处理所述包或确定将所述包发往哪个网络部件。所述处理器620可用硬件或硬件和软件的组合来实现。
所述网络单元600可进一步包括TCAM 622及至少一个非TCAM内存624。所述TCAM622可用于储存独立trie树的根节点和/或前缀。非TCAM内存624可用于储存TCAM AD表、哈希化分trie树表、乘积表、规则表及动作表。注意所述各表可采用任意其他数据结构形式完成本发明所提出的功能。所述网络单元600还可包括与发射器632(Tx)连接的一个或多个出端口630,其中所述发射器632(Tx)可用于向其他网络部件发送包或帧。注意,在实际实现中,可能会有所述网络单元600处理的双向流量,因此一些端口可既接收也发送包。从这点来说,所述入端口610与所述出端口630可共存或可认为是与收发器(Rx/Tx)连接的相同端口的不同功能。所述处理器620、所述TCAM 622、所述非TCAM内存624、所述接收器612及所述发射器632还可用于实现或支持上述的任意方案和方法,如所述实现方式300和所述方法500。
应理解,通过将可执行指令编码和/或加载到所述网络单元600上,所述处理器620、所述TCAM 622及所述非TCAM内存624中的至少一个会发生变化。从而可将所述网络单元600转变为有特殊用途的机器或装置(如具有本发明所提出的新颖功能的内存系统或子系统)。所述可执行指令可储存于所述非TCAM内存624中,并加载到所述处理器620中执行。对电气工程和软件工程技术而言,能通过加载可执行软件到计算机实现的功能可以通过众所周知的设计规则变为硬件实现是基本常识。采用软件还是硬件来实现概念的决策通常取决于设计的稳定性和待生产的元件数量,而不是软件域到硬件域的转换涉及的其他问题。一般来说,仍在频繁修改的设计可首选软件实现,这是因为硬件实现改动的成本要高于软件实现的改动。一般来说,将投入量产的稳定的设计可首选硬件实现,例如通过专用集成电路(ASIC)实现,这是因为对于大型生产活动,硬件实现的成本可能要低于软件实现。设计通常可以软件形式进行开发和测试,然后再根据众所周知的设计原则转变为等效的硬件实现,通过ASIC对软件指令进行固化。机器由新的ASIC控制后就成为具有特殊用途的机器或装置,同样,经过编程和/或已加载可执行指令的计算机也可视为具有特殊用途的机器或装置。
以上对至少一个实施例进行了说明,但由本领域普通技术人员对所述实施例的变化、组合、和/或修改,和/或对所述实施例提出的特性都应在本发明的范围内。通过整合、集成、和/或省略所述实施例的特性而产生的替代实施例也属于本发明的范围。本发明中明确说明的数值范围或限制可理解为包括此明确说明的范围或限制范围内的类似数值的迭代范围或限制(如,从约1到约10包括2、3、4等;大于0.10包括0.11、0.12、0.13等)。例如,每公开具有下限Rl和上限Ru的数值范围时,具体公开了此范围内的任何数值。具体来说,公开了此范围内的以下数值:R=Rl+k*(Ru-Rl),其中,k为取值范围从1%到100%的递进步长为1%的变量,即k为1%、2%、3%、4%、5%、……、50%、51%、52%、……、95%、96%、97%、98%、99%或100%。而且,具体还公开如上所述的两个数字R所定义的任意数值范围。其中,除非另有说明,“约”摂表示其后数值的±10%。权利要求中某个元素“可选”表示需要或不需要该元素,这两种情况都属于权利要求的范围。包括、包含及具有等广义词汇的使用应理解为由……组成、主要由……组成、大体上由……组成等狭义词汇也成立。相应地,保护范围不限于上述说明,而应由其后所附的权利要求书定义,所述范围包括权利要求书所述内容的所有同等替代。每个权利要求都结合在本说明书中,作为对本发明的进一步说明,且权利要求是本发明的实施例。在本发明中提到某个参考技术并不表示承认该技术为现有技术,尤其是出版日期在本申请的优先权日期之后的任何参考技术。本发明所援引的所有专利、专利申请及出版物的公开信息,其对本发明提供补充的示例性、程序性或其他细节都通过引用结合在本发明中。
尽管本发明提供了若干实施例,可理解所公开的系统和方法可能在不脱离本发明精神与范围的前提下存在许多其他具体形式。所述示例应理解为示例性而非限制性的,且并不用于将本发明限于所给出的具体细节。例如,各种元素或组件可以整合或集成在其他系统中,或可省略或不实现某些特征。
此外,各实施例中以离散或单独方式描述及阐明的技术、系统、子系统及方法,可与其他系统、模块、技术或方法在不脱离本发明范围的前提下进行整合或集成。以耦合、直接耦合或彼此通信的方式示出或讨论的其他项目,可以通过一些电气、机械或其他类型的接口、设备或中间组件进行间接耦合或通信。本领域技术人员可以理解确定本发明的其他变化、替换或变更,并可在不脱离本发明精神与范围的前提下做出其他变化、替换或变更。
Claims (23)
1.一种网络路由器实现的包分类方法,其特征在于,所述方法包括:
获取包,其中所述包的包头包括由规则集指定的多个维度字段;
将至少两个所述维度字段的一个或多个比特与储存于三重内容可寻址内存(TCAM)中的对应表项进行匹配;
基于与所述TCAM中的所述对应表项关联的数据生成哈希键,其中所述关联数据储存于至少一个非TCAM内存中;
用所述哈希键搜索储存于所述至少一个非TCAM内存中的多维trie树;
基于所述搜索将所述包映射到所述规则集中的一条或多条规则。
2.根据权利要求1所述的方法,其特征在于,所述包中的所述至少两个维度字段包括第一维度字段和第二维度字段,其中所述多维trie树包括对应所述规则集指定的至少两个维度的至少两个分trie树,其中所述至少两个分trie树包括第一分trie树和第二分trie树,所述将所述包映射包括:
将所述第一维度字段中的比特与所述第一分trie树中储存的数据进行匹配;
将所述第二维度字段中的比特与所述第二分trie树中储存的数据进行匹配。
3.根据权利要求2所述的方法,其特征在于,所述第一和第二维度字段选自由源地址、目的地址、源端口号、目的端口号及协议组成的群组。
4.根据权利要求2所述的方法,其特征在于,所述第一维度字段为源地址,所述第二维度字段为目的地址,所述TCAM中的所述对应表项包括源地址前缀和目的地址前缀中的至少一个,所述储存在所述第一分trie树中的数据包括一个或多个源地址前缀,所述储存在所述第二分trie树中的数据包括至少一个目的地址前缀。
5.根据权利要求4所述的方法,其特征在于,为每个所述一个或多个源地址前缀及所述至少一个目的地址前缀分配标签,得到多个标签,其中每个标签反映关联前缀的父子关系,将所述包映射还包括:
对所述包,基于所述一个或多个匹配过的源地址前缀及至少一个目的地址前缀,确定储存于乘积表中的一个或多个匹配的源标签和目的标签对;
将每个所述一条或多条规则映射到一个匹配的源标签和目的标签对。
6.根据权利要求5所述的方法,其特征在于,属于所述第一和第二分trie树之一的前缀包括第一前缀和第二前缀,其中所述第二前缀为所述第一前缀的子前缀,为所述第一前缀分配第一标签,所述第一标签包括第一值Value和第一掩码Mask,且为所述第二前缀分配第二标签,所述第二标签包括第二Value和第二Mask,其中使用所述第二Value和所述第一Mask的逻辑和运算的结果等于使用所述第一Value和所述第一Mask的逻辑和运算的结果,且使用所述第一Value和所述第二Mask的逻辑和运算的结果不等于使用所述第二Value和所述第二Mask的逻辑和运算的结果。
7.根据权利要求5所述的方法,其特征在于,属于所述第一和第二分trie树之一的前缀包括第一前缀和第二前缀,其中所述第二前缀与所述第一前缀没有父子关系,为所述第一前缀分配第一标签,所述第一标签包括第一值Value和第一掩码Mask,且为所述第二前缀分配第二标签,所述第二标签包括第二Value和第二Mask,其中使用所述第二Value和所述第一Mask的逻辑和运算的结果不等于使用所述第一Value和所述第一Mask的逻辑和运算的结果,且使用所述第一Value和所述第二Mask的逻辑和运算的结果不等于使用所述第二Value和所述第二Mask的逻辑和运算的结果。
8.根据权利要求5所述的方法,其特征在于,所述一个或多个匹配过的源地址前缀包括最短前缀匹配(SPM)和最长前缀匹配(LPM),其中所述SPM的标签可表示为S.SPM,所述LPM的标签可表示为S.LPM,所述至少一个匹配过的目的地址前缀包括SPM和LPM,其中所述SPM的标签可表示为D.SPM,所述LPM的标签可表示为D.LPM,且使用S.SPM、S.LPM、D.SPM及D.LPM对所述一个或多个匹配的源标签和目的标签对进行确定。
9.根据权利要求8所述的方法,其特征在于,所述一个或多个匹配的源标签和目的标签对中的源标签和目的标签可分别用FS和FD表示,其中FS与S.SPM或S.LPM相同,或为S.SPM的子标签及S.LPM的父标签,且FD与D.SPM或D.LPM相同,或为D.SPM的子标签及D.LPM的父标签。
10.根据权利要求5所述的方法,其特征在于,所述映射到的规则包括多条规则,所述方法还包括:
在所述多条规则中根据所述规则在所述乘积表中的储存顺序选择具有最高优先级的规则;
基于所述选择的规则确定要对所述包进行的动作。
11.根据权利要求1所述的方法,其特征在于,所述一条或多条匹配到的规则储存在所述TCAM中,且储存在所述至少一个非TCAM内存中与所述规则对应的数据包括类型字段,所述类型字段指定所述储存在所述TCAM中的规则。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述至少两个维度字段中的一个或多个比特与储存于所述TCAM中的第二对应表项进行匹配;
基于与所述TCAM中的所述第二对应表项关联的数据生成第二哈希键;
用所述第二哈希键再次搜索所述多维trie树。
13.一种三重内容可寻址内存协助的包分类装置,其特征在于,包括:
三重内容可寻址内存(TCAM),用于储存规则集指定的多个维度中的至少两个的表项;
至少一个非TCAM内存,用于:
储存与所述TCAM中的所述表项关联的数据;及
所述至少两个维度的多维trie树;
接收器,用于接收包,所述包包括所述多个维度的多个字段;
处理器,与所述接收器、所述TCAM及所述至少一个非TCAM内存相连,用于:
将至少两个所述字段中的每一个的一个或多个比特与所述表项进行匹配;
基于与所述表项关联的所述数据生成哈希键;
用所述哈希键搜索所述多维trie树;
基于所述搜索将所述包映射到所述规则集中的一条或多条规则。
14.根据权利要求13所述的装置,其特征在于,所述至少两个所述字段包括第一字段和第二字段,所述多维trie树包括第一分trie树和第二分trie树,将所述包映射包括:
将所述第一字段中的比特与所述第一分trie树中储存的数据进行匹配;
将所述第二字段中的比特与所述第二分trie树中储存的数据进行匹配。
15.根据权利要求14所述的装置,其特征在于,所述第一和第二字段选自由源地址、目的地址、源端口号、目的端口号及协议组成的群组。
16.根据权利要求14所述的装置,其特征在于,所述第一字段为源地址,所述第二字段为目的地址,所述TCAM中的所述表项包括源地址前缀和目的地址前缀中的至少一个,所述储存在所述第一分trie树中的数据包括一个或多个源地址前缀,所述储存在所述第二分trie树中的数据包括至少一个目的地址前缀。
17.根据权利要求16所述的装置,其特征在于,为每个所述一个或多个源地址前缀及所述至少一个目的地址前缀分配标签,得到多个标签,其中每个标签反映关联前缀的父子关系,将所述包映射还包括:
对所述包,基于所述一个或多个匹配过的源地址前缀及至少一个目的地址前缀,确定储存于乘积表中的一个或多个匹配的源标签和目的标签对;
将每个所述一条或多条规则映射到一个匹配的源标签和目的标签对。
18.根据权利要求17所述的装置,其特征在于,属于所述分trie树的前缀包括第一前缀和第二前缀,其中所述第二前缀为所述第一前缀的子前缀,为所述第一前缀分配第一标签,所述第一标签包括第一值Value和第一掩码Mask,且为所述第二前缀分配第二标签,所述第二标签包括第二Value和第二Mask,其中使用所述第二Value和所述第一Mask的逻辑和运算的结果等于使用所述第一Value和所述第一Mask的逻辑和运算的结果,且使用所述第一Value和所述第二Mask的逻辑和运算的结果不等于使用所述第二Value和所述第二Mask的逻辑和运算的结果。
19.根据权利要求17所述的装置,其特征在于,属于所述分trie树的前缀包括第一前缀和第二前缀,其中所述第二前缀与所述第一前缀没有父子关系,为所述第一前缀分配第一标签,所述第一标签包括第一值Value和第一掩码Mask,且为所述第二前缀分配第二标签,所述第二标签包括第二Value和第二Mask,其中使用所述第二Value和所述第一Mask的逻辑和运算的结果不等于使用所述第一Value和所述第一Mask的逻辑和运算的结果,且使用所述第一Value和所述第二Mask的逻辑和运算的结果不等于使用所述第二Value和所述第二Mask的逻辑和运算的结果。
20.根据权利要求17所述的装置,其特征在于,所述一个或多个匹配过的源地址前缀包括最短前缀匹配(SPM)和最长前缀匹配(LPM),其中所述SPM的标签可表示为S.SPM,所述LPM的标签可表示为S.LPM,所述至少一个匹配过的目的地址前缀包括SPM和LPM,其中所述SPM的标签可表示为D.SPM,所述LPM的标签可表示为D.LPM,且所述一个或多个匹配的源标签和目的标签对使用S.SPM、S.LPM、D.SPM及D.LPM进行确定。
21.根据权利要求20所述的装置,其特征在于,所述一个或多个匹配的源标签和目的标签对中的源标签和目的标签可分别用FS和FD表示,其中FS与S.SPM或S.LPM相同,或为S.SPM的子标签及S.LPM的父标签,且FD与D.SPM或D.LPM相同,或为D.SPM的子标签及D.LPM的父标签。
22.根据权利要求17所述的装置,其特征在于,所述映射到的规则包括多条规则,所述处理器还用于:
在所述多条规则中根据所述规则在所述乘积表中的储存顺序选择具有最高优先级的规则;
基于所述选择的规则确定要进行的动作。
23.一种网络路由器,其特征在于,包括:
三重内容可寻址内存(TCAM),用于储存源地址前缀和目的地址前缀;
TCAM关联数据(AD)表,与所述TCAM相连,用于储存所述源地址前缀和所述目的地址前缀的关联数据;
哈希化分trie树表,与所述TCAM AD表相连,用于储存由一个或多个分trie树表示的多个地址前缀,所述一个或多个分trie树属于多维trie树,其中每个分trie树可由哈希键至少部分基于储存在所述TCAM中的每个前缀的关联数据进行定位;
乘积表,与所述哈希化分trie树表相连,用于储存为所述多个地址前缀分配的标签对;
规则表,与所述乘积表相连,用于储存规则,其中每个所述规则对应所述乘积表中的标签对;
还包括处理器,所述处理器与所述TCAM、所述TCAM AD表、所述哈希化分trie树表、所述乘积表及所述规则表相连,所示处理器用于:
对包括源地址和目的地址的包,确定所述源地址中一个或多个最高有效位(MSB)与所述源地址前缀的匹配项,或所述目的地址中一个或多个MSB与所述目的地址前缀的匹配项,或两者;
基于与所述源地址前缀和所述目的地址前缀关联的数据计算所述哈希键;
用所述哈希键在所述哈希化分trie树表中查找源分trie树和目的分trie树;
基于查找所述分trie树返回的结果确定一个或多个所述标签对作为匹配的对;
基于所述一个或多个匹配的对将所述包映射到一条或多条所述规则。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261664796P | 2012-06-27 | 2012-06-27 | |
US61/664,796 | 2012-06-27 | ||
US13/926,303 US9098601B2 (en) | 2012-06-27 | 2013-06-25 | Ternary content-addressable memory assisted packet classification |
US13/926,303 | 2013-06-25 | ||
PCT/CN2013/078203 WO2014000669A1 (en) | 2012-06-27 | 2013-06-27 | Ternary content-addressable memory assisted packet classification |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104718731A CN104718731A (zh) | 2015-06-17 |
CN104718731B true CN104718731B (zh) | 2017-08-29 |
Family
ID=49779442
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380034498.7A Active CN104718731B (zh) | 2012-06-27 | 2013-06-27 | 三重内容可寻址内存协助的包分类的方法、装置以及网络路由器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9098601B2 (zh) |
CN (1) | CN104718731B (zh) |
WO (1) | WO2014000669A1 (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130268729A1 (en) * | 2012-04-10 | 2013-10-10 | Tajinder Manhas | Scalable packet classification using associative memory |
US9245626B2 (en) * | 2012-10-26 | 2016-01-26 | Cisco Technology, Inc. | System and method for packet classification and internet protocol lookup in a network environment |
US9559897B2 (en) | 2012-12-21 | 2017-01-31 | Brocade Communications Systems, Inc. | Device ID assignment in a system of devices |
US9313102B2 (en) | 2013-05-20 | 2016-04-12 | Brocade Communications Systems, Inc. | Configuration validation in a mixed node topology |
US9853889B2 (en) | 2013-05-20 | 2017-12-26 | Brocade Communications Systems, Inc. | Broadcast and multicast traffic reduction in stacking systems |
US10284499B2 (en) | 2013-08-22 | 2019-05-07 | Arris Enterprises Llc | Dedicated control path architecture for systems of devices |
CN104468357B (zh) * | 2013-09-16 | 2019-07-12 | 中兴通讯股份有限公司 | 流表的多级化方法、多级流表处理方法及装置 |
US9647941B2 (en) * | 2013-10-04 | 2017-05-09 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Hierarchical hashing for longest prefix matching |
US9185049B2 (en) | 2013-10-31 | 2015-11-10 | Brocade Communications Systems, Inc. | Techniques for simplifying stacking trunk creation and management |
US9432284B2 (en) * | 2014-01-08 | 2016-08-30 | Cavium, Inc. | Method and apparatus for compiling search trees for processing request keys based on a key size supported by underlying processing elements |
US9577932B2 (en) * | 2014-02-12 | 2017-02-21 | Brocade Communications Systems, Inc. | Techniques for managing ternary content-addressable memory (TCAM) resources in heterogeneous systems |
US9692695B2 (en) | 2014-03-27 | 2017-06-27 | Brocade Communications Systems, Inc. | Techniques for aggregating hardware routing resources in a multi-packet processor networking system |
US9692652B2 (en) | 2014-04-03 | 2017-06-27 | Brocade Communications Systems, Inc. | Framework for reliably communicating port information in a system of devices |
US10091059B2 (en) | 2014-12-16 | 2018-10-02 | Arris Enterprises Llc | Handling connections between network devices that support multiple port communication modes |
US9590897B1 (en) * | 2015-02-26 | 2017-03-07 | Qlogic Corporation | Methods and systems for network devices and associated network transmissions |
US20160335296A1 (en) * | 2015-05-14 | 2016-11-17 | Blue Sage Communications, Inc. | Memory System for Optimized Search Access |
US9984144B2 (en) * | 2015-08-17 | 2018-05-29 | Mellanox Technologies Tlv Ltd. | Efficient lookup of TCAM-like rules in RAM |
US10496680B2 (en) | 2015-08-17 | 2019-12-03 | Mellanox Technologies Tlv Ltd. | High-performance bloom filter array |
US10049126B2 (en) | 2015-09-06 | 2018-08-14 | Mellanox Technologies Tlv Ltd. | Cuckoo hashing with selectable hash |
US11418632B2 (en) * | 2015-12-15 | 2022-08-16 | Intel Corporation | High speed flexible packet classification using network processors |
US10623339B2 (en) * | 2015-12-17 | 2020-04-14 | Hewlett Packard Enterprise Development Lp | Reduced orthogonal network policy set selection |
US9892057B2 (en) | 2016-03-31 | 2018-02-13 | Mellanox Technologies Tlv Ltd. | Single double cuckoo hash |
US10068034B2 (en) * | 2016-09-07 | 2018-09-04 | Mellanox Technologies Tlv Ltd. | Efficient matching of TCAM rules using hash tables in RAM |
CN107018078B (zh) * | 2017-01-25 | 2020-08-07 | 华为技术有限公司 | 多分支跳转协处理方法及装置 |
CN113206801B (zh) * | 2017-03-13 | 2024-06-07 | 华为技术有限公司 | 处理分组的方法和网络设备 |
EP3376407B1 (en) * | 2017-03-15 | 2020-09-16 | censhare AG | Efficient use of trie data structure in databases |
US10491521B2 (en) | 2017-03-26 | 2019-11-26 | Mellanox Technologies Tlv Ltd. | Field checking based caching of ACL lookups to ease ACL lookup search |
US10318588B2 (en) * | 2017-07-01 | 2019-06-11 | Cisco Technology, Inc. | Searching varying selectable physical blocks of entries within a content-addressable memory |
US10476794B2 (en) * | 2017-07-30 | 2019-11-12 | Mellanox Technologies Tlv Ltd. | Efficient caching of TCAM rules in RAM |
US10412047B2 (en) | 2017-08-17 | 2019-09-10 | Arista Networks, Inc. | Method and system for network traffic steering towards a service device |
US10721651B2 (en) | 2017-09-29 | 2020-07-21 | Arista Networks, Inc. | Method and system for steering bidirectional network traffic to a same service device |
US10764234B2 (en) | 2017-10-31 | 2020-09-01 | Arista Networks, Inc. | Method and system for host discovery and tracking in a network using associations between hosts and tunnel end points |
US10033750B1 (en) * | 2017-12-05 | 2018-07-24 | Redberry Systems, Inc. | Real-time regular expression search engine |
CN107896194B (zh) * | 2018-01-02 | 2021-04-09 | 盛科网络(苏州)有限公司 | 一种路由查找方法、装置和存储介质 |
US10944724B2 (en) * | 2018-03-28 | 2021-03-09 | Fortinet, Inc. | Accelerating computer network policy search |
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 |
US10917342B2 (en) | 2018-09-26 | 2021-02-09 | Arista Networks, Inc. | Method and system for propagating network traffic flows between end points based on service and priority policies |
WO2020107484A1 (zh) * | 2018-11-30 | 2020-06-04 | 华为技术有限公司 | 一种acl的规则分类方法、查找方法和装置 |
US10855733B2 (en) | 2018-12-04 | 2020-12-01 | Arista Networks, Inc. | Method and system for inspecting unicast network traffic between end points residing within a same zone |
US10749789B2 (en) | 2018-12-04 | 2020-08-18 | Arista Networks, Inc. | Method and system for inspecting broadcast network traffic between end points residing within a same zone |
US10848457B2 (en) | 2018-12-04 | 2020-11-24 | Arista Networks, Inc. | Method and system for cross-zone network traffic between different zones using virtual network identifiers and virtual layer-2 broadcast domains |
US10944675B1 (en) | 2019-09-04 | 2021-03-09 | Mellanox Technologies Tlv Ltd. | TCAM with multi region lookups and a single logical lookup |
JP7330055B2 (ja) * | 2019-10-15 | 2023-08-21 | ルネサスエレクトロニクス株式会社 | ネットワーク処理装置、および、ネットワーク通信フレームの処理方法 |
CN114268585B (zh) * | 2019-11-07 | 2024-01-23 | 苏州盛科通信股份有限公司 | 基于tcam的三层路由转发的判断方法 |
US11539622B2 (en) | 2020-05-04 | 2022-12-27 | Mellanox Technologies, Ltd. | Dynamically-optimized hash-based packet classifier |
US11782895B2 (en) | 2020-09-07 | 2023-10-10 | Mellanox Technologies, Ltd. | Cuckoo hashing including accessing hash tables using affinity table |
CN113360740B (zh) * | 2021-06-04 | 2022-10-11 | 上海天旦网络科技发展有限公司 | 一种数据包标签方法及系统 |
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 |
CN118216125A (zh) * | 2022-10-17 | 2024-06-18 | 新华三技术有限公司 | 一种报文处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674557A (zh) * | 2005-04-01 | 2005-09-28 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
CN101035059A (zh) * | 2006-03-08 | 2007-09-12 | 中兴通讯股份有限公司 | 一种提高三重内容可寻址存储器报文分类查找速度的方法 |
CN101039253A (zh) * | 2006-03-17 | 2007-09-19 | 中兴通讯股份有限公司 | 一种实现三重内容可寻址存储器范围匹配的前缀扩展方法 |
CN101242362A (zh) * | 2008-03-07 | 2008-08-13 | 华为技术有限公司 | 查找键值生成装置及方法 |
CN101478482A (zh) * | 2009-01-08 | 2009-07-08 | 中国人民解放军信息工程大学 | 报文分类中的非规则匹配方法、装置和系统 |
Family Cites Families (10)
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 |
US7707217B2 (en) * | 2005-01-24 | 2010-04-27 | 3Com Corporation | Trie search engines and ternary CAM used as pre-classifier |
KR100864888B1 (ko) | 2007-02-12 | 2008-10-22 | 삼성전자주식회사 | 라우팅 시스템 및 라우팅 시스템의 룰 엔트리 관리 방법 |
CN100574281C (zh) | 2007-06-22 | 2009-12-23 | 中兴通讯股份有限公司 | 一种交换机路由表的管理方法 |
US8089961B2 (en) * | 2007-12-07 | 2012-01-03 | University Of Florida Research Foundation, Inc. | Low power ternary content-addressable memory (TCAMs) for very large forwarding tables |
US20090171651A1 (en) | 2007-12-28 | 2009-07-02 | Jan Van Lunteren | Sdram-based tcam emulator for implementing multiway branch capabilities in an xml processor |
CN101247337B (zh) | 2008-02-18 | 2012-11-21 | 华为技术有限公司 | 一种报文转发的方法和设备 |
US8780926B2 (en) * | 2009-12-01 | 2014-07-15 | Polytechnic Institute Of New York University | Updating prefix-compressed tries for IP route lookup |
CN101741737B (zh) | 2009-12-08 | 2013-01-16 | 中兴通讯股份有限公司 | 路由表的维护方法与装置 |
US9077669B2 (en) * | 2010-06-14 | 2015-07-07 | Dynamic Invention Llc | Efficient lookup methods for ternary content addressable memory and associated devices and systems |
-
2013
- 2013-06-25 US US13/926,303 patent/US9098601B2/en active Active
- 2013-06-27 CN CN201380034498.7A patent/CN104718731B/zh active Active
- 2013-06-27 WO PCT/CN2013/078203 patent/WO2014000669A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1674557A (zh) * | 2005-04-01 | 2005-09-28 | 清华大学 | 基于tcam的解决范围匹配的并行ip包分类器及方法 |
CN101035059A (zh) * | 2006-03-08 | 2007-09-12 | 中兴通讯股份有限公司 | 一种提高三重内容可寻址存储器报文分类查找速度的方法 |
CN101039253A (zh) * | 2006-03-17 | 2007-09-19 | 中兴通讯股份有限公司 | 一种实现三重内容可寻址存储器范围匹配的前缀扩展方法 |
CN101242362A (zh) * | 2008-03-07 | 2008-08-13 | 华为技术有限公司 | 查找键值生成装置及方法 |
CN101478482A (zh) * | 2009-01-08 | 2009-07-08 | 中国人民解放军信息工程大学 | 报文分类中的非规则匹配方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
US20140006706A1 (en) | 2014-01-02 |
US9098601B2 (en) | 2015-08-04 |
WO2014000669A1 (en) | 2014-01-03 |
CN104718731A (zh) | 2015-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104718731B (zh) | 三重内容可寻址内存协助的包分类的方法、装置以及网络路由器 | |
CN104854828B (zh) | 通过统一哈希化Trie树进行的互联网协议及以太网查找 | |
US7948980B2 (en) | Succinct representation of static packet classifiers | |
Abbasi et al. | Enhancing the performance of flow classification in SDN-based intelligent vehicular networks | |
Dharmapurikar et al. | Longest prefix matching using bloom filters | |
US7990979B2 (en) | Recursively partitioned static IP router tables | |
CN102945249B (zh) | 一种策略规则匹配查询树生成方法、匹配方法及装置 | |
Warkhede et al. | Multiway range trees: scalable IP lookup with fast updates | |
Kogan et al. | Exploiting order independence for scalable and expressive packet classification | |
US6633860B1 (en) | Method for fast multi-dimensional packet classification | |
US7624226B1 (en) | Network search engine (NSE) and method for performing interval location using prefix matching | |
CN100385880C (zh) | 分组分类装置和使用字段级特里结构的方法 | |
CN106453091B (zh) | 路由器转发平面的等价路由管理方法和装置 | |
Jiang et al. | A FPGA-based parallel architecture for scalable high-speed packet classification | |
CN106789727B (zh) | 报文分类方法和装置 | |
Lim et al. | Two-dimensional packet classification algorithm using a quad-tree | |
US7299317B1 (en) | Assigning prefixes to associative memory classes based on a value of a last bit of each prefix and their use including but not limited to locating a prefix and for maintaining a Patricia tree data structure | |
CN105227468B (zh) | 一种查找装置、查找方法和配置方法 | |
Lu et al. | Succinct representation of static packet classifiers | |
Bremler-Barr et al. | Layered interval codes for TCAM-based classification | |
Chuprikov et al. | General ternary bit strings on commodity longest-prefix-match infrastructures | |
Wang | Scalable packet classification with controlled cross-producting | |
Wang | Scalable packet classification for datacenter networks | |
US10205658B1 (en) | Reducing size of policy databases using bidirectional rules | |
Lim et al. | NXG06-1: An efficient IP address lookup algorithm using a priority trie |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |