欢迎来到天天文库
浏览记录
ID:50536227
大小:287.29 KB
页数:15页
时间:2020-03-10
《QOS的队列及拥塞管理.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、队列及拥塞管理队列及拥塞管理拥塞管理的中心内容是当拥塞发生时如何制定一个策略,用于决定报文转发的处理次序和丢弃原则,一般采用队列技术。队列指的是在缓存中对报文进行排序的逻辑。当流量的速率超过接口带宽或超过为该流量设置的带宽时,报文就以队列的形式暂存在缓存中。报文离开队列的时间、顺序,以及各个队列之间报文离开的相互关系则由队列调度算法决定。说明:路由器转发平面的流量管理器TM(TrafficManager)上有一些高速缓存,用于报文的缓冲和转发,缓存由所有端口共享,各端口竞争使用。为了避免有的端口长时间抢不到缓存而出现断流,路由器给每个端口分配了一
2、块最小可用缓存,并且分配到端口的各个队列上,保证每个队列均有缓存可用。当TM收到报文时,将报文放入缓存,网络不拥塞时,报文能被及时转发,不会在缓存中产生堆积。这种情况下报文在缓存中的时间为μs级,延迟时间可以忽略不计。当网络拥塞时,报文在缓存中产生堆积,被延迟处理,延迟时间会大幅增加。延迟时间的大小主要取决于队列的缓存长度以及该队列获得的输出带宽,可以使用如下公式计算时延:队列时延=队列缓存长度/队列输出带宽华为路由器设备的每个端口上都有8个下行队列,称为CQ(ClassQueue)队列,也叫端口队列(Port-queue),分别为BE、AF1、
3、AF2、AF3、AF4、EF、CS6和CS7。单个队列的报文采用FIFO(FirstInFirstOut)原则入队和出队。图1报文入队出队方式队列调度算法本文介绍几种常见队列调度算法:·先进先出FIFO(FirstInFirstOut)·严格优先级SP(StrictPriority)·轮询RR(RoundRobin)·加权轮询WRR(WeightedRoundRobin)·差分轮询DRR(DeficitRoundRobin)·差分加权轮询DWRR(DeficitWeightedRoundRobin)·加权公平队列WFQ(WeightedFairQ
4、ueuing)FIFOFIFO不对报文进行分类。FIFO按报文到达接口的先后顺序让报文进入队列,在队列的出口让报文按进队的顺序出队,先进的报文将先出队,后进的报文将后出队,如图1。SPSP(StrictPriority)调度就是严格按照队列优先级的高低顺序进行调度。只有高优先级队列中的报文全部调度完毕后,低优先级队列才有调度机会。假设端口有3个采用SP调度算法的队列,分别为高优先(High)队列、中优先(Medium)队列、和低优先(Low)队列,它们的优先级依次降低。如图2,其中报文编号表示报文到达顺序。图2SP调度在报文出队的时候,首先让高优
5、先队列中的报文出队并发送,直到高优先队列中的报文发送完,然后发送中优先队列中的报文,直到发送完,接着是低优先队列。在调度低优先级队列时,如果高优先级队列又有报文到来,则会优先调度高优先级队列。这样,较高优先级队列的报文将会得到优先发送,而较低优先级的报文后发送。SP调度的缺点是:拥塞发生时,如果较高优先级队列中长时间有报文存在,那么低优先级队列中的报文就会由于得不到服务而“饿死”。RRRR调度采用轮询的方式,对多个队列进行调度。RR以环形的方式轮询多个队列。如果轮询的队列不为空,则从该队列取走一个报文;如果该队列为空,则直接跳过该队列,调度器不等
6、待。图3RR调度WRR加权轮询WRR(WeightedRoundRobin)调度主要解决RR不能设置权重的不足。在轮询的时候,WRR每个队列享受的调度机会和该队列的权重成比例。RR调度相当于权值为1的WRR调度。WRR的实现方法是为每个队列设置一个计数器Count,根据权重进行初始化。每次轮询到一个队列时,该队列输出一个报文且计数器减一。当计数器为0时停止调度该队列,但继续调度其他计数器不为0的队列。当所有队列的计数器都为0时,所有计数器重新根据权重初始化,开始新一轮调度。在一个循环中,权重大的队列被多次调度。图4WRR调度假设某端口有3个队列采
7、用WRR调度,为每个队列配置一个权值,依次为50%、25%、25%,详细的调度过程如下:首先计数器初始化:Count[1]=2,Count[2]=1,Count[3]=1。·第1个轮询:从队列1取出报文1发送,Count[1]=1;从队列2取出报文5发送,Count[2]=0;从队列3取出报文8发送,Count[3]=0。·第2个轮询:从队列1取出报文2发送,Count[1]=0;由于Count[2]=0,Count[3]=0,队列2和队列3不参与此轮调度。此时,Count[1]=0,Count[2]=0,Count[3]=0,将计数器重新初始化
8、:Count[1]=2,Count[2]=1,Count[3]=1。·第3个轮询:从队列1取出报文3发送,Count[1]=1;从队列2
此文档下载收益归作者所有