交换机 : Cisco Catalyst 3750 系列交换机

输出丢弃由于在排除故障TechNote的接入层交换机的QoS

2015 年 8 月 28 日 - 机器翻译
其他版本: PDFpdf | 英语 (2015 年 4 月 23 日) | 反馈

简介

本文描述如何排除故障输出丢弃由于在思科Catalyst交换机系列2960的服务质量(QoS), 3750, 3750G, 3750X, 3560。

贡献用Shashank辛哈, Cisco TAC工程师。

先决条件

要求

思科建议您有QoS基础知识。

使用的组件

本文档中的信息根据这些平台:思科Catalyst交换机系列2960, 3750, 3750G, 3750X, 3560。

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

背景信息

在拥塞的时期QoS用于优先安排更多重的数据。结果,在QoS启用后,较不重要批量数据也许经受丢包。

思科接入层交换机在硬件方面实现QoS功能。本文帮助您确定丢包是否是由QoS造成的并且描述多种队列和缓冲调节选项缓和他们。

功能信息

入口默认队列 

116089-technote-switches-output-drops-qos-01.jpg

出口默认队列

116089-technote-switches-output-drops-qos-02.jpg

故障排除方法

  1. 识别传送流出的数据为受影响的应用程序或体验输出丢弃增加的接口。比较接口输出生产率和接口速度并且保证丢包不归结于在链路的利用率。
    Switch#show int gi1/0/1
    !-- Some output omitted.
    GigabitEthernet0/1 is up, line protocol is up (connected)
    MTU 1500 bytes, BW 100000 Kbit, DLY 100 usec,
    Full-duplex, 1000Mb/s, media type is 10/100/1000BaseTX


    input flow-control is off, output flow-control is unsupported
    Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 1089

    Queueing strategy: fifo
    Output queue: 0/40 (size/max)
    5 minute input rate 4000 bits/sec, 6 packets/sec
    5 minute output rate 3009880 bits/sec, 963 packets/sec
  2. 保证QoS在交换机启用。如果它没有启用,输出丢弃与QoS没有涉及并且被提及的进一步步骤此处是毫不相关的。
    Switch#show mls qos
    QoS is enabled
    QoS ip packet dscp rewrite is enabled
  3. 识别在接口丢弃流出流量的标记。
    Switch#show mls qos int gi1/0/1 statistics

    GigabitEthernet1/0/1 (All statistics are in packets)

    dscp: incoming
    -------------------------------

    0 - 4 : 0 0 0 0 0
    5 - 9 : 0 0 0 0 0
    10 - 14 : 0 0 0 0 0
    15 - 19 : 0 0 0 0 0
    20 - 24 : 0 0 0 0 0
    25 - 29 : 0 0 0 0 0
    30 - 34 : 0 0 0 0 0
    35 - 39 : 0 0 0 0 0
    40 - 44 : 0 0 0 0 0
    45 - 49 : 0 198910 0 0 0
    50 - 54 : 0 0 0 0 0
    55 - 59 : 0 0 0 0 0
    60 - 64 : 0 0 0 0

    dscp: outgoing
    -------------------------------

    0 - 4 : 0 0 0 0 0
    5 - 9 : 0 0 0 0 0
    10 - 14 : 0 0 0 0 0
    15 - 19 : 0 0 0 0 0
    20 - 24 : 0 0 0 0 0
    25 - 29 : 0 0 0 0 0
    30 - 34 : 0 0 0 0 0
    35 - 39 : 0 0 0 0 0
    40 - 44 : 0 0 0 0 0
    45 - 49 : 0 248484 0 0 0
    50 - 54 : 0 0 0 0 0
    55 - 59 : 0 0 0 0 0
    60 - 64 : 0 0 0 0

    cos: incoming
    -------------------------------

    0 - 4 : 2 0 0 0 0
    5 - 7 : 0 0 0

    cos: outgoing
    -------------------------------

    0 - 4 : 0 0 0 0 0
    5 - 7 : 0 0 0

    output queues enqueued:
    queue: threshold1 threshold2 threshold3
    -----------------------------------------------
    queue 0: 248484 0 0
    queue 1: 0 0 0
    queue 2: 0 0 0
    queue 3: 0 0 0

    output queues dropped:
    queue: threshold1 threshold2 threshold3
    -----------------------------------------------
    queue 0: 1089 0 0
    queue 1: 0 0 0
    queue 2: 0 0 0
    queue 3: 0 0 0

    Policer: Inprofile: 0 OutofProfile: 0

    注意:此示例显示在丢弃数据包的队列0/threshold1的已丢失装箱。在本文的其他示例中,队列编号是1 - 4;因此,此值将是queue1。

  4. 检查在交换机的标记输出问地图为了确定哪些队列阀值对映射对丢弃的标记。在此方案中, queue1/threshold1被映射对dscp 46,在接口丢弃。这意味着dscp 46流量发送对queue1和丢弃,因为该队列有不足的缓冲区或一点CPU周期。
    Switch#show mls qos maps dscp-output-q

    Dscp-outputq-threshold map:
    d1 :d2 0 1 2 3 4 5 6 7 8 9
    ------------------------------------------------------------
    0 : 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01 02-01
    1 : 02-01 02-01 02-01 02-01 02-01 02-01 03-01 03-01 03-01 03-01
    2 : 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01 03-01
    3 : 03-01 03-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01
    4 : 01-01 01-01 01-01 01-01 01-01 01-01 01-01 01-01 04-01 04-01
    5 : 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01 04-01
    6 : 04-01 04-01 04-01 04-01
  5. 有解决这些丢包的两个方法。第一种方法是更改缓冲区和阈值该的队列的丢包数据包。第二种方法是配置调度器,以便丢弃数据包的队列比队列的其余经常被服务。

    此步骤显示您如何能更改缓冲区和阈值受影响的队列的并且检查缓冲区和阈值关联与在步骤识别的队列4。

    注意:每个队列集都具有相关选项,用于为四个出口队列配置缓冲大小和阈值。然后,可以将任何一个队列集应用于任何一个端口。默认情况下,所有接口使用队列集1输出队列,除非明确地配置使用队列集2。

    在此方案中,在队列集1的queue1有25%总缓冲缓冲区空间,并且阈值1设置到100%

    Switch#show mls qos queue-set
    Queueset: 1
    Queue : 1 2 3 4
    ----------------------------------------------
    buffers : 25 25 25 25
    threshold1: 100 200 100 100
    threshold2: 100 200 100 100
    reserved : 50 50 50 50
    maximum : 400 400 400 400
    Queueset: 2
    Queue : 1 2 3 4
    ----------------------------------------------
    buffers : 25 25 25 25
    threshold1: 100 200 100 100
    threshold2: 100 200 100 100
    reserved : 50 50 50 50
    maximum : 400 400 400 400
  6. 如果要更改缓冲区和阈值仅受影响接口的,请更改队列集2并且配置受影响接口使用队列集2。

    注意:您能更改队列集1;然而,默认情况下作为所有接口请使用队列集1,更改反射对所有接口。

    在本例中,队列集2更改,以便queue1接收70%总缓冲。

    Switch(config)#mls qos queue-set output 2 buffers 70 10 10 10

    在本例中,队列集2和queue1阈值更改。阈值1和阈值2被映射到3100,以便他们能如果必须拉从保留池的缓冲区。

    Switch(config)#mls qos queue-set output 2 threshold 1 3100 3100 100 3200
  7. 验证更改反射在正确队列和队列集下。
    Switch#show mls qos queue-set
    Queueset: 1
    Queue : 1 2 3 4
    ----------------------------------------------
    buffers : 25 25 25 25
    threshold1: 100 200 100 100
    threshold2: 100 200 100 100
    reserved : 50 50 50 50
    maximum : 400 400 400 400
    Queueset: 2
    Queue : 1 2 3 4
    ----------------------------------------------
    buffers : 70 10 10 10
    threshold1: 3100 100 100 100
    threshold2: 3100 100 100 100
    reserved : 100 50 50 50
    maximum : 3200 400 400 400
  8. 做受影响接口使用队列集2,以便更改生效对此接口的。
    Switch(config)#int gi1/0/1
    Switch(config-if)#queue-set 2
    Switch(config-if)#end

    验证接口被映射对队列集2。

    Switch#show run int gi1/0/1
    interface GigabitEthernet1/0/1
    switchport mode access
    mls qos trust dscp
    queue-set 2
    end

    检查接口是否继续丢弃数据包。

  9. 您能也配置调度器增加queue1服务与共享和形状选项的速率。在本例中,单独queue1接收50%总计CPU周期和其他三个队列共同接收50% CPU周期。
    Switch(config-if)#srr-queue bandwidth share 1 75 25 5
    Switch(config-if)#srr-queue bandwidth shape 2 0 0 0

    检查接口是否继续丢弃数据包。

  10. 启用在此接口的优先级队列。此操作保证在优先级队列的所有流量在其他队列前处理。

    注意:在为其他队列服务前,将始终为优先队列提供服务,直至该队列为空。默认情况下在2960/3560/3750交换机, queue1是优先级队列。

    Switch(config)#int gi1/0/1
    Switch(config-if)#priority-queue out
    Switch(config-if)#end

    在接口丢弃数据包的标记可以被映射,以便去queue1 (优先级队列)。此操作保证与此标记的流量在别的前总是处理。

    Switch(config)#mls qos srr-queue output dscp-map queue 1 threshold 1

