异步传输模式 (ATM) : ATM 流量管理

优先级排队中输出丢弃故障排除

2016 年 10 月 24 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 8 月 22 日) | 反馈


目录


简介

本文档提供一些故障排除提示,用于解决因路由器接口上的优先级排队机制配置而造成的输出丢弃问题。

先决条件

要求

本文档的读者应熟悉以下概念:

  • priority-groupframe-relay priority-group - 启用 Cisco 传统优先级排队机制。最多支持四个级别的优先级队列。

  • ip rtp priorityframe-relay ip rtp priority - 在用于 Real-Time Protocol (RTP) 流量封装 VoIP 数据包的 UDP 端口号上进行匹配,并将这些数据包放到一个优先级队列中。

  • priority - 启用 Cisco 的 Low Latency Queueing (LLQ) 功能,并使用模块化服务质量 QoS 命令行界面 (CLI) 的命令结构。

路由器可在配置其中任何一种方法之后报告输出丢弃,但每种情况下的方法和丢弃原因之间存在重要的功能差别。

本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果在真实网络工作,可以保证您在使用它之前了解命令的潜在影响。

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。

规则

有关文档规则的详细信息,请参阅 Cisco 技术提示中使用的规则

使用 ip rtp priority 与 LLQ 时的丢弃

Cisco IOS 配置指南针对使用以下优先级排队机制时的输出丢弃发出警告:

  • ip rtp priority:由于 ip rtp priority 命令将提供高于其他流量的绝对优先级,因此使用时应小心。发生拥塞时,如果流量超出配置的带宽,则将丢弃所有多余流量。

  • priority 命令和 LLQ:在为某个类指定 priority 命令时,该命令会使用一个提供最大带宽的带宽参数。发生拥塞时,在超过带宽的情况下,将通过管制丢弃数据包。

这两种机制均使用一个内置监察器来计量数据流。此监察器的作用是确保其他队列能够得到排队调度程序的服务。在使用 priority-grouppriority-list 命令的 Cisco 原始优先级排队功能中,该调度程序总是首先服务于最高优先级队列。如果在高优先级队列中总是有流量,则较低优先级的队列就会缺乏带宽,数据包就会转到非优先级队列中。

使用传统优先级排队时的丢弃

优先级排队 (PQ) 是 Cisco 的传统优先级排队机制。如下图所示,PQ 最多支持四个层次的队列:高、中、正常和低。

/image/gif/paws/10105/pqpic.gif

在接口上启用优先级排队会改变输出队列显示,如下图所示。在优先级排队之前,该以太网接口使用一个默认队列大小为 40 个数据包的输出保持队列。

R6-2500# show interface ethernet0 
Ethernet0 is up, line protocol is up 
  Hardware is Lance, address is 0000.0c4e.59b1 (bia 0000.0c4e.59b1) 
  Internet address is 42.42.42.2/24 
  MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, rely 255/255, load 1/255 
  Encapsulation ARPA, loopback not set, keepalive set (10 sec) 
  ARP type: ARPA, ARP Timeout 04:00:00 
  Last input 00:00:03, output 00:00:02, output hang never 
  Last clearing of "show interface" counters never 
  Queueing strategy: fifo 
  Output queue 0/40, 0 drops; input queue 0/75, 0 drops 
  5 minute input rate 0 bits/sec, 0 packets/sec 
  5 minute output rate 0 bits/sec, 0 packets/sec 
     239407 packets input, 22644297 bytes, 0 no buffer 
     Received 239252 broadcasts, 0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 
     0 input packets with dribble condition detected 
     374436 packets output, 31095372 bytes, 0 underruns 
     0 output errors, 1 collisions, 13 interface resets 
     0 babbles, 0 late collision, 8 deferred 
     0 lost carrier, 0 no carrier 
     0 output buffer failures, 0 output buffers swapped out

在启用 PQ 之后,该以太网接口此时使用四个具有不同队列限制的优先级队列,如下面的输出所示:

