网络处理器中路由转发数据库的优化的制作方法

文档序号:6646089阅读:212来源:国知局
专利名称:网络处理器中路由转发数据库的优化的制作方法
技术领域
本发明一般地涉及数据通信网络路由装置中优化的路由查找表。特别地,本发明涉及一种用于在具有不同存取速度的多个存储器装置之间分配网络路由信息、由此减少网络处理器中路由确定时间的系统及方法。
背景技术
数据通信网络中的多层网络交换机和路由器有时候利用专业化的专用集成电路(ASIC),这些集成电路被设计为对分组数据执行大量交换和路由操作。这些ASIC包括网络处理器(NP),其适于执行开放系统互联(OSI)数据链路层(第2层)切换操作和网络层(第3层)路由操作中的许多操作。具有路由性能的NP一般编译和维护路由表,这些路由表被用来为数千路由取回下一跳地址。诸如路由转发数据库(RFD)的路由表被保持于既快速又可编程的片上寄存器中。
尽管NP的寄存器可存储数千网络路由,但是这对于容纳路由器在工作过程中获悉的所有网络地址来说仍然不足。当路由数量超过NP的最大容量时,写入额外路由的意图可能在插入时失败或者造成不可预计的路由行为。这样,现有路由器会试图通过限制保存到NP的路由数量和删除超过其最大存储容量的那些路由来避免这样的问题。然而,这种做法并不是解决方案,因为它会造成即使当有效路由比寄存器已经保持的路由使用得更为频繁时,仍然删除这些有效路由。
因此需要一种增大NP存储容量的系统和方法,其方式为在优先考虑那些使用最为频繁的路由的同时,向NP提供对所有已知路由的存取。

发明内容
本发明在优选实施例中的特征在于一种路由装置,其包括适于接收协议数据单元(PDU)的端口;路由表,用于在具有多个路由trie节点的多路路由trie中存储多个路由,该路由表包括第一存储器,用于高速缓存多个路由trie节点的第一组;以及第二存储器,用于高速缓存多个路由trie节点的第二组;寻路引擎,适于搜索路由表用于寻找与接收的PDU相关联的多个路由之一;以及路由管理器,适于将第二组的一个或多个节点从第二存储器重定位至第一存储器,其中第一存储器的每个节点的利用总数高于第二存储器的每个节点的利用总数。在优选实施例中,路由管理器还适于将第一组的一个或多个节点从第一存储器重定位至第二存储器。
在优选实施例中,第一存储器比第二存储器具有更快的存取速度。第二存储器例如可以是随机存取存储器,第一存储器可以是专用集成电路(ASIC)的寄存器存储器比如网络处理器。利用本发明,路由装置可根据需要将多路路由trie中被最为频繁地搜索的节点分配和重分配至最快的存储器,由此减少搜索路由表所需的时间。
例如,当路由表的搜索利用PDU的互联网协议(IP)地址来识别匹配时,路由装置取回转发信息,其包含PDU所传输到的下一跳地址。路由trie的节点被搜索得越频繁,则其关联的利用总数越高。在优选实施例中,网络处理器中这些节点的利用总数一般是闲置时间,其是由出于路由搜索的目的而最后存取该节点时起已逝去的闲置数字微处理器时钟周期的数量来代表的。例如,第二存储器中节点的利用总数优选为在由网络管理员给定的时间段中搜索该节点的频率。
本发明在一些实施例中是一种在包括第一存储器和第二存储器的路由装置的转发路由数据库中高速缓存多个路由的方法,多个路由的每一个与以多路路由trie的形式组织的多个节点相关联。该方法包括步骤如果存储器空间可用,则将与多个路由的一个或多个相关联的节点分配给第一存储器;如果第一存储器中的存储器空间不可用,则将与多个路由的一个或多个相关联的节点分配给第二存储器;为分配给第一存储器的一个或多个节点和为分配给第二存储器的一个或多个节点生成利用总数;将分配给第一存储器的一个或多个节点的利用总数与分配给第二存储器的一个或多个节点的利用总数做比较;以及如果第二存储器中一个或多个节点的至少一个节点的利用总数超过第一存储器中一个或多个节点的至少一个节点的利用总数,则将第二存储器中的该至少一个节点重分配给第一存储器。在优选实施例中,该方法还包括步骤如果第二存储器中至少一个节点的利用总数超过第一存储器中至少一个节点的利用总数,则将第一存储器中的至少一个节点重分配至第二存储器。
如果第一存储器是相对快的存储器、第二存储器是相对慢的存储器,则本发明将重分配多路路由trie的节点,从而路由trie中搜索最为频繁的节点被分配给第一存储器。在该处理中,本发明优选实施例的方法适于将第二存储器中存取频繁的节点重定位至第一存储器,以最小化用以执行路由trie的搜索和取回与入站PDU相关联的转发信息所需要的平均时间。


