保障多媒体业务服务质量的队列调度方法与流程

文档序号:12739697阅读:210来源:国知局
保障多媒体业务服务质量的队列调度方法与流程

本发明属于网络通信技术领域,更进一步涉及一种队列调度方法,可用于交换机转发多媒体数据包时的队列调度,进而保障多媒体业务的服务质量QoS,避免网络出现拥塞。



背景技术:

近些年来,随着互联网时代网络技术的快速发展及多媒体业务的快速膨胀,单一数据业务的传统网络也逐渐演变为图像、视频、动画等多媒体业务的综合业务网络。同时,人们对网络性能与质量的要求也越来越高,而传统的“尽力而为”的单一服务模式对所有业务流同等对待,采用先入先出的队列调度算法平等的分配带宽资源,必将导致在网络传输过程中出现延迟、抖动和丢包现象,进而影响多媒体业务的服务质量QoS。其中服务质量QoS是衡量多媒体业务服务性能的综合指标,主要包括时延、带宽、抖动和丢包率等相关性能指标。为了保障业务的服务质量QoS,出现了很多队列调度方法。

目前,主要几种队列调度方法有:先入先出调度算法FIFO,优先级调度算法PQ,加权轮询调度算法WRR等经典队列调度算法。其中,先入先出调度算法FIFO虽然实现简单,但是不对数据包进行分类,完全按照到达的顺序进行转发,所以无法保障特定业务的服务质量QoS;优先级调度算法PQ能够严格保障高优先级业务的服务质量QoS,但容易导致低优先级的业务长时间得不到调度而形成“饿死”现象;加权轮询调度算法WRR能够保障高优先级业务的服务质量,又能保障低优先级业务不被“饿死”,但是对数据包的分类粒度不够细,不能有效的防止网络拥塞。以上几种经典调度算法均不能灵活的结合多媒体业务进行分类,也不能在调度算法中嵌套其他队列调度算法,不够灵活。

现阶段,软件定义网络SDN是一种新型的网络框架,它将数据转发的控制平面和数据平面相分离,更加灵活的保障业务的服务质量QoS。其中Open vSwitch是支持软件定义网络SDN中OpenFlow协议的多层虚拟交换机,负责数据平面的数据转发工作,但是,Open vSwitch在出端口对数据包的调度只是采用了先入先出调度算法FIFO的调度算法,不能够对数据包进行分类和调度,也无法保障特定优先级业务的服务质量QoS,所以Open vSwitch在出端口数据包的队列调度有待完善。



技术实现要素:

本发明的目的是针对传统队列调度算法的不足,提出一种保障多媒体业务服务质量的队列调度方法,以对Open vSwitch虚拟交换机的数据包进行分类和调度,保障特定优先级业务的服务质量QoS。

本发明的技术思路是:通过为Open vSwitch虚拟交换机的网卡注册嵌套的队列调度规则,使数据包到达交换机的出端口时,利用该队列调度规则中的分类器Filter对多媒体业务流进行分类,将不同优先级的业务分到不同的子类当中,对并列的子类采用加权轮询调度算法WRR进行调度;再通过对每个子类设定不同的权值,使得交换机既能够保障高优先级业务尽快得到转发从而确保其带宽资源,又能够保证低优先级的业务不会被“饿死”;最后通过在每个子类当中嵌套加权随机先期检测WRED队列规则,使得当子类内部队列超过一定的长度时,在业务流进入队列之前选取一定比例的数据包进行丢弃,进而防止多媒体业务数据量过大造成网络拥塞。

根据上述思路本发明的实现步骤包括如下:

(1)设置队列规则:

(1a)设置句柄为1:0的根队列,其中前半部分1为主号码,代表队列规则编号,后半部分0为从号码;

(1b)为根队列设置4个子类,第一个子类句柄为1:1,代表控制信令类数据,其分配最大的轮询权值4;第二个子类句柄为1:2,代表音频类数据,其轮询权值设置为3;第三个子类句柄为1:3,代表视频类数据,其轮询权值设置为2;第四个子类的句柄为1:4,代表文件或者即时消息类数据,其轮询权值设置为1;

(1c)为(1b)中的4个子类分别设置分类器Filter,当业务流到达交换机出端口时,分类器Filter将业务流所属子类的句柄返回,交换机根据返回的子类句柄将数据包放入对应的子类内部队列中;

