专利名称:一种对报文进行分类处理的方法
技术领域:
本发明涉及通信技术领域,尤其涉及一种对报文进行分类处理的方法。
背景技术:
在路由器和其它数据通信产品中,为了实现对不同的流进行不同的处理,需要对报文进行分类处理,简称流分类。业界一般使用的为标准5元组流分类,所谓5元,即来自IP(互联网协议)报文自身的5个特征域,它们是IP目的地址、IP源地址、(IP报文承载的载荷的)协议类型、TCP(传输控制协议)或者UDP(用户数据报协议)的目的端口、TCP或者UDP的源端口。RFC 3290中有6元组流分类,在5元组的基础上增加了IP头中的DSCP域(Diffserv codepoint,即差分业务编码)。
随着网络流量的增大和网络上业务的增多,需要对流量进行更细的分类并增加动作类型,5元组分类已经不能满足需求。在一些新的业务中,比如Netflow和NetStream,这两种特性是对网络上报文进行分类并统计的功能,它们采用了7元组流分类。在一些厂家的路由器上还将VLAN ID(虚拟局域网标识)、TCP同步报文标志、分段报文标志等等特征作为分类的元素。
分类以后,对不同的流进行标识,然后对不同标识的流采取不同的处理,这种处理称为动作。流分类和动作在数据通信设备中通过ACL(访问控制列表)来实现,ACL包含一组或者多组规则(rule)和动作(Actions)的组合。规则即一个流的特征域,例如目的IP地址为1.1.1.1+源地址为2.2.2.2即可构成一个rule。动作一般包括如下类型1)过滤(防火墙)将分类出来的特定流根据用户的设置,进行丢弃处理,可以用于丢弃非法报文或者病毒攻击报文。
2)重定向(策略路由)将流分类出来特定的流转发到指定的下一跳(弱策略路由)或者指定的接口连接的下一跳(弱策略路由),或者重定向到其它的板子进行特殊处理,比如NAT(网络地址转换)、GRE(通用路由封装协议)、进入MPLS(多协议标签交换)转发等等。
3)重新标记(Remark)将流分类出来的特定流的优先级都设定为指定的优先级,这样可以提高或者降低包的优先级。重新标记包含了对IP头的TOS(服务类型)域、VLAN(虚拟局域网)的802.1p域、MPLS(多协议标签交换)的Exp域等的标记。
4)采样(Sampling)对流进行采样,将流中的包的关键的报文头和数据体或者整个报文,按照一定比例进行复制,并送到对应的设备或者板子进行分析或者其它处理。
5)流量限制CAR(Committed Access Rate)根据用户配置的速率对流进行带宽限制,超过带宽的可以进行丢弃处理。
但现有技术的流分类方法进行分类的元素只是来源于报文本身,而且分类的元素和动作类型有限,这样无法进一步灵活地对业务进行智能调整,无法充分保证系统的可靠性。下面以现有技术端口捆绑中对高优先级报文处理为例进行说明端口捆绑是将路由器或者交换机的多个端口通过配置“捆绑”在一起,作为一个接口使用,流量在这几个捆绑的端口中,通过Hash算法来选择要走的路径。如图1所示,在路由器A和B之间通过链路1和链路2这两条链路来连接,链路1、2连接的路由器端口为绑定端口。链路1、2这两条链路在路由器A和路由器B上一般都连接不同的接口板,这样做的目的是为了实现高可靠,一旦一个接口板出问题,另外一个还可以发送,如果两个口在一个板子上,一旦坏掉,链路将全部中断。
正常情况下,从路由器A到B的流量和从路由器B到A的流量都通过Hash算法通过两条链路传送。传送的报文中,有高优先级和低优先级。高优先级一般都是用户的重要报文,或者重要用户的报文,一旦丢弃将给用户造成严重影响。
假定在链路1断掉时,所有流量将切换到链路2上,此时链路2将发生拥塞。如果链路1+链路2的高优先级报文流量超过链路2的物理带宽时,高优先级流量将出现丢弃的情况。
现有技术端口捆绑中对高优先级报文进行处理时,一般在链路1、2对应的端口上,对高优先级流量配置带宽保证,配置带宽有两种方法1)一种方法是取高优先级流量的一半,然后再增加一个余量来设置带宽。例如链路1、2都为100M的链路(即捆绑链路为200M),高优先级报文在链路1、2上从路由器A到B的方向一共有80M,那么在链路1、2的路由器A侧,取高优先级流量的一半即40M,然后再增加一个余量,这样可以配置两个端口对高优先级保证各50M左右。
2)另外一种方法是两个链路对应的端口都配置为最大优先级保证带宽。还是使用上面的例子,将在路由器A侧的设备上,对应链路1、2两个端口的队列中都各自配置80M的带宽。
在链路1断掉时,所有流量都切换到链路2上,方法1)将丢弃30M的高优先级流量;方法2)在高优先级流量小于链路容量时,可以保证高优先级流量通过。但只能解决在高优先级流量总量小于链路2流量的情况,在高优先级流量大于链路2容量情况下,仍然会丢包。
发明内容
本发明所要解决的技术问题是克服现有技术流分类的元素和动作类型有限,无法灵活地对业务进行智能调整的不足,提供一种对报文进行分类处理的方法,从而实现业务的智能调控,提高系统的可靠性。
本发明为解决上述技术问题所采用的技术方案为这种对报文进行分类处理的方法,包括以下步骤采用报文自身的若干个特征域构建报文分类的查找键值;扩展对报文进行分类的元素,增加报文自身特征以外的判断条件作为报文分类的元素,并在所述的键值中增加相应的标志位;对上述判断条件进行感知,在键值中的相应标志位进行置位,根据键值匹配到对应的规则表项,找到相应的动作并执行,实现对报文流量的智能控制。
所述的报文自身特征以外的判断条件可以为与设备相关的判断条件、或与报文路径特征相关的判断条件,或者与报文没有关系的判断条件。所述的判断条件可以为端口和接口开启或关闭、链路开启或关闭、协议开启或关闭、链路上的设备或者节点不通、传送超时、环境温度湿度超标、某个端口上的流量是否拥塞或某个出口流量是否超大。
还可以对所述的报文分类的动作进行扩展,所述动作采用重新选路、降低或者升高优先级、入不同队列、过滤、限速、关闭某个接口、或启动流量镜像。
所述的判断条件的标志位在键值中可以只占1比特。所述的判断条件可以为包含区间的条件。所述的规则表项可以为访问控制列表。
可以在采用报文自身的若干个特征域构建报文分类的查找键值后,查端口状态表,得到端口状态标志,将此标志作为键值的一部分,再去匹配规则表项。在对各接口板的端口状态表进行修改时,端口的信息由接口板上报主控板后,再由主控板下发到各接口板进行修改,或者由接口板走带内广播到各个接口板,由各接口板直接修改。
本发明的有益效果为本发明通过对分类的元素和动作进行扩展,对报文进行分类的元素不再只是报文自身的一些特征(如5元组、7元组等),一些和设备相关、报文路径相关、甚至和报文完全没有关系的判断条件,也将作为报文分类的元素。通过扩展流分类的元素,通过在条件发生和不发生时,对特定的流量可以执行特定的动作,使得数据通信设备的流分类功能更加灵活强大,可以在设备不相关条件出现变化时,对业务进行智能调整。使设备更加可控,业务更加可控更加灵活,提高了系统的可靠性,本发明非常适合在NGN和IP电信网等领域应用。
图1为端口捆绑时的网络结构示意图;图2为现有的流分类处理流程图;图3为本发明流分类处理流程图;图4为本发明一种PST更新流程图;图5为本发明另一种PST更新流程图。
具体实施例方式
下面根据附图和实施例对本发明作进一步详细说明流分类技术是人工干预、体现人的指令的一种最直接的方法。现有的流分类技术,其主要特征是流分类的元素都来源于报文自身,比如5元组或者6元组或者更多元组等,都是以报文头中的部分域为特征进行分类的。相应的动作也是基于这样分类出来的流进行,实际的动作目前有上述罗列的几类。在本发明中,对分类的元素和动作进行了扩展,分类的元素将不再只是来源于报文本身,一些设备的特征、路径特征或者与报文完全没有关系的特征都可以增加到其中;同时对动作也进行了扩展。通过这种扩展,使得数据通信设备的流分类功能在提高系统可靠性等方面发挥更大的作用,同时使得ACL(访问控制列表)有更大的用途和使用空间,从而解决类似上述端口捆绑的问题。
本发明中,对分类的元素和动作进行了扩展,一些设备的特征、路径特征可以增加到分类的元素中,同时对动作也进行扩展。如在图1所示的例子中,可以将“链路1断”这个事件作为一个流分类的元素,对对应的入接口的流量采取动作,规则可以是IP SA1+出口为RPR口+链路1断。IP SA1指一个IP包的源IP地址,这样在“链路1断”不发生的时候,配置的规则(rule)不会被匹配到,对应的动作不发生;在“链路1断”发生的时候,可以采取相应的动作,来保证高优先级报文。
流分类是通过一个查找Key(键值)来匹配到一个规则表项(ACL,即访问控制列表),表项中指明了动作。目前流分类的Key来自报文自身的各个域,在本发明中,Key值将不再限于是一些固定的域,而可以是一些条件判断,这些条件可以是设备自身的,也可以是设备感知的链路上的信息,例如端口和接口Up/Down(开启/关闭)信息、特定链路Up/Down、特定的协议Up/Down、链路上特定设备或者节点不通、传送超时、环境温度湿度超标、某个端口上的流量是否拥塞、某个出口流量是否超大等等。在增加了这些条件以后,将对对应流量执行一些特定的动作(例如重新选路、降低或者升高优先级、入不同队列、过滤、进行限速、甚至关闭某个接口、启动流量镜像等等操作),从而使数据通信设备更加智能,自动完成更复杂的切换、保护、选路、过滤和以前一些无法实现的功能。
另外,流分类的条件,还可以是一些包含区间的条件,例如设备的某个接口的流量达到的百分比也可以作为一个流分类的条件。在实现中,可以将这个百分比划分为几个区间,比如32~64是一个区间,64以上是一个区间,因为传统的流分类Key查找支持范围分类,所以也可以匹配上,从而找到对应的动作。例如配置一条规则在端口1出流量达到80%以上,对应的动作为Ip源地址1.1.1.1的流量将从端口2发送。实际实现中,端口流量的测量可以通过出口内存使用等来反映,这个信息可以通过带内实时的广播给设备所有的板子。这样通过预先的设置,可以实现自动的流量分流。
例如图1所示的端口捆绑问题,就可以通过本发明的这种广义流分类方法,得到比较完美的解决。首先一个前提是,在目前的DiffServ(差分服务)体系中,流量的分类目前只定义了6种,相对是粗粒度的,所以实际上在最高优先级报文EF中,可能还存在不同级别的差异。比如在现有设备中,用户是有优先级的,但是由于目前粗粒度的划分,只能分出有限的级别。如数据报文可能有1至6共六种用户流量,流量1优先级最高,流量1中可能有控制报文(比如协议报文)和高优先级数据报文,在故障发生时,网络可能严重拥塞,此时,需要让控制报文通过,而可以丢一些数据报文,因为控制报文一旦被丢了,可能引起更严重的后果,比如整个设备或者网络瘫痪等。
在图1中,可以在入口方向增加一些规则,这些规则对部分以前高优先级的流量,在链路1断的条件发生时,将它设置为低优先级流量;这个条件不发生时,仍然为高优先级流量;或者对其中的部分流量进行CAR(限制流量)的动作,来限制速度,这样来保证更重要的流量通过。例如在两个链路上有高优先级的报文,一种是视频流量(假定目的IP地址为DA1)50M,一种是高优先级上网用户的流量(假定目的IP地址DA2)80M。单个端口的处理能力100M,正常情况下有两个口,200M带宽,所以都可以保证。故障情况下带宽总的只有100M(假定链路1断),由于50M+80M=130M>100M,这样高优先级流量总量超过链路容量。因为上网的流量丢弃一部分还可以上网,仅仅是速度慢一些,但是视频流量丢一点就无法看了(图像看不清),所以在一个链路断时对高优先级数据流量的带宽进行限制,在入口处增加一个规则,具体描述为KeyDA2+故障发生(1bit)+其它bit(设置为无效)
动作CAR保证带宽40M上述含义为对于目的IP地址为DA2的流量,在故障发生时,将流量限制在40M以内;如果故障不发生,则上述规则不起作用。
具体实现中,链路1断这个条件在Key中占1bit。一般的Key值是一串数字,比如16个字节(128Bit),构建一个Key时,需要将Key相关的内容全部放进去。比如Key包含IP源地址+目的地址+TCP源端口号+TCP目的端口号+协议类型+1比特故障发生标志位。每来一个报文就会将报文的上述所有信息填写上,构成一个Key值,构建Key的内容项在转发时是定好的。用这个Key会去查找一个规则表项(ACL),规则表项的构成保证了符合要求的Key能匹配到正确的规则。
发生或者不发生的判断条件在Key值中可以只占1Bit,这些条件,需要在实现中对条件的发生进行感知,并知会到配置了这种规则表项(ACL)的接口板。例如将某个端口Down作为一个条件,当端口Down时,主控板会感知,主控板将这个内容下发到接口板事件表,表明有事件发生。在各个接口板上有一个表,每个报文都要对这个表进行判断,如果有事件发生,则读更详细的表来知道是什么事件发生,然后在Key的对应标志位置位,如果没有事件发生时,Key值对应的标志位填写默认值。
比如上面的例子中,配置时是这样配置的IP源地址anyIP目的地址DA2TCP源端口号anyTCP目的端口号any协议类型any1比特故障发生标志位故障发生any的意思是什么无所谓,即不关心这些值,查找算法保证如果IP目的地址为DA2+故障发生,则肯定会匹配到上述规则表项。
增加和不增加链路1断这个条件,在业务(转发)平面的流程分别如图2和图3所示,其中的PST为端口状态表(Port Status Table),是一个全局的表,每个端口有1Bit,0表示Down,1表示Up。本发明在采用5元组、6元组或n元组构建Key值后,需要先查PST表,得到端口状态标志,并将该标志作为Key值的一部分,然后再用Key去查规则表,如果命中就执行动作,如果不命中则正常发送。感知的方法和具体的条件有关系,这里PST表仅仅是一个例子,比如某个协议断,可能是通过该协议的协议报文感知的,接口板过热是通过板子上的传感器感知的等等。
如图4和图5所示为控制平面PST更新的两种流程,链路1连接的端口和链路2连接的端口可能是属于两个接口板,端口Down的信息由接口板上报主控板后,再由主控板下发到各接口板修改PST或者由接口板走带内广播到各个接口板,由各接口板直接修改PST。因为构建Key值的那1bit代表故障是否发生即端口是否能工作,是否设置为1即故障发生,是根据PST表中对应端口是否Up来判断的,所以修改了PST表,Key值中才能指示故障发生,才能匹配到对应动作。
本发明通过对分类的元素和动作进行扩展,使得数据通信设备的流分类功能更加灵活强大,可以在设备不相关条件出现变化时,对业务进行智能调整。使设备更加可控,业务更加可控更加灵活。流分类以前用算法的一个难点是查找影响效率,随着TCAM(三态内容寻址存储器)等器件的出现,流分类的性能问题得到解决,TCAM通过硬件可以在固定事件内找到表项,所以性能比较高。这样,广义流分类非常适合在NGN和IP电信网等领域应用。
本领域技术人员不脱离本发明的实质和精神,可以有多种变形方案实现本发明,以上所述仅为本发明较佳可行的实施例而已,并非因此局限本发明的权利范围,凡运用本发明说明书及附图内容所作的等效结构变化,均包含于本发明的权利范围之内。
权利要求
1.一种对报文进行分类处理的方法,其特征在于,包括以下步骤采用报文自身的若干个特征域构建报文分类的查找键值;扩展对报文进行分类的元素,增加报文自身特征以外的判断条件作为报文分类的元素,并在所述的键值中增加相应的标志位;对上述判断条件进行感知,在键值中的相应标志位进行置位,根据键值匹配到对应的规则表项,找到相应的动作并执行,实现对报文流量的智能控制。
2.根据权利要求1所述的对报文进行分类处理的方法,其特征在于所述的报文自身特征以外的判断条件为与设备相关的判断条件、或与报文路径特征相关的判断条件,或者与报文没有关系的判断条件。
3.根据权利要求2所述的对报文进行分类处理的方法,其特征在于所述的判断条件为端口和接口开启或关闭、链路开启或关闭、协议开启或关闭、链路上的设备或者节点不通、传送超时、环境温度湿度超标、某个端口上的流量是否拥塞或某个出口流量是否超大。
4.根据权利要求1、2或3所述的对报文进行分类处理的方法,其特征在于还对所述的报文分类的动作进行扩展,所述动作采用重新选路、降低或者升高优先级、入不同队列、过滤、限速、关闭某个接口、或启动流量镜像。
5.根据权利要求4所述的对报文进行分类处理的方法,其特征在于所述的判断条件为包含区间的条件。
6.根据权利要求4所述的对报文进行分类处理的方法,其特征在于所述的规则表项为访问控制列表。
7.根据权利要求4所述的对报文进行分类处理的方法,其特征在于在采用报文自身的若干个特征域构建报文分类的查找键值后,查端口状态表,得到端口状态标志,将此标志作为键值的一部分,再去匹配规则表项。
8.根据权利要求4所述的对报文进行分类处理的方法,其特征在于在对各接口板的端口状态表进行修改时,端口的信息由接口板上报主控板后,再由主控板下发到各接口板进行修改,或者由接口板走带内广播到各个接口板,由各接口板直接修改。
全文摘要
一种对报文进行分类处理的方法,采用报文自身的若干个特征域构建报文分类的查找键值;扩展对报文进行分类的元素,增加报文自身特征以外的判断条件作为报文分类的元素,并在所述的键值中增加相应的标志位;对上述判断条件进行感知,在键值中的相应标志位进行置位,根据键值匹配到对应的规则表项,找到相应的动作并执行,实现对报文流量的智能控制。本发明通过在条件发生和不发生时,对特定的流量执行特定的动作,使得数据通信设备的流分类功能更加灵活强大,可以在设备不相关条件出现变化时,对业务进行智能调整,使设备更加可控,业务更加可控更加灵活,从而提高系统的可靠性。
文档编号H04L12/56GK1758625SQ20041005180
公开日2006年4月12日 申请日期2004年10月9日 优先权日2004年10月9日
发明者熊怡, 刘少伟 申请人:华为技术有限公司