R6-2500(config)# interface ethernet0 
R6-2500(config-if)# priority-group 1 
R6-2500(config-if)# end 
R6-2500# show interface ethernet 0 
Ethernet0 is up, line protocol is up 
  Hardware is Lance, address is 0000.0c4e.59b1 (bia 0000.0c4e.59b1)
  Internet address is 42.42.42.2/24 
  MTU 1500 bytes, BW 10000 Kbit, DLY 1000 usec, rely 255/255, load 1/255 
  Encapsulation ARPA, loopback not set, keepalive set (10 sec)
  ARP type: ARPA, ARP Timeout 04:00:00 
  Last input 00:00:03, output 00:00:03, output hang never 
  Last clearing of "show interface" counters never 
  Input queue: 0/75/0 (size/max/drops); Total output drops: 0
  Queueing strategy: priority-list 1 
  Output queue (queue priority: size/max/drops): 
     high: 0/20/0, medium: 0/40/0, normal: 0/60/0, low: 0/80/0 
  5 minute input rate 0 bits/sec, 0 packets/sec 
  5 minute output rate 0 bits/sec, 0 packets/sec 
     239411 packets input, 22644817 bytes, 0 no buffer
     Received 239256 broadcasts, 0 runts, 0 giants, 0 throttles 
     0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 
     0 input packets with dribble condition detected 
     374440 packets output, 31095658 bytes, 0 underruns
     0 output errors, 1 collisions, 14 interface resets
     0 babbles, 0 late collision, 8 deferred 
     0 lost carrier, 0 no carrier 
     0 output buffer failures, 0 output buffers swapped out

priority-list {list-number} 命令用于向特定队列分配数据流。当数据包到达某个接口时,将对该接口上的优先级队列进行扫描,以得到按优先级降序排列的数据包。首先扫描高优先级队列,然后扫描中优先级队列,依此类推。将会选择最高优先级队列头部的数据包进行传输。每次发送数据包时,都会重复此过程。

每个队列都定义有最大长度,或定义该队列能够容纳的最大数据包数。当到达的数据包导致当前队列深度超过配置的队列限制时,该数据包将被丢弃。因此,如上所述,使用 PQ 时的输出丢弃通常是由于超过了队列限制而并非因内部监察器(使用 LLQ 时的典型情况)导致。priority-list list-number queue-limit 命令可更改优先级队列的大小。

用令牌桶进行流量测量

LLQ 和 IP RTP 优先级通过将一个令牌桶用作流量管理系统来实现内置监察器。本部分介绍令牌桶的概念。

/image/gif/paws/10105/policing.gif

令牌桶本身没有丢弃或优先级策略。令牌桶是一种形象的称谓,其工作原理如下:

  • 令牌以一定速率放到桶中。

  • 每个令牌都表示允许信息源将一定的比特数发送到网络中。

  • 若要发送数据包,数据流调整器必须能够从令牌桶中去除数量与数据包大小相等的令牌。

  • 如果令牌桶中没有足够的令牌来发送数据包,则该数据包就要等到令牌桶中有足够的令牌(在存在整形器的情况下),或者该数据包被丢弃或被降级(在存在监察器的情况下)。

  • 桶本身具有指定的容量。如果桶达到了容量,最近到达的令牌被丢弃并且不能容纳将来的数据包。因此,在任何时刻,应用程序能够发送到网络中的最大突发流量都大致与令牌桶的大小成正比。令牌桶允许突变流量,但会对其进行限制。

下面是一个使用数据包和 8000 bps 的承诺信息速率 (CIR) 的示例。

  • 在本示例中,初始令牌桶在 1000 字节时开始充满。

  • 当一个 450 字节的数据包到达时,该数据包符合条件,因为在遵从令牌桶中有足够的字节可以使用。该数据包得以发送,并从令牌桶中去除 450 字节,留下 550 字节。

  • 当下一个数据包在 0.25 秒后到达时,将向该令牌桶添加 250 字节 ((0.25 * 8000)/8),从而在令牌桶中留有 700 字节。如果下一个数据包为 800 字节,就会超过限制,从而被丢弃。这时不会从令牌桶中取走任何字节。

