三态内容寻址存储器TCAM表的写入方法及装置与流程

文档序号:13915356阅读:474来源:国知局

本发明涉及通信领域,具体而言,涉及一种三态内容寻址存储器tcam表的写入方法及装置。



背景技术:

在相关技术中,访问控制列表(accesscontrollist,简称为acl)访问控制列表,是一种流分类工具,高端路由器使用acl可以实现端口流量的分类和控制、流镜像、路由策略、策略路由等功能。acl可以依据报文中的字段对报文进行筛选过滤,最为常见的筛选字段是数据报文中的五元组,即源ip地址、目的ip地址、协议号、源端口号和目的端口号。

一张acl列表(list)可以有多条规则(rule),每条规则都描述了一定的匹配条件。对于给定的报文,从第一条规则开始判读是否匹配,一旦匹配中规则,就执行规则内设定的动作(permit/deny)并返回。

聚合端口(trunk)是一个逻辑端口,是多个物理端口的聚合,以用来实现流量的负载分担、链路间的冗余备份等功能。按照物理端口的类型通常分为以太链路的聚合和pos链路的聚合。

acl相关的业务包括端口acl,单播路由反向路由查找(unicastreversepathforwarding,简称为urpf),策略路由route-map,流镜像,流采样等,所有业务都会引用acl列表中的规则,并将规则写表。

核心路由器设备是一个多网络处理器(networkprocessor,简称为np)的环境,设备每块线卡槽位有4个np,分别称为np0,np1,np2,np3,每个np支持100gbps的转发性能,单线卡可以支持400gbps的转发性能。单线卡支持400g和200g的相互转化,400g是4个np都生效,200g是np0,np1生效。

acl相关业务写表是指,将acl相关业务应用到端口后,设备将acl包含的所有规则都写到端口所在np的三态内容寻址存储器(ternarycontentaddressablememory,简称为tcam)表中,所有的业务都公用一张tcam表。对于聚合端口,不论聚合端口包含多少物理成员,设备会将acl规则写到所有线卡的所有np的tcam表中。后续,聚合端口的物理成员若发生了变化,也不会动态更新tcam表。

经过分析,在相关技术中的实现方法存在如下问题:

1、无论某个np中是否包含聚合端口的物理成员口,设备都会将acl规则写入此np的tcam表中,而不进行区分。这样既浪费了tcam表资源,也增加了写表时间。

2、在200g升级到400g或者400g恢复为200g的环境中,会导致错误和异常。

以200g升级到400g为例,200g时聚合端口绑定acl相关业务后,会将acl规则写入到np0,np1的tcam表中,当升级到400g后,若np2、np3中有新的端口添加到聚合端口中,由于设备当有成员更新时,不会更新tcam表,新添加的成员口将不会生效。

此外,从400g转化为200g时,np2、np3将被卸载,若设备还往np2、np3的tcam表中写规则会导致异常。

针对相关技术中,浪费tcam表资源的问题,目前还没有有效地解决方案。



技术实现要素:

本发明实施例提供了一种三态内容寻址存储器tcam表的写入方法及装置,以至少解决相关技术中相关技术中浪费tcam表资源的问题。

根据本发明的一个实施例,提供了一种三态内容寻址存储器tcam表的写入方法,其特征在于,包括:将访问控制列表acl的相关业务应用到聚合端口之后,将所述acl包含的所有规则条目写到所述聚合端口的成员端口所在网络处理器np的tcam表中。

可选地,将acl包含的所有规则条目写到所述聚合端口的成员端口所在网络处理器np的tcam表中,包括以下至少之一方式:将不同业务类型的所述相关业务分别写入所述tcam表;将入向和出向分别写入所述tcam表;将acl类型分别写入所述tcam表。

可选地,所述acl的相关业务的业务类型包括:端口acl,urpf,route-map,流镜像,流采样。

可选地,在所述聚合端口中的成员端口存在更新的情况下,所述方法还包括:对所述tcam表执行以下之一操作:添加成员端口、删除成员端口和更新成员端口。

可选地,将相关业务应用到聚合端口,包括:在将相同的相关业务应用到多个聚合端口的情况下,如果所述多个聚合端口中的成员端口属于相同的np,将所述相同的相关业务写到与所述成员端口对应的任一tcam表中;如果所述多个聚合端口中的成员端口属于不同的np,将所述相同的相关业务写到与所述成员端口对应的不同tcam表中。

