背景技术
为了不断提高路由器转发性能,控制/转发分离、软件硬件化是一个大的趋势,具体的改变就是将以前由CPU(Central Processing Unit,中央处理器)软件实现的报文分类、处理和转发等操作,逐渐下移到转发引擎上来实现。转发引擎的特点是能够快速处理报文,但是灵活性不如CPU,所以,在实际应用中,需要CPU协助下发控制信息到转发引擎,然后转发引擎根据这些控制信息对接收的报文进行分类、处理以及发送。
如图1所示,为现有技术中转发引擎数据平面控制平面的示意图。其中,具体的报文处理过程如下:
转发引擎收到报文(即图1中所示的步骤1),如果该报文是首包,或者本机报文,或者根据控制平面的信息确定该报文是需要上送CPU的报文,则将该报文上送CPU(即图1中所示的步骤2),CPU将处理后的报文下发到转发引擎的数据平面(即图1中所示的步骤3),数据平面查询控制平面获取控制信息,并将统计信息等写回控制平面(即图1中所示的步骤7和8),然后,数据平面将处理后的报文进行发送(即图1中所示的步骤4)。后续报文都会按照控制平面的控制信息进行处理。
需要指出的是,上述的控制平面中的控制信息是由CPU协助下发的,而控制平面也会向CPU进行相应的信息反馈,具体说明如下:
一方面,CPU会将配置信息和控制信息,一并下发到转发引擎的控制平面(即图1中所示的步骤5),用于指导数据平面进行报文处理。
另一方面,控制平面也会将转发引擎的状态信息、统计信息等上送到CPU(即图1中所示的步骤6)。
在具体应用中,为了适应复杂的网络环境,丰富的QoS(Quality of service,服务质量)功能是路由器必不可少的特性。为了实现QoS功能,首先需要对报文进行识别和分类,然后根据分类结果进行相应的Qos动作,比如CAR(Committed Access Rate,约定访问速率)/GTS(Generic Traffic Shaping,通用流量整形)等。
在现有的技术方案中,根据ToS(Type of Service,服务类型)字段进行报文分类是一种常用的方法,如图2所示,为现有技术中包含ToS字段的报文的结构示意图。
该字段一般有两种用法,如图3所示,为现有技术中的对应一种ToS字段用法的报文结构示意图,在该报文结构中,ToS字段的前3bit作为IP-Precedence(优先级)域,中间的4bit作为TOS域,最后的1bit保留,如图3所示,在现有技术中,该bit通常被置零(Must Be Zero,MBZ)。
如图4所示,为现有技术中的对应另一种ToS字段用法的报文结构示意图,在该报文结构中,直接将ToS字段的前6bit作为DSCP(Differentiated ServicesCode Point,差分服务代码点)域,余下的2bit目前未使用(Currently Unused,CU)。
根据以上两种方式中所包含的各域的类型,就有三种不同的基本报文分类方式,就是对IP-Precedence、ToS、DSCP进行识别。再加上IP-Precedence和ToS的组合,共有4中不同的报文分类方式。
转发引擎芯片为了能够识别报文,就需要对以上四种情况分别进行判断处理。
如图5所示,为现有技术中的转发引擎对IP报文ToS字段的处理方法的流程示意图。
步骤S501、CPU首先处理用户配置规则,将配置规则(DSCP/IP-Precedence/ToS/IP-Precedence+ToS)以及配置参数下发到转发引擎表项中。
步骤S502、转发引擎收到报文后,根据配置规则进行偏移。
如果配置规则是DSCP,则取ToS字段中的前6bit。
如果配置规则是IP-Precedence,则取ToS字段中的前3bit。
如果配置规则是ToS,则取ToS字段中的3~6bit。
如果配置规则是IP-Precedence+ToS,则取ToS字段中的前7bit。
由于需要逐一对配置规则的类型进行识别,因此,在最复杂的情况下,需要进行四次识别过程,才能确定相应的偏移结果。
步骤S503、如果从报文中相应字段提取的值和CPU下发的配置参数相符,则说明当前报文命中了配置规则,需要对该报文进行下一步QoS处理,否则,不对该报文进行QoS处理。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
现有的ToS字段中可以包括不同位置的连续比特位所组成的域,并进一步通过不同的域或者域的组合的内容来标识不同的报文类型,因此,在具体的报文识别和分类的过程中,需要由CPU预先设置具体的配置规则,转发引擎根据具体的配置规则进行相应的偏移处理,获取报文的ToS字段中不同的域或者域的组合的内容来确定报文的类型,这样的处理过程需要转发引擎进行额外的规则识别和偏移处理,增加了转发引擎功能实现的复杂度,消耗了过多的转发引擎资源,降低了转发引擎的处理效率。
发明内容
本发明提供一种报文ToS字段的识别方法和设备,解决现有技术中由于对不同类型的配置规则需要分别进行识别所带来的处理复杂度提高,处理效率降低的问题。
为达到上述目的,本发明一方面提供了一种报文ToS字段的识别方法,至少包括以下步骤:
转发引擎接收CPU发送的QoS命中表,所述QoS命中表中的与所述CPU的配置规则相对应的表项包含业务信息;
当所述转发引擎接收到报文时,提取所述报文的ToS字段的指定bit区间的信息;
如果所述转发引擎判断提取到的所述指定bit区间的信息在所述QoS命中表中相匹配的表项包含业务信息,所述转发引擎对所述报文进行QoS处理。
优选的,所述ToS字段的指定bit区间的信息,具体包括:
所述ToS字段的前7bit的信息;或,
所述ToS字段的全部8bit的信息。
优选的,当所述ToS字段的指定bit区间的信息为所述ToS字段的前7bit的信息时,所述CPU发送的QoS命中表的生成过程,具体为:
所述CPU生成一张含有128个表项的QoS命中表,各表项分别对应一个索引数值,所述索引数值具体为7位二进制数值;
所述CPU根据配置规则的类型和配置参数,生成相应的索引数值;
所述CPU在所述QoS命中表中,为与所述索引数值对应的表项添加业务信息;
所述CPU将包含相应的添加了业务信息的表项的QoS命中表发送给所述转发引擎。
优选的,所述CPU根据配置规则的类型和配置参数,生成相应的索引数值,具体包括:
如果所述配置规则的类型为DSCP,则在所述配置参数的右侧增加1bit,将所述1bit的值分别置为0和1,然后,通过在所述配置参数的左侧补0使其达到7位,并将所生成的相应的7位二进制数值分别作为索引数值;
如果所述配置规则的类型为IP-Precedence,则在所述配置参数的右侧增加4bit,将所述4bit的值分别置为所有0和/或1的4位数值组合,然后,通过在所述配置参数的左侧补0使其达到7位,并将所生成的相应的7位二进制数值分别作为索引数值;
如果所述配置规则的类型为ToS,则直接通过在所述配置参数的左侧补0使其达到7位,并将所生成的相应的7位二进制数值分别作为索引数值;
如果所述配置规则的类型为IP-Precedence和ToS的组合,则直接通过在所述配置参数的左侧补0使其达到7位,并将所生成的相应的7位二进制数值分别作为索引数值。
优选的,当所述ToS字段的指定bit区间的信息为所述ToS字段的全部8bit的信息时,所述CPU发送的QoS命中表的生成过程,具体为:
所述CPU生成一张含有256个表项的QoS命中表,各表项分别对应一个索引数值,所述索引数值具体为8位二进制数值;
所述CPU根据配置规则的类型和配置参数,生成相应的索引数值;
所述CPU在所述QoS命中表中,为与所述索引数值对应的表项添加业务信息;
所述CPU将包含相应的添加了业务信息的表项的QoS命中表发送给所述转发引擎。
优选的,所述CPU根据配置规则的类型和配置参数,生成相应的索引数值,具体包括:
如果所述配置规则的类型为DSCP,则在所述配置参数的右侧增加2bit,将所述2bit的值分别置为所有0和/或1的2位数值组合,然后,通过在所述配置参数的左侧补0使其达到8位,并将所生成的相应的8位二进制数值分别作为索引数值;
如果所述配置规则的类型为IP-Precedence,则在所述配置参数的右侧增加5bit,将所述5bit的值分别置为所有0和/或1的5位数值组合,然后,通过在所述配置参数的左侧补0使其达到8位,并将所生成的相应的8位二进制数值分别作为索引数值;
如果所述配置规则的类型为ToS,则在所述配置参数的右侧增加1bit,将所述1bit的值分别置为0和1,然后,通过在所述配置参数的左侧补0使其达到8位,并将所生成的相应的8位二进制数值分别作为索引数值;
如果所述配置规则的类型为IP-Precedence和ToS的组合,则在所述配置参数的右侧增加1bit,将所述1bit的值分别置为0和1,然后,通过在所述配置参数的左侧补0使其达到8位,并将所生成的相应的8位二进制数值分别作为索引数值。
优选的,当所述转发引擎接收到报文时,提取所述报文的ToS字段的指定bit区间的信息之后,还包括:
如果所述转发引擎判断提取到的所述指定bit区间的信息在所述QoS命中表中相匹配的表项不包含业务信息,所述转发引擎对所述报文进行非QoS处理。
优选的,所述业务信息,具体为:
在所述CPU生成的一张QoS命中表中,为相应的表项添加与初始值不同的数值信息,其中:
在所述CPU生成的一张各表项的初始值为0的QoS命中表中,将相应的表项置1;或,
在所述CPU生成的一张各表项的初始值为1的QoS命中表中,将相应的表项置0。
另一方面,本发明还提供了一种转发引擎,至少包括:
接收模块,用于接收CPU发送的QoS命中表和其他网络设备所发送的报文,其中,所述QoS命中表中的与所述CPU的配置规则相对应的表项包含业务信息;
提取模块,用于当所述接收模块接收到报文时,提取所述报文的ToS字段的指定bit区间的信息;
判断模块,用于将所述提取模块所提取到的所述指定bit区间的信息与所述接收模块所接收到的QoS命中表中的表项进行匹配,并判断相匹配的表项是否包含业务信息;
处理模块,用于在所述判断模块的判断结果为是时,对所述接收模块所接收到的报文进行QoS处理,或在所述判断模块的判断结果为否时,对所述接收模块所接收到的报文进行非QoS处理。
优选的,所述ToS字段的指定bit区间的信息,具体包括:
所述ToS字段的前7bit的信息;或,
所述ToS字段的全部8bit的信息。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,转发引擎在接收到报文后,直接提取该报文的ToS字段的指定bit区间的信息,并根据其与CPU发送的QoS命中表中相匹配的表项是否包含业务信息来确定是否对该报文进行QoS处理,从而,对于多种类型的配置规则,可以在ToS字段中提取相同bit区间的信息进行相应的识别,不再需要根据配置规则的类型差异而进行多次判断和识别,降低了转发引擎中转发的复杂度,提高了转发引擎对报文ToS字段的识别效率,减少了转发引擎的硬件资源消耗。
具体实施方式
针对现有技术中转发引擎功能实现不仅复杂度高,而且在实现的过程中需要消耗过多的转发引擎资源,而且转发引擎的处理效率也不高的问题,本发明提出一种便捷的报文ToS字段的识别方法,通过同一bit区间的信息来进行多种配置规则的识别,屏蔽多种配置规则对于ToS字段中不同bit信息的差异性需求,提高转发引擎对于报文的ToS字段识别效率,降低算法复杂度,减少硬件资源消耗。
如图6所示,为本发明所提出的一种报文ToS字段的识别方法的流程示意图,该方法具体包括以下步骤:
步骤S601、转发引擎接收CPU发送的QoS命中表。
其中,所述QoS命中表中的与所述CPU的配置规则相对应的表项包含业务信息。
对于QoS命中表的详细说明,会结合后续步骤中的具体处理过程进行描述,在此不再赘述。
步骤S602、当所述转发引擎接收到报文时,提取所述报文的ToS字段的指定bit区间的信息。
考虑到前述的各配置规则,即DSCP/IP-Precedence/TOS/IP-Precedence+TOS等几种配置规则,都是基于所收到的报文中的同一个字段(ToS字段)的不同bit进行识别的,所以,发明人认为可以通过CPU将对于不同bit识别的差异屏蔽,转成对整个字段(ToS字段)中的指定bit区间的信息的识别。
但是,在具体的处理场景中,根据具体的设置,上述的ToS字段的指定bit区间的选择方式包括以下两种。
方式一、将ToS字段的前7bit作为指定bit区间。
参照前述说明,尽管配置规则可能存在多种,但是其所识别的信息内容均是属于报文的ToS字段中的不同bit,因此,完全可以通过统一识别整个ToS字段的信息内容来实现不同的配置规则之间的bit识别差异。
如前述的图2所示,报文的ToS字段共有8bit,因此,可以对全部的8bit信息进行识别。
进一步的,参见前述说明以及图3和图4的说明,可以发现,无论是哪种配置规则,对于ToS字段的最后一个bit均没有被识别,因此,在本发明所提出的技术方案中,也可以忽略对最后一个bit的识别,而是只对ToS字段的前7bit的内容进行识别,即将ToS字段的前7bit作为指定bit区间。
方式二、将ToS字段的全部8bit作为指定bit区间。
此种方式的处理思路与方式一的处理方式相类似,只是没有忽略对最后一个bit的识别,因此,在本方式中是对ToS字段的全部8bit的内容进行识别,即将ToS字段的全部8bit作为指定bit区间。
比较上述的两种方式,可以看出,相比于方式二,方式一由于所识别的信息的bit位数的减少,可以进一步的提高识别的效率;而相比与方式一,方式二的方案由于不需要对ToS字段的内容进行任何删减,因此,相应的信息提取过程会更加简单和快捷,而且,也可以对今后可能出现的需要对最后一个bit进行识别的其他配置规则进行适配。
在具体的处理场景中,可以根据实际需要进行相应的方式的选择,确定相应的指定bit区间,具体选择方式一还是方式二,并不会影响本发明的保护范围。
步骤S603、所述转发引擎以所提取到的所述指定bit区间的信息为索引数值,与QoS命中表中的表项进行匹配。
步骤S604、所述转发引擎判断相匹配的表项是否包含业务信息。
如果判断结果为是,则执行步骤S605;
如果判断结果为否,则执行步骤S606。
步骤S605、所述转发引擎对所述报文进行QoS处理。
步骤S606、所述转发引擎对所述报文进行非QoS处理。
对应前述的步骤S602中所给出的两种指定bit区间的划分方式,本发明进一步对相应的QoS命中表的生成过程进行说明。
(一)对应方式一,当所述ToS字段的指定bit区间的信息为所述ToS字段的前7bit的信息时,所述CPU发送的QoS命中表的生成过程,具体如下:
(1)所述CPU生成一张含有128(2的七次方)个表项的QoS命中表,各表项分别对应一个索引数值,所述索引数值具体为7位二进制数值。
(2)所述CPU根据配置规则的类型和配置参数,生成相应的索引数值。
具体的,对应不同的配置规则的类型,具体说明相应的索引数值的生成方式:
如果所述配置规则的类型为DSCP,则在所述配置参数的右侧增加1bit,将所述1bit的值分别置为0和1,然后,通过在所述配置参数的左侧补0使其达到7位,并将所生成的相应的7位二进制数值分别作为索引数值。
如果所述配置规则的类型为IP-Precedence,则在所述配置参数的右侧增加4bit,将所述4bit的值分别置为所有0和/或1的4位数值组合,然后,通过在所述配置参数的左侧补0使其达到7位,并将所生成的相应的7位二进制数值分别作为索引数值。
如果所述配置规则的类型为ToS,则直接通过在所述配置参数的左侧补0使其达到7位,并将所生成的相应的7位二进制数值分别作为索引数值。
如果所述配置规则的类型为IP-Precedence和ToS的组合,则直接通过在所述配置参数的左侧补0使其达到7位,并将所生成的相应的7位二进制数值分别作为索引数值。
由以上的说明可以看出,在相应的索引数值的生成过程中,首先通过在配置参数右侧增加相应的bit位,来使配置参数向左发生偏移,从而,使相应的配置参数偏移到与相应的配置规则的类型相对应的bit位上(对于ToS,以及IP-Precedence和ToS的组合,则无需偏移),然后,通过在配置参数左侧的补0处理,来使相应的数值达到7位,从而,可以与按照方式一提取到的ToS字段的指定bit区间(前7bit)相对应,并实现统一识别。
(3)所述CPU在所述QoS命中表中,为与所述索引数值对应的表项添加业务信息。
(4)所述CPU将包含相应的添加了业务信息的表项的QoS命中表发送给所述转发引擎。
(二)另一方面,对应方式二,当所述ToS字段的指定bit区间的信息为所述ToS字段的全部8bit的信息时,所述CPU发送的QoS命中表的生成过程,具体如下:
(1)所述CPU生成一张含有256(2的八次方)个表项的QoS命中表,各表项分别对应一个索引数值,所述索引数值具体为8位二进制数值。
(2)所述CPU根据配置规则的类型和配置参数,生成相应的索引数值。
具体的,对应不同的配置规则的类型,具体说明相应的索引数值的生成方式:
如果所述配置规则的类型为DSCP,则在所述配置参数的右侧增加2bit,将所述2bit的值分别置为所有0和/或1的2位数值组合,然后,通过在所述配置参数的左侧补0使其达到8位,并将所生成的相应的8位二进制数值分别作为索引数值。
如果所述配置规则的类型为IP-Precedence,则在所述配置参数的右侧增加5bit,将所述5bit的值分别置为所有0和/或1的5位数值组合,然后,通过在所述配置参数的左侧补0使其达到8位,并将所生成的相应的8位二进制数值分别作为索引数值。
如果所述配置规则的类型为ToS,则在所述配置参数的右侧增加1bit,将所述1bit的值分别置为0和1,然后,通过在所述配置参数的左侧补0使其达到8位,并将所生成的相应的8位二进制数值分别作为索引数值。
如果所述配置规则的类型为IP-Precedence和ToS的组合,则在所述配置参数的右侧增加1bit,将所述1bit的值分别置为0和1,然后,通过在所述配置参数的左侧补0使其达到8位,并将所生成的相应的8位二进制数值分别作为索引数值。
由以上的说明可以看出,在相应的索引数值的生成过程中,首先通过在配置参数右侧增加相应的bit位,来使配置参数向左发生偏移,从而,使相应的配置参数偏移到与相应的配置规则的类型相对应的bit位上,然后,通过在配置参数左侧的补0处理,来使相应的数值达到8位,从而,可以与按照方式二提取到的ToS字段的指定bit区间(全部8bit)相对应,并实现统一识别。
(3)所述CPU在所述QoS命中表中,为与所述索引数值对应的表项添加业务信息。
(4)所述CPU将包含相应的添加了业务信息的表项的QoS命中表发送给所述转发引擎。
进一步需要指出的是,在前述的各步骤以及相应的QoS命中表的生成过程中,所提及的业务信息,在具体的应用场景中可以包括以下两种情况:
情况一、在QoS命中表的表项中所添加的业务信息为业务地址。
其中,所述业务地址与CPU所配置的配置参数相对应,且所述配置参数与所述表项的索引数值相对应。
通过这样的业务信息的添加,可以将上述的QoS命中表直接生成为QoS业务表,即CPU在生成该QoS命中表时,将所有表项的初始值均设置为0,表示没有业务,而后根据相应配置规则和配置参数,在有业务的地方(即根据配置参数所对应的索引数值所索引到的表项),直接写入具体的业务地址。
通过这样的处理,如果转发引擎根据报文中指定bit区间的信息找到相匹配的表项,且该表项中包含上述的业务地址,那么转发引擎直接根据该业务地址对应的业务对相应的报文进行QoS处理。
情况二、在QoS命中表的表项中所添加的业务信息为与所述表项的初始值不同的数值信息。
其中,所述数值信息对应另一个业务链表中所包括的业务地址。
如果CPU生成了一张各表项的初始值为0的QoS命中表,那么,根据相应的配置规则和配置参数,CPU将相应的表项置1(与初始值0不同),并通过另一个业务链表标识该表项数值1所对应的业务地址,当转发引擎根据报文中指定bit区间的信息找到相匹配的表项,且该表项被置1时,则进一步查询上述的业务链表,找到该表项数值1所对应的业务地址,然后,根据该业务地址对应的业务对相应的报文进行QoS处理。
当然,如果CPU所生成的QoS命中表中各表项的初始值为1,那么,根据相应的配置规则和配置参数,CPU则需要将相应的表项置0(与初始值1不同),并通过另一个业务链表标识该表项数值0所对应的业务地址,当转发引擎根据报文中指定bit区间的信息找到相匹配的表项,且该表项被置0时,则进一步查询上述的业务链表,找到该表项数值0所对应的业务地址,然后,根据该业务地址对应的业务对相应的报文进行QoS处理。
上述的业务信息的作用在于标记与配置规则相对应的表项,并指出相应的业务地址,只要能够达到这样的效果,具体采用上述的哪种方案,以及具体进行业务添加时的数值内容和形式的变化并不会影响本发明的保护范围。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,转发引擎在接收到报文后,直接提取该报文的ToS字段的指定bit区间的信息,并根据其与CPU发送的QoS命中表中相匹配的表项是否包含业务信息来确定是否对该报文进行QoS处理,从而,对于多种类型的配置规则,可以在ToS字段中提取相同bit区间的信息进行相应的识别,不再需要根据配置规则的类型差异而进行多次判断和识别,降低了转发引擎中转发的复杂度,提高了转发引擎对报文ToS字段的识别效率,减少了转发引擎的硬件资源消耗。
为了进一步阐述本发明的技术思想,现结合具体的应用场景,对本发明的技术方案进行说明。
为了方便说明,本发明具体以对应前述的方式一(即以ToS字段的前7bit作为指定bit区间)的处理方案为例进行说明,其中的业务信息采用置1的方式来实现。
依据上述的应用场景的描述,如图7所示,为本发明提出的一种具体应用场景中的报文ToS字段的识别方法的流程示意图,具体包括以下步骤:
步骤S701、CPU生成一张含有128项的QoS命中表,同时将QoS命中表中的各表项中的内容清零。
如图8所示,为CPU所生成的QoS命中表中的各表项与相应的7位二进制数值(即前述的索引数值)的对应关系示意图。
需要说明的是,各表项与相应的数值的对应关系可以直接通过位置来体现,而不一定需要在表项中写入与其相对应的7位二进制数值的信息,因此,图8所示的对应关系只是一种示例,并不表示表项中的具体内容,另一方面,图8所示的各表项的位置分布也仅是为了方便说明而给出的一种具体示例,实际应用中的位置关系并不局限于此。
另一方面,本步骤中所进行的清零操作则是为了后续的标识操作而进行的初始化准备,在清零操作后,各表项中所包含的数值内容均为0(各表项所对应的索引数值并不受其影响)。
步骤S702、CPU根据配置规则的类型,对配置参数进行处理,并将其在QoS命中表中所对应的表项的内容置为该配置参数所对应的业务地址。
具体地,CPU对配置参数进行处理的过程如下:
(1)配置规则为DSCP。
CPU将配置参数左移1bit,同时,将bit 0(即配置参数左移后所空出的1个bit位)分别置0和1,将获得的两个数值作为索引数值,并将其在QoS命中表中所对应的表项的内容置为该配置参数所对应的业务地址。
例如,如果配置参数为DSCP=3(0x11),那么,相应的处理过程如下:
首先,将配置参数左移1bit,即配置参数调整为0x11*,其中,“*”为左移后空出的bit位(bit0)。
进一步的,分别将bit 0置为0和1,获得两个数值0x110和0x111。
然后,在配置参数的左侧进行补0处理,将相应的配置参数补足为7位,获得两个数值0x0000111和0x0000110。
最后,以这两个数值为索引数值,在QoS命中表中找到相对应的表项,并将该表项的内容置为DSCP=3所对应的业务地址。
对应图8中的QoS命中表的结构,经过上述处理后的QoS命中表中各表项的内容如图9所示,其中,对应上述的索引数值的表项中的内容已经被置为DSCP=3所对应的业务地址(即前述的添加了业务信息)。
(2)配置规则为IP-Precedence。
CPU将配置参数左移4bit,同时,将0~3bit(即配置参数左移后所空出的4个bit位)分别置为所有0、1所组成的4位数值组合,将获得的各数值作为索引数值,并将其在QoS命中表中所对应的表项的内容置为该配置参数所对应的业务地址。
例如,如果配置参数为IP-Precedence=3(0x11),那么,相应的处理过程如下:
首先,将配置参数左移4bit,即配置参数调整为0x11****,其中,“*”为左移后空出的bit位(0~3bit)。
进一步的,分别将0~3bit分别置为所有0、1所组成的4位数值组合,获得以下16(2的四次方)个数值:
0x110000、0x110001、0x110010、0x110011、0x110100、0x110101、0x110110、0x110111、0x111000、0x111001、0x111010、0x111011、0x111100、0x111101、0x111110和0x111111。
然后,在配置参数的左侧进行补0处理,将相应的配置参数补足为7位,获得以下16个数值:
0x0110000、0x0110001、0x0110010、0x0110011、0x0110100、0x0110101、0x0110110、0x0110111、0x0111000、0x0111001、0x0111010、0x0111011、0x0111100、0x0111101、0x0111110和0x0111111。
最后,以这16个数值为索引数值,在QoS命中表中找到相对应的表项,并将该表项的内容置为IP-Precedence=3所对应的业务地址。
对应图8中的QoS命中表的结构,经过上述处理后的QoS命中表中各表项的内容如图10所示,其中,对应上述的索引数值的表项中的内容已经被置为IP-Precedence=3所对应的业务地址(即前述的添加了业务信息)。
(3)配置规则为TOS或IP-Precedence+ToS。
CPU直接将配置参数作为索引数值,并将其在QoS命中表中所对应的表项的内容置为该配置参数所对应的业务地址。
例如,如果配置参数为ToS=3(0x11),那么,相应的处理过程如下:
直接在配置参数的左侧进行补0处理,将相应的配置参数补足为7位,数值0x0000011
然后,以这个数值为索引数值,在QoS命中表中找到相对应的表项,并将该表项的内容置为ToS=3所对应的业务地址。
对应图8中的QoS命中表的结构,经过上述处理后的QoS命中表中各表项的内容如图11所示,其中,对应上述的索引数值的表项中的内容已经被置为ToS=3所对应的业务地址(即前述的添加了业务信息)。
当然,如果配置规则为IP-Precedence+ToS,也同样可以通过上述方式类进行处理,在此不再赘述。
步骤S703、CPU下发QoS命中表到转发引擎的控制平面。
当转发引擎收到报文时,执行步骤S704。
步骤S704、转发引擎提取报文ToS字段的前7bit作为索引数值,并在QoS命中表中查询该索引数值所对应的表项。
步骤S705、转发引擎判断所查询到的表项是否被置为业务地址。
如果是,则根据该业务地址所对应的业务对该报文进行QoS处理,如果不是,则放弃对该报文进行QoS处理(进行非QoS处理)。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,转发引擎在接收到报文后,直接提取该报文的ToS字段的指定bit区间的信息,并根据其与CPU发送的QoS命中表中相匹配的表项是否包含业务信息来确定是否对该报文进行QoS处理,从而,对于多种类型的配置规则,可以在ToS字段中提取相同bit区间的信息进行相应的识别,不再需要根据配置规则的类型差异而进行多次判断和识别,降低了转发引擎中转发的复杂度,提高了转发引擎对报文ToS字段的识别效率,减少了转发引擎的硬件资源消耗。
为了实现本发明的技术方案,本发明还提出了一种转发引擎,其结构图如图12所示,至少包括:
接收模块121,用于接收CPU发送的QoS命中表和其他网络设备所发送的报文,其中,所述QoS命中表中的与所述CPU的配置规则相对应的表项包含业务信息;
提取模块122,用于当所述接收模块121接收到报文时,提取所述报文的ToS字段的指定bit区间的信息;
判断模块123,用于将所述提取模块122所提取到的所述指定bit区间的信息与所述接收模块121所接收到的QoS命中表中的表项进行匹配,并判断相匹配的表项是否包含业务信息;
处理模块124,用于在所述判断模块123的判断结果为是时,对所述接收模块121所接收到的报文进行QoS处理,或在所述判断模块123的判断结果为否时,对所述接收模块121所接收到的报文进行非QoS处理。
优选的,与前述的说明相对应,所述ToS字段的指定bit区间的信息,具体包括所述ToS字段的前7bit的信息,或所述ToS字段的全部8bit的信息。
具体说明参见前述描述,在此不再重复。
与现有技术相比,本发明具有以下优点:
通过应用本发明的技术方案,转发引擎在接收到报文后,直接提取该报文的ToS字段的指定bit区间的信息,并根据其与CPU发送的QoS命中表中相匹配的表项是否包含业务信息来确定是否对该报文进行QoS处理,从而,对于多种类型的配置规则,可以在ToS字段中提取相同bit区间的信息进行相应的识别,不再需要根据配置规则的类型差异而进行多次判断和识别,降低了转发引擎中转发的复杂度,提高了转发引擎对报文ToS字段的识别效率,减少了转发引擎的硬件资源消耗。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本发明的几个具体实施场景,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。