(1d)为(1b)中的每个子类嵌套一个加权随机先期检测WRED队列规则,该队列规则包括丢包最小门限minth、丢包最大门限maxth和最大丢包概率maxp这三个参数;将第一个子类丢包最小门限minth1、丢包最大门限maxth1分别设置为最高minmax和maxmax,最大丢包概率maxp1设置为0;将第二个子类丢包最小门限minth2、丢包最大门限maxth2分别设置为最低minmin和maxmin,最大丢包概率maxp2设置为0.3;将第三个子类丢包最小门限minth3、丢包最大门限maxth3分别设置为中等minmid和maxmid,其中minmid=(minmax+minmin)/2,maxmid=(maxmax+maxmin)/2,最大丢包概率maxp3设置为0.1;将第四个子类丢包最小门限minth4、丢包最大门限maxth4分别设置为中等minmid和maxmid,,最大丢包概率maxp4设置为0.2;

(2)将(1)设置的队列规则注册到Open vSwitch虚拟交换机的网卡上;

(3)当数据包到达网卡的出端口时,检查网卡是否注册了队列规则,如果注册了队列规则,执行步骤(4),否则,将数据包经由网卡直接发送出去;

(4)对数据包执行入队操作:

(4a)调用根队列规则的分类器Filter,取出数据包IP头部ToS字段值,根据ToS前3位判断出数据包的类型,分类器Filter根据数据包类型返回对应子类的句柄;

(4b)根据分类器Filter返回的子类句柄,将数据包放入该子类内部的加权随机先期检测WRED队列当中,即在放入队列之前,先计算队列的长度L,如果队列长度L小于丢包最小门限minth,则不丢弃数据包,直接将数据包放入队列;如果队列长度L大于丢包最大门限maxth,则丢弃全部到达的数据包;如果队列长度L介于丢包最小门限minth和丢包最大门限maxth之间,则根据计算出来的丢包概率P来丢弃数据包,其中丢包概率P的计算方式如下:

P=maxp*(L-minth)/(maxth-minth);

(5)采用加权轮询调度算法WRR对(1b)中4个子类内部队列中的数据包进行调度出队,将出队的数据包经由网卡直接发送出去。

本发明有如下优点:

第一,本发明根据多媒体业务流的特点将数据流分为四个子类,并且为每个子类设置了分类器Filter,分类器Filter将多媒体数据流分配到对应的子类内部队列中,并采用加权轮询调度算法WRR对子类内部队列中的数据包进行调度,使得多媒体业务的数据包得到分类处理,严格保障了高优先级业务的带宽,进而降低了高优先级业务的转发时延,即便是在多业务并发的场景下,交换机也能高效的保证高优先级业务的传输带宽;

第二,本发明由于在子类内部嵌套了加权随机先期检测WRED队列,并且根据不同业务类型对丢包的容忍程度,为队列设置了丢包最小门限minth、丢包最大门限maxth和最大丢包概率maxp三个参数,使得在业务量很大的情况下,交换机将数据包在放

入对应子类内部队列之前按照丢包概率P进行丢弃,从而避免了网络出现的拥塞。

附图说明

图1是本发明的实现流程图;

图2是本发明中的设置队列规则流程图;

图3是对本发明进行测试的网络拓扑图;

图4是对本发明的测试结果图。

具体实施方式

下面将结合附图,对本发明的实例进行详细的描述。

参照图1,本发明的实施包括设置队列规则、注册队列规则、对数据包进行入队操作、对数据包进行出队操作等,具体步骤如下:

步骤1,设置队列规则,

参照图2,本步骤的具体实现如下:

(1a)设置根队列句柄:

根队列,是整个队列规则的总入口,根队列内部包4个子类和4个分类器Filter,所有类型的多媒体数据包都会进入根队列等待被分类处理,根队列的代号被称为根队列句柄,本发明设置根队列的句柄为1:0,其中前半部分1为主号码,代表队列规则编号,后半部分0为从号码;

(1b)设置根队列的4个子类,根队列的子类是处理单个类型数据包的数据结构,每个子类都嵌套一个内部队列,用于单个类型数据包的排队,为了实现多个子类内部队列中数据包的调度,本发明为每个子类分配了一个轮询权值,每个子类都设置一个代号被称为子类句柄,其中:

第一个子类句柄为1:1,代表控制信令类数据,因该类数据最为关键重要,需要优先保障其带宽时延,所以为其分配最大的轮询权值4;

第二个子类句柄为1:2,代表音频类数据,因为该类数据对时延非常敏感,所以为其分配较大的轮询权值3;

第三个子类句柄为1:3,代表视频类数据,其轮询权值设置为2;