可选地,在acl规则存在更新的情况下,所述方法还包括:对所述tcam表执行以下操作之一:添加所述acl规则、删除所述acl规则、更新所述acl规则。

可选地,在应用到所述聚合端口的相关业务存在更新的情况下,所述方法还包括:对所述tcam表执行以下操作:删除所述相关业务。

根据本发明另一个实施例,还提供了一种三态内容寻址存储器tcam表的写入装置,应用于路由设备,其特征在于,包括:写表模块,用于将访问控制列表acl的相关业务应用到聚合端口之后,将所述acl包含的所有规则条目写到所述聚合端口的成员端口所在网络处理器np的tcam表中。

可选地,将acl包含的所有规则条目写到所述聚合端口的成员端口所在网络处理器np的tcam表中,包括以下至少之一方式:将不同业务类型的所述相关业务分别写入所述tcam表;将入向和出向分别写入所述tcam表;将acl类型分别写入所述tcam表。

可选地,所述acl的相关业务的业务类型包括:端口acl,urpf,route-map,流镜像,流采样。

可选地,在所述聚合端口中的成员端口存在更新的情况下,所述写表模块还用于对所述tcam表执行以下之一操作:添加成员端口、删除成员端口和更新成员端口。

可选地,所述写表模块还用于在将相同的相关业务应用到多个聚合端口的情况下,如果所述多个聚合端口中的成员端口属于相同的np,将所述相同的相关业务写到与所述成员端口对应的任一tcam表中;如果所述多个聚合端口中的成员端口属于不同的np,将所述相同的相关业务写到与所述成员端口对应的不同tcam表中。

可选地,在acl规则存在更新的情况下,所述写表模块还用于对所述tcam表执行以下操作之一:添加所述acl规则、删除所述acl规则、更新所述acl规则。

可选地,在应用到所述聚合端口的相关业务存在更新的情况下,所述写表模块还用于对所述tcam表执行以下操作:删除所述相关业务。

根据本发明的又一个实施例,还提供了一种存储介质。该存储介质设置为存储用于执行以下步骤的程序代码:将访问控制列表相关业务应用到聚合端口之后,将acl包含的所有规则条目写到所述聚合端口的成员端口所在网络处理器np的tcam表中。

通过本发明,在acl的相关业务应用到聚合端口之后,只是将该acl包含的所有规则条目写到,聚合端口中的成员端口所在np的tcam表中,而不是写到所有np的tcam表中。采用上述技术方案,解决了相关技术中浪费tcam表资源的问题,有效节约了tcam表资源,同时实现了路由设备便捷的管理多np的tcam表。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的一种三态内容寻址存储器tcam表的写入方法流程图;

图2是根据具体实施方式中聚合端口绑定acl相关业务及聚合端口成员更新流程图;

图3是根据具体实施方式中当np状态0→1变化时,执行的添加流程示意图;

图4是根据具体实施方式中当np状态1→0变化时,执行的删除流程示意图;

图5是根据具体实施方式中的聚合端口acl相关业务的删除流程图;

图6是根据具体实施方式中为acl规则更新示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

实施例1

本申请文件中的技术方案可以运行于设置有多np线卡的核心路由器设备上。

图1是根据本发明实施例的一种三态内容寻址存储器tcam表的写入方法流程图,如图1所示,该方法包括以下步骤:

步骤s102,访问控制列表acl的相关业务应用到聚合端口;

步骤s104,将该acl包含的所有规则条目写到该聚合端口的成员端口所在网络处理器np的tcam表中。

需要补充的是,聚合端口中的成员端口可能属于不同的np,即在上述实施例中,有可能是写到了多个np的tcam表中。聚合端口和np两者之间是不存在直接的连接关系,是两个不同技术层面的集合。

需要说明的是,acl的相关业务是指可以在执行该业务时,该业务可以匹配match该acl规则,具体地,该相关业务的业务类型包括:端口acl,urpf,route-map,流镜像,流采样。

可选地,将acl包含的所有规则条目写到该聚合端口的成员端口所在网络处理器np的tcam表中,包括以下至少之一方式:

将不同业务类型的该相关业务分别写入该tcam表;

将入向和出向分别写入该tcam表;

将acl类型分别写入该tcam表。

需要说明的是,本实施例中的三种写表方式是说在写表时按照上述规则写表。在本申请文件中记载的写表方式可以是下述实施例:在某个np的tcam表中,类似于excel表格,会有许多行或者列,某一行记载的是,ipv4入向urpf业务,则在后续添加或者删除的业务与该业务相同的情况下,则在该表格中的这一行进行添加或者删除操作。

