一种基于acl的业务聚合方法

文档序号:7621186阅读:197来源:国知局
专利名称:一种基于acl的业务聚合方法
技术领域
本发明涉及通讯系统中的路由器接口,具体地说,是涉及应用到路由器接口的部分网络服务质量业务表和访问控制列表(Access Control List,ACL)聚合的方法。
背景技术
通讯系统中的网际路由器通过线卡的接口接受网际协议(InternetProtocol,IP)分组,典型地,每个接口都与一个访问控制列表相关联。ACL是一组应用与IP分组的规则,以便过滤不想要的分组。每个规则包括一个键值和一个操作,当一个IP分组经由接口到达时,路由器从该分组中提取特定字段,如源地址,目的地址,源端口,目的端口等以形成一个键值,并且查找与该接口关联的ACL以获得匹配该键值的规则,如果找到后,网络处理器将规则相应的操作应用到该分组。
随着计算机网络的高速发展,人们对网络的要求也越来越高。由于对带宽、延迟、抖动敏感的语音、图象、重要数据越来越多地在网上传输,一方面使得网上的业务资源极大地丰富,另一方面则由于经常遭遇网络拥塞,人们对网络传输的服务质量(Quality Of Service,简称QOS)提出了更高的要求。为了满足多样化、多层次网络服务的要求,QOS部分业务是基于ACL的,如承诺访问速率(CAR,Committed Access Rate),CAR是一种带宽管理机制,通过配置CAR,网络管理员可以为不同的业务、用户分配不同的带宽,定义业务占用的带宽超过分配额度时的处理策略,通过限制通过路由器某一端口的流量,可以很好地保证整个网络地服务质量。还有优先级队列(PriorityQueueing,PQ)(以下本文提到的PQ和CAR都是指基于ACL的),在接口上根据协议类型、报文大小、协议端口号等,划分不同优先级队列,适用于应用简单,对某些应用服务要求很高,而其他业务相对不高的应用。利用访问控制列表即可实现将流规则与流操作关联起来的功能,如包过滤、带宽管理、队列调度和流统计等。
目前处理ACL以及基于ACL的QOS业务时,都是分别处理的,ACL和PQ以及CAR规则条目用三个表存储。当一个IP分组到达接口时,一般路由器的处理流程是依次查询存储器中的ACL、CAR、PQ规则表,并在每次查询后,如果找到匹配规则,执行该规则对应的操作。由于多次对存储器进行访问会造成网络处理器性能降低,另外当上述表至少有两个表关联相同的访问控制列表的ACL号时,则至少两个表的键值是相同的,这样造成了存储空间的浪费。

