三重内容可寻址内存协助的包分类的制作方法

文档序号:8399490阅读:414来源:国知局
三重内容可寻址内存协助的包分类的制作方法
【专利说明】三重内容可寻址内存协助的包分类
[0001]相关申请
[0002]本申请要求于2013年6月25日由Zix1ng Wang提交的、申请号为13/926,303、发明名称为“三重内容可寻址内存协助的包分类”的美国非临时专利申请的优先权,所述非临时专利申请又要求于2012年6月27日由Zix1ng Wang提交的、申请号为61/664,796、发明名称为“三重内容可寻址内存协助的包分类算法”的美国临时专利申请的优先权,两者的全部内容都通过引用结合在本申请中。
[0003]关于美国联邦政府资助的研发项目的声明
[0004]不适用。
[0005]缩微胶片附件的引用
[0006]不适用。
[0007]发明背景
[0008]在网络通信中,不断提高网络运营的效率和安全性是互联网用户的重要目标。数据包分类可基于包头中携带的信息的多种维度对包进行区分或分类,从而实现接入控制、流量工程、入侵检测及很多其他网络服务。更具体地,网络路由器可将收到的包分成不同的流,然后根据该分类进行适当的动作。
[0009]包分类器可使用一套过滤器或规则来指定包的类别。例如接入控制列表(ACL)中的规则可指定一套源网络地址前缀和目的网络地址前缀,并将所述规则与对应动作相关联(如,拒绝或允许接入某个服务或设备)。ACL可包括使用包头中不同字段的规则集,其中每个字段也可称为一个维度。例如,对于使用传输层协议(TCP)的包,可使用源端口号、目的端口号、源互联网协议(IP)网络地址前缀、目的IP网络地址前缀及网络协议等五个维度。各种网络服务或设备,如服务器、路由器及交换机,可配备或受控于ACL。例如,在数据中心(DC)和云应用中,可能需要进行高速(如,百万兆每秒级)的包分类和ACL,且可能需要较低的网络ACL查找时延。高吞吐量的目标为包分类算法的高效实现带来了挑战。

【发明内容】