可选地,在该聚合端口中的成员端口存在更新的情况下,该方法还包括:对该tcam表执行以下之一操作:添加成员端口、删除成员端口和更新成员端口。

可选地,在将相同的相关业务应用到多个聚合端口的情况下,如果该多个聚合端口中的成员端口属于相同的np,将该相同的相关业务写到与该成员端口对应的任一tcam表中;如果该多个聚合端口中的成员端口属于不同的np,将该相同的相关业务写到与该成员端口对应的不同tcam表中。

可选地,在acl规则存在更新的情况下,对该tcam表执行以下操作之一:添加该acl规则、删除该acl规则、更新该acl规则。

可选地,在应用到该聚合端口的相关业务存在更新的情况下,对该tcam表执行以下操作:删除该相关业务。

下面结合本发明优选实施例进行详细说明。

针对相关技术中200g、400g切换过程中易导致错误和异常的问题,为了降低tcam表的资源消耗,降低写tcam表时间,本发明优选实施例中提供一种多np环境下聚合端口acl相关业务的写表方法,下面通过功能性描述方式记载该写表的方法,采用本申请文件中的记载的写表方式写出的tcam表,包括以下五个主要功能:

功能1,支持以acl相关业务类型、方向、acl类型为粒度写tcam表。

acl相关业务类型包括端口acl,urpf,route-map,流镜像,流采样等,在写表时,不同的业务分别写tcam表,即使是引用同一个acl的不同业务,也会分别写入tcam表。

每个聚合端口包含两个方向,分别是入向和出向,或者叫做上行和下行,每个方向分别写入tcam表。

acl类型包括ipv4、ipv6,两种类型分别写入tcam表。

功能2,支持聚合端口的成员更新,包括成员的添加、删除、更新。

聚合端口通常是将多个物理端口捆绑到一个逻辑端口中,聚合端口中的物理端口即为成员端口,本申请文件中的tcam表支持成员口的添加、删除和更新操作。

功能3,支持同一个acl相关业务绑定到多个聚合端口,也支持同一个聚合端口绑定多个acl相关业务。

同一个聚合端口绑定不同的acl相关业务,会分别写入聚合端口中的成员端口所在np的tcam表中。不同的聚合端口,绑定相同的acl相关业务,若不同聚合端口的成员端口属于相同的np,则在该np中的tcam表中只写一份规则条目,若聚合端口的成员端口属于不同的np,则在不同的np中都需要写相同的tcam表。

功能4,支持aclrule规则的更新。

对于已经被端口引用的acl,支持acl规则的更新,包括规则的添加、删除和更新。

功能5,支持聚合端口应用acl相关业务和删除acl相关业务。

需要补充的是,在本申请文件中,聚合端口应用acl相关业务和聚合端口绑定acl相关业务是相同的技术操作,应用操作和相当于绑定操作,在后续的具体实施方式中,绑定计数是技术领域常用的词语。

下面结合本发明优选实施例的具体实施方式进一步说明。

在具体实施方式中涉及有多个模块和acl写表相关操作,具体实施方式中着重描述转发表管理模块所涉及的处理过程,具体统计计数、上报路径、显示、中断等过程不是本申请文件的重点,忽略或简略介绍。

该具体实施方式中用端口ifid来唯一标识一个端口,用acltype区分ipv4acl和ipv6acl,用aclnum来标识绑定的acl,同一个acl只分配一个aclnum,用aclid来唯一标识一条aclrule,用worktype来标识acl相关业务的类型。

在本申请文件中的技术方案,写tcam表的时候会基于如下的几个维度进行比较和判断:(1)acltype,ipv4、ipv6分别写表;(2)入向ingress和出向egress分别写表;(3)aclnum,不同的aclnum分别写表;(4)acl的相关业务类型,不同的worktype分别写表。

图2是根据具体实施方式中聚合端口绑定acl相关业务及聚合端口成员更新流程图,当聚合端口绑定acl相关业务或者聚合端口的成员发生变化时,都会促发更新流程。聚合端口绑定acl相当于是空成员更新的特殊情况,如图2所示,包括以下步骤:

步骤s201,端口绑定acl相关业务或者端口成员更新。新绑定acl相关业务或者聚合端口的成员更新,按照相同的流程处理。