诊断丢弃的故障排除步骤

步骤 1 - 收集数据

下面显示了收集数据的步骤。

  1. 多次执行下面的命令,并确定丢弃增加的速度与频次。使用输出来建立流量模式和流量级别的基准。确定接口上的“正常”丢包率。

    • show queueing interface

      router# show queueing interface hssi 0/0/0
                Interface Hssi0/0/0 queueing strategy: priority
      
                Output queue utilization (queue/count)
      
                 high/12301 medium/4 normal/98 low/27415
    • show interface - 监视输出中显示的负载值。另外,确保 show interface 输出中每个队列丢弃计数的和等于输出丢弃计数。show interface 输出丢弃计数器应显示输出上所有丢弃的总累计值,包括 WRED 丢弃、因缓冲区短缺而发生的丢弃(“no buffer”错误)以及板载端口适配器内存中的丢弃。

      router# show interface serial 4/1/2
      
      Serial4/1/2 is up, line protocol is up 
      Hardware is cyBus Serial 
      Description: E1 Link to 60W S9/1/2 Backup 
      Internet address is 169.127.18.228/27 
      MTU 1500 bytes, BW 128 Kbit, DLY 21250 usec, rely 255/255, load 183/255 
      Encapsulation HDLC, loopback not set, keepalive set (10 sec) 
      Last input 00:00:00, output 00:00:00, output hang never 
      Last clearing of "show interface" counters 5d10h 
      Input queue: 0/75/0 (size/max/drops); Total output drops: 68277 
      Queueing strategy: priority-list 7 
      Output queue: high 0/450/0, medium 0/350/143, normal 0/110/27266, low 0/100/40868 
      5 minute input rate 959000 bits/sec, 419 packets/sec 
      5 minute output rate 411000 bits/sec, 150 packets/sec 
      144067307 packets input, 4261520425 bytes, 0 no buffer 
      Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 
      42 input errors, 34 CRC, 0 frame, 0 overrun, 1 ignored, 8 abort 
      69726448 packets output, 2042537282 bytes, 0 underruns 
      0 output errors, 0 collisions, 0 interface resets 
      0 output buffer failures, 46686454 output buffers swapped out 
      0 carrier transitions

      注意: 某些接口会显示单独的“txload”和“rxload”值。

      Hssi0/0/0 is up, line protocol is up 
       Hardware is cyBus HSSI 
       MTU 1500 bytes, BW 7500 Kbit, DLY 200 usec, 
       reliability 255/255, txload 138/255, rxload 17/255 
       Encapsulation FRAME-RELAY IETF, crc 16, loopback not set 
       Keepalive set (5 sec) 
       LMI enq sent 4704, LMI stat recvd 4704, LMI upd recvd 0, DTE LMI up 
       LMI enq recvd 0, LMI stat sent 0, LMI upd sent 0 
       LMI DLCI 1023 LMI type is CISCO frame relay DTE 
       Broadcast queue 0/256, broadcasts sent/dropped 8827/0, interface 
       broadcasts 7651 
       Last input 00:00:00, output 00:00:00, output hang never 
       Last clearing of "show interface" counters 06:31:58 
       Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 84 
       Queueing strategy: priority-list 1 
       Output queue (queue priority: size/max/drops): 
       high: 0/20/0, medium: 0/40/0, normal: 0/60/0, low: 0/80/84 
       5 minute input rate 524000 bits/sec, 589 packets/sec 
       5 minute output rate 4080000 bits/sec, 778 packets/sec 
       11108487 packets input, 1216363830 bytes, 0 no buffer 
       Received 0 broadcasts, 0 runts, 0 giants, 0 throttles 
       0 parity 
       0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort 
       15862186 packets output, 3233772283 bytes, 0 underruns 
       0 output errors, 0 applique, 1 interface resets 
       0 output buffer failures, 2590 output buffers swapped out 
       0 carrier transitions 
       LC=down CA=up TM=down LB=down TA=up LA=down
    • show policy-map interface interface-name - 查找“pkts discards”计数器的非零值。

      Router# show policy-map interface s1/0
       Serial1/0.1: DLCI 100 -
       output : mypolicy
        Class voice
         Weighted Fair Queueing
             Strict Priority
             Output Queue: Conversation 72 
               Bandwidth 16 (kbps) Packets Matched 0
              (pkts discards/bytes discards) 0/0
        Class immediate-data
         Weighted Fair Queueing
             Output Queue: Conversation 73 
               Bandwidth 60 (%) Packets Matched 0
               (pkts discards/bytes discards/tail drops) 0/0/0
               mean queue depth: 0
               drops: class  random   tail     min-th   max-th   mark-prob 
                      0      0        0        64       128      1/10
                      1      0        0        71       128      1/10
                      2      0        0        78       128      1/10
                      3      0        0        85       128      1/10
                      4      0        0        92       128      1/10
                      5      0        0        99       128      1/10
                      6      0        0        106      128      1/10
                      7      0        0        113      128      1/10
                      rsvp   0        0        120      128      1/10

      注意: 下面的示例输出显示了“packets”和“pkts matched”计数器的匹配值。此状况表明,正在对大量数据包进行进程交换,或者该接口的堵塞情况很严重。这两种状况都可能导致超出某个类的队列限制,应调查其原因。

      router# show policy-map interface
      
      Serial4/0 
      
      Service-policy output: policy1 
      
      Class-map: class1 (match-all) 
      189439 packets, 67719268 bytes 
      5 minute offered rate 141000 bps, drop rate 0 bps 
      Match: access-group name ds-class-af3 
      Weighted Fair Queueing 
      Output Queue: Conversation 265 
      Bandwidth 50 (%) Max Threshold 64 (packets) 
      (pkts matched/bytes matched) 189439/67719268 
      (depth/total drops/no-buffer drops) 0/0/0
  2. 说明这些数据流以及这些数据流中数据包的特性。

    • 平均数据包大小是多少?

    • MTU 大小的帧在哪个方向上流动?很多数据流在负载方面是异步的。例如,进行 FTP 下载时,大多数 MTU 大小的数据包是从 FTP 服务器流向客户端。从 FTP 客户端流向服务器的数据包是简单的 TCP ACK 数据包。

    • 数据包是使用 TCP 还是使用 UDP?在信息源需要将传输挂起并等待目标确认传输的数据包之前,TCP 允许每个数据流发送数量经过授权的数据包。

  3. 通过帧中继,确定发生丢弃的位置是在接口队列处还是在每个 VC 队列处。下图说明了通过一个帧中继虚拟电路的数据包流动情况:

    /image/gif/paws/10105/priorityqueuedrops1.jpg

  4. 优先级排队最多支持 4 个输出队列,每个优先级队列级别有一个队列,每个队列均通过一个队列限值来定义。在将数据包放入队列之前,排队系统按照所配置的队列限值来检查队列的大小。如果所选队列已满,则路由器将丢弃该数据包。这种情况下,可尝试使用 priority-list {#} queue-limit 命令来增加队列大小并重新进行监视。

步骤 2 - 保证足够的带宽

使用 LLQ 时,通过管制可公平处理其他 Class-Based Weighted Fair Queueing (CBWFQ) 或 WFQ 队列中的其他数据包。为避免发生数据包丢弃,请务必向优先级队列分配最优数量的带宽,分配时应考虑所用编解码器的类型以及接口特性。IP RTP Priority 不允许流量超过所分配的量。

向优先级队列分配比已知所需的带宽略微大一些的带宽总是最安全的。例如,假定您向优先级队列分配了 24 kbps 的带宽,这是语音传输所需的标准带宽。由于语音数据包的传输是以恒定比特率进行的,这种分配似乎很安全。但是,由于网络和路由器或交换机可能会使用一定的带宽来产生抖动和延迟,因此,分配比所需的带宽略微大一些的带宽(如 25 kbps)可确保恒定性和可用性。

为某个优先级队列分配的带宽总是包括第 2 层封装报头。它不包括循环冗余校验 (CRC)。(请参阅 IP to ATM CoS 排队对哪些字节进行计数?以获取详细信息。)虽然只有少量字节,但由于数据流中包含数目较多的小型数据包,CRC 会产生很大影响。

另外,在 ATM 接口上,为某个优先级队列分配的带宽不包括以下 ATM 信元税开销:

  • 为使某个数据包的最后一个信元成为 48 字节的偶数倍而由分段和重组 (SAR) 进行的任何填充。

  • ATM 适配第 5 层 (AAL5) 报尾的 4 字节 CRC。

  • 5 字节 ATM 信元报头。

在计算要为给定优先级类分配的带宽大小时,必须考虑已包括第 2 层报头这一事实。在使用 ATM 时,必须考虑不包括 ATM 信元税开销这一事实。带宽分配还必须考虑语音路径中的网络设备可能引入的抖动。请参阅 Low Latency Queueing 功能概述

在使用优先级排队承载 VoIP 数据包时,请参阅 IP 语音 - 每个呼叫的带宽占用量

步骤 3 - 保证足够的突发量

对于通过优先级队列离开接口的一系列数据包,其处理取决于数据包的大小以及令牌桶中的剩余字节数。请务必考虑正在定向到优先级队列的数据流的特性,因为 LLQ 使用的是监察器而不是整形器。监察器以如下方式使用令牌桶:

  • 基于类速率(不超过突发参数最大值),使用令牌来填满令牌桶。

  • 如果令牌数大于或等于数据包大小,则发送该数据包,并减少令牌桶中的令牌数。否则,将丢弃该数据包。

经计算,LLQ 的令牌桶流量计量仪的默认突发值是所配置的带宽速率下的 200 毫秒流量。在某些情况下,该默认值不够充分,尤其是在 TCP 流量进入优先级队列时。TCP 数据流通常是突发的,并且可能需要比排队系统所分配的默认值大的突发大小,尤其在慢速链路上。

下面的示例输出是在具有 128 kbps 持续信元速率的 ATM PVC 上生成的。当通过 priority 命令指定的值发生变化时,排队系统会对突发值进行调整。

7200-17# show policy-map int atm 4/0.500
 ATM4/0.500: VC 1/500 - 
  
Service-policy output: drops 

    Class-map: police (match-all)
      0 packets, 0 bytes 
      5 minute offered rate 0 bps, drop rate 0 bps 
      Match: any 
      Weighted Fair Queueing 
        Strict Priority 
        Output Queue: Conversation 24 
        Bandwidth 90 (%) 
        Bandwidth 115 (kbps) Burst 2875 (Bytes) 
        
!--- Burst value of 2875 bytes is assigned when 
        !--- the reserved bandwidth value is 115 kbps. 

        (pkts matched/bytes matched) 0/0 
        (total drops/bytes drops) 0/0 

    Class-map: class-default (match-any) 
      0 packets, 0 bytes 
      5 minute offered rate 0 bps, drop rate 0 bps 
      Match: any 

7200-17# show policy-map int atm 4/0.500 
 ATM4/0.500: VC 1/500 - 

  Service-policy output: drops 

    Class-map: police (match-all) 
      0 packets, 0 bytes 
      5 minute offered rate 0 bps, drop rate 0 bps 
      Match: any 
      Weighted Fair Queueing 
        Strict Priority 
        Output Queue: Conversation 24 
        Bandwidth 50 (%) 
        Bandwidth 64 (kbps) Burst 1600 (Bytes) 
        
!--- Burst value changes to 1600 bytes when the 
        !--- reserved bandwidth value is changed to 64 kbps. 

        (pkts matched/bytes matched) 0/0 
        (total drops/bytes drops) 0/0 

    Class-map: class-default (match-any) 
      0 packets, 0 bytes 
      5 minute offered rate 0 bps, drop rate 0 bps 
      Match: any

LLQ 的功能经过扩展,允许通过 Low Latency Queueing 功能中的配置突发大小功能实现可配置的承诺突发 (Bc) 大小。通过这个新增功能,网络现在能够处理临时流量突发,并更有效地处理网络流量。

priority 命令中使用突发参数,可将突发值从 1600 字节提高到 3200 字节。

policy-map AV 
  class AV 
  priority percent 50 3200

注意: 较高的值会增加该优先级类可使用的有效带宽,并可能会导致这些优先级类所获取的带宽大于其应得份额。

另外,排队系统最初会向低延迟队列分配 64 个数据包的内部队列限值。某些情况下,当一个含有 64 个数据包的突发流量到达优先级队列时,流量计量仪会确定该突发符合配置的速率,但数据包数超过了队列限值。结果,将从尾部丢弃一些数据包。Cisco Bug ID CSCdr51979 (仅限注册客户)可通过让优先级队列最多增长到流量计量仪所允许的最大深度来解决这一问题。

以下输出是在使用 56 kbps 的 CIR 配置的帧中继 PVC 上捕获的。在第一组示例输出中,所提供的 c1 和 c2 类的组合速率为 76 kbps。其原因是,提供的速率的计算值减去丢包率并不代表实际传输速率,并且不包括传输之前位于整形器中的数据包。

router# show policy-map int s2/0.1
  Serial2/0.1: DLCI 1000 - 

   Service-policy output: p 

     Class-map: c1 (match-all) 
       7311 packets, 657990 bytes 
       30 second offered rate 68000 bps, drop rate 16000 bps 
       Match: ip precedence 1 
       Weighted Fair Queueing 
         Strict Priority 
         Output Queue: Conversation 24 
         Bandwidth 90 (%) 
         Bandwidth 50 (kbps) Burst 1250 (Bytes) 
         (pkts matched/bytes matched) 7311/657990 
         (total drops/bytes drops) 2221/199890 

     Class-map: c2 (match-all) 
       7311 packets, 657990 bytes 
       30 second offered rate 68000 bps, drop rate 44000 bps 
       Match: ip precedence 2 
       Weighted Fair Queueing 
         Output Queue: Conversation 25 
         Bandwidth 10 (%) 
         Bandwidth 5 (kbps) Max Threshold 64 (packets) 
         (pkts matched/bytes matched) 7310/657900 
         (depth/total drops/no-buffer drops) 64/6650/0 

     Class-map: class-default (match-any) 
       2 packets, 382 bytes 
       30 second offered rate 0 bps, drop rate 0 bps 
       Match: any

在第二组输出中,show policy-map 接口计数器已标准化。在 56 kbps PVC 上,类 c1 正在发送大约 50 kbps,而类 c2 正在发送大约 6 kbps。

router# show policy-map int s2/0.1 
  Serial2/0.1: DLCI 1000 - 

   Service-policy output: p 

     Class-map: c1 (match-all) 
       15961 packets, 1436490 bytes 
       30 second offered rate 72000 bps, drop rate 21000 bps 
       Match: ip precedence 1 
       Weighted Fair Queueing 
         Strict Priority 
         Output Queue: Conversation 24 
         Bandwidth 90 (%) 
         Bandwidth 50 (kbps) Burst 1250 (Bytes) 
         (pkts matched/bytes matched) 15961/1436490 
         (total drops/bytes drops) 4864/437760 

     Class-map: c2 (match-all) 
       15961 packets, 1436490 bytes 
       30 second offered rate 72000 bps, drop rate 66000 bps 
       Match: ip precedence 2 
       Weighted Fair Queueing 
         Output Queue: Conversation 25 
         Bandwidth 10 (%) 
         Bandwidth 5 (kbps) Max Threshold 64 (packets) 
         (pkts matched/bytes matched) 15960/1436400 
         (depth/total drops/no-buffer drops) 64/14591/0 

     Class-map: class-default (match-any) 
       5 packets, 1096 bytes 
       30 second offered rate 0 bps, drop rate 0 bps 
       Match: any

步骤 4 - debug priority

如果数据包从优先级队列中丢弃,则 debug priority 命令会显示优先级排队输出。

警告 警告: 使用 debug 命令之前,请参阅有关 Debug 命令的重要信息debug priority 命令可能会在生产路由器上产生大量破坏性调试输出。输出量取决于拥塞程度。

下面的示例输出是在 Cisco 3640 上生成的。

r3-3640-5# debug priority 
Priority output queueing debugging is on 

r3-3640-5# ping 10.10.10.2 

Type escape sequence to abort. 
Sending 5, 100-byte ICMP Echos to 10.10.10.2, timeout is 2 seconds: 
!!!!! 
Success rate is 100 percent (5/5), round-trip min/avg/max = 56/57/60 ms 
r3-3640-5# 
00:42:40: PQ: Serial0/1: ip -> normal 
00:42:40: PQ: Serial0/1 output (Pk size/Q 104/2) 
00:42:40: PQ: Serial0/1: ip -> normal 
00:42:40: PQ: Serial0/1 output (Pk size/Q 104/2) 
00:42:40: PQ: Serial0/1: ip -> normal 
00:42:40: PQ: Serial0/1 output (Pk size/Q 104/2) 
00:42:40: PQ: Serial0/1: ip -> normal 
00:42:40: PQ: Serial0/1 output (Pk size/Q 104/2) 
00:42:40: PQ: Serial0/1: ip -> normal 
00:42:40: PQ: Serial0/1 output (Pk size/Q 104/2) 
00:42:41: PQ: Serial0/1 output (Pk size/Q 13/0) 
r3-3640-5#no debug priority 
00:42:51: PQ: Serial0/1 output (Pk size/Q 13/0) 
Priority output queueing debugging is off

在下面的 debug priority 输出中,64 表示丢弃数据包时的实际优先级队列深度。

*Feb 28 16:46:05.659:WFQ:dropping a packet from the priority queue 64
*Feb 28 16:46:05.671:WFQ:dropping a packet from the priority queue 64
*Feb 28 16:46:05.679:WFQ:dropping a packet from the priority queue 64
*Feb 28 16:46:05.691:WFQ:dropping a packet from the priority queue 64

丢弃的其它原因

在案例故障排除期间,Cisco 技术支持中心 (TAC) 发现了使用 LLQ 时发生输出丢弃的以下原因,并记录在一个 Cisco Bug 报告中:

  • 增加另一个类上的 Weighted Random Early Detection (WRED) 最大阈值耗尽了可用缓冲区,导致优先级队列中发生丢弃。为帮助诊断这一问题,在将来的 IOS 版本中计划为优先级类使用一个“no-buffer drops”计数器。

  • 如果输入接口的队列限值小于输出接口的队列限值,则数据包丢弃会转到输入接口。这些症状记录在 Cisco Bug ID CSCdu89226 (仅限注册客户)中。通过适当调整输入队列和输出队列的大小可解决此问题,从而防止发生输入丢弃,并允许出站优先级排队机制起作用。

  • 启用 CEF 交换路径或快速交换路径不支持的功能会造成大量数据包发生进程交换。对于 LLQ,无论接口是否拥塞,目前都对进程交换数据包进行管制。换言之,即使接口未发生拥塞,排队系统也会计量进程交换数据包,并确保提供的负载不超过使用 priority 命令配置的带宽值。此问题记录在 Cisco Bug ID CSCdv86818 (仅限注册客户)中。

优先级队列丢弃与帧中继

帧中继是与对优先级队列进行策略管理有关的特殊情况。帧中继功能的 Low Latency Queueing 概述中提出了下面的警告:“对 PQ 进行管制以确保公平队列不缺少带宽。在配置 PQ 时,应以 kbps 为单位指定该队列的最大可用带宽。超出该最大值的数据包将被丢弃。”换言之,在一个帧中继映射类中配置的服务策略的优先级队列起初在拥塞和非拥塞期间都是受管制的。IOS 12.2 取消了这一例外。PQ 仍通过 FRF.12 进行管制,但只有在存在拥塞的情况下才丢弃其他不符合规定的数据包。


相关信息


Document ID: 10105