通过统一哈希化Trie树进行的互联网协议及以太网查找的制作方法

文档序号:8532101阅读:431来源:国知局
通过统一哈希化Trie树进行的互联网协议及以太网查找的制作方法
【专利说明】通过统一哈希化Tr i e树进行的互联网协议及以太网查找
[0001]相关申请
[0002]本申请要求于2013年6月18日由Zix1ng Wang提交的、申请号为13/920,306、发明名称为“通过统一哈希化Trie树进行的互联网协议及以太网查找”的美国非临时专利申请的优先权,其中名为“通过统一哈希化Trie树进行的互联网协议及以太网查找”的申请又要求于2012年6月27日由Zix1ng Wang提交的、申请号为61/664,794、发明名称为“用于互联网协议及以太网查找的统一哈希化Trie树”的美国临时专利申请的优先权,两者的全部内容都通过引用结合在本申请中。
[0003]关于美国联邦政府资助的研发项目的声明
[0004]不适用。
[0005]缩微胶片附件的引用
[0006]不适用。
[0007]发明背景
[0008]在网络通信中,路由器通常通过多个网络接口与多个其他路由器相连,能够将业务流量转发到各网络或子网。因此,路由器需在数据库中维护所有子网和接口的网络地址前缀等转发信息,这种转发信息称为转发表(FIB)。
[0009]收到数据包时,路由器进行网络地址查找。查找过程找到数据包的目的地址和网络地址前缀的最长匹配项,并确定相应的出接口。因此,高效智能地储存和读取这些信息能够优化查找过程,从而也是当前典型组网中最具挑战的问题之一。
[0010]Trie查找是路由器中使用最广的网络地址查找技术之一。Trie是一种树形结构,树中节点的位置代表相应的键值。具体来说,对于FIB中反应的网络地址前缀,trie树中的节点表示与节点位置匹配的最长前缀。
[0011]在传统的层3路由器中,不同的算法可用于互联网协议(IP)查找和以太网查找。通常,哈希算法用于以太网查找,而多比特trie树用于IP查找。内存空间在以太网哈希表和IP转发表(FIB)间静态分配,其中内存空间通常根据期望的使用率进行静态分区。
[0012]对于数据中心(DC)和云应用,架顶式(TOR)交换机和核心交换机线卡都要求百万兆比特每秒(Tb/s)的IP和以太网查找,而虚拟机迀移可使大量主机路由产生漏点。此夕卜,对于这些应用,低时延可能很重要。这种要求带来了为传统层3路由器开发的查找算法尚未解决的一系列挑战。

【发明内容】