步骤s202,判断端口是否为聚合端口,若非聚合端口走步骤s203,若为聚合端口走步骤s204。

步骤s203,物理口或子接口的更新流程,此处不做讲解。

步骤s204,根据聚合端口的ifid,查看np的历史缓存,转步骤s205。查看聚合端口的所有成员属于哪些np,每个np的状态是0还是1,如果为1说明np上有acl相关业务的绑定,如果为0说明np上没有绑定相关业务。

步骤s205,根据聚合端口的ifid,查看实际的np状态。查看现有聚合端口的所有成员属于哪些np,获取每个np的当前状态是0还是1。

步骤s206,基于实际的np状态,更新聚合端口的缓存,将np状态更新为实际的np状态。

步骤s207,比较s204与s205的np状态,执行更新流程。包括添加流程步骤s208、删除流程步骤s209,还有其他情况的步骤s210和步骤s211。

步骤s208,在np状态0→1时,执行添加流程。此np之前不是聚合端口的成员,是新添加的成员,具体见图3的实施流程。

步骤s209,在np状态1→0时,执行删除流程。此np此前属于聚合端口,是聚合端口的成员,现在被删除,具体见图4的实施流程。

步骤s210,在np状态1→1时,不做处理。此np成员未变化。

步骤s211,在np状态0→0时,不做处理。此np成员未变化。

当一个端口被创建后,就会给端口分配一段缓存,缓存中与acl相关的信息包括:(1)ipv4、ipv6,(2)ingress、egress,(3)aclnum,(4)acl的相关业务类型worktype。每个端口会基于缓存生成不同类型的绑定计数,比如入向和出向都绑定acl相关业务,则会分别生成一个入向绑定计数和出向绑定计数;比如绑定了ipv4和ipv6的acl相关业务,则分别生成一个ipv4绑定计数和ipv6绑定计数;每生成一个绑定计数,对应类型的绑定计数值就加1。图3是根据具体实施方式中当np状态0→1变化时,执行的添加流程示意图,如图3所示,包括以下步骤:

步骤s301,查看绑定计数,查看聚合端口是否有相关的绑定信息,绑定计数=0,转步骤s302;绑定计数>=1,转s305。比如本次绑定的是ingress方向,ipv4,端口acl,就检查是否有相同ingress方向,相同acltype,相同worktype的绑定计数值。

步骤s302,绑定计数=0,np之前未绑定任何相同的acl业务。

步骤s303,写np对应的tcam表,将acl的表项信息写入对应np的tcam表中。

步骤s304,绑定计数加1,将对应的绑定计数值加1。

步骤s305,绑定计数>=1,说明np之前有绑定相同的acl。比如本次绑定的是ingress方向,ipv4,端口acl,之前此np也绑定过ingress方向,ipv4,端口acl。

步骤s306,计数加1,不更新tcam表。比如本次绑定的是ingress方向,ipv4,端口acl,就将ingress方向,ipv4,端口acl对应的绑定计数加1。

图4是根据具体实施方式中当np状态1→0变化时,执行的删除流程示意图,如图4所示,包括以下步骤:

步骤s401,查看绑定计数,查看聚合端口是否有相关的绑定计数值,绑定计数>1,转步骤s402;绑定计数=1,转步骤s404。

步骤s402,绑定计数>1,也就是说多个聚合端口的成员都属于此np,且多个聚合端口都绑定了相同方向,相同acltype,相同worktype的相同acl。

步骤s403,绑定计数减1,不更新tcam表。当绑定计数>1时,某个聚合端口的np成员被删除,只需要将绑定计数减1,保留tcam表不变,其它聚合端口可以继续使用此表。

步骤s404,绑定计数=1,也就是说np之前只有1个聚合端口绑定了相同方向,相同acltype,相同worktype的相同acl。

步骤s405,绑定计数减1。需要将相关的绑定计数值减1。

步骤s406,删除tcam表。当绑定计数减1后,绑定计数值就变成0,此时需要删除tcam表中对应np的表项信息。

图5是根据具体实施方式中的聚合端口acl相关业务的删除流程图,如图5所示,包括以下步骤。

步骤s501,删除端口绑定的acl相关业务。比如说删除端口绑定的基于acl的流镜像。

步骤s502,判断是否为聚合端口。判断端口类型,是聚合端口还是物理口或者子接口,若不是聚合端口,转步骤s503;其余转步骤s504。