发明内容
本发明的目的在于,提供一种基于端口的上、下行ACL应用(端口ACL、CAR ACL、PQ ACL、策略路由ACL等)进行其所有ACL条目的聚合的处理方法,将具有相同键值的所有ACL规则都聚合到一条ACL规则中,微码只要一次查表就能查出此键值的所有ACL属性,避免多次查表,提供微码转发效率。
为实现上述目的,本发明提出了一种基于ACL的业务聚合方法,其中,分别对端口的所有ACL条目进行元组分解,生成各个元组的元组关系树,包括以下步骤步骤1,创建第一个节点为根节点,逐个将要加入树的新的元组条目从根元组条目开始匹配,如果所述元组条目与所述根元组条目相同,则不生成新节点,若不同,生成新节点,所述新节点从所述元组关系树的根节点向叶节点开始比较,比较的节点为当前节点;步骤2,比较所述新节点与所述当前节点,判断所述新节点是所述当前节点的子还是父,若是子,则所述新节点变为所述当前节点的子节点,若是父,则将所述新节点作为所述当前节点的父节点,若都不是,则所述新节点作为所述当前节点的同级节点。
上述的基于ACL的业务聚合方法,其中,当所述新节点是所述当前节点的父时,若所述当前节点已有父节点,则所述新节点作为所述当前节点的父节点的新子节点,并成为所述当前节点的新父节点。
上述的基于ACL的业务聚合方法,其中,当所述新节点是所述当前节点的父时,若所述当前节点是根节点,则所述新节点作为新的根节点。
上述的基于ACL的业务聚合方法,其中,当所述新节点是所述当前节点的父时,若所述当前节点有同级节点,将所述同级节点作为新的当前节点与所述新节点进行比较,若所述新节点是所述新的当前节点的父节点,则保持所述新的当前节点位置不变,若否,则所述新的当前节点变为所述新节点的同级节点。
上述的基于ACL的业务聚合方法,其中,当所述新节点为所述当前节点的子节点时,若所述当前节点已有子节点,则将所述当前节点的子节点作为新的当前节点,所述新节点与所述新的当前节点再进行比较。
上述的基于ACL的业务聚合方法,其中,当所述新节点为所述当前节点的同级节点时,若所述当前节点已有同级节点,则将所述当前节点的同级节点作为新的当前节点,所述新节点与所述新的当前节点再进行比较。
上述的基于ACL的业务聚合方法,其中,所述元组包括全局端口号,源IP地址,源端口号,目的IP地址和目的端口号。
上述的基于ACL的业务聚合方法,其中,所述ACL规则包括端口访问控制列表操作,基于访问控制列表的承诺访问速率操作,基于访问控制列表的优先级队列操作和其他基于访问控制列表的业务操作。
本发明引入了一种将基于ACL的业务聚合的处理方法,当一个数据分组从接口到达,做ACL以及基于ACL的QOS业务处理时,只需要查找一次聚合表,提高了处理效率,简化了处理流程。另外,当两种或者两种以上业务关联到同一个访问控制列表的ACL号时,本发明提出的聚合方法有利于节省线卡上的存储空间。还有一点是该聚合方法对其他基于ACL的业务具有可扩展性。


