一种基于OpenFlow网络的QoS管理方法_2

文档序号:9730106阅读:来源:国知局
队列里分两个优先级,把EF流定 为局优先级,其余流定为低优先级,只有当EF流发送完后,才开始发送其余的流。
[0037] 当出队列达到指定长度时就开始对到来数据进行丢弃,丢弃的概率与当前队列的 长度正相关,此算法能解决TCP的全局同步问题,但算法进行丢包时并没有考虑到不同业务 的优先级,所W后来思科公司提出了加权随机早期检测算法,此算法考虑了不同业务的优 先级,当网络发生拥塞,或快要发生拥塞时优先丢弃优先级低的数据包。
[0038] 当选择最短路径作为路由时,最短路径会使网络整体链路利用率增加的最少,即 其消耗的网络资源最少,从而使将来的流的需求更容易得到满足。假如选择一条链路代价 总和最小的路作为路由则对运条流的服务质量最有保证。
[0039] 在尝试进行路径迁移时,先找到网络中链路利用率最高的链路,找到经过运条链 路的流量最大的k个流,依次进行尝试,尝试方法为再次运行路由算法,如果迁移后能降低 网络的最高链路利用率则进行迁移,然后退出迁移算法,若不能则继续对其余的属于前k的 流进行尝试,直到其中一个成功或所有都失败,算法结束。
[0040] 本发明基于软件定义网络,从数据层和控制层对当前网络的QoS问题提供了一套 管理方法。具体步骤包括:
[0041] (1)在数据层上进行数据分类:区分服务模型将IP包头中的8位服务类型字段重新 定义为区分服务字段DS,用来区分不同业务,表示不同的优先级。虽然服务类型字段字段有 8位,但目前只用到了前6位,从理论上说前六位不同则服务优先级不同,运个值越大对应的 服务优先级也越高。国际互联网工程任务组已经定义了 3种大的服务类别。分别是EF(加速 转发)适用于对QoS要求特别高的业务,主要是低延迟,低丢包。AF(保证转发)适用于对QoS 要求稍低的业务,AF又分为四个不同级别。BE(尽力而为)适用于对QoS没有要求的业务,不 同的应用种类需要网络提供不同的服务质量。
[0042] (2)在数据层上进行队列调度:首先介绍两种常用队列调度算法。
[0043] WRR加权循环调度算法可W为不同类数据提供不同的优先级服务,但是WRR算法是 基于数据包的,如果不同类数据的平均数据包大小差别较大的话则WRR算法会变得偏向于 平均数据包大的队列。使得平均数据包大的业务占优势。
[0044] DRR差额循环队列调度算法,是对WRR调度算法的改进,将WRR中的数据包个数,变 为字节数,为每个队列维护一个权值Q(Q为定值),和一个差额D。算法最初运行时需设置每 个队列的Q值,并将每个队列的D值变为0。在每一轮调度中,一个队列需发送尽量多的的数 据包,且发送的字节数少于等于Q+D,并保证按序发送,若发送了 N个数据包,则需满足Q+D大 于等于运N个数据包长度,且运N个数据包长度加上运个队列下一个要发送的数据包长度需 大于Q+D,发送完毕后,若队列为空则把D值设置为0,不为空则D = Q+D-sencLsend为运个队 列运一轮发送的字节数。DRR算法可W为不同业务,提供更为精准的优先级服务。
[0045] 本发明选取一种PQ队列调度与DR郎人列调度相结合的方法。
[0046] 即用双层队列进行调度,第一层队列为PQ队列,运个队列里分两个优先级,把EF流 定为高优先级,其余流定为低优先级,只有当EF流发送完后,才开始发送其余的流,其余的 流发送采用DR郎人列调度算法。当正在发送非EF数据包时,EF数据包到来,则发送完当前数 据包后对DRR运行状态保存,然后开始发送EF数据包,直至EF队列为空,然后接着运行DRR调 度算法(有点像中断的处理过程,但比中断效率高)。
[0047] 之所W在运里选取PQ队列调度与DR郎λ列调度相结合的方法,主要是为了吸取PQ 算法可W保证高优先级业务低时延的优点,和DRR算法较为精准的区分服务特性,但又同时 擬弃了PQ算法的缺点,低优先级的业务可能会被饿死(长期得不到调度)dEF类业务被设为 高优先级,EF类业务主要是指VOIP业务,W及网络协议控制报文(在本发明中归为EF类,实 际上其优先级比EF类高),对于VOIP业务如果延迟能控制在50msW内,则网络电话就能取得 较好的通话质量,会使更多的人选用网络电话,运样就可W降低人们的通信费用。对于本发 明所采用的双层队列调度算法,则能充分降低VOIP业务的延迟,可W说明的是运种低延迟, 是单独使用DRR算法所达不到的,因为在DRR算法中不论给EF流配置多大权重,当他下次发 送时都必须等待其余所有的数据流都发送一遍,但在运种双层的队列调度算法中当EF流到 达时,他最多只等待发送一个数据包的时间,同时由于EF数据流本身流量并不大,而且只为 EF数据流配置了高优先级,则不会出现低优先级业务饿死现象。
[0048] (3)在数据层上进行队列管理:列管理的初衷是,网络中的数据流量很大,超出了 网络的能力时则必须对一部分数据进行丢弃,最原始的方法是当发送队列到达一定长度时 再来的数据包就会直接被丢弃,但我们知道网络中很多数据是用的是TCP传输,如果当队列 满时对所有来的数据都丢弃的话,则很有可能会丢弃一些不同的TCP连接上的数据,会使运 些TCP连接同时调整自己的发送速度,发送窗口减半或变为1,同时启动拥塞避免算法或慢 开始算法,造成TCP的全局同步,则网络流量会迅速下降,运样网络得不到充分利用,而后它 们又会在某个时刻同时达到速度的高峰,则又会出现尾丢弃,如此反复循环,最终导致网络 资源得不到充分利用。
[0049] 后来就出现了 R抓随机早期检测算法,当出队列达到一定长度时就开始W-定概 率对到来数据进行丢弃,丢弃的概率与当前队列的长度正相关,此算法能解决TCP的全局同 步问题,但Rm)算法进行丢包时并没有考虑到不同业务的优先级,所W后来思科公司提出了 WRm)加权随机早期检测算法,此算法考虑了不同业务的优先级,当网络发生拥塞,或快要发 生拥塞时优先丢弃优先级低的数据包。
[0050] 本发明采用WR抓算法来进行队列管理,下面对本发明采用的WR抓算法进行讲解。 在交换机的每个出端日,会汇集6个等待发送的队列,分别是EF数据队列,AF1数据队列,AF2 数据队列,AF3数据队列,AF4数据队列,BE数据队列,为运6个队列分别设置自己的丢包长度 下限,丢包长度上限,基准丢包率,分别记为1111叫1,111曰《91,93。还需要计算出每个队列的平 均长度,记为日¥旨91.对于6。队列其四个数据分别表示为6。_111;[叫1、6。_1]1日义91、6。_93和6尸_ avgl,其余表示方法类似。
[0051] 当一个数据包到来,会先被分类,然后被送到对应的出端口,假设它被分为EF类, 则如果EF_avgl小于等于EF_minql则运个包可W进入EF队列排队,若EF_avgl大于EF_maxql 则会对运个包进行丢弃处理。若EF_avgl在EF_minql与EF_maxql之间则其W-定概率被丢 弃。
[0052] 具体概率为6。_98*化。_日¥旨]_斗。_111;[叫1)/化。_1]1日义91斗。_111;[叫1)。
[0053] 对于其余类流处理方法类似,只需把上述中的EF换为对应值即可。运里之所W采 用平均队列长度,而不是当前队列长度主要是为了应对突发的流量,比如一个数据流上一 秒到来了很多数据,而下一秒数据很少,则采用当前队列长度很有可能会对它到来的第一 批数据进行不正确丢弃,而采用平均队列长度则可W避免运一现象。
[0054] 平均队列长度计算方法为:
[0055] Avgql=last_avgql*(l-x)+x*ql〇
[0056] 其中last_avgql表示W前他的平均队列长度,ql表示当前队列长度,χ=1/2η,η为 可配置的参数取大于1的整数,η越大则当前队列长度的权重越小,平均队列长度变化越平 滑。
[0057] (4)在控制层上根据数据流的类型和网络当前状况进行首次路由:控制器每隔一 段时间就向化enFlow交换机发送Read-s化te请求统计报文,获知交换机统计项里的流接收 字节数,但计算一个流的速度选用的是所
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1