[0013]在一个实施例中,本发明包括一种装置,包括三重内容可寻址内存(TCAM),用于储存多个trie树中每一个的根节点,得到多个根节点;以及至少一个非TCAM内存,用于储存标识每个所述多个根节点的关联数据,并储存由一个或多个分trie树表示的多个网络地址前缀,其中所述一个或多个分trie树属于所述多个trie树中的trie树,每个分trie树可至少部分基于所述根节点的关联数据进行定位。
[0014]在另一实施例中,本发明包括一种由路由器实现的网络地址查找方法,所述方法包括:在TCAM中储存多个独立trie树中每一个的根节点,得到多个根节点;在至少一个非TCAM内存中储存标识每个所述多个根节点的关联数据,并储存由一个或多个分trie树表示的多个网络地址前缀,其中所述一个或多个分trie树属于所述多个trie树中的trie树,每个分trie树可部分基于所述根节点的关联数据进行定位。
[0015]在又一实施例中,本发明包括一种网络路由器,包括:TCAM,用于储存多个独立trie树中每一个的根节点,得到多个根节点;TCAM地址(AD)表,与所述TCAM相连,用于储存每个所述多个根节点的关联数据;哈希表,与所述TCAM AD表相连,用于储存多个指针,其中每个所述指针可由哈希键部分基于所述每个根节点的关联数据进行定位;分trie树表,与所述哈希表相连,用于储存由一个或多个分trie树表示的多个网络地址前缀,其中所述一个或多个分trie树属于所述多个trie树中的trie树,每个分trie树可由每个指针定位;以及RE组,与所述分trie树表相连,用于储存与所述多个网络地址前缀对应的多个RE。
[0016]为更清楚地理解这些及其它特性,以下将结合附图及权利要求书对其进行详细描述。
【附图说明】
[0017]为了更完整地理解本发明,请结合附图及具体实施例参考以下【附图说明】,其中相似的附图标号表示相似的部件。
[0018]图1示出了较佳的基于传统trie树的查找算法;
[0019]图2示出了独立trie树的一个实施例;
[0020]图3A-3C示出了内存系统的各种实施例;
[0021]图4示出了网络地址查找算法的一个实施例;
[0022]图5示出了网络地址查找方法的一个实施例;
[0023]图6示出了网络设备或单元的一个实施例。
【具体实施方式】
[0024]首先,应理解,尽管以下对一个或多个实施例的实现方式进行了举例说明,但所公开的系统和/或方法可通过任意多的已知或现有技术实现。本申请绝不限于以下阐述的实现方式、附图和技术,包括图示和说明的典型设计及实现方式,而是可以在所附权利要求及其所有同等替代的范围内进行修改。
[0025]网络路由器通常在FIB储存一些网络前缀。这些前缀由trie树中具体的节点表示。在运行过程中,数据包到达路由器时,携带了网络地址。然后,启动查找过程,检查地址中的各比特,并通过所述trie树进行相应的遍历。在遍历过程中,每找到FIB中前缀对应的节点时,查找过程即确定所述地址与所述前缀匹配。该过程一直持续到找出FIB中储存的与所述地址对应的最长前缀。这种匹配就叫做最长前缀匹配。后续对数据包的转发操作都基于该匹配。
[0026]图1示出了较佳的基于传统trie树的查找算法10。所述算法10以长度为8比特的IP地址为例,当然同样的概念也能适用于其他任意长度的网络地址,如长度为32比特的IPv4 (IPv4)地址和长度为128比特的IPv6地址。如图1所示,前缀表130包含用P’ 1-P’ 8表示的网络地址前缀列表,可以储存在路由器的FIB中。Trie树100包括多个节点或顶点101-121,表示所述前缀表130所示的前缀。在所述trie树100中,左子节点可表示0,右子节点可表示I。例如,根节点101的右子节点102对应1,节点102的左子节点103对应O。所述trie树100中所有其他节点都遵循这一规律。例如,从根节点101到叶节点114进行遍历可经过一个右向遍历到节点102,一个右向遍历到节点104,一个右向遍历到节点107,一个左向遍历到节点110,以及一个右向遍历到节点114。这样就得到节点114表示取值为11101的前缀P’4。进而,如图1所示,节点101-121的编号基于宽度优先顺序,其中父节点可先于子节点,左子节点可先于右子节点。
[0027]注意,前缀后的星号(“*”)表示其后比特的任意组合,且不是前缀本身的一部分。例如,所述前缀表130中的P’ I代表“*”,表示P’ I可为任意网络地址的前缀。由于根节点101在所述trie树100中不需要进行任何遍历,所以节点101即为P’ I。再例如,P’4代表“11101*”,表示P’ 4可作为任意以“11101”开始的网络地址的前缀。也就是说,P’ 4对应网络地址“11101”,由节点114表示。并且,注意所述trie树100被构建来表示网络路由器中储存的前缀。由此,所述trie树100中的一些节点可不对应任何前缀。这些非前缀或中间节点在图1中用白圈表示,而前缀节点用黑圈表示。
[0028]在查找过程中,可以一次检查网络地址的多个比特。每次检查的比特数可称为步幅。如图1所示,所述表示前缀P’ 1-P’ 8的trie树100可划分为分trie树,每个分trie树表示一个步幅的树遍历。这样,所述trie树100可称为多比特trie树。在所述算法10中,假定步幅为3。Trie树100基于每步幅的前缀被划分为八个分trie树,用T’ 1-T’ 8表示。对取值为3的步幅,少于3个比特的所有前缀(前缀P’ I)可由分trie树T’ I表示。分trie树T’ 2为分trie树T’ I的子分trie树,表示分trie树T’ 2表示的所有前缀的前两个比特(即步幅前的比特)都表示经由分trie树T’I的路径遍历。例如,P’2(“1000”)的前两个比特对应从节点101开始,经由节点102,到节点103的路径。同样,分trie树T’3和T’ 4是分trie树T’ I的子分trie树,分trie树T’ 5是分trie树T’ 2的子分trie树,分trie树T’ 6和T’ 7是分trie树T’ 3的子分trie树,分trie树T’ 8是分trie树T’ 4的子分trie树。注意子分trie树关系是可变的。例如,由于分trie树T’ 5是分trie树T’ 2的子分trie树,而分trie树T’ 2是分trie树T’ I的子分trie树,分trie树T’ 5也是分trie树T’ I的
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1