图1是本发明中元组树的生成流程;图2是本发明的ACL应用聚合的简单举例中源IP的元组树;图3是本发明的硬件结构示意图。
其中,附图标记201 区域一202 区域二
203 区域三301 数据通信接口302 微引擎组 303 帧缓存304 网络处理器305 控制CPU306 DRAM 307 交换网接口308 交换网具体实施方式
本发明采用以下技术方案,分别对该端口的所有ACL条目按照五个元组(全局端口号,源IP地址,源端口号,目的IP地址,目的端口号)进行元组分解,以生成各个元组的元组关系树,该关系树表示当前所有ACL条目中该元组的条目及各元组条目间的关系。
其中,元组条目关系有两种,一种是父子关系,即一个M元组条目如果覆盖另一个N元组条目,则M是N的父关系,N是M的子关系,此时必须保证M元组条目在元组关系树中的位置在N的上层;另一种是平级关系,即元组条目处于元组树的同一层,相互之间没有父子关系。
图1是本发明中元组树的生成流程图,如图1所示,ACL业务聚合中建立元组树的处理步骤如下S101.创建第一个节点做根节点R;S102.对于新的要加入树的元组条目X,元组条目加入从元组关系树从根元组条目开始匹配,比较的节点为当前节点A;S103.如果当前元组条目与新元组条目X完全相同,跳转到S104;S104.不生成新节点,回到S102;S105.如果当前元组条目是新元组条目X的子,跳转到S106,;否则跳转到S118;S106.如果当前节点A原来有父节点,跳转至S107,否则跳转至S108;S107.新节点X作为A父节点的新子节点,并成为A的新父节点,跳转至S109;S108.新节点X作为当前节点A的父节点,跳转至S109;S109.如果当前节点A是根节点R,跳转至S110,否则跳转至S111;S110.新节点X作为根节点R,跳转至S111;
S111.如果当前节点A右同级节点,跳转至S113,否则跳至S112;。
S112.该新节点添加结束,跳至S102;S113.A的右同级节点作为当前节点A,新节点X与A比较,跳至S114;S114.如果新节点X是当前节点A的父节点,跳至S116,否则跳至S115;S115.当前节点A是X的同级节点,跳至S117;S116.保持当前节点A位置不变,跳至S111;S117.将当前节点A变为X的同级节点,跳至S111;S118.如果当前节点A是新增节点X的父,跳至S119,否则跳至S122;S119.如果当前节点A有子节点,跳至S120,否则跳至S121;S120.将当前节点A的子节点作为当前节点A,跳至S103;S121.新节点X作为当前节点A的子节点,回到S102;S122.新节点X是A的同级节点,跳至S123;S123.如果当前节点A有同级节点,跳至S125,否则跳至S124;S124.新节点X作为A的同级节点,回到S102;S125.将当前节点A的同级节点作为当前节点,跳至S103;通过上述步骤,添加所有的ACL规则的节点,即得到所有ACL规则五个元组关系树,并且得到每条ACL规则各个元组对应的EQID(EquivalentID)。每个EQID对应有一个CBM(Class BitMap,分类位映射),CBM的每一位对应一条ACL规则。CBM的最后结果是元组关系树通过属性继承得到,最后将各个ACL规则中的每个EQID对应CBM相与组合在一起,就得到了每条ACL规则的CBM。
通过各ACL规则的CBM,得到各规则所对应的端口ACL操作,基于ACL的CAR操作,基于ACL的PQ以及其他业务操作,最后生成供微码查找的ACL条目。
用户配置了如表一、表二和表三所示的三条ACL,并根据表四对某接口进行了ACL、CAR和PQ的绑定。图2是ACL聚合过程中生成的元组关系树,如图2所示,区域一201中所有的条目都具有PQ的属性,因为1.1.2.0\24包含于1.1.0.0\16,故前者继承后者的属性。依此类推,区域二202中所有的条目都具有CAR的属性,区域三203所有的条目皆具有PORT ACL的属性。
在最后生成供微码查找的ACL条目(表五)中可以看出,1.2.4.10\32的PORT ACL操作为Deny,并不是1.0.0.0\8的PORT ACL操作Permit,原因是ACL中有先配先生效的原则,虽然1.2.4.10\32继承了1.0.0.0\8的PORT ACL属性,但配置的顺序在1.0.0.0\8之前,所以它的PORT ACL属性的优先级更高,故其最后PORT ACL操作为Deny;同理,假设当区域2中某个节点同时继承了两个CAR属性时,也遵从先配先生效的原则。
表一用户配置的标准ACL1

表二用户配置的标准ACL2

表三用户配置的标准ACL3

表四用户对某接口的ACL配置

表五最后生成供微码查找的ACL条目

