WFQ/CBWFQ/LLQ  

 

  加权公平排队(Weighted Fair Queuing)缩写 WFQ。
  它是一种拥塞管理算法,该算法识别对话(以数据流的形式)、分开属于各个对话的分组,并确保传输容量被这些独立的对话公平地分享。WFQ是在发生拥塞时稳定网络运行的一种自动的方法,它能提高处理性能并减少分组的重发。
  WFQ(weighted fair queuing加权公平排队)
  目标:
  1为每个活动流提供公平的带宽分配机制
  2为少量交互流提供更快的调度机制
  3为高优先级流提供更多的带宽
  WFQ:是一种基于流的排队算法,到达的数据包被分成多个流,每隔流都被分配给一个FIFO队列。
  可以基于IP和TCP或UDP头中以下字段标识流:源IP地址 目的IP地址 协议号 TOS 源TCP/UDP端口号 目的TCP/UDP端口号
  WFQ插入和丢弃策略
  WFQ有一个保持队列(hold queue),保持队列=WFQ系统中数据包占用的所有内存之和,数据包到达时,保持队列已满,那就丢弃数据包(WFQ主动丢弃WFQ aggressive dropping)
  例外:数据包分配到一个空队列,不会丢弃
  WFQ的优缺点:
  主要优点 :
  WFQ配置简单,无需显示分类
  不会让任何流得不到处理机会,能够保证所有流的吞吐量
  从最主动的流中丢弃数据包,可以为非主动流提供更快的服务
  是一种标准.简单的排队机制,大多数CISCO平台和IOS版本都支持
  缺点
  WFQ的分类和调度机制是不可配置和无法修改的
  WFQ仅支持低速链路(2.048Mbit/s及以下的)
  WFQ不能为流量流提供带宽和时延保证
  WFQ系统中多个流量流可能会被分配到同一个对列中去
  WFQ的配置和监控
  默认情况下,所有低速(2.048Mbit/s及以下)串行接口都启用WFQ
  接口模式下: fair-queue [cdt] [dynamic-queues] \\ cdt 为拥塞丢弃门限,dynamic 动态队列 默认为256
  hold-queue max-limit out \\定义保持队列
  CBWFQ基于类别的加权公平排队
  比WFQ更好,因为可以创建用户自定义的类别,并为所有类别分配专属队列,每个队列都有用户自定义的(最小)带宽,而且在有可用带宽队列可以使用更多带宽。
  最多可以创建64个用户自定义类别,每个队列都是有保证带宽和最大包门限的FIFO队列,一旦达到最大,就会产生尾部丢弃。
  分类,调度和带宽保证
  带宽
  带宽百分比
  带宽剩余百分比
  CBWFQ的优点
  可以创建用户自定义的类别,利用MQC的分类映射可以很容易地定义这些流量类别
  可以基于用户策略和用户意愿为每种流量类别分配/预留带宽
  可以基于现有网络应用和用户策略定义最多64个固定类别,从而提供微调手段,而且扩展性更好
  缺点:没有为实时性应用提供合适地队列(VOIP 和 视频)无法保证低时延
  配置和监控CBWFQ
  LLQ
  包含了一个优先级队列,使其非常适合时延和抖动敏感型应用
  优点:
  LLQ具有CBWFQ的所有优点,包括自定义流量类别,为每种类别的流量提供带宽保证,并确保可以在所有类别的队列上应用WRED。(严格优先级队列除外)
  对于LLQ和CBWFQ来说,任何没有被显示分类的流量都被认为class-default流量,可以将class-default流量类别队列由FIFO改为WFQ,需要时也可以用WRED.
  LLQ最大优势 可以为时延和抖动敏感型应用的流量提供一个或多个有带宽保证的严格优先级队列
  LLQ并不局限于特定平台或传输介质
  配置和监控LLQ

Weight Fair Queuing
配置WFQ:
1)特点:
      *基于流的队列算法 //把同一个流的数据放到同一个队列中(即WFQ的分类是基于"流",用户无法控制)
  *将交互式流量(eg.telnet对响应时间要求高) 放在队列的前面,以减少响应时间;
将剩余带宽在不同流之间公平地分配;

      防止大数据量的流(eg.FTP) 独占出接口
          |-----FTP-----|
---------------------------R
             |-telnet-|
       交互式流量
    FIFO:
      FTP先到,先发送
         WFQ:
   在 "最后" 判断报文到达时间,何时收到完整的数据包,才认为到达
使得小报文(telnet)优先进行发送,该情况,认为telnet报文先到达设备
WFQ的思想:
    i,   为每个流创建一个专用的队列,避免队列的 饥饿,延迟,抖动 等 
 ii,  在所有流间公平,正确地分配带宽
 iii, WFQ使用 [IP优先级] 作为分配带宽的权重
  
    注:WFQ中的flow亦称为conversation(会话)
    注:在带宽小于等于E1(2.048Mbps)的串行接口上 缺省 使用WFQ
    注:WFQ不能在配置 Tunneling 和 加密 的接口上使用
---Forwarded Packets|
                    |
                    |
                   Flow 1--------Weight值-------------
                    |                                 \
                    |                                  \
                   Flow 2--------Weight值-------------  WFQ Scheduler-----> Hardware Queuing
                    |                                  /
                    |                                 /
                   Flow 4096--------Weight值----------
                    |
                  权重高的,一次多放报文;权重低的,一次少放报文即体现公平原则,同时体现权重原则
       WFQ uses per-flow FIFO queues
                                                       参数:
  -------IP--------      --TCP--       Payload       Source IP Address
/                   \   /       \                    Destination IP Address
Src.  Dst  Proto  ToS | Src.   Dst                   Source TCP or UDP Port
Addr. Addr              Port   Port                  Destination TCP or UDP Port
 ↓  ↓ ↓  ↓   ↓     ↓                   Transport Protocol