步骤s503,若不是聚合端口,走物理口或者子接口的流程。

步骤s504,判断np是否为聚合端口的成员。逐个检查设备上面的每个np是否是聚合端口的成员,若不是,则不予考虑,若是,则继续执行步骤s505。

步骤s505,基于np,根据端口绑定方向,aclnum,worktype,acltype获取绑定计数,绑定计数>1,转步骤s506;绑定计数=1,转步骤s508;绑定计数=0,转步骤s510。对于包含聚合端口成员的np,查出绑定计数。

步骤s506,绑定计数>1。除了当前的聚合端口外,还有其它的聚合端口的成员也属于此np,且绑定方向,aclnum,worktype,acltype也都相同。

步骤s507,绑定计数减1,转步骤s512。只是绑定计数减1,不删除np的tcam表项。

步骤s508,绑定计数=1。只有当前的聚合端口绑定了acl。

步骤s509,绑定计数减1,转步骤s512。删除tcam表项。当绑定计数减1后,绑定计数值就变成0,此时需要删除tcam表中np的表项信息。

步骤s510,绑定计数=0。

步骤s511,异常退出。理论上接口绑定acl业务,绑定计数是>=1,若绑定计数=0,会走异常处理流程,直接退出,待软件工程师来处理。

步骤s512,将捆绑端口缓存的np成员状态全部清空。当捆绑端口删除acl相关业务后,所有np成员之前缓存的acl相关的信息都需要删除,包括:(1)ipv4、ipv6(2)ingress、egress(3)aclnum(4)acl的相关业务类型worktype。

图6是根据具体实施方式中为acl规则更新示意图。acl规则更新实际就是先删除tcam表中已有规则,再往tcam表中写新的规则的过程。图6包括以下步骤:

步骤s601,循环查看所有np的绑定计数,绑定计数=0,转步骤s602;绑定计数>=1,转步骤s603。每个np根据端口绑定方向,aclnum,worktype,acltype获取绑定计数。对于包含聚合端口成员的np,查出绑定计数。

步骤s602,绑定计数=0。说明此np无acl相关业务,无需修改。

步骤s603,绑定计数>=1。说明此np有绑定acl相关业务,可能是一个聚合端口绑定了acl相关业务,也可能是多个聚合端口。

步骤s604,np删除规则。删除np的tcam表中,aclnum对应的所有规则。

步骤s605,np添加新规则。tcam表中aclnum对应的规则条目删除后,再往tcam表中写新的aclnum对应的规则。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

在本实施例中还提供了一种三态内容寻址存储器tcam表的写入装置,应用于路由设备,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

根据本发明的一个实施例,提供了一种三态内容寻址存储器tcam表的写入装置,该装置包括:

写表模块,用于将访问控制列表acl的相关业务应用到聚合端口之后,将该acl包含的所有规则条目写到该聚合端口的成员端口所在网络处理器np的tcam表中。

可选地,将acl包含的所有规则条目写到该聚合端口的成员端口所在网络处理器np的tcam表中,包括以下至少之一方式:将不同业务类型的该相关业务分别写入该tcam表;将入向和出向分别写入该tcam表;将acl类型分别写入该tcam表。

可选地,该相关业务的业务类型包括:端口acl,urpf,route-map,流镜像,流采样。

可选地,在该聚合端口中的成员端口存在更新的情况下,该写表模块还用于对该tcam表执行以下之一操作:添加成员端口、删除成员端口和更新成员端口。

可选地,该写表模块还用于在将相同的相关业务应用到多个聚合端口的情况下,如果该多个聚合端口中的成员端口属于相同的np,将该相同的相关业务写到与该成员端口对应的任一tcam表中;如果该多个聚合端口中的成员端口属于不同的np,将该相同的相关业务写到与该成员端口对应的不同tcam表中。

可选地,在acl规则存在更新的情况下,该写表模块还用于对该tcam表执行以下操作之一:添加该acl规则、删除该acl规则、更新该acl规则。

可选地,在应用到该聚合端口的相关业务存在更新的情况下,该写表模块还用于对该tcam表执行以下操作:删除该相关业务。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

实施例3

本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的程序代码:

s1,将访问控制列表acl的相关业务应用到聚合端口之后,将该acl包含的所有规则条目写到该聚合端口的成员端口所在网络处理器np的tcam表中。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

可选地,在本实施例中,处理器根据存储介质中已存储的程序代码执行上述实施例中的方法步骤。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1