Linux系统下基于802.1p的数据帧绝对优先级调度方法

文档序号:8003231阅读:1203来源:国知局

专利名称::Linux系统下基于802.1p的数据帧绝对优先级调度方法
技术领域
:本发明涉及IPQoS区分服务模型
技术领域
,具体涉及Linux系统下基于802.Ip的数据帧绝对优先级调度方法。
背景技术
:随着各种接入技术(EP0N,GP0N)的日趋成熟,IP网络的传输能力大大加强,新的业务也不断涌现。对IP网络的服务质量也提出了新的要求,例如VoIP、IPTV等实时业务对数据包的传输延迟提出了较高要求,如果数据包的传送延时太长,将是用户所不能接受的。为了支持具有不同服务质量需求的语音、视频以及数据等业务,要求IP网络具备区分业务以及提供有效服务质量保证的能力,QoS(Qualityofkrvice,服务质量)技术的出现便致力于解决这个问题。为满足IP网络上多种业务对QoS的需求,Internet工程任务组(IETF)先后制定了两种QoS服务模型集成服务(Interkrv)/RSVP模型和区分服务(DiffServ)模型。集成服务/RSVP模型能够提供有绝对保证的QoS,但扩展性不好,对路由器的要求较高,实现相对复杂。区分服务模型(DifTServ)扩展性较好,便于实现,不影响路由等优点,目前在终端接入设备中广泛使用。对于区分服务模型来说,业务流需要一个全网统一的优先级标记方式。在802.Ip协议中,以太网帧携带VLANTAG(VLAN标签)时,可以通过VLANTAG的优先级字段来携带优先级信息。具体地说,802.Ip协议头包括一个!Bbit的优先级字段,定义了8种优先级最高优先级为7,应用于关键性网络流量,如路由选择信息协议(RIP)和开放最短路径优先(OSPF)协议的路由表更新;优先级6和5主要用于延迟敏感(delay-sensitive)应用程序,如交互式视频和语音;优先级4到1主要用于受控负载(controlled-load)应用程序,如流式多媒体(streamingmultimedia)和关键性业务流量(business-criticaltraffic)—例如,SAP数据一以及"losseligible"流量;优先级O是缺省值,并在没有设置其它优先级值的情况下自动启用。目前运营商大都采用优先级来区分业务和进行优先级调度,最典型的对应关系如下表所示ITMS管理优先级字段4优先级队列1VoIP优先级字段6优先级队列2IPTV优先级字段5优先级队列3Internet优先级字段0优先级队列4从上表中我们不难看出,上网业务优先级字段值为0,具有较低的优先级,而IPTV和VoIP等实时业务,优先级字段值分别为6和5,具有较高的优先级。根据运营商规划,在数据帧经过的每一个设备,都必须实现基于802.Ip的优先级调度,否则无法实现业务的端到端的服务质量保证。如附图1所示,用户通过宽带接入设备连接运营商网络(此处假设除宽带接入设备外的所有网络设备均实现了802.Ip优先级调度),internet连接vlan为41,优先级为0,最大下载速度为5M;IPTV连接vlan为45,优先级为5,需要的最小带宽为4M。宽带接入设备提供的下行总带宽为5M。现在用户需要同时观看IPTV和进行internet高速下载,正常观看IPTV需要4M带宽,而internet高速下载最大可达5M流量,这样两流量相加为9M,远远的超出5M的带宽限制,如果在宽带接入设备上不进行有效的优先级调度的话,internet下载必将影响用户观看IPTV,这是用户所不能接受的。为提供用户满意的服务,在宽带接入设备上实现基于802.Ip的绝对优先级调度势在必行。宽带接入设备多采用嵌入式Linux操作系统,Linux操作系统自2.2版本以后,都提供了一个功能非常强大的流量控制工具一TC,TC把队列规定(Queuingdiscipline),类(Class)、过滤器(Filter)结合在一起,可以提供和专业的带宽管理系统相媲美的流量控制管理。TC虽然使用低廉有效,但有几个缺陷1.TC对IP路由数据能提供有效的带宽管理,但对Linux系统中二层数据的调度却是无能为力;2.Linux内核桥提供了丰富的队列形式(cbq,htb,pri0),但没有一种队列可以实现限速加绝对优先级调度;3.Linux提供的过滤器不能针对数据帧的优先级字段进行分类和队列映射。如何克服和解决上述三点限制,将是利用LinuxTC工具实现基于802.Ip有效调度的关键所在。
发明内容本发明所要解决的技术问题是解决利用LinuxTC工具实现基于802.Ip有效调度的问题。为了解决上述技术问题,本发明所采用的技术方案是提供一种的Linux系统下基于802.Ip的数据帧绝对优先级调度方法,包括以下步骤A10、在网络设备驱动层,完成数据帧中优先级字段数值与s!A->nfmark的映射;A20、根据数据帧中的以太网类型,将数据帧引导进入Linux内核中的NF_IP_P0STR0UTINGhook点;A30、对从NF_IP_P0STR0UTINGhook点取出的数据帧,应用流量控制工具,通过htb与prio组合队列进行优先级调度。在上述方法中,步骤AlO的具体步骤为,AlOULinux系统宽带网络接入设备接收数据帧,并将数据帧转入网络设备驱动层;A102、检测数据帧是否携带VLAN标签,如果带有VLAN标签,则将VLAN标签中的优先级值映射为对应的slib->nfmark值;如果数据帧不带VLANTAG,则相应的slib->nfmark值为0。在上述方法中,步骤A20包括以下步骤A201、用户根据需要调度的以太网类型,向Iinux内核空间配置QoS调度的以太网类型链表;A202、利用函数br_nf_p0St_r0Uting检测数据帧的以太网类型,与以太网类型链表进行匹配,如果匹配不成功,则由Linux内核桥直接转发;否则转步骤A203;A203、将数据帧引导进入Linux内核中的NF_IP_P0STR0UTINGhook点。在上述方法中,步骤A30包括以下步骤A301、添加一条iptables规则,根据数据帧的输出端口标识,将该数据帧引导进入相应输出端口的中介队列设备IMQ;A302、在中介队列设备IMQ中添加htb与prio的组合队列;A303、以所述SlibOnfmark值为依据,利用TC过滤器将数据帧压入htb与prio组合队列不同优先级子队列中。在上述方法中,在步骤A202中,将数据帧引导进入NF_IP_P0STR0UTINGhook点时,同时将数据帧中的slib->ether_type_tc_flags值设置为0x1。在上述方法中,步骤A303的具体步骤为A3031、利用函数ipt_r0ute_h00k遍历iptables规则,判断从哪些输出端口输出的数据帧需要进行QoS调度,需要进行QoS调度的数据帧转入步骤A3032,不需要调度的数据帧转入步骤A3033;A3032、从NF_IP_P0STR0UTINGhook点取出数据帧,根据slib->nfmark值,将数据帧映射到不同的优先级队列中,htb与prio组合队列优先转发高优先级队列中的数据帧,丢弃超出带宽的低优先级队列中的数据帧;A3033、完成数据帧中s!A->nfmark与优先级值的逆映射,并从相应的输出端口输出。本发明,通过调整Iinux内核源代码,综合运用TC等系统工具,实现了对Iinux系统中二层数据802.Ip的绝对优先级的调度,从而使高优先级数据帧的带宽得到了有效保障。图1是基于802.Ip绝对优先级调度典型应用场景;图2是Linux内核桥中htb与prio组合队列示意图;图3是本发明的流程图。具体实施例方式本发明的核心是在网络设备驱动层完成数据帧中优先级字段与slib->nfmark的一一映射关系,然后再利用流量控制工具TCfilter,根据slib->nfmark,将数据帧分别压入htb与prio组合队列的不同优先级子队列,实现对数据帧的限速以及绝对优先级调度。本发明提供的方法,主要应用于宽带接入设备,且宽带接入设备提供桥接通道供用户接入运营商网络,所有数据均通过Iinux内核桥转发。如附图1所示,家庭用户通过宽带接入设备连接运营商网络,其中上网数据vlan为41、优先级值为0;IPTV数据vlan为45、优先级值为5,且用户均通过PPPoE的拨号方式连接到运营商网络。用户上网下载的最大速率为5M,保证流畅观看IPTV节目的最小带宽要求为4M,同时运营商要求宽带接入设备下行总带宽为5M。在这种情况下,如果用户在高速下载的同时在观看IPTV节目,则在宽带接入设备上,存在9M(5M+4M)数据抢占5M带宽的情景。如果宽带设备不执行有效的QoS管理,那么上网下载数据与IPTV数据将会随机的丢弃部分,从而直接导致用户无法观看到清晰流畅IPTV节目。本发明在宽带接入设备下行方向,将优先级为5的IPTV数据映射到高的优先级队列1,将普通下载数据映射到低优先级队列3,从而有效保证IPTV数据的带宽要求,使用户在高速下载的同时,享受流畅的IPTV节目。下面结合附图3对本发明的实现流程进行详细的说明,主要包括三个步骤A10、在网络设备驱动层,完成数据帧中优先级字段数值与s!A->nfmark的映射;A20、根据数据帧中的以太网类型,将需要调度的数据帧引导进入Linux内核中的NF_IP_P0STR0UTINGhook点;A30、对从NF_IP_P0STR0UTINGhook点取出的数据帧,应用流量控制工具,通过htb与prio组合队列进行优先级调度,其中htb用于限制总带宽,prio用于实现绝对优先级调度。具体地说步骤AlO的具体步骤为AlOULinux系统宽带网络接入设备接收数据帧,并将数据帧转入网络设备驱动层;A102、检测数据帧是否携带VLANTAG(VLAN标签),如果带有VLANTAG,则将VLANTAG中的优先级值映射为对应的slib->nfmark值,其对应关系为优先级0对应slib->nfmark1;优先级1对应skb->nfmark2;优先级2对应skb->nfmark3....,依次类推;如果数据帧中没有VLANTAG,则相应的slib->nfmark值为0。步骤A20的具体步骤为A201、用户根据需要调度的以太网类型,向Iinux内核空间配置QoS调度的以太网类型链表,例如=PPPoE以太网类型为0x8863或0x8864等。A202、利用函数br_nf_p0St_r0uting检测数据帧的以太网类型,依次与需要进行QoS调度的以太网类型链表中的数值进行匹配,如果匹配成功则转入步骤A203;如果匹配不成功,说明该数据帧不需要进行QoS调度,由Linux内核桥直接转发;A203、将数据帧引导进入NF_IP_P0STR0UTINGhook点,并将数据帧中的slib->ether_type_tc_flags设置为0x1,以便三层数据处理函数区分。步骤A30的具体步骤为A301、添加一条iptables规则,根据数据帧的输出端口标识,将该数据帧引导进入相应输出端口的中介队列设备IMQ;A302、在中介队列设备IMQ中添加htb与prio组合队列,htb用于限制总带宽,prio用于实现绝对优先级调度;A303、以所述SlibOnfmark值为依据,利用TC过滤器将数据帧压入htb与prio组合队列不同优先级子队列中。步骤A303的具体步骤为A3031、利用函数ipt_r0ute_h00k遍历iptables规则,判断从哪些输出端口输出的数据帧需要进行QoS调度,需要进行QoS调度的数据帧转入步骤A3032,不需要调度的数据帧转入步骤A3033。ipt_route_hook遍历的iptables规则可以由iptables命令进行配置,例如从网络接口ethO.41输出的数据帧需要压入中介队列设备imql进行QoS调度,则可以执行以下指令iptables_tmangle-AP0STR0UTING_mphysdev—physdev-outethO.41-jIMQ—todevI。A3032、从NF_IP_P0STR0UTINGhook点取出数据帧,根据数据帧中的slib->nfmark值,将数据帧映射到不同的优先级队列中,htb与prio组合队列优先转发高优先级队列中的数据帧,丢弃超出带宽的低优先级队列中的数据帧,如图2所示。例如,将SlibOnfmark值为6的数据映射到队列21命令如下tcfilteradddevimqOparent2:0protocolipprio200handle6fwclassid2:1A3033、完成数据帧中s!A->nfmark与优先级值的逆映射,并从相应的输出端口输出。本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。权利要求1.Linux系统下基于802.Ip的数据帧绝对优先级调度方法,其特征在于,包括以下步骤A10、在网络设备驱动层,完成数据帧中优先级字段数值与s!A->nfmark的映射;A20、根据数据帧中的以太网类型,将数据帧引导进入Linux内核中的NF_IP_P0STR0UTINGhook点;A30、对从NF_IP_P0STR0UTINGhook点取出的数据帧,应用流量控制工具,通过htb与prio组合队列进行优先级调度。2.如权利要求1所述的Linux系统下基于802.Ip的数据帧绝对优先级调度方法,其特征在于,步骤AlO的具体步骤为,AlOULinux系统宽带网络接入设备接收数据帧,并将数据帧转入网络设备驱动层;A102、检测数据帧是否携带VLAN标签,如果带有VLAN标签,则将VLAN标签中的优先级值映射为对应的slib->nfmark值;如果数据帧不带VLANTAG,则相应的slib->nfmark值为0。3.如权利要求1所述的Linux系统下基于802.Ip的数据帧绝对优先级调度方法,其特征在于,步骤A20包括以下步骤A201、用户根据需要调度的以太网类型,向Iinux内核空间配置QoS调度的以太网类型链表;A202、利用函数br_nf_p0St_r0Uting检测数据帧的以太网类型,与以太网类型链表进行匹配,如果匹配不成功,则由Linux内核桥直接转发;否则转步骤A203;A203、将数据帧引导进入Linux内核中的NF_IP_P0STR0UTINGhook点。4.如权利要求1所述的Linux系统下基于802.Ip的数据帧绝对优先级调度方法,其特征在于,步骤A30包括以下步骤A301、添加一条iptables规则,根据数据帧的输出端口标识,将该数据帧引导进入相应输出端口的中介队列设备IMQ;A302、在中介队列设备IMQ中添加htb与prio的组合队列;A303、以所述SlibOnfmark值为依据,利用TC过滤器将数据帧压入htb与prio组合队列不同优先级子队列中。5.如权利要求3所述的Linux系统下基于802.Ip的数据帧绝对优先级调度方法,其特征在于,在步骤A202中,将数据帧引导进入NF_IP_P0STR0UTINGhook点时,同时将数据帧中的skb->ether_type_tc_flags值设置为0x1。6.如权利要求4所述的Linux系统下基于802.Ip的数据帧绝对优先级调度方法,其特征在于,步骤A303的具体步骤为A3031、利用函数ipt_r0ute_h00k遍历iptables规则,判断从哪些输出端口输出的数据帧需要进行QoS调度,需要进行QoS调度的数据帧转入步骤A3032,不需要调度的数据帧转入步骤A3033;A3032、从NF_IP_P0STR0UTINGhook点取出数据帧,根据slib->nfmark值,将数据帧映射到不同的优先级队列中,htb与prio组合队列优先转发高优先级队列中的数据帧,丢弃超出带宽的低优先级队列中的数据帧;A3033、完成数据帧中s!A->nfmark与优先级值的逆映射,并从相应的输出端口输出。全文摘要本发明公开了一种Linux系统下基于802.1p的数据帧绝对优先级调度方法,包括以下步骤A10、在网络设备驱动层,完成数据帧中优先级字段数值与skb->nfmark的映射;A20、根据数据帧中的以太网类型,将数据帧引导进入Linux内核中的NF_IP_POSTROUTINGhook点;A30、对从NF_IP_POSTROUTINGhook点取出的数据帧,应用流量控制工具,通过htb与prio组合队列进行优先级调度。本发明,通过调整linux内核源代码,综合运用TC等系统工具,实现了对linux系统中二层数据的绝对优先级调度,从而使高优先级数据的带宽得到保障。文档编号H04L12/56GK102404226SQ20111040154公开日2012年4月4日申请日期2011年12月6日优先权日2011年12月6日发明者周转运,李长春,王志军,阳琳峰申请人:烽火通信科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1