CN102404226B - Linux系统下基于802.1p的数据帧绝对优先级调度方法 - Google Patents
Linux系统下基于802.1p的数据帧绝对优先级调度方法 Download PDFInfo
- Publication number
- CN102404226B CN102404226B CN201110401547.9A CN201110401547A CN102404226B CN 102404226 B CN102404226 B CN 102404226B CN 201110401547 A CN201110401547 A CN 201110401547A CN 102404226 B CN102404226 B CN 102404226B
- Authority
- CN
- China
- Prior art keywords
- frame
- priority
- steps
- skb
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种Linux系统下基于802.1p的数据帧绝对优先级调度方法,包括以下步骤:A10.在网络设备驱动层,完成数据帧中优先级字段数值与skb->nfmark的映射;A20.根据数据帧中的以太网类型,将数据帧引导进入Linux内核中的NF_IP_POSTROUTINGhook点;A30.对从NF_IP_POSTROUTINGhook点取出的数据帧,应用流量控制工具,通过htb与prio组合队列进行优先级调度。本发明通过调整linux内核源代码,综合运用TC等系统工具,实现了对linux系统中二层数据的绝对优先级调度,从而使高优先级数据的带宽得到保障。
Description
技术领域
本发明涉及IP QoS区分服务模型技术领域,具体涉及Linux系统下基于802.1p的数据帧绝对优先级调度方法。
背景技术
随着各种接入技术(EPON,GPON)的日趋成熟,IP网络的传输能力大大加强,新的业务也不断涌现。对IP网络的服务质量也提出了新的要求,例如VoIP、IPTV等实时业务对数据包的传输延迟提出了较高要求,如果数据包的传送延时太长,将是用户所不能接受的。为了支持具有不同服务质量需求的语音、视频以及数据等业务,要求IP网络具备区分业务以及提供有效服务质量保证的能力,QoS(Quality of Service,服务质量)技术的出现便致力于解决这个问题。
为满足IP网络上多种业务对QoS的需求,Internet工程任务组(IETF)先后制定了两种QoS服务模型:集成服务(InterServ)/RSVP模型和区分服务(DiffServ)模型。
集成服务/RSVP模型能够提供有绝对保证的QoS,但扩展性不好,对路由器的要求较高,实现相对复杂。区分服务模型(DiffServ)扩展性较好,便于实现,不影响路由等优点,目前在终端接入设备中广泛使用。
对于区分服务模型来说,业务流需要一个全网统一的优先级标记方式。在802.1p协议中,以太网帧携带VLAN TAG(VLAN标签)时,可以通过VLAN TAG的优先级字段来携带优先级信息。具体地说,802.1p协议头包括一个3bit的优先级字段,定义了8种优先级:最高优先级为7,应用于关键性网络流量,如路由选择信息协议(RIP)和开放最短路径优先(OSPF)协议的路由表更新;优先级6和5主要用于延迟敏感(delay-sensitive)应用程序,如交互式视频和语音;优先级4到1主要用于受控负载(controlled-load)应用程序,如流式多媒体(streaming multimedia)和关键性业务流量(business-critical traffic)-例如,SAP 数据-以及 "loss eligible" 流量;优先级0是缺省值,并在没有设置其它优先级值的情况下自动启用。
目前运营商大都采用优先级来区分业务和进行优先级调度,最典型的对应关系如下表所示:
ITMS管理 | 优先级字段:4 | 优先级队列1 |
VoIP | 优先级字段:6 | 优先级队列2 |
IPTV | 优先级字段:5 | 优先级队列3 |
Internet | 优先级字段:0 | 优先级队列4 |
从上表中我们不难看出,上网业务优先级字段值为0,具有较低的优先级,而IPTV和VoIP等实时业务,优先级字段值分别为6和5,具有较高的优先级。
根据运营商规划,在数据帧经过的每一个设备,都必须实现基于802.1p的优先级调度,否则无法实现业务的端到端的服务质量保证。
如附图1所示,用户通过宽带接入设备连接运营商网络(此处假设除宽带接入设备外的所有网络设备均实现了802.1p优先级调度),internet连接vlan为41,优先级为0,最大下载速度为5M;IPTV连接vlan为45,优先级为5,需要的最小带宽为4M。宽带接入设备提供的下行总带宽为5M。现在用户需要同时观看IPTV和进行internet高速下载,正常观看IPTV需要4M带宽,而internet高速下载最大可达5M流量,这样两流量相加为9M,远远的超出5M的带宽限制,如果在宽带接入设备上不进行有效的优先级调度的话,internet下载必将影响用户观看IPTV,这是用户所不能接受的。
为提供用户满意的服务,在宽带接入设备上实现基于802.1p的绝对优先级调度势在必行。宽带接入设备多采用嵌入式Linux操作系统,Linux操作系统自2.2版本以后,都提供了一个功能非常强大的流量控制工具--TC,TC把队列规定(Queuing discipline)、类(Class)、过滤器(Filter)结合在一起,可以提供和专业的带宽管理系统相媲美的流量控制管理。TC虽然使用低廉有效,但有几个缺陷:
1. TC对IP路由数据能提供有效的带宽管理,但对Linux系统中二层数据的调度却是无能为力;
2. Linux内核桥提供了丰富的队列形式(cbq,htb,prio),但没有一种队列可以实现限速加绝对优先级调度;
3. Linux提供的过滤器不能针对数据帧的优先级字段进行分类和队列映射。
如何克服和解决上述三点限制,将是利用Linux TC工具实现基于802.1p有效调度的关键所在。
发明内容
本发明所要解决的技术问题是解决利用Linux TC工具实现基于802.1p有效调度的问题。
为了解决上述技术问题,本发明所采用的技术方案是提供一种的Linux系统下基于802.1p的数据帧绝对优先级调度方法,包括以下步骤:
A10、在网络设备驱动层,完成数据帧中优先级字段数值与skb->nfmark的映射;
A20、根据数据帧中的以太网类型,将数据帧引导进入Linux内核中的NF_IP_POSTROUTING hook点;
A30、对从NF_IP_POSTROUTING hook点取出的数据帧,应用流量控制工具,通过htb与prio组合队列进行优先级调度。
在上述方法中,步骤A10的具体步骤为,
A101、Linux系统宽带网络接入设备接收数据帧,并将数据帧转入网络设备驱动层;
A102、检测数据帧是否携带VLAN标签,如果带有VLAN 标签,则将VLAN 标签中的优先级值映射为对应的skb->nfmark值;如果数据帧不带VLAN TAG,则相应的skb->nfmark值为0。
在上述方法中,步骤A20包括以下步骤:
A201、用户根据需要调度的以太网类型,向linux内核空间配置QoS调度的以太网类型链表;
A202、利用函数br_nf_post_routing检测数据帧的以太网类型,与以太网类型链表进行匹配,如果匹配不成功,则由Linux内核桥直接转发;否则转步骤A203;
A203、将数据帧引导进入Linux内核中的NF_IP_POSTROUTING hook点。
在上述方法中,步骤A30包括以下步骤:
A301、添加一条iptables规则,根据数据帧的输出端口标识,将该数据帧引导进入相应输出端口的中介队列设备IMQ;
A302、在中介队列设备IMQ中添加htb与prio的组合队列;
A303、以所述skb->nfmark值为依据,利用TC过滤器将数据帧压入htb与prio组合队列不同优先级子队列中。
在上述方法中,在步骤A202中,将数据帧引导进入NF_IP_POSTROUTING hook点时,同时将数据帧中的skb->ether_type_tc_flags值设置为0x1。
在上述方法中,步骤A303的具体步骤为:
A3031、利用函数ipt_route_hook遍历iptables规则,判断从哪些输出端口输出的数据帧需要进行QoS调度,需要进行QoS调度的数据帧转入步骤A3032,不需要调度的数据帧转入步骤A3033;
A3032、从NF_IP_POSTROUTING hook点取出数据帧,根据skb->nfmark值,将数据帧映射到不同的优先级队列中,htb与prio组合队列优先转发高优先级队列中的数据帧,丢弃超出带宽的低优先级队列中的数据帧;
A3033、完成数据帧中skb->nfmark与优先级值的逆映射,并从相应的输出端口输出。
本发明,通过调整linux内核源代码,综合运用TC等系统工具,实现了对linux系统中二层数据802.1p的绝对优先级的调度,从而使高优先级数据帧的带宽得到了有效保障。
附图说明
图1是基于802.1p绝对优先级调度典型应用场景;
图2是Linux内核桥中htb与prio组合队列示意图;
图3是本发明的流程图。
具体实施方式
本发明的核心是:在网络设备驱动层完成数据帧中优先级字段与skb->nfmark的一一映射关系,然后再利用流量控制工具TC filter,根据skb->nfmark,将数据帧分别压入htb与prio组合队列的不同优先级子队列,实现对数据帧的限速以及绝对优先级调度。
本发明提供的方法,主要应用于宽带接入设备,且宽带接入设备提供桥接通道供用户接入运营商网络,所有数据均通过linux内核桥转发。
如附图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、在网络设备驱动层,完成数据帧中优先级字段数值与skb->nfmark的映射;
A20、根据数据帧中的以太网类型,将需要调度的数据帧引导进入Linux内核中的NF_IP_POSTROUTING hook点;
A30、对从NF_IP_POSTROUTING hook点取出的数据帧,应用流量控制工具,通过htb与prio组合队列进行优先级调度,其中htb用于限制总带宽,prio用于实现绝对优先级调度。
具体地说:
步骤A10的具体步骤为:
A101、Linux系统宽带网络接入设备接收数据帧,并将数据帧转入网络设备驱动层;
A102、检测数据帧是否携带VLAN TAG(VLAN标签),如果带有VLAN TAG,则将VLAN TAG中的优先级值映射为对应的skb->nfmark值,其对应关系为:优先级 0对应skb->nfmark 1;优先级1对应skb->nfmark 2;优先级2对应skb->nfmark 3....,依次类推;如果数据帧中没有VLAN TAG,则相应的skb->nfmark值为0。
步骤A20的具体步骤为:
A201、用户根据需要调度的以太网类型,向linux内核空间配置QoS调度的以太网类型链表,例如:PPPoE以太网类型为0x8863或0x8864等。
A202、利用函数br_nf_post_routing检测数据帧的以太网类型,依次与需要进行QoS调度的以太网类型链表中的数值进行匹配,如果匹配成功则转入步骤A203;如果匹配不成功,说明该数据帧不需要进行QoS调度,由Linux内核桥直接转发;
A203、将数据帧引导进入NF_IP_POSTROUTING hook点,并将数据帧中的skb->ether_type_tc_flags设置为0x1,以便三层数据处理函数区分。
步骤A30的具体步骤为:
A301、添加一条iptables规则,根据数据帧的输出端口标识,将该数据帧引导进入相应输出端口的中介队列设备IMQ;
A302、在中介队列设备IMQ中添加htb与prio组合队列,htb用于限制总带宽,prio用于实现绝对优先级调度;
A303、以所述skb->nfmark值为依据,利用TC过滤器将数据帧压入htb与prio组合队列不同优先级子队列中。
步骤A303的具体步骤为:
A3031、利用函数ipt_route_hook遍历iptables规则,判断从哪些输出端口输出的数据帧需要进行QoS调度,需要进行QoS调度的数据帧转入步骤A3032,不需要调度的数据帧转入步骤A3033。
ipt_route_hook遍历的iptables规则可以由iptables命令进行配置,例如从网络接口eth0.41输出的数据帧需要压入中介队列设备imq1进行QoS调度,则可以执行以下指令:
iptables -t mangle -A POSTROUTING -m physdev --physdev-out eth0.41 -j IMQ --todev 1。
A3032、从NF_IP_POSTROUTING hook点取出数据帧,根据数据帧中的skb->nfmark值,将数据帧映射到不同的优先级队列中,htb与prio组合队列优先转发高优先级队列中的数据帧,丢弃超出带宽的低优先级队列中的数据帧,如图2所示。
例如,将skb->nfmark值为6的数据映射到队列2:1命令如下:
tc filter add dev imq0 parent 2:0 protocol ip prio 200 handle 6 fw classid 2:1
A3033、完成数据帧中skb->nfmark与优先级值的逆映射,并从相应的输出端口输出。
本发明不局限于上述最佳实施方式,任何人应该得知在本发明的启示下作出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。
Claims (3)
1.Linux系统下基于802.1p的数据帧绝对优先级调度方法,其特征在于,包括以下步骤:
A10、在网络设备驱动层,完成数据帧中优先级字段数值与skb->nfmark的映射;
A20、根据数据帧中的以太网类型,将数据帧引导进入Linux内核中的NF_IP_POSTROUTING hook点,同时将数据帧中的skb->ether_type_tc_flags值设置为0x1;
A30、对从NF_IP_POSTROUTING hook点取出的数据帧,应用流量控制工具,通过htb与prio组合队列进行优先级调度;
步骤A30包括以下步骤:
A301、添加一条iptables规则,根据数据帧的输出端口标识,将该数据帧引导进入相应输出端口的中介队列设备IMQ;
A302、在中介队列设备IMQ中添加htb与prio的组合队列;
A303、以所述skb->nfmark值为依据,利用TC过滤器将数据帧压入htb与prio组合队列不同优先级子队列中;
步骤A303的具体步骤为:
A3031、利用函数ipt_route_hook遍历iptables规则,判断从哪些输出端口输出的数据帧需要进行QoS调度,需要进行QoS调度的数据帧转入步骤A3032,不需要调度的数据帧转入步骤A3033;
A3032、从NF_IP_POSTROUTING hook点取出数据帧,根据skb->nfmark值,将数据帧映射到不同的优先级队列中,htb与prio组合队列优先转发高优先级队列中的数据帧,丢弃超出带宽的低优先级队列中的数据帧;
A3033、完成数据帧中skb->nfmark与优先级值的逆映射,并从相应的输出端口输出。
2.如权利要求1所述的Linux系统下基于802.1p的数据帧绝对优先级调度方法,其特征在于,步骤A10的具体步骤为,
A101、Linux系统宽带网络接入设备接收数据帧,并将数据帧转入网络设备驱动层;
A102、检测数据帧是否携带VLAN标签,如果带有VLAN标签,则将VLAN标签中的优先级值映射为对应的skb->nfmark值;如果数据帧不带VLANTAG,则相应的skb->nfmark值为0。
3.如权利要求1所述的Linux系统下基于802.1p的数据帧绝对优先级调度方法,其特征在于,步骤A20包括以下步骤:
A201、用户根据需要调度的以太网类型,向linux内核空间配置QoS调度的以太网类型链表;
A202、利用函数br_nf_post_routing检测数据帧的以太网类型,与以太网类型链表进行匹配,如果匹配不成功,则由Linux内核桥直接转发;否则转步骤A203;
A203、将数据帧引导进入Linux内核中的NF_IP_POSTROUTING hook点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110401547.9A CN102404226B (zh) | 2011-12-06 | 2011-12-06 | Linux系统下基于802.1p的数据帧绝对优先级调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110401547.9A CN102404226B (zh) | 2011-12-06 | 2011-12-06 | Linux系统下基于802.1p的数据帧绝对优先级调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102404226A CN102404226A (zh) | 2012-04-04 |
CN102404226B true CN102404226B (zh) | 2015-01-14 |
Family
ID=45886029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110401547.9A Active CN102404226B (zh) | 2011-12-06 | 2011-12-06 | Linux系统下基于802.1p的数据帧绝对优先级调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102404226B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012210126A1 (de) | 2012-06-15 | 2013-12-19 | Siemens Aktiengesellschaft | Verfahren zum Betreiben einer Netzwerkanordnung, Netzwerkeinrichtung und Netzwerkanordnung |
CN103560970A (zh) * | 2013-09-25 | 2014-02-05 | 深圳市共进电子股份有限公司 | 一种对具有多lan口的网络设备下行限速的实现方法 |
CN104539555B (zh) * | 2014-11-28 | 2018-10-09 | 深圳市共进电子股份有限公司 | 一种上行业务数据的处理方法及装置 |
CN107659449A (zh) * | 2017-09-27 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种保证管理系统服务质量的方法和装置 |
CN112511461A (zh) * | 2020-11-06 | 2021-03-16 | 无锡江南计算技术研究所 | 一种面向申威平台的网络数据包的调度方法 |
CN112953848B (zh) * | 2021-03-12 | 2023-05-02 | 西安电子科技大学 | 一种基于严格优先级的流量监管方法、系统及设备 |
CN113630339A (zh) * | 2021-08-04 | 2021-11-09 | 安超云软件有限公司 | 流量转发方法及装置、电子设备和存储介质 |
CN114268623B (zh) * | 2021-12-29 | 2024-04-05 | 深圳前海同益网络技术有限公司 | 一种实现应用网络优先级设定的方法及系统 |
-
2011
- 2011-12-06 CN CN201110401547.9A patent/CN102404226B/zh active Active
Non-Patent Citations (2)
Title |
---|
基于Netfilter/Iptable和TC的带宽管理设计与实现;郑伟发 杨创新;《华南金融电脑》;20090410;第2页第3段第1-18行、第5段、第6段第1-4行、图2 * |
支持QoS的实时Linux系统QR-Linux;王永新;《大连理工大学硕士学位论文》;20060415;正文部分第31页第3-6行、第32页第4-6行、第33页第1-5行、第14-21行、图4.10 * |
Also Published As
Publication number | Publication date |
---|---|
CN102404226A (zh) | 2012-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102404226B (zh) | Linux系统下基于802.1p的数据帧绝对优先级调度方法 | |
CA2832448C (en) | Packet scheduling method and apparatus | |
CN104378309B (zh) | OpenFlow网络中实现QoS的方法、系统和相关设备 | |
US7693985B2 (en) | Technique for dispatching data packets to service control engines | |
US8867349B2 (en) | Regulation of network traffic in virtual private networks | |
CN106341346A (zh) | 基于SDN的数据中心网络中一种保障QoS的路由算法 | |
CN101068227B (zh) | 一种基于家庭网关和预留带宽技术以保障QoS的系统及其方法 | |
CN102811159B (zh) | 一种上行业务的调度方法及装置 | |
CN105634991B (zh) | 一种实现业务带宽分配的方法及装置 | |
US8233390B2 (en) | Priority and source aware packet memory reservation and flow control in forwarding planes | |
CN106161275A (zh) | 针对服务质量的预测出口分组分类 | |
CN111082955A (zh) | 一种网络切片的方法、计算机设备及存储介质 | |
CN101127723B (zh) | 多协议标签交换三层虚拟专用网服务质量保障方法 | |
CN101924781A (zh) | 终端设备及其QoS实施方法以及流分类器 | |
CN102546395B (zh) | 基于l2vpn网络的业务调度方法和装置 | |
CN102377645B (zh) | 交换芯片及其实现方法 | |
CN105281986A (zh) | 数据流的传输方法、装置及系统 | |
US20130108269A1 (en) | Apparatus and method for controlling vpn service | |
CN107786468B (zh) | 基于HQoS的MPLS网络带宽分配方法及装置 | |
US8953449B2 (en) | Virtual subport data traffic management | |
CN109286566A (zh) | Hybrid交换机中的Qos模块分类实现方法及系统 | |
US8305918B2 (en) | Method of configuring the quality-of-service profile of a given stream at an access node of a packet communications network | |
CN112468411B (zh) | 一种网络设备qos的部署方法、装置及设备 | |
Iwasawa et al. | Flexible Time-Aware Shaper Scheduling System for a Multitenancy Environment | |
KR100569193B1 (ko) | E-PON OLT 시스템에서 802.1p를 이용한품질보장형 VOD 서비스 제공 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |