一种基于报文优先级控制报文传输的方法

文档序号:7622004阅读:94来源:国知局
专利名称:一种基于报文优先级控制报文传输的方法
技术领域
本发明涉及一种控制报文传输的方法,尤指一种在集群式网络设备系统中,依据用户设定的报文优先级规则,通过对用户报文特征进行提取、优先级判别,控制以太网报文传输的方法。
背景技术
随着网络技术的飞速发展,网络设备的数量增长达到了前所未有的程度,与此同时,随着用户对网络应用的日趋成熟,对网络设备的功能需求也日益提高。特别是,随着IP电话、网络视频点播等业务的进一步开展,人们对网络带宽提出了更高的要求。伴随网络负载的进一步加重,如何保证类似于IP电话等一些实时性要求高用户服务的高可靠性成为目前网络运营商急需解决的一大难题,即如何在网络负载较重时保证哪些实时性要求高的用户服务通畅是网络运营商急需解决的一大问题。
而,目前现有的交换机基本上无法提供上述服务内容,其控制策略相对简单,它无法区分哪些是实时性要求高的用户,哪些是实时性要求一般的用户,它接收到一个报文就转发一个报文,当网络比较拥挤时,它也不加区分照样是接收一个报文就转发一个报文,很有可能将实时性要求高的报文后发,将实时性要求一般的报文先发,无法满足用户的需求。

发明内容
鉴于上述原因,本发明的目的是提供一种可以在网络负载较重时保证哪些实时性要求较高的用户服务通畅的基于报文优先级控制报文传输的方法。
为实现上述目的,本发明采取以下设计方案一种基于报文优先级控制报文传输的方法,该方法包括以下步骤第一步设定用户报文优先级;第二步提取用户报文中的有效信息;第三步判定用户报文的优先级别;第四步根据用户报文的优先级别转发用户报文。
由于本发明依据用户设定的报文优先级规则,通过对用户报文特征进行提取,对报文进行优先级判别,然后依据报文优先级高低结合网络当前负载情况来控制报文的转发,所以,本发明可以在网络负载较重的情况下,保证优先级高的报文正常通信;减轻了网络管理人员的负担,提高了网络运营效率。


图1为本发明网络硬件部分结构示意图、本发明报文过滤工作原理2为本发明基于报文优先级控制报文传输的流程3为本发明报文处理流程图具体实施方式
为了保证在网络负载较重时那些实时性要求高的用户服务通畅,本发明采用对用户报文进行特征提取,依据用户事先设定的规则(报文优先级)对报文进行优先级判别,然后依据报文的优先级高低,结合网络当前负载的情况控制报文的转发,从而,优先保证那些实时性要求高的用户服务的通畅。采用该方案设计的交换机,可以根据用户设定的报文优先级规则来控制报文的转发,实现在网络负载较重的情况下优先保证优先级高的报文正常通信。
为了实施本发明的上述技术方案,如图1所示,需要在正常的网络交换机链路中串入一个具有双网口的过滤CPU。该过滤CPU主要承担报文的过滤功能,它的一个网口与上联端口相连,另一网口与交换机的网络交换芯片相连。如图所示,要实现用户端口和上联端口之外的用户通信,所有报文必须经过过滤CPU的过滤、转发。在本发明具体实施例中,过滤CPU主要完成报文信息的提取、优先级判定、控制报文的转发三项功能,网管CPU主要完成用户设定规则的输入、当前网络使用情况的信息读取等功能;两个CPU之间通过socket通信的方式完成信息交互。
本发明提供的基于报文优先级控制报文传输的方法包括以下步骤1、设定用户报文优先级;2、提取用户报文中的有效信息;3、判定用户报文的优先级别;4、根据用户报文的优先级别转发用户报文。
下面对本发明提供的基于报文优先级控制报文传输的方法进行详细说明。
第一步设定用户报文优先级本发明可以基于用户的MAC、IP、VID、报文协议类型等控制项设定用户报文的优先级顺序,对用户报文的转发进行控制。
目前用户可以设置的优先级控制项包括四项基于用户MAC、IP、VID和报文协议类型,每一选项最多支持16个优先级设定。在应用上,用户可以选择这四项任意几项加以组合,并且每一项的优先级高低可以指定,也就是说,优先级别设定共有两层,用户必须首先指定这四个控制项之间的优先级,然后再针对某一个具体控制项进行内部优先级设定。对于每一个单项而言,可以支持分段设定和单条设定两类。
以IP单项的优先级设定为例,用户可以指定192.168.0.10至192.168.0.50网段的用户优先级为1,192.168.0.50至192.168.0.100网段的用户优先级为2。也可以针对单个用户进行设定如用户192.168.0.10优先级为1,用户192.168.0.11优先级为2等。
具体的软件实施方法如下1、定义相关变量(a)反映用户报文优先级变量unsigned long user_pkt_pri;(b)四个控制项之间的外部优先级变量unsigned char MAC_out_pri; //MAC选项在四个选项中的优先级unsigned char IP_out_pri; //IP选项在四个选项中的优先级unsigned char VID_out_pri; //VID选项在四个选项中的优先级unsigned char PROTOCOL_out_pri;//PROTOCOL选项在四个选项中的优先级(c)单个控制项内部优先级变量根据用户设定的这四个优先级来初始化各选项对应的优先级结构体struct mac_pri{Unsigned long Low;Unsigned long mid;Unsigned long high;}mac_in_pri;struct ip_pri{Unsigned long Low;Unsigned long mid;Unsigned long high;}ip_in_pri;Struct vid_pri{
Unsigned long Low;Unsigned long mid;Unsigned long high;}vid_in_pri;struct protocol_pri{Unsigned long Low;Unsigned long mid;Unsigned long high;}protocol_in_pri;(d)单个控制项开关变量的定义unsigned char MAC_switch;//00关闭,01开启且优先级单条目,02开启且优先级分段控制unsigned char IP_switch;//00关闭,01开启且优先级单条目,//02开启且优先级分段控制unsigned char VID_switch;/00关闭,01开启且优先级单条目,//02开启且优先级分段控制unsigned char PROTOCOL_switch;//00关闭,01开启且优先级单条目,//02开启且优先级分段控制2、约定用户报文的优先级定义用户报文优先级变量user_pkt_pri的四个字节分别对应四个优先级控制选项,高字节优先级为高,根据用户对四个选项优先级设定结果也就是mac_out_pri、ip_out_pri、vid_out_pri、protocol_out_pri变量值来初始化它们对应的结构体。举例如下假定用户定义控制规则如下选择两个优先级控制选项MAC(优先级为2),VID(优先级为1);其中MAC控制项采用单条设定,其中00073e999999优先级为high,000733e888888优先级为mid;VID控制项采用分段设定,其中0-10段优先级别为high,10-20优先级为low。
则相应的变量设置如下//控制项对应开关设定MAC_switch=0x01;IP_switch=0x00;VID_switch=0x02;PROTOCOL_switch=0x00;//控制项之间外部优先级设定Mac_out_pri=2;vid_out_pri=1;//控制项内部优先级设定Mac_in_pri.low=0x0000;Mac_in_pri.low=0x0010;Mac_in_pri.low=0x0020;vid_in_pri.low=0x0000;Mac_in_pri.low=0x0001;Mac_in_pri.low=0x0002;设定好的参数作为报文优先级判断的依据。
第二步提取用户报文中的有效信息当用户报文优先级设定完毕后,过滤CPU在底层驱动程序中完成对报文的接收后,首先对报文完整性进行确认,然后依据用户设定的开关量决定哪一项优先级判定服务被开启,然后根据服务内容从报文中提取MAC、IP、VID、协议标识字段等有效信息,部分提取后的有效信息被存储在底层过滤表中,用户通过超级终端、telnet、SNMP、WEB等方式可以完成对过滤表控制参数的修改以及统计信息的读取。目前在交换机内部,过滤表的数据结构被定义在内核层,上层应用程序通过系统调用的方式完成对过滤表的访问。
所提取出来的有效信息是下一步进行报文优先级判别的依据,同时有效信息本身具备优先级,在满足某些优先级较高的先决条件后,可以不进行剩余规则的判别,而直接给出报文的优先级别。
第三步判定用户报文的优先级别完整接收的用户报文在被转发至发送DMA通道的缓冲队列(buffer)之前,首先要进行报文优先级判定操作。如图3所示,该报文依次进行MAC优先级、IP优先级、VID优先级、协议类型优先级四步判别,每一步比较完成后的比较结果记为val_mac_pri、val_ip_pri、val_vid_pri、val_protocol_pri,定义该报文对应的最终优先级判定结果为user_pkt_pri,那么user_pkt_pri=val_mac_pri‖val_ip_pri‖val_vid_pri‖val_protocol_pri。举例如下如果用户报文优先级的设定如第一步举例,假设一个报文提取后的相关信息为MAC=00073e999999;vid=5;那么单项优先级判定结果为Val_mac_pri=0x0020;val_vid_pri=0x0002;最终该用户报文的优先级判定结果为user_pkt_pri=0x0022。
第四步根据用户报文的优先级别转发用户报文经过优先级判断后的用户报文,再通过过滤CPU的底层驱动完成转发。一般而言,普通网络驱动程序被设置为只接收单播、广播两种形式的报文,部分网卡的驱动程序支持组播报文的接收。要完成以太网报文的接收以及发送,硬件上需要具备两个DMA通道,同时接收和准备发送的数据分别存储在接收、发送buffer队列中。在普通网卡驱动中,接收、发送buffer队列之间是隔离的。接收buffer的数据通过netif函数被直接提交到上层协议栈进行处理,反过来上层应用程序通过调用xmit函数将要发送的数据则直接传递到发送buffer队列。而在本方法中提到的过滤CPU底层过驱动中,过滤CPU被设定为混杂模式,也就是驱动能够接收到所有类型的以太网报文,接收到的数据被传输到接收buffer队列后,是否被传递到发送buffer队列完成报文转发,要视报文的优先级以及当前发送buffer的使用情况而定。本发明中采用当前发送DMA通道中的空buffer数来映射当前网络带宽。具有两大技术优点一是实时性好,能够及时有效的获取当前系统带宽,从而为基于优先级的报文转发控制提供了很好的前提条件;二是与传统流量统计带宽相比较,采用发送DMA空buffer数更能有效地反映网络通道的实际利用情况,在相同流量带宽的前提下,64字节报文和1500字节报文在发送DMA通道中的占用情况差异是很大的。
报文优先级被确定后,在准确获取当前过滤CPU发送DMA通道利用效率的前提下,即可进行报文的基于优先级的转发控制,策略如下A、读取当前发送队列中的空buffer数;B、当发送队列的空buffer数大于安全门限时,认为当前网络负载较轻,不需要进行报文优先级控制,所有报文可以通过;当发送队列的空buffer数小于危险门限时,认为网络负载达到极限,停止所有报文的转发;当空buffer数介于安全门限和危险门限之间时,根据当前剩余的空buffer数目的多少以及报文优先级级别,使优先级高的用户报文优先通过的。
假定发送buffer实际可用数目为256,定义free_sendnum代表当前发送队列中的空buffer数,用户报文优先级由高到低依次为pri_th1...pri_thN。为保证CPU发送通道能够正常工作,当free_sendnum<10的时候,停止往发送队列添加一切数据;当10<free_sendnum<20的时候,允许优先级大于pri_th1的用户报文通过,其余报文丢弃;当20<free_sendnum<30的时候,允许优先级大于pri_th2的用户报文通过,其余报文丢弃;当30<free_sendnum<40的时候,允许优先级大于pri_th3的用户报文通过,其余报文丢弃;当128<free_sendnum的时候,则认为当前网络负载较轻,允许所有用户报文通过。
采用以上措施可以保证在网络负载较重的前提下,根据用户设定规则优先级别高的用户报文仍能顺利通过,从而达到了报文的优先级控制目的。
对用户新指定的规则,只需要给出和本控制规则相关的报文字段以及本规则的优先级,就可以修改底层数据结构中相关变量,然后重复上述报文处理流程即可。
本发明在嵌入式处理平台上,通过对用户报文进行信息提取、优先级判定、底层驱动对报文转发控制等手段实现了报文的优先级转发通信,同时用户可以针对IP、MAC、VID、报文协议类型组合后进行优先级别的设定,也可以针对某一个关心的单项参数进行分段、单条的优先级设定。
运用本发明所述的方法设计的交换机不仅可以实现报文的优先级控制,同时管理起来简单方便,提高了网络运营效率。同时对用户的新规则需求的支持,在原有报文处理基础上升级起来非常方便,对网络处理器类型也没有严格要求,因此系统具备很强的扩展性。
权利要求
1.一种基于报文优先级控制报文传输的方法,该方法包括以下步骤第一步设定用户报文优先级;第二步提取用户报文中的有效信息;第三步判定用户报文的优先级别;第四步根据用户报文的优先级别转发用户报文。
2.根据权利要求1所述的一种基于报文优先级控制报文传输的方法,其特征在于本发明基于用户的MAC、IP、VID、报文协议类型控制项设定用户报文的优先级级别。
3.根据权利要求2所述的一种基于报文优先级控制报文传输的方法,其特征在于本发明可以选择MAC、IP、VID、报文协议类型这四项控制项中的任意一项或几项加以组合设定用户报文的优先级顺序;并且针对某一个具体控制项还可以进行内部优先级的设定。
4.根据权利要求1所述的一种基于报文优先级控制报文传输的方法,其特征在于所述第四步根据用户报文的优先级别转发用户报文,具体包括以下步骤A、读取当前发送队列中的空buffer数;B、当发送队列的空buffer数大于安全门限时,认为当前网络负载较轻,不需要进行报文优先级控制,所有报文可以通过;当发送队列的空buffer数小于危险门限时,认为网络负载达到极限,停止所有报文的转发;当空buffer数介于安全门限和危险门限之间时,根据当前剩余的空buffer数目的多少以及报文优先级级别,使优先级高的用户报文优先通过的。
全文摘要
本发明公开了一种基于报文优先级控制报文传输的方法,该方法包括以下步骤1.设定用户报文优先级;2.提取用户报文中的有效信息;3.判定用户报文的优先级别;4.根据用户报文的优先级别转发用户报文。由于本发明依据用户设定的报文优先级规则,通过对用户报文特征进行提取,对报文进行优先级判别,然后依据报文优先级高低结合网络当前负载情况来控制报文的转发,所以,本发明可以在网络负载较重的情况下,保证优先级高的报文正常通信;减轻了网络管理人员的负担,提高了网络运营效率。
文档编号H04L12/56GK1917469SQ20051009086
公开日2007年2月21日 申请日期2005年8月18日 优先权日2005年8月18日
发明者商庆坤, 王思劼, 郝长鹏, 杨雪文 申请人:中国长城计算机深圳股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1