第四个子类的句柄为1:4,代表文件或者即时消息类数据,因该类数据对时延要求很低,所以为其分配最小的轮询权值1;

(1c)为(1b)中的4个子类分别设置分类器Filter,分类器是对多媒体数据进行分类的函数,当业务流到达交换机出端口时,分类器Filter将业务流所属子类的句柄返回,交换机根据返回的子类句柄将数据包放入对应的子类内部队列中;

(1d)为(1b)中的每个子类内部嵌套一个加权随机先期检测WRED队列,该队列包括丢包最小门限minth、丢包最大门限maxth和最大丢包概率maxp这三个参数,其中:

第一个子类代表控制信令类数据,该类数据不允许丢包,所以将丢包最小门限minth1、丢包最大门限maxth1分别设置为最高minmax和maxmax,最大丢包概率maxp1设置为0;

第二个子类代表音频类数据,该类数据对丢包最不敏感,所以将丢包最小门限minth2、丢包最大门限maxth2分别设置为最低minmin和maxmin,最大丢包概率maxp2设置为0.3;

第三个子类代表视频类数据,该类数据对丢包很敏感,但对丢包的敏感度又小于第一类数据,所以将丢包最小门限minth3、丢包最大门限maxth3分别设置为中等minmid和maxmid,其中minmid=(minmax+minmin)/2,maxmid=(maxmax+maxmin)/2,最大丢包概率maxp3设置为0.1;

第四个子类代表文件或即时消息类数据,该类数据对丢包的敏感度仅次于第三个子类,所以将丢包最小门限minth4、丢包最大门限maxth4分别设置为中等minmid和maxmid,,最大丢包概率maxp4设置为0.2。

步骤2,将步骤1设置的队列规则注册到Open vSwitch虚拟交换机的网卡上。

为了使步骤1中设置的队列规则应用到Open vSwitch虚拟交换机上,本发明将Open vSwitch虚拟交换机网卡的数据结构中添加一个队列规则成员,并将步骤1中的队列规则赋值给该成员,实现队列规则的注册,从而使Open vSwitch虚拟交换机网卡能够调用该队列规则。

步骤3,检查Open vSwitch虚拟交换机的网卡是否成功注册了队列规则。

由于步骤2中队列规则的注册操作可能会失败或由于其他操作取消了队列规则的注册,所以当数据包到达网卡的出端口时,需要检查Open vSwitch虚拟交换机的网卡是否成功注册了队列规则,如果Open vSwitch虚拟交换机网卡的队列规则成员不为空值,说明已经成功注册了队列规则,执行步骤4,否则,将数据包经由网卡直接发送出去;

步骤4,对数据包执行入队操作:

(4a)调用根队列规则的分类器Filter,取出数据包IP头部的ToS字段值,根据ToS前3位判断出数据包的类型,分类器Filter根据数据包类型返回对应子类的句柄,其中数据包IP头部的ToS字段值,按如下规则定义:

设该字段有8位二进制数,其中前3位二进制数表示数据类型,第4位和第5位表示数据包优先级,第6位、第7位、第8位保留定义;

当前3位的二进制数为001时表示控制信令类数据包,当前3位的二进制数为010时表示音频类数据包,当前3位的二进制数为011时表示视频类数据包,当前3位的二进制数为100时表示文件或即时消息类数据包;

当第4位和第5位的二进制数为00时,表示最高优先级;当第4位和第5位二进制数为11时,表示最低优先级;

(4b)根据分类器Filter返回的子类句柄,将数据包放入对应子类内部的加权随机先期检测WRED队列当中,即在放入队列之前,先计算队列的长度,再根据队列的长度决定是否丢弃数据包:

如果队列长度L小于丢包最小门限minth,则不丢弃数据包,直接将数据包放入队列;

如果队列长度L大于丢包最大门限maxth,则丢弃全部到达的数据包;

如果队列长度L介于丢包最小门限minth和丢包最大门限maxth之间,则根据计算出来的丢包概率P来丢弃数据包,其中丢包概率P的计算方式如下:

P=maxp*(L-minth)/(maxth-minth)。

步骤5,采用加权轮询调度算法WRR对(1b)中4个子类内部队列中的数据包进行调度出队,将出队的数据包经由网卡直接发送出去。

加权轮询调度算法WRR是一种可以保障队列带宽资源的现有队列调度算法,该算法中对每个队列都分配有一个轮询权值,队列分配的轮询权值与该队列分配的带宽成正比,利用该算法对4个子类内部队列中的数据包进行调度出队的实施步骤如下:

(5a)为(1b)中每个子类内部队列分别设置一个计数器,每个队列计数器的初始值被赋值为该队列在(1b)中分配的轮询权值;

(5b)在一个轮询周期开始时,4个子类内部队列轮流发送单个数据包,即每个队列发送完一个数据包后,再将出队的数据包经由网卡直接发送出去,此时相应的队列计数器的值减1,再由下一个队列继续发送单个数据包,当某个队列计数器的值减为0时,该队列在本轮询周期内将不再发送数据包,当所有队列的计数器值都减为0时,本次轮询周期结束;

(5c)用每个队列的轮询权值给每个队列的计数器重新赋值,开始下一个轮询周期的调度。

本发明的效果可通过以下仿真仿真实验进一步说明。

1.仿真实验条件:

本发明仿真实验是在linux系统,处理器Intel(R)Core(Tm)i5-2450M CPU主频2.50GHz,RAM 4GB的环境下进行的。编程语言是c语言,编程软件为code blocks,测试软件采用的是iperf网络性能测试工具。

2.仿真实验内容及结果分析:

本实验采用iperf模拟各种类型的多媒体业务数据流,iperf是一种网络性能测试工具,能够模拟UDP、TCP流量,并且能够修改流量数据包的ToS字段值。iperf是服务器-客户端的工作模式,发送端运行客户端发送流量,接收端运行服务器接收流量,iperf能够在发送端客户端实时显示发送速率,接收端服务器显示接收速率等信息。

本实验的网络拓扑如图3,在linux系统下,设置四个iperf客户端用于发送四种不同类型的多媒体数据:客户端1将数据流的IP报头中ToS字段前3位设置为001,代表控制信令类数据;客户端2将数据流的IP报头中ToS字段前3位设置为010,代表音频类数据;客户端3将数据流的IP报头中ToS字段前3位设置为011,代表视频类数据;客户端4将数据流的IP报头中ToS字段前3位设置为100,代表文件或即时消息类数据。同时设置4个iperf服务器用于在另一端接收对应类型的多媒体数据。其中4个iperf客户端和4个iperf服务器之间经过安装队列规则的Open vSwitch虚拟交换机进行传输,交换机设置为限速为100M带宽。

实验步骤:

开始时,第四客户端4经由Open vSwitch交换机持续向第四服务器4发送文件或即时消息数据流,并根据第四客户端4界面显示的发送带宽记录文件或即时消息数据占用的带宽值;

接着,在第30秒时,第三客户端3经由Open vSwitch交换机持续向第三服务器3发送视频类数据流,并根据第三客户端3界面显示的发送带宽记录视频类数据占用的带宽值;

接着,在第60秒时,第二客户端2经由Open vSwitch交换机持续向第二服务器2发送音频类数据流,并根据第二客户端2界面显示的发送带宽记录音频类数据占用的带宽值;

最后,在第90秒时,第一客户端1经由Open vSwitch交换机持续向第一服务器1发送控制信令类数据流,并根据第一客户端1界面显示的发送带宽记录控制类数据占用的带宽值;

分别统计上述实验四种类型的数据在每个步骤中的发送带宽值,根据此结果绘制每个类型数据包在各个时间段的带宽值,如图4所示,由图4实验结果分析可见各类数据包的发送带宽与设置的轮询权值成正比,其中:

在0到30s期间,客户端4发送的文件或即时消息类数据流独占链路,所以此时文件传输所占带宽为100Mbit/s;

在30s到60s期间,客户端3也开始发送视频类数据流,此时文件或即时消息类数据流所占带宽为33.3Mbit/s,视频类数据流所占带宽为66.6Mbit/s,符合两者轮询权值1:2的比例设定;

在60s到90s期间,客户端2也开始发送音频类数据,此时文件或即时消息类数据流所占带宽为16.6Mbit/s,视频类数据流所占带宽为33.3Mbit/s,音频类数据流所占带宽为50Mbit/s,符合三者轮询权值1:2:3的比例设定;

在90s到120s期间,客户端1也可是发送控制类数据流,此时文件或即时消息类数据流所占带宽为10Mbit/s,视频类数据流所占带宽为20Mbit/s,音频类数据流所占带宽为30Mbit/s,控制信令类数据流所占带宽为40Mbit/s,符合轮询权值1:2:3:4的比例设定。

综上所述,实验结果符合设定的队列调度规则,能够实现保证各类数据流带宽的功能。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1