通过在附图的各个图中的示例非限制地图示了本发明,在附图中图1是按照本发明优选实施例的多层路由装置的功能方框图;图2是按照本发明优选实施例的交换模块的功能方框图;图3是按照本发明优选实施例的交换模块的功能方框图,其示出包括NP内部和外部存储器的路由查找表;图4是按照本发明优选实施例的路由查找表,其包括多路数据结构和转发表;图5是按照本发明优选实施例以列表形式示出的代表性分级数组;图6是按照本发明优选实施例在模块中利用的转发表;图7是按照本发明优选实施例的多路trie结构,其示意性地示出完全在NP寄存器之内实现的路由查找表;图8是按照本发明优选实施例的多路trie结构,其示意性地示出在内部寄存器和外部RAM上分布的路由查找表;图9是按照本发明优选实施例的多路trie结构,其示意性地示出其中RAM包括一个或多个次trie以增大寄存器的路由查找表;图10是按照本发明优选实施例在图9的trie已被删除而利用转发信息中的冗余之后的trie结构;图11是按照本发明优选实施例的处理流程图,通过该处理,路由装置监视和更新路由查找表;以及图12是按照本发明优选实施例的处理流程图,通过该处理,交换模块基于节点的活动性,选择性地将路由查找表中的节点重定位至寄存器存储器或RAM。
具体实施例方式
图1中图示了用于经过通信网络多路传送数据分组的多层路由装置的功能方框图。例如,路由装置100是多个节点和其他可寻址实体中的一个,其可操作地耦接至通信网络,比如局域网(LAN)、广域网(WAN)、城域网(MAN)、互联网协议(IP)网、因特网或其组合。路由装置100优选地包括多个交换模块11O,它们借助于用于在交换模块之间传输协议数据单元(PDU)的交换结构150来可操作地相互耦接。交换模块110可采用交换处理器、交换单元或交换刀片(switch blade)的形式,其适于可拆卸地接合该底板152中的槽或总线系统(未示出),该槽或总线系统可操作地将每个交换模块110相互耦接。
多个交换模块11O的每一个包括至少一个网络接口模块(NIM)102,其包括一个或多个可操作地耦接至网络通信链路的外部端口103。优选实施例中多个交换模块110的每一个还包括一个或多个网络处理器(NP)106,其一般能够但不限于进行如开放系统互联(OSI)参考模型中限定的至少第2层交换和第3层路由操作。由此,每个模块11O适于经由NIM102传输协议数据单元(PDU)到网络和从网络接收PDU,以及借助交换结构150相互传输PDU和接收PDU。
出于本申请的目的,从通信链路向交换结构150流入交换模块11O的PDU在此被称为输入PDU,输入PDU进入路由装置100时经过的交换模块110一般被称为输入交换模块。从交换结构150流至通信链路的PDU在此被称为输出PDU,发送这些PDU的交换模块被称为输出交换模块。本实施例的多个交换模块110中的每一个可根据信号流及其方向用作输入交换模块和输出交换模块。
图2中图示了交换模块的功能方框图,其用于执行优化的多存储器路由分配。交换模块110优选地包括至少一个NIM102、至少一个NP106、微处理器262和结构接口模块208。每个NIM102可操作地耦接至用于接收和发送数据业务量的一个或多个外部端口。在优选实施例中,路由装置100是IEEE802.3启动的交换机,NIM102适于执行物理层和数据链路层控制,其可操作地将路由装置100耦接至一个或多个通信介质,包括有线、无线和光通信链路。优选实施例中的NP106是千兆比特以太网交换机,型号是BCM5695,由加州Irvine的DCOM生产。
NIM102接收的输入PDU经由内部数据总线206传输到NP106,在该处NP寻路引擎230基于与输入PDU相关联的属性来进行交换和路由决策,这些属性例如包括目标和源地址、协议类型、优先级信息和包括802.1Q标签的虚拟局域网(VLAN)信息。路由决策是从路由查找表250中保持的大量路由之中确定的。优选实施例的交换模块110适于利用两个或多个存储器来保持所有已知路由的完整记录,这些存储器包括(1)NP106内部的第一存储器;以及(2)NP106外部的第二存储器,该第二存储器本身就能增大NP固有的受限存储器容量。路由、代价以及输入PDU所要转发的关联下一跳地址是经配置管理器264由网络管理员手工配置的,和/或由利用动态路由协议比如开放最短路径优先(OPSF)的微处理器262与地址解析协议(ARP)相结合来编译的。
在输入PDU的下一跳目标地址被确定之后,寻路引擎230执行用以从路由装置100传输PDU所必需的基本上所有分组的处理。这些分组处理操作例如可包括但不限于报头转换,用于重新封装数据;置入VLAN标签,用于将一个或多个VLAN标签附加至PDU;提取VLAN标签,用于从PDU去除一个或多个VLAN标签;服务质量(QoS),用于保留网络资源;记账和计费,用于监视客户业务量;多协议标记交换(MPLS)管理、认证,用于有选择性地过滤PDU;存取控制;高层学习,包括地址解析协议(ARP)控制;端口监视,用于再现和重定向PDU便于业务量分析;资源学习;服务级别(CoS),用于确定向PDU分配交换机资源时的相对优先级;以及染色标记,用于监管和业务量整形。
在寻路引擎230的分组处理之后,PDU由队列管理器240暂时缓冲于输入队列存储器242中,直至带宽可用以经过交换结构150传输PDU。然后PDU经由结构接口模块208传输到恰当的输出交换模块,用于向PDU的目标节点方向传输。
在优选实施例中,结构接口模块208适于将输入PDU传输到交换结构150以及从其他的一个或多个交换模块的每一个接收输出PDU。在优选实施例中,从结构接口模块208接收的输出数据被缓冲于输出队列存储器248中,其例如经过寻路引擎230用于统计处理,以及经由NIM102之一从恰当的输出端口发送。
图3中图示了交换模块的功能方框图,其适于通过在多个存储装置之间分配路由存储来形成优化的多存储器路由查找表。特别地,交换模块11O在路由查找表中保持路由,该查找表跨越第一存储器(即NP106内部的主路由存储器)和第二存储器(即辅路由存储器)。辅路由存储器一般比主路由存储器慢,可位于NP106内部或外部。路由在主路由存储器和辅路由存储器之间的优化分配是由微处理器262基于NP106以及微处理器262所编译的路由使用统计来确定的。
如图3中更具体地所示,优选实施例的NP寻路引擎230包括解析引擎332、分类器333、转发处理器336和输出处理器338。解析引擎332检查从NIM102接收的输入帧,提取与输入PDU的识别、转发和寻路相关的一个或多个域。如果目标介质存取控制(MAC)地址是已知的,则PDU被不经更改地交换到恰当的输出端口。如果是未知的,则源MAC通过源学习335被添加到输入端口上的第2层地址表334,该PDU被传输到所有关联的输出端口。
如果帧例如包括交换模块11O的目标MAC地址和另一节点的目标IP地址,则分类器333试图识别目标节点、对应路由、以及通向目标节点的路径上的下一跳地址。在这样操作时,分类器333优选地从输入PDU的一个或多个域中产生索引,它利用该索引来搜索路由查找表250。如果检测到匹配,则路由查找表250取回一指针,其指向NP转发表354中的转发信息,转发处理器336使用该转发信息以包括下一跳地址的新物理层报头来封装该分组,该PDU被传输到队列管理器240。队列管理器240以所需服务级别(CoS)/服务质量(QoS)要求在输入存储器242中缓冲这些PDU,随后按照带宽分配方案——比如严格的优先级或加权的公平队列——将这些PDU释放至交换结构150。
在优选实施例中,路由查找表250包括(a)NP106中相对快的主路由存储器,用于保持使用最为频繁的路由;以及(b)NP106外部的辅路由存储器,用以补充主路由存储器。在优选实施例中,所用NP是Broadcom5695网络处理器。NP106内部的较快主路由存储器是寄存器存储器352,其适于近似地高速缓存3800个IPv4路由。NP外部是附加的辅路由存储器,包括随机存取存储器(RAM)360,用于存储用以扩展交换模块110容量所需的附加路径。
如下文更具体讨论的,这些路由是以可查找的路由树或来自单词“reTRIEval”的“tries”来逻辑地组织的,所述trie包括与关联路由的一个或多个位相对应的路由trie节点。在优选实施例中,目标地址的位可分配给寄存器352和RAM360中存储的多个路由trie节点。在优选实施例中,节点在寄存器352和RAM360之间的分布是动态地限定的并且会周期性地再限定,以便在寄存器中安置使用最为频繁的节点。以此方式,寄存器352和RAM360能够在最小化平均路由确定时间的同时保持所有感兴趣的路由。
存取寄存器352中保持的查询trie的节点的频率由NP106监视并记录于寄存器活动性表358中。在Broadcom5695NP情况下,该频率也被称为利用总数—是以在给定的时间段上获得的命中率的形式来度量的,对节点的每次查找都会产生命中。
对RAM360中保持的路由trie节点的存取频率(即利用总数)由微处理器262编译,并且以保持于数据存储266中的一个或多个RAM活动性表364的形式来记录。相同的度量都可用来确定节点在RAM360和寄存器352中的活动性,而优选实施例中的交换模块110是根据给定时间段上出于路由查找的目的存取节点的次数,来度量这些节点在RAM360中的活动性。
RAM活动性表364包括RAM trie中每个次trie根节点及其利用总数的列表。次trie根是路由trie部分的根节点,该路由trie仅保持在辅路由存储器360中而不是主路由存储器中。次trie可以是深入的一个或多个节点,并且由次trie根来牵头,该次trie根在路由trie中的父节点被保持于主路由存储器352中。为了一致,次trie根的利用总数等于其所有子节点的最大利用总数。在优选实施例中,如果必要,次trie根的列表则根据利用率从最多利用率排序至最少利用率,以便于识别最活跃的节点并将其重定位至主路由存储器352。
在一些实施例中,微处理器262还维护数据存储266中保持的寄存器叶列表366。寄存器叶列表366优选为由微处理器262使用的数据结构,其用以在本地跟踪由寄存器活动性表358提供的利用总数。寄存器叶列表366中保持的利用总数由NP106编译,随后由微处理器262使用,以便于识别主路由存储器352中最不活跃的节点并将其重定位至辅路由存储器360。
图4中示出了路由查找表,其包括多存储器、多叉数据结构和转发表。也被称为取回树或“trie”结构的多叉数据结构由交换模块110用来查找具有一个或多个分组属性的路由数据并将关联指针取回到转发表354中。该trie结构包括分布于寄存器存储器352和RAM360中的多个分级数组,每个数组对应于路由查找结构中的一个或多个节点。主路由存储器——即寄存器存储器352——一般是在制造NP106之时固定的具有硬件受限的容量的高速存储器。辅路由存储器——即RAM360——通常在NP106外部,比片上寄存器存储器352的成本效益更高。RAM360一般比寄存器存储器352具有更大的存储容量,能够容易地存储即使在大型网络中为所有已知路由提供可查找的存取所需的所有分级数组。
在一些实施例中,辅路由存储器适于存储完整的路由trie,其包括那些也保持于主路由存储器中的节点。然而为了说明简化,图4和图7-10中所示的辅路由存储器仅包括那些例如由于其相对低的利用总数而从主路由存储器排除掉的节点。
这些数组在RAM360中的数量和大小可由微处理器262限定并可动态地重限定,以向寻路引擎230提供完整的网络拓扑图。然而由于存取速度更快,学习到的路由在空间可用时首先被记录至寄存器存储器352,如果并且当寄存器存储器达到容量时,则在RAM360中由微处理器262建立新节点。RAM360中建立的新节点是指从寄存器存储器352中排除掉的节点。本领域技术人员将理解在RAM360中记录所有新路由节点的好处在于,如果寄存器存储器352中的查找无法产生匹配,则提供全面和可查找的路由trie。
如图4所示,寄存器352包括第一分级数组A401、第二分级数组B402、第三分级数组C403和第四分级数组D404,它们示意性地代表用以查找四个字节的IPv4地址的路由trie结构的排列。每个数组401-404优选地在NP的寄存器存储器352中维护以便于进行存取。
第一分级数组,即数组A401,对应于trie结构的根节点,包括多个元素,其例如包含元素A1-A2...A100。每个元素A1-A2...A100对应于字符串,该字符串包含所接收的PDU的IPv4目标地址的一个或多个最高有效位。第四分级数组,即数组D404,代表寄存器352中路由trie结构的叶节点,包括多个元素,其例如包含元素D1-D2。每个元素D1-D2对应于字符串,该字符串包含所接收的PDU的IPv4目标地址的一个或多个最低有效位。当PDU的目标IP地址的所有位与数组D404的多个条目的一个相匹配时,从叶节点取回指向表354的指针450。第二分级数组即数组B402和第三分级数组即数组C403对应于路由trie结构的中间节点,其是在穿越根节点和叶节点之间时查找的。
第五分级数组即数组B*405、第六分级数组即数组C*406和第七分级数组即数组D*407代表仅保持于RAM360中的路由trie结构的节点。分级数组405-407由微处理器262交换模块软件管理。如果在到达路由trie的叶之前,寄存器352中的查找被NP106终止,则一般查找RAM360中的这些节点。
图5中示出了以列表形式描绘的代表性分级数组。在优选实施例中,分级数组的每个条目,即表500中的每行,包括Valid_bit指示符501、stop_bit指示符502以及指向子数组的索引503。尽管分级数组500一般具有相同格式,而与它是记录于寄存器存储器352还是RAM360中无关,但是NP106中所用分级数组的索引503也可包括缺省值,其用来迫使交换模块11O终止NP106中的查找和在微处理器262中恢复利用RAM360中的路由数据的查找。
当查找的分级数组在该数组中由查找的一个或多个位的值给定的位置处包含有效条目时,则在IP地址的一个或多个位之间检测到匹配。例如具有值“n”的IP地址的一连串一个或多个位是对应于分级数组500中的“第n”元素。然后通过利用指针而索引到存储器中,可取回与该一个或多个位的值相关联的条目,该指针由数组基值与查找的位值之和来给定。
当测试的地址位与分级数组500中的条目相匹配时,路由查找表250检查valid_bit指示符501,以初步确定该条目是否包含指向后续表的有效索引。例如值1表示第三列503中的索引-1指向子数组或转发表354中的另一节点,而例如值O或未定义的值则表示缺乏匹配的路由规则。在缺乏匹配时,路由查找表可将缺省路由规则或者与检测到的最长前缀匹配相关联的路由规则应用于查找中的该点。
如果valid_bit指示符501等于1,则路由查找表还检测stop_bit指示符502,以确定是否继续查找路由trie结构。等于0的stop_bit指示符表示,第三列503中的索引是指向待查找的寄存器352中下一路由trie节点的指针。具有值1的stop_bit指示符表示该特定节点是叶节点。该叶节点可以是针对整个路由trie的叶或者针对寄存器存储器352中保持的次trie的叶。
如果叶节点是针对整个路由trie的叶,则路由查找表250通过利用来自列503的指针而从转发表354取回关联的转发信息来完成查找。如果叶节点是针对主路由存储器352中保持的路由trie部分的叶而不是针对整个路由trie的叶,则NP106的查找被终止,而由微处理器262利用辅路由存储器360来恢复。在寄存器352中比预期时间早结束并且在RAM360中完成的查找将被发送到“软件”。由微处理器262执行的查找可被仅指向RAM360中的路由次trie或者重新横贯整个路由trie。在优选实施例中,NP106通过将索引值设为等于缺省索引值,强行令该查找由软件和辅路由存储器360执行。
图6中示出了叶节点,其提供指向优选实施例中所用的转发表。转发表354的每行代表转发表条目,其由路由trie结构中叶节点650的索引503来指向。按照本发明的优选实施例,多个叶节点650被分布于寄存器352和RAM360之间,以向NP106提供对使用最为频繁的路由trie节点的存取,由此减少查找时间。
转发表354中的每个条目包括转发信息,其包含下一跳地址601,即匹配PDU将被转发到的MAC目标地址。在一些实施例中,MAC源地址602和虚拟局域网(VLAN)标识符603也被取回并在PDU被传输到下一跳时包含在PDU的数据链路层报头中。本领域技术人员将理解,转发表600可适于包括附加信息,其例如包含输出端口103的编号。
图7中示出了多路路由trie结构,其示意性地示出完全在主路由存储器即寄存器存储器352中实现的路由查找。路由trie结构700对应于这样的情形,其中寄存器存储器352能够本地高速缓存和解析交换模块110所知的每个路由。因此在此例中,路由trie700的每个节点在NP的寄存器存储器352中被高速缓存,而无需NP106求助于辅路由存储器比如RAM360。
多路路由trie结构700包括多个节点,其逻辑关系由连接这些节点的支路来表明。多个节点包括根节点A1和中间节点B1-B2、C1-C4和叶节点D1-D8。一般而言,是从根节点A1到与输入PDU的IP目标地址相匹配的多个叶节点D1-D8之一中连续查找节点。如上所讨论,匹配的叶节点包括指向转发表354中一条目的索引,从该条目可取回适用的转发信息。
图8中示出了多路路由trie结构,其示意性地示出主路由存储器352和辅路由存储器360上分布的路由查找表。路由trie结构800对应于这样的情形,其中寄存器352的容量对于本地高速缓存交换模块110所知的所有路由是不足的。在此情况下,路由trie800的一个或多个节点被保持于NP的寄存器存储器352外部的RAM360中。
与上面关于图7讨论的多路路由trie700相似,trie结构800包括源自与待查找的标准相关联的节点的多个支路。多个节点包括根节点A1和中间节点B1-B2、C1-C5,其中的每一个被本地高速缓存于NP的寄存器存储器352中。叶节点在这里包括本地高速缓存于NP的寄存器存储器352中的第一组节点D2-D3、D10-12、D5-D7。该路由trie还包括RAM360中保持的第二组节点D1*、D8*、D9*。寄存器352和RAM360中保持的这些节点之间的逻辑边界是由划分线802图示的。
为了使路由查找表250在寄存器352和RAM360之间动态地查找,与RAM360中的子节点D1*、D8*、D9*相关联的每个父节点包括缺省索引值,其造成NP106中的路由查找终止并且回复至微处理器262,其利用辅路由存储器中保持的路由信息。如果辅路由存储器360的查找在叶节点D1*、D8*、D9*之间产生了匹配,则指向转发表354的指针被识别,适用的转发信息被取回。
在优选实施例中,如果主路由存储器352容量已满,则新学习的路由被交付给辅路由存储器360。也就是,与新学习的路由相对应的节点被并入RAM360内的路由trie结构中,然后监视其利用总数。如果并且当路由管理器356确定了RAM360中的节点比寄存器中的节点使用得相对更为频繁,则该节点可被自动地重定位至寄存器存储器352。
图9中示出了多路路由trie结构,其示意性地示出以下路由查找表,该路由查找表包含辅助存储器360中的一个或多个次trie用以增大寄存器存储器352。如上所述,RAM360可用来存储多路路由trie结构的一个或多个叶以及一个或多个次trie。例如从根节点A1直接分路的整个次trie可被交付给RAM360或者从寄存器352移至RAM360,以释放寄存器352中的空间用于使用更为频繁的路由,从而利用寄存器352所给予的相对更快的存取速度。
RAM360中保持的次trie可包括任意数量的节点,并且可作为与根节点和叶节点之间的许多中间节点并入。例如,RAM360中保持的次trie包括中间节点C5*910和子叶节点D10*911、D11*912以及D4*913。RAM360中的次trie结构还可通过从节点A100分支到分级数组B*中的子节点的次trie,来从根节点A1或其他中间节点直接进行分支,如图4所示。
图10中示出了在trie已被删除以利用该转发信息中的冗余之后的图9的多路路由trie结构。特别地,优选实施例的交换模块110适于识别次trie,其具有多个叶节点以及与相同的转发信息相关联的中间节点。如果该转发信息对于具有公共父节点的每个子节点是相同的,则优选实施例中的交换模块110引入转发表354中的新条目,该条目使父节点直接地指向转发表354,由此解析该转发信息,而无需横贯路由trie结构直至真正的叶。
如果图9中的叶节点D10*911和D11*912例如关联于相同的转发信息,则通过将节点C5*强行直接指向转发表354来将其从中间节点转换成准叶节点。也就是,如果MAC目标地址(DA-10等于DA-11)、MAC源地址(SA-10等于SA-11)和VLAN(VLAN-10等于VLAN-11)对于D10*911和D11*912是相同的,则改变节点C5*910来及早地终止查找并直接地指向1010转发表354。特别地,与叶节点C5*910相关联的stop_bit指示符502的值从0变为1,索引至适用的转发信息的新指针被插入分级数组中相应条目的第三列503中。具有新指针的条目由叶节点650的列表中的准叶节点C5*910代表,并且指向转发表中用于D10*911或D11*912的预先存在的条目。
在优选实施例中,通过周期性地监视寄存器叶列表366和RAM活动性表364,来对删除模块359进行控制,以识别冗余和使次trie变小,来增加存储器和/或减少查找时间。该删除可应用于寄存器352中、RAM360中或寄存器352和RAM360之间的次trie。
本领域技术人员将发现,使节点C5*910成为准叶节点的操作会使节点D10*911和D11*912在路由查找处理中被绕过。结果,节点D10*911和D11*912将变为不活跃的,其利用总数降至0。如果节点D10*和D11*在节点C5*910变成准叶之前被记录于寄存器存储器352中,则当活动性级别降至辅助存储器360中最为活跃的级别以下时,路由查找表250将节点D10*911和D11*912自动重定位至RAM360。在一些实施例中,冗余节点,包括D10*911和D11*912,可通过标准的路由老化机制而从多路路由trie中被相继地去除。
图11中示出了处理流程图,交换模块通过该处理监视并更新路由查找。交换模块110像其他路由器一样,通过各种路由交换协议——例如包括OSPF——从其他路由器动态地学习(步骤1102)新路由,或者由网络管理员以静态路由来手工地配置。路由管理器356立即确定(步骤1104)在何处将该新路由的一个或多个节点插入多路路由trie结构中,该结构代表路由装置100的网络拓扑。在插入一个或多个节点的处理中,路由管理器356将任何新节点逻辑地链接到共享公共IP地址前缀的父节点。
路由管理器356确定(步骤1106)NP的寄存器存储器352中对于新路由的空间可用性。如果存储器可用,则寄存器存储器确定步骤(测试步骤1108)的回答是肯定的,利用插入(步骤1110)父节点来负责新分支的新索引503将新路由的一个或多个节点引入寄存器352中。如果新节点构成寄存器352中的新叶节点,则新的叶确定步骤(测试步骤1112)的回答是肯定的,该路由被添加(步骤1114)到寄存器叶列表366,其用以跟踪寄存器352中记录的节点的活动性,以及将其活动性与RAM360中的节点相比较。寄存器叶列表366中的利用总数统计优选为由网络处理器106编译和在寄存器活动性表358中编译的统计子集。寄存器叶列表366中的节点可从最活跃到最不活跃进行归类和排列,以便于识别和便于从寄存器存储器352到RAM存储器360转移节点。
如果寄存器352中没有可用的存储器,则寄存器存储器确定步骤(测试步骤1108)的回答是否定的,新节点被记录(步骤1115)于RAM360中。记录至RAM360的新路由还可被监视以确定其利用总数是否以及何时高得足以保证重定位至寄存器存储器352。如果新节点也是新的“次trie根节点”,则新的根确定(测试步骤1116)的回答是肯定的,该节点被添加(步骤1118)到RAM活动性表364中。术语“次trie根节点”是指RAM360中的路由trie节点,其父节点驻留于寄存器存储器352中。RAM360中的次trie根位于主路由存储器和辅路由存储器之间的逻辑边界处,并且是根据相对于寄存器352中的节点频率而查找这些节点时的频率来重定位至寄存器存储器352中的候选。
图12中示出了处理1200的流程图,交换模块通过该处理来监视路由活动并将路由查找表中的节点有选择性地重定位至主路由存储器352或辅路由存储器360。在优选实施例中,查找活动性,即利用总数统计,是确定节点是保持于NP106的相对快的寄存器存储器352中还是保持于相对慢的外部RAM362中的主要因素。按照优选实施例,与相对不活跃的路由直接有关的节点被分配至相对较慢的RAM360,而与相对活跃的节点有关的节点被分配至相对快的寄存器存储器352。
在优选实施例中,路由查找表250确定(步骤1202)寄存器叶列表366中列举的叶节点的利用总数以及RAM活动性表364中次trie根节点的利用总数。在优选实施例的NP106中,寄存器存储器352中路由trie节点的利用总数是由NP106利用预配置的算法来自动跟踪的。在优选实施例中,NP106被配置为每当出于路由查找目的而存取节点时增加与该节点相关联的“命中位”,即一位计数器。NP106或微处理器262周期性地检查寄存器352中各节点的命中位,以确定设置哪些命中位。如果设置了命中位,则该命中位被初始化为零。如果未设置命中位,则增加一计数器,其跟踪该节点的闲置周期数。因此每单位时间的闲置周期数是活动性的度量。不活跃的路由经确定的一段时间不被使用时可被删除或“老化”。在路由被删除之前维护该路由所需要的命中数优选为由网络管理员确定的可编程位阈值。
路由管理器356确定RAM362中专有地保持的路由trie节点、特别是活动性表364中次trie根的活动性。对于这些节点,该利用总数是由给定时间段内查找这些节点的次数所给定的频率度量。在优选实施例中,由微处理器262执行的机器可读指令使路由管理器356在出于路由查找的目的而使用节点时使RAM活动性表364中的使用计数器增加。对这些使用统计进行累计的时间段优选为由网络管理员提供的可编程时间段。在优选实施例中,RAM360中次trie根的利用总数等于其最为活跃的子节点的利用总数。
如果RAM360中有比寄存器352中使用更为频繁的一个或多个路由,则相对活动性确定测试(测试步骤1204)的回答是肯定的,至少一个相对不活跃的节点从寄存器352重定位(步骤1206)至RAM360。随着寄存器352中的存储器现在可用了,至少一个相对活跃的路由从RAM360同时重定位至寄存器352(步骤1208)。优选地,交换模块110在十分之一秒至一秒级别的更新间隔中根据需要周期性地重复重定位节点的处理1200。
在寄存器352或RAM360之间重定位节点的处理1200中,交换模块110在路由查找表250中保留trie结构的整体拓扑组织。一般而言,节点的重定位需要(a)在寄存器352或RAM360中的分级数组中产生该节点将被移动到此的条目;(b)在新条目中产生一将它链接至恰当的转发信息的指针;以及(c)删除从中移除该节点的存储器中该数组内现有的条目。
除寄存器352中有可用的存储器之外,在节点可被重定位至寄存器352之前,一些实施例中的节点必须具有超过闲置周期阈值的活动性级别。为了具有路由重定位资格而必需的周期数优选为由网络管理员确定的可编程闲置周期阈值。
尽管上面的描述包含了许多说明,但是这些不应当理解为限制本发明的范围,而是仅仅提供此发明的一些当前优选实施例的说明。
因此,本发明已经通过实例非限制性进行了公开,应当参照所附权利要求来确定本发明的范围。
权利要求
1.一种路由装置,包括适于接收协议数据单元(PDU)的端口;路由表,用于在具有多个节点的多路trie中存储多个路由,该路由表包括第一路由存储器,用于高速缓存所述多个节点的第一组;以及第二路由存储器,用于高速缓存所述多个节点的第二组;寻路引擎,适于搜索所述路由表用于寻找与所述PDU相关联的所述多个路由之一;以及路由管理器,适于将所述第二组的一个或多个节点从所述第二路由存储器重定位至所述第一路由存储器,其中所述第一路由存储器的每个所述节点的利用总数高于所述第二路由存储器的每个所述节点的利用总数。
2.权利要求1的路由装置,其中所述路由管理器还适于将所述第一组的一个或多个节点从所述第一路由存储器重定位至所述第二路由存储器。
3.权利要求1的路由装置,其中所述第一路由存储器比所述第二路由存储器具有更快的存取速度。
4.权利要求3的路由装置,其中所述第二路由存储器是随机存取存储器。
5.权利要求3的路由装置,其中所述第一路由存储器是寄存器存储器。
6.权利要求5的路由装置,其中所述寻路引擎和寄存器存储器被具体实施于专用集成电路(ASIC)中。
7.权利要求6的路由装置,其中所述ASIC是网络处理器。
8.权利要求1的路由装置,其中所述路由表的所述搜索包括所述PDU的互联网协议(IP)地址的搜索。
9.权利要求1的路由装置,其中所述多个节点的每一个的利用总数是每个节点搜索活动性的度量。
10.权利要求1的路由装置,其中所述路由装置还包括转发表,当所述寻路引擎识别出关联于所述PDU的所述多个路由之一时,转发信息从该转发表中被取回。
全文摘要
公开了一种路由装置及相关的方法,用于在两个或更多存储器装置之间分配转发路由表的多路trie的节点。在优选实施例中,该路由装置包括路由表,用于在多路trie中存储多个路由,该多路trie在用于高速缓存多个trie节点的第一组的第一存储器中和在用于高速缓存多个trie节点的第二组的第二存储器中;以及路由管理器,适于将第二组的一个或多个节点从第二存储器重定位至第一存储器,从而第一存储器的每个节点的利用总数高于第二存储器的每个节点的利用总数。
文档编号G06F12/02GK1761238SQ200510102920
公开日2006年4月19日 申请日期2005年9月14日 优先权日2004年9月14日
发明者格雷戈里·佩奇 申请人:阿尔卡特公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1