[0010]在一个实施例中,本发明包括一种由网络路由器实现的包分类方法,所述方法包括:获取包,其中所述包的包头包括由规则集指定的多个维度字段;将至少两个所述维度字段的一个或多个比特与储存于三重内容可寻址内存(TCAM)中的对应表项进行匹配;基于与所述TCAM中的所述对应表项关联的数据生成哈希键,其中所述关联数据储存于至少一个非TCAM内存中;用所述哈希键搜索储存于所述至少一个非TCAM内存中的多维trie树;基于所述搜索将所述包映射到所述规则集中的一条或多条规则。
[0011]在另一实施例中,本发明包括一种装置,所述装置包括:TCAM,用于储存规则集指定的多个维度中的至少两个的表项;至少一个非TCAM内存,用于储存与所述TCAM中的所述表项关联的数据,以及所述至少两个维度的多维trie树;接收器,用于接收包,所述包包括所述多个维度的多个字段;处理器,与所述接收器、所述TCAM及所述至少一个非TCAM内存相连,用于将每个至少两个所述字段中的一个或多个比特与所述表项进行匹配;基于与所述表项关联的所述数据生成哈希键;用所述哈希键搜索所述多维trie树;基于所述搜索将所述包映射到所述规则集中的一条或多条规则。
[0012]在又一实施例中,本发明包括一种网络路由器,包括:TCAM,用于储存源地址前缀和目的地址前缀;TCAM关联数据(AD)表,与所述TCAM相连,用于储存所述源地址前缀和所述目的地址前缀的关联数据;哈希化分trie树表,与所述TCAM AD表相连,用于储存由一个或多个分trie树表示的多个网络地址前缀,所述一个或多个分trie树属于多维trie树,其中每个分trie树可由哈希键至少部分基于储存在所述TCAM中的每个前缀的关联数据进行定位;乘积表,与所述哈希化分trie树表相连,用于储存为所述多个地址前缀分配的标签对;规则表,与所述乘积表相连,用于储存规则,其中每个所述规则对应所述乘积表中的标签对。
[0013]为更清楚地理解这些及其它特性,以下将结合附图及权利要求书对其进行详细描述。
【附图说明】
[0014]为了更完整地理解本发明,请结合附图及具体实施例参考以下【附图说明】,其中相似的附图标号表示相似的部件。
[0015]图1A示出了较佳的规则数据库;
[0016]图1B从另一角度示出了图1A所示的规则数据库的一部分维度;
[0017]图2示出了处理器系统的一个实施例;
[0018]图3示出了包分类实现方式的一个实施例;
[0019]图4示出了标签分配实现方式的一个实施例;
[0020]图5示出了包分类方法的一个实施例;
[0021]图6示出了网络单元的一个实施例。
【具体实施方式】
[0022]首先,应理解,尽管以下对一个或多个实施例的实现方式进行了举例说明,但所公开的系统和/或方法可通过任意多的已知或现有技术实现。本申请绝不限于以下阐述的实现方式、附图和技术,包括本发明中图示和说明的典型设计及实现方式,而是可以在所附权利要求及其所有同等替代的范围内进行修改。
[0023]—些现有的仅基于三重内容可寻址内存(TCAM)的或基于算法的包分类方案或方法可能有潜在的问题。包分类所使用的示例算法可包括启发式多维切分算法、多维trie树搜索算法及TCAM协助的算法,每种算法都可能有其自身的缺陷。例如,启发式切分算法要求较高的内存带宽,这个问题可能因数据中心应用的高吞吐量要求而恶化。再如,现有多维trie树搜索算法可能引起较长的时延,可能不具备区域效率。
[0024]又如,现有的TCAM协助的算法使用TCAM,TCAM为一种特殊类型的内容可寻址内存(CAM),其允许“X”的三重匹配状态,或“不关心”储存的数据词中的一个或多个比特,如网络地址。与此相比,非TCAM内存(如二元CAM),使用全I和全O组成的数据搜索词。TCAM的使用可有助于为企业网络处理单元(NPU)芯片组实现低成本和高区域效率的搜索引擎。然而,现有TCAM协助的算法可能消耗TCAM中相对较大的区域,而TCAM通常又很昂贵。这样,对于数据中心和云应用,使用现有算法可能难以满足高吞吐、快更新和低时延等期望属性。因而,仍然需要对包分类和ACL的实现进行改进,以应对现代数据中心的挑战。
[0025]本发明公开的示例实施例允许通过TCAM及储存于非TCAM内存的多维哈希化trie树协助进行包分类和ACL。根据一示例实施例,所述TCAM可用于储存源地址前缀和目的地址前缀。在使用中,包括源网络地址和目的网络地址的包可由网络路由器接收,所述网络路由器然后确定所述TCAM中与所述源地址匹配的源地址前缀,和/或所述TCAM中与所述目的地址匹配的目的地址前缀。进而,所述路由器可计算哈希键,所述哈希键基于与所述前缀关联的数据及所述包中的所述地址生成。可用所述哈希键搜索属于所述哈希化trie树的分trie树。进一步,所述分trie树可包括地址前缀及为每个分trie树分配的标签,以此反映各关联前缀的父子关系。基于所述分trie树搜索,可确定出乘积表中的源标签和目的标签对,且可为所述包匹配出对应的规则。总的来说,本发明所公开的实施例有助于实现数据中心和云应用的高吞吐、快更新及低时延。
[0026]图1A示出了较佳的规则表或数据库100。示例性地,所述规则数据库100包括10条规则(表示为R0-R9),其中每条规则包括5个维度或方面。应理解规则数据库中可包括任意条数的规则,且规则可包括任意适当数量的维度。如图1所示,每条规则可由源地址前缀、目的地址前缀、源端口、目的端口及网络协议等维度指定或表征。所述源地址前缀和目的地址前缀可由任意适当类型的网络地址的一部分构成,如互联网协议(IP)地址和媒体接入层(MAC)地址。根据实现需要,所述源端口和目的端口可具有任意合适数量的端口,如80或大于1024。同样,所述规则数据库100中可使用任意适当的网络协议,如传输控制协议(TCP)。在使用中,当全部维度与包头包含的信息都匹配时,可认为网络路由器接收的包完全匹配一条或多条规则。
[0027]图1B从另一角度示出了所述规则数据库100的一部分维度。具体地,图1B示出了所述规则数据库100的两个维度:1)源网络地址前缀(简称源前缀),表示为P0-P5,组织在二元trie树120中;2)目的网络地址前缀(简称目的前缀),表示为Q0-Q7,组织在二元trie树150中。前缀P0-P5及Q0-Q7的取值分别在前缀表130和140中指定,所述前缀表包含图1A中指定的前缀值(6个唯一源前缀和8个唯一目的前缀)。
[0028]所述trie树120和150可为用于组织用于包分类的网络地址前缀的数据结构。具体地,所述trie树120可包括多个节点或顶点101-110,表示所述前缀表130中的源前缀;所述trie树150可包括多个节点或顶点151-163,表示所述前缀表140中的目的前缀。在所述trie树120中,左子节点可表示0,右子节点可表示I。例如,根节点101的左子节点102对应1,根节点101的右子节点103对应I。所述trie树120和150中所有其他节点都遵循这一规律。例如,从根节点101到叶节点110进行遍历可经过一个右向遍历到节点103,一个左向遍历到节点105,一个左向遍历到节点107,以及一个左向遍历到节点110。这样就得到节点110表示取值为1000的前缀P2。进而,如图1B所示,节点101-110的编号基于宽度优先顺序,其中父节点可先于子节点,左子节点可先于右子节点。
[0029]注意,前缀后的星号(*)表示其后比特的任意组合,且不是前缀本身的一部分。例如,所述前缀表140中的Q2代表“*”,表示Q2可为任意网络地址的前缀。因为根节点151不需在trie树150中进行任何遍历,所以节点151即表示Q2。再如,P4代表“11*”,表示P4可为任意以“11”开头的网络地址的前缀。也就是说,P’ 4对应网络地址前缀“11”,由节点106表示。并且,注意所述trie树120被构建来表示网络路由器中储存的前缀。因此,所述trie树120中的一些节点可不对应任何前缀。这些非前缀或中间节点在图1B中用白圈表不,而如缀节点用黑圈表不。
[0030]要对收到的包括,如其头部包括,源网络地址和目的网络地址的包进行分类,可能要先查找所述trie树120和150。所述源网络地址可匹配到一个或多个源前缀,所述目的网络地址可匹配到一个或多个目的前缀,以确定与所述收到的包对应的一条或多条规则。在所述地址查找过程中,可以一次检查所述源或目的网络地址的多个比特。每
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1