一种利用TCAM实现PBR高速转发的方法

文档序号:33534171发布日期:2023-03-22 08:18阅读:28来源:国知局
一种利用tcam实现pbr高速转发的方法
技术领域
:1.本发明涉及网络通信领域,特别是一种利用tcam实现pbr高速转发的方法。
背景技术
::2.依据报文头部目的ip信息对报文进行选路是网络路由设备的基本功能。传统的路由器中一般使用一张路由表,当报文到达时,用报文头部的目的ip地址进行查表,以确定报文的转发路径。然而,随着网络应用的多元化,在现实中常常会有这样的需求:进行路由选择时不仅仅是根据一张路由表,而是根据网络管理员制定的策略对报文进行路由。制定策略的依据不仅是报文的目的ip,还可能包括源mac、目的mac、源地址、源端口号甚至tos字段或传输层特性等,此类型的路由被定义为基于策略的路由(policy-basedrouting,pbr)或称策略路由。基于策略的路由比传统路由更强大,使用更灵活,使网络管理员对网络路由的配置更加方便、协调。3.策略路由的使用可以根据网络管理者的意愿提供一个可以预见的、稳定的路由。网络管理员可以根据实际的网络环境和用户需求,自由地进行手动修改,对接收端数据包的出接口进行自由合理的规划管理。策略路由可以在一定程度上实现流量工程,使不同服务质量的流或者不同性质的数据(语音、ftp)走不同的路径。4.不仅如此,随着网络带宽的不断增加,网络路由设备,尤其是核心层网络路由设备的性能也要随之增强。为提高报文多吞吐率,路由器一般采用硬件查找的方式。技术实现要素:5.发明目的:为了克服现有技术中存在的不足,本发明提供一种利用tcam实现pbr高速转发的方法,利用tcam加速acl匹配,从而实现了pbr高速转发的方法,满足了不断增加的报文吞吐率的需要。6.技术方案:为实现上述目的,本发明的一种利用tcam实现pbr高速转发的方法,通过将tcam表项分成多个字段,利用每个字段表示报文的一个属性,在每个字段的数据部分填入要匹配的属性值,在每个字段的掩码字段填入掩码,用于实现pbr规则的高速匹配,具体包括以下步骤:7.步骤ⅰ,在使用tcam之前,把tcam划分成固定长度的表项;8.步骤ⅱ,在规则下发时,把规则经过解析后转换成tcam需要的格式存入tcam,把动作转换为转发芯片需要的格式,存入转发芯片中actiontable的相应位置;9.步骤ⅲ,当报文到达时,首先转发芯片按照事先规定的规则从报文中提取相应的字段,组装成key发给tcam,然后tcam把匹配到的表项的地址返回给转发芯片,最后转发芯片根据返回的地址查找actiontable,找到与规则对应的动作并执行,实现pbr转发;10.其中,通过分配pclid字段来区分不同下发对象;所述pclid由多个字段组成,并通过多个字段共同组合表示不同的对象;通过bevalid字段来标识对应表项是否生效;11.通过策略树管理tcam表项:每个端口均对应设置有策略树,且各个端口的策略树相互独立,当对相应策略做增删改查时,根据策略树找到对应的节点,获取硬件中的位置,对其进行操作;所述策略树由上至下分层依次包括根节点、策略节点、node节点、acl节点、rule节点以及pce节点;12.其中,对于pbr的node1和node2之间,rule1和rule2之间的优先级设计:首先当利用tcam多条表项同时命中时,通过只返回地址最低的一个表项的地址的特点,将有限级高的规则下发在前面,将优先级低的规则下发在后面,来实现pbr的优先级顺序;再在下发时,通过将nodeid以及ruleid均小的表项下发到前面,来保证pbr的优先级关系。13.进一步地,步骤ⅱ中,对于规则的解析包括以下方法:对于具有明确掩码长度的规则,将该字段的数据和掩码直接或经简单转换填入tcam中的相应字段中,获得解析出的tcam项;对于范围型的规则,首先通过前缀扩展方法扩展成多条tcam规则,然后将每个字段扩展后的多条tcam规则作为一个集合,对所述集合进行笛卡尔积运算,最后把上述由具有明确掩码长度的规则解析出的tcam项全部填充到笛卡尔积中的每一个tcam表项的相应位置即可。14.进一步地,步骤ⅲ中,通过分配pclid字段来区分不同下发对象的具体方法:首先在初始化时为交换机各个端口设置pcl配制表,当报文到达交换机以后,通过查询所述pcl配制表来为其分配pclid。15.进一步地,步骤ⅲ中,规则与动作的对应方法:在tcam表项下发之后,在转发芯片的actiontable中下发相应的动作;将动作转换为actiontable需要的格式后,为本node中所有tcam表项所对应的多条actiontable表项均下发同样的动作。16.进一步地,所述根节点是所有pbr策略的根,所有pbr策略均通过所述根节点来找到。17.进一步地,所述策略节点是node的集合,具体的规则和动作在策略节点下的node节点中,策略节点用于存放策略信息。18.进一步地,所述node节点中既有acl的指针,又有动作,所有动作串成链表挂在node节点上,为了统计报文的数量,所述node节点中还存有统计资源的索引以及nodeid,所述nodeid用来唯一标识一个node。19.进一步地,所述acl节点中存放有规则的指针、acl版本以及acl编号。20.进一步地,所述rule节点包含规则的编号和对应规则生成的pce节点的指针;每个rule对应一个或多个pce节点。21.进一步地,所述pce节点存放tcam索引和下发tcam的值。22.有益效果:本发明的一种利用tcam实现pbr高速转发的方法,至少包括以下优点:23.1.利用tcam加速acl匹配,从而实现了pbr高速转发的方法,满足了不断增加的报文吞吐率的需要。24.2.通过引入pclid来区分不同下发对象,可以使得每个转发芯片只配一个tcam,从而降低成本。25.3.通过策略树管理tcam表项,便于对规则和动作的管理。附图说明26.附图1为利用tcam实现pbr高速转发的方法框图;27.附图2为pbr转发流程图;28.附图3为pclid组合方式示例图;29.附图4为pclid分配tcam表项字段方法示例图;30.附图5为策略树的软件结构图。具体实施方式31.下面结合附图对本发明作更进一步的说明。32.策略路由的原理:数据报文的转发一般是通过系统设置的静态路由信息或由一些路由协议获得的动态路由信息,依据数据报文的目的地址,查找系统路由表,对报文进行转发,而策略路由与此完全不同。策略路由是通过用户事先定义好的策略路由库来实现的。策略路由库由一条条策略组成,它们是系统进行策略路由转发的依据。每条策略都包括规则和动作两个部分,规则定义了报文需要满足的标准,比如可以规定数据报的源地址、哪一种具体应用、协议类型、tos值等,也就是说,规则具体定义了什么样的数据报文适合于该条策略;而动作定义了当满足这样的规则时,如何对数据报文进行处理或转发。33.一个路由策略可以由多个节点(node)构成。系统按节点序号依次检查各个节点,如果通过了其中一个节点,就意味着通过该路由策略,不再对其它节点进行匹配测试。每个节点可以由一组if-match、apply子句组成。34.if-match子句定义匹配规则,匹配对象是路由信息的一些属性。if-match一般使用acl来实现。在路由交换设备当中,有一种基于报文分类的安全控制策略,就是访问控制列表(accesscontrollist,acl)。它通过解析报头,可以把经过设备的报文的各种信息提取出来,然后就我们所关心的信息进行检查,与事先规定好的控制策略相比较。如果符合我们的要求就放行或执行我们所规定的一些处理。35.apply子句指定动作,也就是在通过节点的匹配后,对路由信息的一些属性进行设置。apply是与acl相对应的,匹配哪条acl,就执行对应的动作。36.根据以上pbr原理的分析,pbr转发过程中时间主要消耗在acl的查找上,所以如何提高acl的匹配速度成为影响pbr效率的关键因素。37.三态内容可寻址寄存器(ternarycontentaddressablememory,tcam)是一种类似于相联存储器的部件。与ram不同,tcam不是通过地址来寻找内容,而是通过内容来定位地址,它将查找关键字和所有tcam表项进行并行比较来定位关键字匹配的存储地址。tcam的并行特性使得分组分类查找可以在固定的时钟周期内完成,在输入关键字之后,在几个时钟周期内即可快速完成与tcam内的所有表项的匹配,返回匹配表项在tcam中的地址。传统的内容可寻址存储器中每个比特有两种状态:0或1,只适合完全匹配;而tcam采用三元地址寻址技术,表项中的每个比特有三种逻辑态(0、1、忽略),匹配时只需关键字与表项中未被忽略的比特位内容相同既为命中,若多条表项同时命中,则只返回地址最低的一个表项的地址。tcam具有查找速度快、操作简单的优点,但同时它也具有3个明显的缺点:成本高、功耗大和路由更新复杂。38.根据tcam的这些特点,可以利用tcam来加速acl匹配,提出如附图1所述的一种利用tcam实现pbr高速转发的方法,通过将tcam表项分成多个字段,利用每个字段表示报文的一个属性,在每个字段的数据部分填入要匹配的属性值,在每个字段的掩码字段填入掩码,用于实现pbr规则的高速匹配,掩码中:掩码1代表需要关心的位置,掩码0代表不需要关心的位置;具体包括以下步骤:39.步骤ⅰ,在使用tcam之前,把tcam划分成固定长度的表项;如40b、80b等;40.步骤ⅱ,在将acl中的规则下发时,把规则经过解析后转换成tcam需要的格式存入tcam,把动作转换为转发芯片需要的格式,存入转发芯片中actiontable的相应位置;41.所述acl中的规则可以分为两类:一类是像路由表匹配目的ip一样,具有明确的掩码长度的规则;另一类是像端口号这样,可以给出范围的规则;42.其中,范围型的规则又可以分为4类:1)大于某一值43.2)小于某一值44.3)不等于某一值45.4)在两个值之间46.对于具有明确掩码长度的规则,将该字段的数据和掩码直接或经简单转换填入tcam中的相应字段中,获得解析出的tcam项;47.对于范围型的规则,首先通过前缀扩展方法扩展成多条tcam规则,然后将每个字段扩展后的多条tcam规则作为一个集合,对所述集合进行笛卡尔积运算,最后把上述由具有明确掩码长度的规则解析出的tcam项全部填充到笛卡尔积中的每一个tcam表项的相应位置即可;48.所述前缀扩展方法将范围转换成若干个前缀,每个前缀对应一个tcam表项,在最坏的情况下一个范围需要转换成2(w-1)个前缀,其中,w为范围字段的长度。49.所述前缀扩展方法引用于文献【1】50.文献【1】taylord,spitznagele,turnerj.packetclassificationusingextendedtcams[a].icnp'03proceedingsofthe1lthieeeinternationalconferenceonnetworkprotocals[c].2003.120-131。[0051]提供以下具体实施例:[0052]表1扩展规则a[0053][0054]表2扩展规则b[0055][0056]表3基本规则c[0057][0058]其中,表1表2分别为规则a、规则b经过前缀扩展方法扩展后的规则,表3则为具有明确掩码长度的规则c转换后的规则,首先经过笛卡尔积运算后形成表4中的前4列,再把表3中的基本规则填充到每一行的相应位置,就形成了表4中下发tcam的表项。[0059]表4下发tcam规则[0060][0061][0062]步骤ⅲ,如附图2所示的pbr转发流程图,当报文到达时,首先转发芯片按照事先规定的规则从报文中提取相应的字段,组装成key发给tcam,然后tcam把匹配到的表项的地址返回给转发芯片,最后转发芯片根据返回的地址查找actiontable,找到与规则对应的动作并执行,实现pbr转发。[0063]由于tcam价格昂贵,为降低成本,每个转发芯片可以只配一个tcam,这样每个端口上的规则就会都下发在一个tcam中,为了使tcam在匹配时能够区分不同的端口或其他下发对象,引入pclid来区分;其中pcl:策略控制列表,id:identification。[0064]所述pclid由多个字段组成,并通过多个字段共同组合来表示不同的对象;[0065]如附图3所示的pclid示例图,提供一种组合方式,图中l2/l3表示二层口/三层口,in/out表示出方向/入方向,portid和vlanid分别表示端口和vlan的编号。通过各个字段的数值和掩码的配合,即可区分出pbr的三个下发对象:路由口、路由子接口、vlan虚接口;[0066]通过分配pclid字段来区分不同下发对象的具体方法:首先在初始化时为交换机各个端口设置pcl配制表,当报文到达交换机以后,通过查询所述pcl配制表来为其分配pclid;在tcam查找时,就会因pclid无法匹配而不会命中不是下发在本对象上的表项;[0067]基于以上区分方法,表5、表6、表7分别给出了路由口、路由子接口、vlan虚接口pclid的分配方法:[0068]表5路由口pclid[0069][0070]表6路由口子接口pclid[0071][0072][0073]表7vlan虚接口接口pclid[0074][0075]通过bevalid字段来标识对应表项是否生效:在表项被删除时将该字段设置为0,以防止表项被无意命中;另外,报文特性相关的字段根据每条表项的长度和需求进行取舍;基于以上字段功能,通过如附图4所示示例的方法来分配tcam表项的字段。[0076]其中,规则与动作的对应方法:在tcam表项下发之后,在转发芯片的actiontable中下发相应的动作;将动作转换为actiontable需要的格式后,为本node中所有tcam表项所对应的多条actiontable表项均下发同样的动作;这样虽然不同表项查找到的动作表项不同,但是都可以执行本node中规定的动作。[0077]规则和动作放入硬件之后,需要用软件表项来记录各个规则在硬件中的存放位置,以便后续对规则和动作的管理。基于pbr的原理,通过策略树管理tcam表项:通过如附图5所示的软件结构来进行pbr策略的记录与硬件资源的管理,每个端口均对应设置有策略树,且各个端口的策略树相互独立;[0078]其中,所述策略树由上至下分层依次包括根节点、策略节点、node节点、acl节点、rule节点以及pce节点;当对相应策略做增删改查时,根据策略、nodeid、aclid、ruleid顺着策略树找到对应的节点,获取硬件中的位置,对其进行操作;[0079]所述根节点是所有pbr策略的根,所有pbr策略均通过所述根节点来找到;[0080]所述策略节点是node的集合,策略节点里主要存放策略的名字等信息,具体的规则和动作在策略节点下的node节点中;[0081]所述node节点中既有acl的指针,又有动作,所有动作串成链表挂在node节点上,为了统计报文的数量,所述node节点中还存有统计资源的索引以及nodeid,所述nodeid用来唯一标识一个node;[0082]所述acl节点中存放有规则的指针、acl版本以及acl编号等;[0083]所述rule节点包含规则的编号和对应规则生成的pce节点的指针;每个rule对应一个或多个pce节点;[0084]所述pce节点存放tcam索引和下发tcam的值。[0085]在pbr的node1和node2之间,rule1和rule2之间都存在着优先级顺序,因此需要进行优先级设计:为实现pbr的优先级顺序,可以利用tcam多条表项同时命中时,只返回地址最低的一个表项的地址的特点,将有限级高的规则下发在前面,将优先级低的规则下发在后面。这样如果查找的内容同时命中多条规则,则只会返回地址最小的一条表项的地址,其他表项的动作将得不到执行,从而实现了优先级的区分。[0086]在pbr中nodeid越小优先级越高,nodeid相同时ruleid越小优先级越高,所以下发时要把nodeid以及ruleid均小的表项下发到前面。如果需要修改,也要同时移动相关表项,以保证这种优先级关系。[0087]以上描述仅为本发明的优选实施方式,应当指出:对于本
技术领域
:的普通技术人员来说,在不脱离本发明上述原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也同样视为本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1