使用tcam实现数据流的选择性路由的制作方法

文档序号:7720318阅读:162来源:国知局

专利名称::使用tcam实现数据流的选择性路由的制作方法
技术领域
:本发明涉及网络通信,尤其涉及使用三态内容可寻址存储器(TCAM)实现多数据流的选择性路由,例如多协议标签交换(MPLS)、互联网协议(IP)虚拟专用网络(VPN)数据包和基于策略的路由数据包。MPLS是一种遵从标准的技术,它用于加速网络业务流速,同时简化网络管理。MPLS包括为特定的数据包序列设置相应的路径,它根据每个数据包中包含的标签确定数据包,因此节省了路由器查询下一个节点地址所需的时间。MPLS被称作多协议是因为它与互联网协议(“IP”)、异步传输模式(“ATM”)以及各种帧中继网络协议协同工作。MPLS允许在标准开放系统互联(“OSI”)的第二层(交换层)上转发大多数数据包,而不是在第三层上转发数据包。除了具有业务的总体传送速度更快的优势外,MPLS还简化了网络服务质量(“QoS”)的管理。出于这些原因,随着网络开始承载更多的、不同种类的业务,该技术有望被迅速采用。MPLS的实质是产生一种短的、固定长度的“标签”,这种标签作为IP信息包头部的一种缩写表述,而且,MPLS使用这种标签来转发关于信息包的决议结果。典型情况下,IP数据包通过一系列路由器从源地址路由到目的地,这些路由器接收IP数据包,读取源地址和/或目的地址,然后向由IP数据包中包含的目的地址指示的目的地址再次发送数据包,或者把数据包转发给另一个路由器,由该路由器转发IP数据包,直到IP数据包达到目的地址,这种转发方式称为逐段路由。IP数据包的头部包含IP源地址和/或目的地址的字段。路由协议(例如路由信息协议(“RIP”)和第一条开放最短路径(“OSPF”))使每台机器能够理解在数据包向其目的地址行进的过程中的下一台机器是哪一台。在MPLS中,IP地址在进入到网络后遇到的第一个MPLS设备上被封装一个标签,MLPS边界路由器分析IP头部的内容,并选择用于打包数据包的适当的标签。与传统的IP路由不同的是,该路由器的分析可以不仅基于IP头部包含的目的地址。在网络中的所有后续节点上,路由器使用MPLS标签而不是IP头来为数据包确定转发决策。当带有标签的MPLS离开网络时,另一台边界路由器把标签去除。在MPLS术语中,数据包处理节点或路由器被称作标签交换路由器(LSR)。MPLS路由器通过以MPLS标签为基础制定交换决策来转发数据包。LSR可分为两个大类MPLS边界路由器——它是一种高性能数据包分类器,它在网络边缘应用(和去除)必要的标签;核心LSR——这种路由器能够以极高的带宽处理带有标签的数据包。在MPLS中,使用一种内容可寻址存储器(CAM)设备存储IP地址,从而利用了高效地使用IP寻址的传统路由方案。内容可寻址存储器(CAM)是一种存储设备,可以指令它把存储在其联合CAM数组中的数据与被比较数据的特定模式比较。整个CAM数组(或各个段)支持并行搜索,其中的数据同时与被比较数据比较。如果找到匹配的数据,那么CAM设备会插入一个匹配标记来指示匹配值。插入一个多匹配标记还可以指示多个匹配值。通常,CAM设备包含一个优先级编码器,该编码器把最高优先级的匹配位置翻译为一个匹配地址或CAM索引。CAM的快速并行搜索能力在许多应用中非常有用,包括在路由器和联网设备中的地址过滤和查找、在基于策略的路由器中的策略实施、用于加密/解密以及压缩/解压缩应用的模式识别、以及其它模式识别应用等。二态CAM单元可以存储信息的两个状态一个逻辑1状态和一个逻辑0状态。二态CAM单元通常包含一个RAM单元和一条比较电路。比较电路把被比较数据与RAM单元中存储的数据进行比较,当发现匹配值时,就把匹配行设置为与预先确定的状态。二态CAM单元的列可以由存储在一个或多个全局屏蔽寄存器中的掩码数据全局屏蔽。三态CAM单元是按位掩码的CAM单元,从而有效地存储信息的三个状态逻辑1状态,逻辑0状态、以及与比较操作无关的状态。二态CAM单元通常包含第二个RAM单元,这个RAM单元为每个二态CAM单元存储局部掩码数据。局部掩码数据对被比较数据与存储在第一个RAM中的数据进行比较的结果进行屏蔽,使比较结果不影响匹配行。二态CAM单元为用户按条目确定比较中要屏蔽的位提供了更高的灵活性。美国专利6,237,061中描述了一个系统,在该系统中,无类别域间路由(CIDR)地址被预先排序并装载到二态CAM中,这样,具有最长前缀的CAM条目位于最高数字地址或索引处。CIDR地址的前缀部分用于设置与每个CAM条目相关的屏蔽单元,这样,在比较操作中,只有每个CAM条目的未屏蔽前缀部分(可以对应网络ID字段)被与存储为CAM搜索关键字的来向目的地址比较。由于每个CAM条目按照相关的前缀值掩码,所以二态CAM只需要一次搜索操作就能定位具有最长前缀的CAM条目。网络提供商提供的某些其它网络设备包含互联网协议(IP)虚拟专用网络(VPN),从而能够与分布在不同地域的各种客户地点互联。VPN通过网络基础设施共享实现了传输的秘密性和低成本高效率特点。美国专利6205448中描述了一种虚拟专用网络,该虚拟专用网络包含与共享MPLS网络连接的多台路由器,并且被配置为在整个共享MPLS网络中动态传送VPN信息。在该专利中还描述了基于策略的路由服务,这些服务允许客户实现控制数据包在相应路径上传输的策略。在该专利中还包含了基于策略的路由的传统应用,包括通过跨策略路由器的不同互联网连接为从不同用户组发起的路由流选择基于源地址的中继提供商;用于以服务类型为基础确定业务优先级的服务质量(QoS)控制方法;以及在低带宽、低成本的永久路径和高带宽、高成本的交换路径之间传送业务的节省成本方法等。人们希望提供一种通过使用TCAM分类多种类型的数据业务和路由查找来实现快速搜索能力的方法和系统。本发明涉及使用三态内容可寻址存储器(TCAM)支持路由器中的多数据流的方法和系统,其中对TCAM的访问数量进行了优化,以提高更新数据和后续查找的效率。为了容纳多个数据流,TCAM被分为至少两个分区,其中的第一个部分包含优先级较高的索引,第二个部分包含优先级较低的索引。例如,可以向第一个分区加入多协议标签交换(MPLS)流和IP虚拟专用网络(VPN)流,在第二个分区中加入基于策略的路由流。在对来向数据包的预定义前缀的后续TCAM查找中,MPLS或IP-VPN流将包含匹配的基于策略的路由流,例如按照访问控制列表或业务管理器流分类的路由流。对于MPLS和IP-VPN流,按连接索引(CIX)和目的IP地址(DA)分类的路由流和只按CIX分类的路由流被从TCAM的第一个分区的顶端加入,只按DA分类的路由流被从第一个分区的底端加入。这种方案的优点是,按CIX和DA分类的路由流以及只按CIX分类的路由流在较高索引处包含只按DA分类的路由流,而且,按CIX和DA分类的路由流以及只按CIX分类的路由流与只按DA分类的路由流分离开来,从而优化了增加新路由流时所需的交换数量。为了减少对TCAM的写访问次数,使用了具有与TCAM空间对应的条目的流索引空间。交换在索引空间中进行,并且只有发生改变的数据被写入TCAM中。通过下面的附图和说明可以更详细地了解本发明。图2是按照本发明的原理实现的流分类器和流管理器的示意图。图3是一个TCAM流条目的示意图。图4A是用于存储按连接索引(CIX)分类的路由流的前缀树的示意图。图4B是用于存储按目的地址(DA)分类的路由流的前缀树的示意图。图5A是没有DA流时在加入路由流之前用于按CIX和DA分类的MPLS和IP-VPN路由流的流TCAM的数据组织方法的示意图。图5B是没有DA流时在加入路由流后用于按CIX和DA分类的MPLS和IP-VPN路由流的流TCAM的数据组织方法的示意图。图5C是有DA流时在加入路由流之前用于按CIX和DA分类的MPLS和IP-VPN路由流的流TCAM的数据组织方法的示意图。图5D是有DA流时在加入路由流后用于按CIX和DA分类的MPLS和IP-VPN路由流的流TCAM的数据组织方法的示意图。图6A是没有CIX、DA或CIX流时在加入路由流之前用于按DA分类的MPLS和IP-VPN路由流的流TCAM的数据组织方法的示意图。图6B是没有CIX、DA或CIX流时在加入路由流之后用于按DA分类的MPLS和IP-VPN路由流的流TCAM的数据组织方法的示意图。图6C是有CIX、DA或CIX流时在加入路由流之前用于按DA分类的MPLS和IP-VPN路由流的流TCAM的数据组织方法的示意图。图6D是有CIX、DA或CIX流时在加入路由流之后用于按DA分类的MPLS和IP-VPN路由流的流TCAM的数据组织方法的示意图。图7是用于基于策略的路由流的流TCAM的数据组织方法的示意图。请参考图1,图1中的高级功能框图显示了一种按照本发明的原理实现的用于在路由器10中分类路由流的系统体系结构。一个路由器是一组数据包,这些数据包遵守由其头部中的内容确定的规则或策略。例如,数据包的头部可以包含源IP地址、目的IP地址、源端口、目的端口、协议标识、服务类型(TOS)、连接索引(CIX)和其它内容。该体系结构包含三个主要元素控制平面12、数据平面13、以及第2层接口14。各种元素之间的交互由相应元素之间的一系列箭头代表。可以在软件中实现的控制平面12由流管理器15、数据平面控制接口16、流核心控制17和IP、用户数据报协议(“UDP”)、以及传输控制协议(“TCP”)18构成。可以在硬件中实现的数据平面13由流分类器20、IP转发器21、以及标签转发器22构成。IP业务和IP控制业务23在流分类器20处接收。流分类器20与用于分类和路由IP业务和IP控制业务23的流管理器15和流核心控制17交互,并通过标签转发器22应用目的路由(对于MPLS流),或者通过IP转发器21应用目的路由(对于非MPLS流)。流核心控制17可以由软件模块构成,例如TEP、red管理器、标签管理器、路由监视器、路由管理器和FIB、以及IP路由数据库。虽然本发明最适合于AmberNetworkASR2000和ASR2020设备,但是它也同样适合于具有相同能力和特性的其它路由器。在本文中必要时将引用AmberNetworkASR2000和ASR2020技术手册的内容。图2的原理图显示了流分类器20和流管理器15的一个实现例子。在本实例中,流分类器20由流二态内容可寻址存储器(TCAM)30构成。流TCAM30是一种硬件的存储器设备,TCAM中的所有条目以并行方式被与来向数据包头部字段比较,并且在一个时钟周期中选中第一个匹配的条目。一种比较合适的TCAM是加州圣何塞劳拉技术有限公司生产的产品,这种产品在美国专利6081440中进行了描述。每个流TCAM30由索引32寻址或索引。索引32可以是一个索引值,也可以是一个数字地址。索引32按从最低索引32a到最高索引32n方式排列,最低索引32a的优先级最高,最高索引32n的优先级最低。图3显示了将存储在流TCAM30中的一个典型的TCAM流条目33。局部掩码34与每个TCAM流条目33关联,以便有效地在流TCAM30中存储逻辑0、逻辑1或“与流TCAM查找操作无关”标记。例如,如果局部掩码34的一个位是逻辑1,那么在后续的流TCAM查找操作中,TCAM流条目33中的相应位将被与来向数据包的相应位比较。相反,如果局部掩码34是逻辑0,那么在后续的流TCAM查找操作中,TCAM流条目33的相应位不与来向数据包的相应位比较。在本发明的其它实例中,掩码位的方案也可以相反,这样,如果掩码位是逻辑1,那么TCAM流条目的相应位将被屏蔽,如果掩码位是逻辑0,那么TCAM流条目的相应位将被比较。一个前缀可以与流TCAM条目33中的一个或多个域(例如目的IP地址)关联,以指示在流TCAM30中要匹配的包头部的目的IP地址的位数。在后续的流TCAM查找操作中,如果在未屏蔽的TCAM条目和预先确定的与来向包头部位对应的前缀匹配时,匹配的TCAM流条目33的索引以及存储在流TCAM30或相关的外部存储器(例如SRAM)中的路由数据将作为输出。流管理器15用于为流TCAM30提供数据结构组织方案。请参考图2,流管理器15可以把索引32分为一个或多个逻辑分区。路由流按照其类型的相应优先级被分配到分区中。在本实例中,索引32被分配到分区36a中(该分区包含最低索引32a)和分区36b中(该分区包含最高索引32n)。FTCAM_Partition索引位于分区36a和分区36b之间。在图2中所示的实例中,MPLS和IP-VPN流被确定为具有最高优先级,并且被分配到分区36a中。基于策略的路由流可以包含按访问控制列表(ACL)流和业务管理器(TE)流划分的数据。因此,在对流TCAM30的后续查找中,被分配了较高优先级的MPLS流和IP-VPN流可以在被分配了较低优先级的ACL流和TE流之前找到,MPLS流或IP-VPN流可以包含在流TCAM30中的任何匹配的ACL流和TE流。流索引空间38可以在流管理器15中维护,以便与流TCAM30的数据排列形式对应。所有的流交换操作都可以在流索引空间38中进行,只有被更改的条目会被写入到流TCAM30中。在本发明的一个实例中,使用一个指针数组和前缀树把MPLS和IP-VPN流存储到流索引空间中,如图4A和4B所示。按照包头部的连接索引CIX和目的IP地址(DA)字段分类的路由流被存储在CIX前缀树(40)中。每个连接索引(CIX1-CIX16K)与前缀树40的节点41a-41n关联。可以执行基于目的IP地址的查找操作来查找存储在节点41a-4ln中的最长的匹配前缀。在流TCAM30的查找过程中,为了匹配正确的流,必须对路由流进行维护。在流索引空间38中使用一个gMaxCixDaFix变量指示按CIX和DA分类的路由流以及只按CIX分类的路由流的最大流TCAM索引。只按目的IP地址分类的路由流被存储在DA前缀树42中,每个DA与前缀树42的节点44关联。在流索引空间38中使用gMinDaOnlyFix变量指示只按DA分类的路由流的最小流TCAM索引。对于TCAM30的MPLS和IP-VPN流结构,可以在流管理器15中实现一个软件模块。表1中给出了一个典型的软件模块。表1<prelisting-type="program-listing">typedefstruct_flowlkuptabentry{FM_PR_TREE*pfTreePtr;}FM_FLOWLKUP_TABLE_ENTRY;typedefstruct_lookuptable{FM_FLOWLKUP_TABLE_ENTRYflowLkupTable[FM_MAX_CIX];}FM_FLOWLKUP_TABLE;typedefstruct_fmprtreenode{PR_NODEprNode;/*PR_NODEcontainsRB_NODE+prefixandmask*/FM_FLOWflowObject;}FM_PR_NODE;typedefstruct_fmprefixtree{PR_TREEprTree;/*rootofprefixtree*/}FM_PR_TREE;</pre>图5A-5D显示了用于MPLS和IP-VPN流的流TCAM30的数据结构的例子。为了在流TCAM30的查找过程中匹配正确的路由流,需要对路由流进行维护。分区36a被分为较低索引部分50a和较高索引部分50b。较低索引部分50a对应着较低索引或地址范围;较高索引部分50b对应着较高索引或地址范围。按包头部的连接索引(CIX)和目的IP地址(DA)字段分类路由流(称为CIX,DA)被分配到较低索引部分50a中。只按包头部的CIX分类的路由流也被分配到较低索引部分50a中。只按包头部的DA分类的路由流被分配到较高索引部分50b中。可以对每个流TCAM条目33应用局部掩码34,以便有效地存储特定类型的数据流(例如上述的CIX,DA流、CIX流和DA流),从而在流TCAM30的比较操作中使用这些数据流。例如,当DA的局部掩码位是0并且CIX的局部掩码位全是1时,可以出现CIX流。在向TCAM30增加按CIX,DA或CIX分类的路由流时,将从较低索引部分50a的最低索引32a搜索TCAM30中的自由条目。自由条目被称为Fix。在增加分类为DA流的路由流时,从最高索引部分50b的最高索引32b搜索TCAM30中的自由条目。与最低索引部分50a的最大值对应的索引被定位gMaxCixDaFix;与最高索引部分50b的最小值对应的索引被定位gMinDaOnlyFix。采用这种方式,最大自由空间54在最低索引部分50a和最高索引部分50b之间实现,因此把CIX,DA流和CIX流组织在一起,把DA流组织在一起,同时把CIX、DA流和CIX流与DA流分离开来。在从TCAM30中删除按CIX,DA或CIX分类的路由流时,流空间38中对应的索引32处的条目被设置为无效。因此,在以后增加按CIX、DA或CIX分类的路由时,在从较低索引部分50a中的最低索引32a搜索自由条目时,无效的条目会被发现,此时增加的路由流会重用无效的条目空间。因此,只有当TCAM30的空间被占满时,才有必要交换DA流来插入CIX,DA或CIX流,或者交换CIX,DA或CIX流来插入DA流。图5A-5B显示了在不存在DA流或自由TCAM条目且Fix在比gMinDaOnlyFix低的索引值处的DA流之上的CIX、DA流和CIX流的安排方式。GMaxCixDaFix索引条目被设置在紧随与Fix对应的索引之后。图5C-5D显示了存在DA流或自由TCAM条目并且Fix在DA流之间时的CIX,DA流和CIX流的安排情况。在本实例中,TCAM30几乎已满。从最低索引32a到gMaxCixDaFix和gMinDaOnlyFix索引之间没有自由条目。因此,gMaxCixDaFix和gMinDaOnlyFix索引是相邻索引。在gMinDaOnlyFix索引和最高索引32b之间有自由条目。例如,由于以前删除过DA流,因此自由条目可以出现在DA流空间中。为了使用自由条目Fix,对于按CIX,DA或CIX分类的路由流,在gMinDaOnlyFix处的DA流被移动到Fix,因此使gMinDaOnlyFix索引可用。在CIX,DA或CIX分类的路由流被写到gMinDaOnlyFix的当前索引处。GMaxCixDaFix索引被设置在为按CIX,DA或CIX分类的路由流写入的TCAM条目处,gMinDaOnlyFix条目被设置在紧随写入的TCAM条目之后。为了实现正确的归类排序,需要调整在最低索引32a和TCAM30中的gMaxCixDaOnly索引之间的其它CIX,DA和CIX路由流以及在GMinDaOnlyFix索引和最高索引32b之间的其它DA流。在流管理器15可以实现一个软件模块来向TCAM30增加CIX,DA流和CIX流。指向当前流的指针被称为pflow。指向自由条目的指针被称为fix。TCAM流条目33由AdjustAndWriteCixDA(pflow,fix)函数(下下文中描述)写入到流TCAM30中,以便按照相同CIX中的其它DA的局部掩码34把向流TCAM30的写入调整在TCAM流条目处。表2中给出了一个典型的软件模块。表21.开始insertCixDaFlow(pFlow)2.在TCAM分区的顶部开始,向下检索,发现第一种自由FTCAM条目,说′Fix′。<prelisting-type="program-listing">3.if((gMinDaOnlyFix==0)||(Fix<gMinDaOnlyFix)){/*No<DA>onlyflowsarepresent*//*Or<DA>onlyflowsexist,butFixisabovethem*/AdjustAndWriteCixDA(pFlow,Fix)/*takecareofsubsumingissueswithotherDasinsameCix,basedonsubnetmasks*/SetgMaxCixDaFixReturn}else{/*ThereareDAOnlyflowspresent*//*Freeflowisinbetweenthe<DA>onlyflows*//*GetFlowcurrentlyatgMinDaOnlyFix*/pOtherFlow=GetFlowAtIndex(gMinDaOnlyFlow);AdjustAndWriteDA(pOtherFlow,Fix);/*WriteFlowtobeaddedatgMinDaOnlyFix*/AdjustAndWriteCixDA(pFlow,gMinDaOnlyFix);setgMaxCixDaFixsetgMinDaOnlyFixReturn}</pre>4.结束insertCixDaFlow在插入CIX,DA流、CIX流和DA流时,流TCAM30中的路由流被相应地调整,以保证TCAM30的排序顺序是具有最长前缀的TCAM条目位于具有最高优先级的索引处(即,索引值最低或数值最小),具有最短前缀的TCAM条目位于具有最低优先级的索引处(即索引值最高或数值最大)。表3和表4分别显示了用于调整和写入DA流以及调整和写入Fix和DA流的软件模块,这些软件模块可以在流管理器15中实现,并且可用于表1中所示的软件模块。表31开始AdjustAndWriteDA(pFlow)。2使用流中目的IP地址的掩码长度,首先确定前缀树42的短前缀数据流,如果短前缀点仅仅在前缀树42的&lt;DA&gt;中被发现,并且发现点的步长值小于pFlow的值,交换两个数据流的值,将第二个数据流的值写到流TCAM30,然后继续搜索包含被替换的数据流的本地路由器。3最后将最佳的流写到正确的位置,这样就没有必要在下面的程序中重写一次。4在这一点pFlow指向最短前缀流,这个最短前缀流的索引值必须遵循最大前缀匹配特性并且与插入流TCAM30的初始流相匹配。5在TCAM30中确定较长的前缀的流,从掩码长度32开始到当前的掩码长度,包含最大的流的值。6如果找到的流的流索引值大于当前流的流索引值,意思是指对于同一个目的来说较长前缀的流要比当前短前缀流到达的时间早,在TCAM中交换两个流并且确定两个流的索引值。将第2个流写到TCAM30中。7把最佳的流写到正确的位置,如果这个流是和第3步的流相同的话。TCAM30就不需要重写了。8结束AdjustAndWriteDA(pFlow)。表41.开始adjustAndWriteCixDA(pFlow,Fix)2.使用流中的目的IP地址的掩码长度,第一次将较短前缀的流固定在前缀树40中。如果较短前缀节点被发现,被发现节点的索引比pFlow节点的索引低,交换这两个流并只写入第二种流到流TCAM30中。然后继续以被删除的流检索,以定位被包含的路由。3.将最后的流写入其正确的位置,将其记住,以便下次不再重写。4.在pFlow这一点是指向其索引必须调整,以适应LPM属性的最短前缀流,和必须插入流TCAM30中的与原始流匹配的流。5.将较长前缀的流固定于TCAM30中。从掩码长度32开始,向下通过掩码长度,发现包含最长流索引的流。图6A-6B显示了当第一个自由TCAM条目“Fix”位于CIX,DA流和CIX流之后或者不存在CIX,DA流时的DA流的分配情况。GMinDaOnlyFix索引条目被设为在与Fix对应的索引处。图6C-6D显示了当第一个自由TCAM条目“Fix”位于CIX,DA或CIX流之间时DA流的分配情况。在本实例中,TCAM30几乎已满。从最高索引32b经过gMinDaOnlyFIx到gMaxCixDaFix没有自由条目。所以,gMaxCixDaFix和gMinDaOnlyFix索引是相邻的。在gMaxCixDaFix和最低索引32a之间有自由条目。例如,由于以前曾经删除过CIX,DA或CIX流,所以在CIX,DA和CIX流空间中有自由条目。为了使用自由条目“Fix”,对于只按照DA分类的路由流,在gMaxCixDaFix索引处的CIX,DA或CIX流被移动到Fix中,因此使gMaxCixDaFix索引可用。按DA分类的流被写到gMaxCixDaFix的当前索引处。gMinDaOnlyFix条目被设置为位于写入的TCAM条目上,而gMaxCixDaFix条目被设置为刚好位于写入的TCAM条目之前。为了实现正确的归类排序,需要调整在最高索引32b和gMinDaOnlyFix索引之间的其它DA流以及在gMaxCixDaFix和最低索引32a之间的其它CIX,DA和CIX流。在流管理器15中可以实现一个软件模块用来向TCAM30增加DA流。表5中给出了一个典型的软件模块。表51.开始insertDaOnlyFlow(pFlow).2.在TCAM分区的顶部开始,向下检索,发现第一种自由FTCAM条目,说′Fix′。如果失败了,(TCAM分区已满),回退-1.<prelisting-type="program-listing">3.if(Fix>gMaxCixDaFix){/*Flowindexislocatedafterboth<Cix,DA>and<Cix>onlyflowsintheTCAM*//*ORgMaxCixDaFix=0,i.e.thereareno<Cix,DA>flowsyet*/AdjustAndWriteCixDA(pFlow,Fix)/*takecareofsubsumingissueswithotherDAsinsameCix,basedonsubnetmasks*/SetgMaxCixDaFixReturn}else{/*Fixliesinbetween<Cix,Da>flows*//*GetflowcurrentlyatgMaxCixDaFixatflowIndex*/pOtherFlow=GetFlowAtIndex(gMaxCixDaFix);AdjustAndWriteCixDA(pOtherFlow,Fix)/*takecareofsubsumingissueswithotherDAsinsameCix,basedonsubnetmasks*/AdjustAndWriteDA(pFlow,gMaxCixOnlyFix)SetgMinDaOnlyFixSetgMaxCixDaFixReturn}</pre>4.结束insertDaOnlyFlow如果某个接口发生故障,那么流管理器15的客户机负责删除TCAM30中的路由流。流管理器15提供了一个应用编程接口(API),以便根据应用句柄撤销路由。例如,如果一条IP电路发生故障,那么连接管理器会通知IP任务和VPN管理器接收这条告警。VPN管理器根据电路标识符从流TCAM30中撤销路由。可以在流管理器15实现一个软件模块来删除TCAM30中的路由流。表6中给出了一个典型的软件模块。表61.检查flowId在限度内。2.得到对应FlowId的流pFlow=GetFlowAtIndex(flowId)3.发现正确树中的节点。如果pFlow有Cix,为该Cix检索前缀树40,也检索前缀树42。4.删除发现的节点,调整各个树并释放节点存储器。5.释放流空间索引条目。6.如果FlowId=gMaxCixDaFix或gMinDaOnlyFix,修改这些变量。如果在gMaxCixDaFix索引处的流被删除,减少gMaxCixDaFi直到它变到有效的&lt;Cix,DA&gt;或只按&lt;Cix&gt;分类的流的索引。如果在gMinDaOnlyFix索引处的流被删除,增加gMinDaOnlyFix直到它变到有效的只按&lt;DA&gt;分类的流的索引。7.释放流存储器,并使TCAM30中的流无效。ACL流和业务管理器(TE)流由流管理器15按内部方式存储在与流TCAM对应的流索引空间中,如图7所示。ACL流和TE流严格按照命令行接口(CLI)定义的访问控制列表(ACL)排序。ACL通常用于网络接口,以便允许或拒绝特定类型的网络业务。与特定ACL流对应的所有信息包都允许通过,并且被指定网络路由。与ACL流不对应的所有信息包都将被拒绝通过,或者对其服务类型(TOS)应用策略或限制。全局访问列表用于所有接口。ACL和TE流时始终保持它们被加入到TCAM30中的顺序。路由流被加到流TCAM30中的下一个可用索引条目中,从分区36b的前60个条目开始。分区36b被进一步分为62a部分和62b部分。62a部分用于在接口上应用的ACL;62b部分用于全局ACL(只有当没有匹配的ACL时,才使用全局ACL)。可以使用GACL_PARTITION变量定义62a部分和62b部分的分区大小。gMaxACLFix变量为62a部分中的ACL和TE流定义了最大的流TCAM索引。gGlobalACLFix变量为62b部分中的全局ACL和TE流定义了最大的流TCAM索引。基于策略的ACL和TE流被加到gMaxACLFix变量的位置,并且gMaxACLFix变量是递增的。如果gMaxACLFix增加到与GACL_PARTITION变量相等,那么62b部分就已满,在删除某些流之前,无法再增加ACL流。ACL流可以指定一定范围的源端口或目的端口,指定一定范围的源端口或目的端口的ACL流被映射为多个流,并且使用局部掩码34来涵盖该范围的某个部分。因此,为了涵盖特定的范围,需要使用不同的掩码确定路由流的最佳数量。对于在TCAM中映射多个流的路由流,应用编程接口(API)可以产生一个带有指定的局部掩码34的对等流,并把它与其父流一起发送给流TCAM30,由流管理器15管理流TCAM30。全局ACL流被加在gGlobalACLFix变量上,然后gGlobalACLFix变量加1。如果gGlobalACLFix变量增加到与FM_MAX_FIX变量相等,那么在从TCAM30中删除某些流以前,无法再加入全局ACL流。流管理器15包含负责从TCAM30中删除流的软件模块。对于删除单个路由流的情况,该路由流被从流索引空间38中删除,并且在TCAM30中被置为无效。第一个API66用于从TCAM30中删除一个路由流。如果某个路由流具有对等流,那么所有对等流都将被删除。流TCAM30中的其余路由流立即被紧凑处理,以填充空的流空间。也就是说,在被删除的流之后的所有路由流都将向前移动一个索引,并被写入到TCAM30中。同时,gMaxACLFix变量的值也相应调整。对于删除多个流的情况,流列表中的所有流都将被删除,然后对剩余的流进行紧凑处理。第二个API67用于从TCAM30中删除多个流。第一个空的流空间首先由下一个可用的非空流填充,如此重复,直到所有流都被紧凑处理,使gMaxACLFix变量之前的所有空流空间都被填充。同时,gMaxACLFix变量的值也相应调整。在上述描述中,我们看到,业界人员可以很容易地对本发明进行修改或者根据本发明实现其它实例。很容易理解的是,本文中给出的特定计算机示例代码可以采用各种语言以各种方式实现,从而适合于不同的硬件平台。需要注意的是,上述的实例只是用来说明本发明的原理的一些例子。本领域的技术人员可以根据本发明的原理迅速设计出各种各样的变化,但凡是根据本发明的原理进行等价修改或变化而获得的其它实现都应属于本发明的范围。权利要求1.一种用于对路由器中的多个数据流进行分类的方法,包括下列步骤把一个三态内容可寻址存储器(TCAM)分为至少第一个分区和第二个分区;所述第一个分区包含具有其优先级范围从最低索引到分区索引的较高优先级范围的索引,所述第二个分区包含具有其优先级范围从最大索引到所述分区索引的较低优先级范围的索引;按照预先确定的顺序把所述多个数据流中的第一种数据流的一个或多个第一种流TCAM条目装入所述的第一个分区;按照预先确定的顺序把所述多个数据流中的第二种数据流的一个或多个第二种流TCAM条目装入所述的第二个分区;为每个所述的第一种TCAM条目和所述的第二种TCAM条目设置相应掩码的位值,使所述各第一种TCAM条目和所述的第二种TCAM条目分别被所述的掩码屏蔽;把包含来向数据包的预先确定的包头部信息的前缀与所述装入的一个或多个第一种TCAM条目和一个或多个第二种TCAM条目比较,使所述匹配的一个或多个第一种TCAM条目包含所述匹配的一个或多个第二种TCAM条目。2.如权利要求1所述的方法,其特征在于,所述的第一种多个数据流是MPLS或IP-VPN流。3.如权利要求1所述的方法,其特征在于,所述的第二种多个数据流是基于策略的路由流。4.如权利要求3所述的方法,其特征在于,所述的基于策略的路由流是访问控制列表(ACL)流。5.如权利要求3所述的方法,其特征在于,所述的基于策略的路由流是业务管理器流。6.权利要求1所述的方法进一步包含下列步骤维护一个具有与所述TCAM对应条目的流索引空间;以及在进行装入所述的一个或多个第一种TCAM条目的步骤前以及在进行装入所述的一个或多个第二种TCAM条目的步骤前,确定在所述流索引空间中的所述第一种TCAM条目的所述预先确定的顺序以及所述第二种TCAM条目的所述预先确定的顺序。7.如权利要求2所述的方法,其特征在于,所述的MPLS或IP-VPN流按照连接索引(CIX)和目的地址(DA)分类、只按照CIX分类或者只按照DA分类。8.如权利要求7所述的方法,其特征在于,所述的第一个分区被划分为第一部分和第二部分,所述第一部分包含具有较高优先级的索引,其优先级范围从所述的最低索引到gMaxCixDaFix索引,所述第二部分包含具有较低优先级的索引,其优先级范围从gMinDaOnlyFix索引到所述的分区索引,所述按照CIX和DA分类以及只按照CIX分类的数据流被分配到所述的第一部分中,所述只按照DA分类的数据流被分配到所述的第二部分中。9.如权利要求8所述的方法,其特征在于,所述按照CIX和DA分类以及只按照CIX分类的数据流被装载到从所述gMaxCixDaFix索引开始的所述第一部分中,所述只按照DA分类的数据流被装载到从所述gMinDaOnlyFix索引开始的所述第二部分中。10.如权利要求9所述的方法,其特征在于,所述第一个分区被划分为第一部分和第二部分,所述第一部分包含具有较高优先级的索引,其优先级范围从所述的最低索引到gMaxCixDaFix索引,所述第二部分包含具有较低优先级的索引,其优先级范围从gMinDaOnlyFix索引到所述的分区索引,所述的gMaxCixDaFix索引与所述的gMinDaOnlyFix索引相邻,且有一个自由条目位于所述第二部分中的所述gMinDaOnlyFix索引之下,该方法进一步包含下列步骤(a)把位于所述gMinDaOnlFix索引处只按DA分类的数据流移动到所述的自由条目上;(b)在步骤(a)完成后,为所述的gMinDaOnlyFix索引分配一个按CIX和DA分类或只按CIX分类的数据流;(c)把gMaxCixDaFix索引设置在为步骤(b)中所述的按CIX和DA分类或只按CIX分类的数据流分配的索引处;(d)把gMinDaOnlyFix条目设置在为步骤(b)中所述的按CIX和DA分类或按CIX分类的数据流分配的索引后面。11.权利要求10所述的方法还包括下列步骤为包含排序,对在所述最低索引和所述gMaxCixDaOnlyFix索引之间的按CIX和DA分类或只按CIX分类的所述一个或多个装入的数据流排序;为包含排序对在所述gMinDaOnlyFix索引和所述分区索引之间的只按DA分类的所述一个或多个装入的数据流排序。12.如权利要求9所述的方法,其特征在于,所述第一个分区被划分为第一部分和第二部分,所述第一部分包含具有较高优先级的索引,其优先级范围从所述的最低索引到gMaxCixDaFix索引,所述第二部分包含具有较低优先级的索引,其优先级范围从gMinDaOnlyFix索引到所述的分区索引,所述的gMaxCixDaFix索引与所述的gMinDaOnlyFix索引相邻,且有一个自由条目位于所述第二部分中的所述gMinDaOnlyFix索引之上,该方法进一步包含下列步骤(a)把在所述gMaxCixDaFix处按CIX和DA分类或只按CIX分类的数据流移动到所述自由条目上;(b)在步骤(a)完成后,为所述的gMaxCixDaFix索引分配一个只按DA分类的数据流;(c)把gMinDaOnlyFix索引设置在为步骤(b)中所述只按DA分类的数据流分配的索引处;以及(d)立即把gMaxCixDaFix条目设置在为步骤(b)中所述只按DA分类的数据流分配的索引前面。13.权利要求12所述的方法进一步包括下列步骤为包含排序对在所述分区索引和所述gMinDaOnlyFix索引之间的只按DA分类的所述一个或多个装入的数据流排序;为包含排序对在所述gMaxCixDaFix索引和所述最低索引之间的按CIX和DA分类或只按CIX分类的所述一个或多个装入的数据流排序。14.权利要求7所述的方法进一步包括下列步骤维护一个具有与所述TCAM对应的条目的流索引空间;把所述的按CIX和DA分类和只按CIX分类的数据流分配给一个CIX前缀树。15.权利要求7所述的方法进一步包括下列步骤维护一个具有与所述TCAM对应的条目的流索引空间;把所述的只按DA分类的数据流分配给一个DA前缀树。16.权利要求7所述的方法进一步包括下列步骤通过释放所述流索引空间中的相应所述条目并使相应的所述TCAM条目无效来删除所述TCAM中的数据流。17.如权利要求1所述的方法,其特征在于,所述的第一个分区的所述预先确定的顺序在具有最高优先级的索引处有一个最长前缀的TCAM条目,在其后面的前缀值逐渐减小,在具有最低优先级的索引处的前缀最短。18.如权利要求3所述的方法,其特征在于,所述第二个分区被划分为第一部分和第二部分,所述第一部分包含具有较高优先级的索引,其优先级范围从所述的第二个分区的最低索引到GACL分区索引,所述第二部分包含具有较低优先级的索引,其优先级范围从所述的GACL分区索引到所述的最高索引;所述ACL流被分配到所述第一部分中,全局访问列表流被分配到所述的第二部分中。19.如权利要求18所述的方法,其特征在于,所述ACL流指定了一定范围的源端口和目的端口,所述方法进一步包括下列步骤把所述ACL流映射为所述TCAM中的多个流,每个流的掩码涵盖所述源端口或目的端口范围的一部分,以便最佳确定涵盖所述范围的所述部分的流数量。20.权利要求18所述的方法进一步包括下列步骤维护具有与所述TCAM对应的条目的一个流索引空间。21.权利要求20所述的方法进一步包括下列步骤通过释放所述流索引空间中的相应条目并且使相应的TCAM条目无效来删除所述TCAM中的数据流;通过把每个剩余的TCAM条目向前移动一个索引,对所述TCAM中的数据流进行紧凑处理。22.权利要求19所述的方法进一步包括维护具有与所述TCAM对应的条目的一个流索引空间。23.权利要求22所述的方法进一步包括下列步骤通过释放所述流索引空间中的相应条目并且使TCAM条目中相应的条目无效来删除所述TCAM中的数据流;通过把每个剩余的TCAM条目向前移动一个或多个索引,对所述TCAM中的数据流进行紧凑处理。24.一种用于对路由器中的多个数据流分类的方法,包括下列步骤把一个三态内容可寻址存储器(TCAM)划分为至少第一个分区和第二个分区,所述第一个分区包含优先级较高的索引,其优先级范围从最低的索引到分区索引;所述第二个分区包含优先级较低的索引,其优先级范围从最高的索引到所述的分区索引;按照预先确定的顺序把所述多个数据流中的第一种数据流的一个或多个第一种流TCAM条目装入所述的第一个分区;按照预先确定的顺序把所述多个数据流中的第二种数据流的一个或多个第二种流TCAM条目装入所述的第二个分区;为每个所述的第一种TCAM条目和所述的第二种TCAM条目设置相应掩码的位值,使所述的第一种TCAM条目和所述的第二种TCAM条目分别被所述的掩码屏蔽;把包含来向数据包的预先确定的包头部信息的前缀与所述装入的一个或多个第一种TCAM条目和一个或多个第二种TCAM条目比较,使所述匹配的一个或多个第一种TCAM条目包含所述匹配的一个或多个第二种TCAM条目;所述第一种多个数据流是MPLS或IP-VPN流,所述第二种多个数据流是基于策略的路由流。25.一种用于对路由器中的多个数据流分类的方法,包括下列步骤把一个三态内容可寻址存储器(TCAM)划分为至少第一个分区和第二个分区,所述第一个分区包含优先级较高的索引,其优先级范围从最低的索引到分区索引;所述第二个分区包含优先级较低的索引,其优先级范围从最高的索引到所述的分区索引;按照预先确定的顺序把所述多个数据流中的第一种数据流的一个或多个第一种流TCAM条目装入所述的第一个分区;按照预先确定的顺序把所述多个数据流中的第二种数据流的一个或多个第二种流TCAM条目装入所述的第二个分区;为每个所述的第一种TCAM条目和所述的第二种TCAM条目设置相应掩码的位值,使所述的第一种TCAM条目和所述的第二种TCAM条目分别被所述的掩码屏蔽;把包含来向数据包的预先确定的包头部信息的前缀与所述装入的一个或多个第一种TCAM条目和一个或多个第二种TCAM条目比较,使所述匹配的一个或多个第一种TCAM条目包含所述匹配的一个或多个第二种TCAM条目;维护具有与所述TCAM对应的条目的一个流索引空间;在进行装入所述的一个或多个第一种TCAM条目的步骤前,确定在所述流索引空间中的所述第一种TCAM条目的所述预先确定的顺序以及所述第二种TCAM条目的所述预先确定的顺序。26.一种用于对路由器中的多个数据流分类的系统,包括一个用于把一个三态内容可寻址存储器(TCAM)划分为至少第一个分区和第二个分区的仪器,所述第一个分区包含优先级较高的索引,其优先级范围从最低的索引到分区索引;所述第二个分区包含优先级较低的索引,其优先级范围从最高的索引到所述的分区索引;一个用于按照预先确定的顺序把所述多个数据流中的第一种数据流的一个或多个第一种流TCAM条目装入所述的第一个分区的仪器;一个用于按照预先确定的顺序把所述多个数据流中的第二种数据流的一个或多个第二种流TCAM条目装入所述的第二个分区的仪器;一个用于为每个所述的第一种TCAM条目和所述的第二种TCAM条目设置相应掩码的位值的仪器,使所述的第一种TCAM条目和所述的第二种TCAM条目分别被所述的掩码屏蔽;以及一个用于把包含来向数据包的预先确定的包头部信息的前缀与预先确定的所述装入的一个或多个第一种TCAM条目和一个或多个第二种TCAM条目比较的仪器,所述匹配的一个或多个第一种TCAM条目包含所述匹配的一个或多个第二种TCAM条目。27.如权利要求26所述的系统,其特征在于,所述第一种多个数据流是MPLS或IP-VPN流。28.如权利要求26所述的系统,其特征在于,所述第二种多个数据流是基于策略的路由流。29.如权利要求28所述的系统,其特征在于,所述基于策略的路由流是访问控制列表(ACL)流。30.如权利要求28所述的系统,其特征在于,所述基于策略的路由流是业务管理器流。31.权利要求26所述的系统进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器;一个用于确定在所述流索引空间中的所述第一种TCAM条目的所述预先确定的顺序以及所述第二种TCAM条目的所述预先确定的顺序的仪器。32.如权利要求26所述的系统,其特征在于,所述MPLS或IP-VPN流按连接索引(CIX)和目的地址(DA)、只按CIX或者只按DA分类。33.如权利要求32所述的系统,其特征在于,所述第一个分区被划分为第一部分和第二部分,所述第一部分包含优先级较高的索引,其优先级范围从所述最低索引到gMaxCixDaFix索引;所述第二部分包含优先级较低的索引,其索引范围从gMinDaOnlyFix索引到所述的分区索引;按CIX和DA分类及只按CIX分类的所述流被分配到所述的第一部分中,只按DA分类的所述流被分配到所述第二部分中。34.如权利要求33所述的系统,其特征在于,所述按CIX和DA分类及只按CIX分类的流被装入到从所述gMaxCixDaFix索引开始的第一部分中,所述只按DA分类的流被装入到从所述gMinDaOnlyFix索引开始的第二部分中。35.权利要求32所述的系统进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间并把所述按CIX及只按CIX分类的流分配到CIX前缀树中的仪器。36.如权利要求32所述的系统,其特征在于,所述第一个分区被划分为第一部分和第二部分,所述第一部分包含优先级较高的索引,其索引范围从所述的最低索引到gMaxCixDaFix索引;所述第二部分包含优先级较低的索引,其索引范围从gMinDaOnlyFix索引到所述的分区索引;所述gMaxCixDaFix索引与所述gMinDaOnlyFix索引相邻,自由条目在所述第二部分的所述gMinDaOnlyFix索引下,所述系统进一步包括一个用于把在所述gMinDaOnlyFix索引处只按DA分类的流移动到所述自由条目上的仪器;一个用于把按CIX和DA分类或只按CIX分类的流分配给所述gMinDaOnlyFix索引的仪器;一个用于把gMaxCixDaFix索引设置在为所述按CIX和DA分类及只按CIX分类的流分配的索引的仪器;一个用于把gMinDaOnlyFix索引立即设置在为所述按CIX和DA分类及只按CIX分类的流分配的索引之后的仪器。37.权利要求36所述的系统进一步包括一个为包含排序对在所述最低索引和所述gMaxCixDaOnlyFix索引之间的按CIX和DA分类或只按CIX分类的所述一个或多个装入的流进行排序的仪器;一个为包含排序对在所述gMinDaOnlyFix索引和所述分区索引之间的只按DA分类的所述一个或多个装入的流进行排序的仪器。38.如权利要求32所述的系统,其特征在于,所述第一个分区被划分为第一部分和第二部分,所述第一部分包含优先级较高的索引,其优先级范围从所述的最低索引到gMaxCixDaFix索引;所述的第二部分包含优先级较低的索引,其优先级范围从gMinDaOnlyFix索引到所述分区索引,所述gMaxCixDaFix索引与所述gMinDaOnlyFix索引相邻,自由条目在所述第二部分的所述gMinDaOnlyFix索引之上,所述系统进一步包括一个用于把在所述gMaxCixDaFix处按CIX和DA分类或只按CIX分类的流移动到所述自由条目上的仪器;一个用于把只按DA分类的流分配给所述gMaxCixFix索引的仪器;一个用于把gMinDaOnlyFix索引设置在分配给所述只按DA分类的流的索引处的仪器;一个用于把gMaxCixDaFix条目设置在分配给所述只按DA分类的流的索引之前的仪器。39.如权利要求38所述的系统,其特征在于,所述第一个分区被划分为第一部分和第二部分,所述第一部分包含优先级较高的索引,其优先级范围从所述的最低索引到gMaxCixDaFix索引;所述第二部分包含优先级较低的索引,其优先级范围从gMinDaOnlyFix索引到所述的分区索引;所述gMaxCixDaFix索引与所述gMinDaOnlyFix索引相邻,自由条目在所述第二部分的所述gMinDaOnlyFix索引之上,所述系统进一步包括一个用于把在所述gMaxCixDaFix处按CIX和DA分类及只按CIX分类的流移动到所述自由条目上的仪器;一个用于把只按DA分类的流分配给所述gMaxCixFix索引的仪器;一个用于把gMinDaOnlyFix索引设置在分配给所述只按DA分类的流的索引处的仪器;以及一个用于把gMaxCixDaFix条目立即设置在分配给所述只按DA分类的流的索引之前的仪器。40.权利要求32所述的系统进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器;一个用于把所述只按DA分类的流分配到DA前缀树中的仪器。41.权利要求40所述的系统进一步包括一个通过释放所述流索引空间中的相应条目并且使相应的TCAM条目无效来删除所述TCAM中的流的仪器。42.如权利要求26所述的系统,其特征在于,所述的第一个分区的所述预先确定的顺序在最高优先级的索引处有一个最长前缀的TCAM条目,在其后面的前缀值逐渐减小,在最低优先级的索引处的前缀最短。43.如权利要求28所述的系统,其特征在于,所述第二个分区被划分为第一部分和第二部分,所述第一部分包含具有较高优先级的索引,其优先级范围从所述的第二部分的最低索引到GACL分区索引;所述第二部分包含具有较低优先级的索引,其优先级范围从所述的GACL分区索引到所述的最高索引;所述ACL流被分配到所述第一部分中,全局访问列表流被分配到所述的第二部分中。44.如权利要求43所述的系统,其特征在于,所述ACL流指定一定范围的源端口或目的端口,所述系统进一步包括一个把所述ACL流映射为所述TCAM中的多个流的仪器,每个流的掩码涵盖所述源端口或目的端口范围的一部分。45.权利要求43所述的系统进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器。46.权利要求45所述的系统进一步包括一个通过释放所述流索引空间中的相应条目并且使相应的TCAM条目无效来删除所述TCAM中的流的仪器;一个通过把每个剩余的TCAM条目向前移动一个或多个索引来对所述TCAM中的流进行紧凑处理的仪器。47.权利要求44所述的系统进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器。48.权利要求47所述的系统进一步包括一个通过释放所述流索引空间中的相应条目并且使TCAM条目中相应的条目无效来删除所述TCAM中的多个流的仪器;一个通过把每个剩余的TCAM条目向前移动一个或多个索引来对所述TCAM中的流进行紧凑处理的仪器。49.一种用于对路由器中的多个数据流分类的系统,包括一个用于把一个三态内容可寻址存储器(TCAM)划分为至少第一个分区和第二个分区的仪器,所述第一个分区包含优先级较高的索引,其优先级范围从最低的索引到分区索引,所述第二个分区包含优先级较低的索引,其优先级范围从最高的索引到所述的分区索引;按照预先确定的顺序把所述多个数据流中的第一种数据流的一个或多个第一种流TCAM条目装入所述的第一个分区;一个用于按照预先确定的顺序把所述多个数据流中的第二种数据流的一个或多个第二种TCAM条目装入所述的第二个分区的仪器;一个用于为每个所述的第一种TCAM条目和所述的第二种TCAM条目设置相应掩码的位值的仪器,使所述的第一种TCAM条目和所述的第二种TCAM条目的位分别被所述的掩码屏蔽;一个用于把包含来向数据包的预先确定的包头部信息的前缀与所述装入的一个或多个第一种TCAM条目和一个或多个第二种TCAM条目比较的仪器,使得所述匹配的一个或多个第一种TCAM条目包含所述匹配的一个或多个第二种TCAM条目;所述的第一种多个数据流是MPLS或IP-VPN流,所述第二种多个数据流是基于策略的路由流。50.一种用于对路由器中的多个数据流分类的系统,包括一个用于把一个三态内容可寻址存储器(TCAM)划分为至少第一个分区和第二个分区的仪器,所述第一个分区包含优先级较高的索引,其优先级范围从最低的索引到分区索引;所述第二个分区包含优先级较低的索引,其优先级范围从最高的索引到所述的分区索引;一个用于按照预先确定的顺序把所述多个数据流中的第一种数据流的一个或多个第一种流TCAM条目装入所述的第一个分区的仪器;一个用于按照预先确定的顺序把所述多个数据流中的第二种数据流的一个或多个第二种流TCAM条目装入所述的第二个分区的仪器;一个用于为每个所述的第一种TCAM条目和所述的第二种TCAM条目设置相应掩码的位值的仪器,使所述的第一种TCAM条目和所述的第二种TCAM条目的位分别被所述的掩码屏蔽;一个用于把包含来向数据包的预先确定的包头部信息的前缀与所述装入的一个或多个第一种TCAM条目和一个或多个第二种TCAM条目比较的仪器,使得所述匹配的一个或多个第一种TCAM条目包含所述匹配的一个或多个第二种TCAM条目;一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器;以及一个用于在进行装入所述的一个或多个第一种TCAM条目的步骤前确定在所述流索引空间中的所述第一种TCAM条目的所述预先确定的顺序以及所述第二种TCAM条目的所述预先确定的顺序的仪器。51.一种用于对路由系统中多个数据流分类的装置,包括;一个三态内容可寻址内存(TCAM);一种用于把所述TCAM划分为至少第一个分区和第二个分区的分区算法,所述第一个分区包含优先级较高的索引,其优先级范围从最低的索引到分区索引;所述第二个分区包含优先级较低的索引,其优先级范围从最高的索引到所述的分区索引;一种用于选择相应的掩码值来构造所述第一种数据流的一个或多个第一种流TCAM条目和一个或多个第二种流TCAM条目并把所述相应掩码值装入所述第二个分区的装载算法;一种用于实现把包含来向数据包的预先确定的包头部信息的前缀与所述装入的一个或多个第一种流TCAM条目和一个或多个第二种TCAM条目相比较的搜索算法,所述的第二种TCAM条目按照预先确定的顺序被装入到第一个分区中,使匹配的一个或多个第一种TCAM条目包含匹配的一个或多个第二种TCAM条目。52.如权利要求51所述的装置,其特征在于,所述第一种多个数据流是MPLS或IP-VPN流。53.如权利要求51所述的装置,其特征在于,所述第二种多个数据流是基于策略的路由流。54.如权利要求51所述的装置,其特征在于,所述分区算法和所述装载算法在具有与所述TCAM对应的条目的流索引空间中实现,所述第一种TCAM条目的预先确定的顺序和所述第二种TCAM条目的预先确定的顺序在所述流索引空间中体现。55.如权利要求52所述的装置,其特征在于,所述MPLS或IP-VPN流按连接索引(CIX)和目的地址(DA)分类、只按CIX分类或者只按DA分类。56.如权利要求55所述的装置,其特征在于,所述第一个分区被划分为第一部分和第二部分;所述第一部分包含优先级较高的索引,其优先级范围从最低的索引到gMaxCixDaFix索引;所述第二个分区包含优先级较低的索引,其优先级范围从gMinDaOnlyFix索引到所述的分区索引;所述按CIX和DA分类及只按CIX分类的流被分配到所述第一部分中,所述只按DA分类的流被分配到所述第二部分中。57.如权利要求56所述的装置,其特征在于,所述按CIX和DA分类及只按CIX分类的流被装入到从所述TCAM的起点开始并在gMaxCixDaFix结束的所述第一部分中,所述只按照DA分类的数据流被装载到从所述gMinDaOnlyFix索引开始的所述第二部分中。58.权利要求52所述的装置进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器;一个用于把所述按CIX分类的流分配到CIX前缀树中的仪器。59.权利要求52所述的装置进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器;一个用于把所述只按DA分类的流分配到DA前缀树中的仪器。60.权利要求59所述的装置包括一个通过释放所述流索引空间中的相应条目并且使相应的TCAM条目无效来删除所述TCAM中的流的仪器。61.如权利要求52所述的装置,其特征在于,所述的第一个分区的所述预先确定的顺序在最高优先级的索引处有一个最长前缀的TCAM条目,在其后面的前缀值逐渐减小,在最低优先级的索引处的前缀最短。62.如权利要求53所述的装置,其特征在于,所述第二个分区被划分为第一部分和第二部分,所述第一部分包含具有较高优先级的索引,其优先级范围从所述的第二个分区的最低索引到GACL分区索引;所述第二部分包含具有较低优先级的索引,其优先级范围从所述的GACL分区索引到所述第二个分区的最高索引;所述ACL流被分配到所述第一部分中,全局访问列表流被分配到所述的第二部分中。63.如权利要求62所述的装置,其特征在于,所述ACL流指定了一定范围的源端口和目的端口,所述装置进一步包括一个把所述ACL流映射为所述TCAM中的多个流的仪器,每个流的掩码涵盖所述源端口或目的端口范围的一部分。64.如权利要求62所述的装置,进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器。65.如权利要求64所述的装置,进一步包括一个通过释放所述流索引空间中的相应条目并且使相应的TCAM条目无效来删除所述TCAM中的一个流的仪器;一个通过把每个剩余的TCAM条目向前移动一个索引来对所述数据流进行紧凑处理的仪器。66.如权利要求62所述的装置,进一步包括一个用于维护具有与所述TCAM对应的条目的流索引空间的仪器。67.权利要求62所述的装置进一步包括一个通过释放所述流索引空间中的相应条目并且使相应的TCAM条目无效来删除所述TCAM中的多个流的仪器;一个通过把每个剩余的TCAM条目向前移动一个或多个索引来对所述数据流进行紧凑处理的仪器。全文摘要本发明涉及使用三态内容可寻址存储器(TCAM)(30)来支持多数据流的路由器的方法和系统,其中向TCAM(30)写入访问的数量经过了优化,以便提高数据更新和后续的数据查询的效率。为了能够容纳多个数据流,TCAM被分为至少两个分区,其中第一部分包含优先权较高的索引(32),第二部分包含优先权较低的索引。例如,可以把多协议标签交换(MPLS)流和IP-虚拟专用网络(VPN)(36)加入到第一个分区中,把基于策略的路由流加入到第二个分区中。在对来向数据包的字冠的后续TCAM查询中,MPLS或IP-VPN将包含任何匹配的基于策略的路由流,例如按照访问控制列表分类的路由流或业务管理器流。文档编号H04L12/56GK1465014SQ02802453公开日2003年12月31日申请日期2002年7月3日优先权日2001年7月20日发明者阿舒托什·梅特,阿图·马哈穆尼,维佳·昌德申请人:诺基亚有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1