常见问题

这是一些常见问题:

  • 在接口的输出丢弃在QoS以后启用。 
  • 声音断断续续呼叫。
  • 已添加延迟导致不最理想的视频流量。
  • 连接重置。

常见问题

问:什么时候修改队列集,并且什么时候使用共享/shaping ?

回答:决策取决于丢包的本质。如果丢包间歇地增加,此问题很可能归结于突发数据流。相反,如果丢包不断地恒定速率增加,比它丢弃数据包很可能接收更多数据的队列能派出。

对于断断续续丢包,队列必须有能适应偶尔的突发流量的一大缓冲区。为了实现此解决方案,您必须修改队列集和分配更多缓冲区到受影响的队列和增加阈值。

对于连续丢包,您必须配置调度器经常服务受影响的队列和使用从队列的更多数据包每CPU周期。 为了实现此解决方案,您必须共享/在出口的shaping排队的confiure。

问:共享模式和整形的模式有何区别?

回答:在整形模式下,会保证出口队列的带宽百分比,并限制为该比率。整形的数据流不能使用比分配的带宽更多的带宽,即使链路处于空闲状态也是如此。整形的模式随着时间的推移提供流量一个更加均等的流并且减少突发数据流峰顶和谷。使用shaping,绝对值每权重用于计算队列的带宽联机。

srr队列带宽形状weight1 weight2 weight3 weight4

反面比率(1/weight)控制此队列的shaping带宽。换句话说, queue1是总带宽的保留的1/weight1百分比等等。如果配置权重0,对应的队列在共享模式运行。重要性指定与shape命令srr队列的带宽忽略,并且重要性用队列进入的效果的srr队列带宽共享接口配置命令指定。

在共享模式,队列共享带宽在他们根据已配置的权重。可以保证得到这一级别的带宽,但不限于这一级别的带宽。例如,如果队列是空的和不再要求链路的共享,剩余的队列能展开到未使用的带宽和在他们共享它。

srr队列带宽共享weight1 weight2 weight3 weight4

queue1是保证的至少weight1/(weight1 + weight2 + weight3 +带宽的weight4)百分比,但是能也吃如果必须到带宽其他非整形的队列。

相关信息


相关的思科支持社区讨论

思科支持社区是您提问、解答问题、分享建议以及与工作伙伴协作的论坛。


Document ID: 116089