图3是本发明的硬件结构图,如图3所示,硬件模块部分包括数据通信接口301,包括多个物理接口以连接不同的网络,是网络数据包进出芯片的数据通道。在数据接收方向上,把从某个物理接口收到的数据帧去除通信接口的封装组成数据包,连同数据包的状态信息一同存入进出数据包帧缓存303中;在数据发送方向上,根据进出数据包缓存303中的状态信息,取出数据包,加上通信接口封装,在相应的物理接口发出。物理接口指具体的数据通信接口实体,包括以太网接口、POS接口或者其它能够用于交换数据的接口;控制CPU305,用于将ACL规则生成供微码使用的ACL查找条目,并放在DRAM(Dynamic RAM,动态存储器)306里面;微引擎组302,用于在数据帧到达时,对数据帧进行解码分析,提取帧头部和IP包的重要字段作为键值查询路由以及ACL等业务的查找,根据查询结果做相应的处理。
交换网接口307,用于将网络处理器处理好的信元送往交换网308。
具体运行的流程包括以下步骤步骤A,数据通信接口301接收数据包;步骤B,从数据分组中提取特定字段,形成规则键值;步骤C,查找聚合表,获得与该数据分组键值匹配的ACL、CAR、PQ操作内容;步骤D,根据步骤C的结果,如果ACL的操作为permit(允许通过),转至步骤E,否则丢弃该数据分组,结束该数据分组的处理流程;步骤E,根据步骤C的查询结果,如果该数据分组有CAR操作内容,进行相应的CAR操作,否则运行步骤F;步骤F,根据步骤C的查询结果,如果该数据分组有PQ操作内容,进行相应的PQ操作,否则运行步骤H;步骤H,数据通信接口301发送数据包。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种基于ACL的业务聚合方法,其特征在于,分别对端口的所有ACL条目进行元组分解,生成各个元组的元组关系树,包括以下步骤步骤1,创建第一个节点为根节点,逐个将要加入树的新的元组条目从根元组条目开始匹配,如果所述元组条目与所述根元组条目相同,则不生成新节点,若不同,生成新节点,所述新节点从所述元组关系树的根节点向叶节点开始比较,比较的节点为当前节点;步骤2,比较所述新节点与所述当前节点,判断所述新节点是所述当前节点的子还是父,若是子,则所述新节点变为所述当前节点的子节点,若是父,则将所述新节点作为所述当前节点的父节点,若都不是,则所述新节点作为所述当前节点的同级节点。
2.根据权利要求1所述的基于ACL的业务聚合方法,其特征在于,当所述新节点是所述当前节点的父时,若所述当前节点已有父节点,则所述新节点作为所述当前节点的父节点的新子节点,并成为所述当前节点的新父节点。
3.根据权利要求1所述的基于ACL的业务聚合方法,其特征在于,当所述新节点是所述当前节点的父时,若所述当前节点是根节点,则所述新节点作为新的根节点。
4.根据权利要求1所述的基于ACL的业务聚合方法,其特征在于,当所述新节点是所述当前节点的父时,若所述当前节点有同级节点,将所述同级节点作为新的当前节点与所述新节点进行比较,若所述新节点是所述新的当前节点的父节点,则保持所述新的当前节点位置不变,若否,则所述新的当前节点变为所述新节点的同级节点。
5.根据权利要求1、2、3、4所述的基于ACL的业务聚合方法,其特征在于,当所述新节点为所述当前节点的子节点时,若所述当前节点已有子节点,则将所述当前节点的子节点作为新的当前节点,所述新节点与所述新的当前节点再进行比较。
6.根据权利要求1、2、3、4所述的基于ACL的业务聚合方法,其特征在于,当所述新节点为所述当前节点的同级节点时,若所述当前节点已有同级节点,则将所述当前节点的同级节点作为新的当前节点,所述新节点与所述新的当前节点再进行比较。
7.根据权利要求1所述的基于ACL的业务聚合方法,其特征在于,所述元组包括全局端口号,源IP地址,源端口号,目的IP地址和目的端口号。
8.根据权利要求1所述的基于ACL的业务聚合方法,其特征在于,所述ACL规则包括端口访问控制列表操作,基于访问控制列表的承诺访问速率操作和基于访问控制列表的优先级队列操作。
全文摘要
本发明提出了一种基于ACL的业务聚合方法,其中,分别对端口的所有ACL条目进行元组分解,生成各个元组的元组关系树,包括以下步骤步骤1,创建第一个节点为根节点,逐个将要加入树的新的元组条目从根元组条目开始匹配,如果所述元组条目与所述根元组条目相同,则不生成新节点,若不同,生成新节点,所述新节点从所述元组关系树的根节点向叶节点开始比较,比较的节点为当前节点;步骤2,比较所述新节点与所述当前节点,判断所述新节点是所述当前节点的子还是父,若是子,则所述新节点变为所述当前节点的子节点,若是父,则将所述新节点作为所述当前节点的父节点,若都不是,则所述新节点作为所述当前节点的同级节点。
文档编号H04L29/06GK1968179SQ20051008688
公开日2007年5月23日 申请日期2005年11月16日 优先权日2005年11月16日
发明者郑其杉, 尹旺中 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1