睿诚科技协会

Cisco QoS技术详解,如何实现高效流量优先级管理?

本文将按照“为什么需要 QoS -> QoS 的核心理念 -> Cisco QoS 的实现模型与工具 -> 实施步骤 -> 最佳实践”的逻辑进行深入讲解。

Cisco QoS技术详解,如何实现高效流量优先级管理?-图1
(图片来源网络,侵删)

为什么需要 QoS?—— “高速公路”的比喻

想象一下,所有网络流量都共用一条“高速公路”(网络带宽)。

  • 没有 QoS 的情况: 这条公路是“单车道”的,所有车辆(数据包)都按“先到先得”(First-Come, First-Served)的原则上路,如果路上突然来了一辆满载“紧急物资”的卡车(VoIP 语音包),它只能跟在缓慢移动的“观光大巴”(大文件传输)后面等待,结果“紧急物资”延迟到达,失去了价值,这就是网络拥塞导致的关键业务性能下降。

  • 有 QoS 的情况: 这条公路被改造成了“多车道高速公路”。

    • 应急车道: 专门给救护车、警车(VoIP、视频会议)使用,即使其他车道堵死,它们也能快速通行。
    • 超车道: 给跑车(重要数据库同步)使用,速度更快。
    • 普通车道: 给私家车(网页浏览、邮件)使用。
    • 货车/慢车道: 给卡车(文件下载、P2P 下载)使用,它们速度慢,但不会影响其他车辆。

QOS 的目的就是通过这种“交通管制”,确保重要的“车辆”能够准时、快速地到达目的地。

Cisco QoS技术详解,如何实现高效流量优先级管理?-图2
(图片来源网络,侵删)

QoS 的核心理念:分类与标记

QOS 的本质是识别流量 -> 对其进行分类 -> 打上标记 -> 根据标记进行调度

  1. 识别流量:

    • 基于端口: 某个物理端口或 VLAN 下的所有流量都被认为是同一类。
    • 基于 DSCP: 查看 IP 包头中的 DSCP(Differentiated Services Code Point)字段,这是目前最主流的 IP 网络标记方式。
    • 基于协议/端口号: 识别出 RTP 端口(用于 VoIP)、SIP 信令端口等。
    • 基于 ACL (Access Control List): 通过复杂的规则组合(源/目的 IP、源/目的端口、协议等)来精确匹配流量。
  2. 分类与标记:

    • 分类: 识别出流量后,将其归入一个特定的“流量类别”(Class)。
    • 标记: 为这个类别打上一个“标签”,这个标签会存在于数据包的头部,供网络中的后续设备(交换机、路由器)识别,这个标记就是 QOS 的“语言”。
  3. 排队与调度:

    Cisco QoS技术详解,如何实现高效流量优先级管理?-图3
    (图片来源网络,侵删)
    • 设备根据数据包的“标签”,将其放入不同的“队列”(Queue)中。
    • 每个队列有不同的服务等级
      • 严格优先级队列: 优先级最高的队列,只要有数据包,就会被立即发送,这适合语音等极度敏感的业务。
      • 加权公平队列: 为不同队列分配不同的带宽权重,确保高优先级队列获得更多带宽,但低优先级队列也能获得保障,不会被“饿死”,这是最常用的调度方式。

Cisco QoS 的实现模型与工具详解

Cisco IOS 设备(交换机、路由器)上的 QoS 实现遵循一个模块化的模型,主要分为三个阶段:分类与标记 -> 拥塞避免 -> 流量监管与整形

分类与标记

这是 QoS 的第一步,目的是在网络边缘(如接入交换机)识别流量并打上标记,让核心网络设备能够识别并处理。

信任边界

  • 概念: 确定由谁来负责给流量打上标记,最佳实践是在网络的边缘(接入层)进行分类和标记,核心网络设备则信任这些标记并进行转发。
  • 为什么? 如果核心设备自己去识别所有流量,会消耗大量 CPU 资源,边缘设备通常连接着明确的终端(如 IP 电话、PC),识别起来更简单高效。
  • 配置命令:
    • mls qos trust cos: 信任 CoS(Class of Service)标记,常用于二层网络(VLAN Tag 中的 3 比特)。
    • mls qos trust dscp: 信任 DSCP 标记,常用于三层网络(IP 包头中的 6 比特)。这是目前推荐的做法。
    • mls qos trust device cisco-phone: 特殊信任模式,如果连接的是 Cisco IP 电话,则信任电话发出的流量标记(通常是 DSCP EF for voice),并自动将来自 PC 的流量标记为 DSCP AF21。

分类与重新标记

当设备不信任输入的标记,或者需要根据内部策略修改标记时,就需要进行分类和重新标记。

  • 工具:
    • Class Map (类映射): 定义一个“规则”,用来匹配特定的流量。
      class-map match-all VOICE_TRAFFIC  // match-all 表示所有条件必须同时满足
        match dscp ef                   // 匹配 DSCP 值为 EF (Expedited Forwarding) 的流量
      class-map match-any VIDEO_TRAFFIC  // match-any 表示满足任意一个条件即可
        match dscp af41
        match dscp af42
    • Policy Map (策略映射): 将“类映射”与“动作”关联起来。
      policy-map QOS_POLICY
        class VOICE_TRAFFIC
          set dscp ef      // 将匹配到的流量 DSCP 标记设置为 EF
        class VIDEO_TRAFFICE
          set dscp af41
        class class-default // 默认类,匹配所有未明确分类的流量
          set dscp cs2       // 标记为 Best Effort
  • 应用策略: 将策略应用到接口的入方向或出方向。
    interface GigabitEthernet0/1
      service-policy input QOS_POLICY  // 在入方向应用策略,对进入接口的流量进行分类和标记

拥塞避免

当流量速率超过接口带宽时,就会发生拥塞,拥塞避免机制负责在发生丢包前进行干预。

缓冲区管理

  • 尾丢弃: 最简单的方式,当队列满了,新来的数据包全部丢弃,这会导致 TCP 流量“全局同步”,所有 TCP 连接同时降低发送速率,造成网络吞吐量剧烈波动。
  • 加权随机早期检测: 这是更智能的拥塞避免机制。
    • 工作原理: 为每个队列设置一个“低阈值”和一个“高阈值”,当队列长度超过低阈值时,WRED 开始随机地丢弃或标记(通过 ECN)数据包,丢弃的概率随着队列长度的增加而增加,直到达到高阈值,此时开始确定性地丢弃所有数据包。
    • 优点:
      • 避免全局同步,让 TCP 流量平滑地降低速率。
      • 可以保护高优先级流量(如语音)不被丢弃,因为 WRED 通常根据 DSCP 值来决定丢弃概率,优先丢弃低 DSCP 值的包。

排队机制

当多个数据包同时等待发送时,排队机制决定了它们的发送顺序。

  • FIFO (First-In, First-Out): 先到的先发,简单,但无法区分流量优先级。
  • PQ (Priority Queuing): 严格优先级队列,分为高、中、中-低、低四个队列,只要高优先级队列有数据,就永远先发送它,可能导致低优先级队列“饿死”。
  • WFQ (Weighted Fair Queuing): 加权公平队列,根据流的“权重”动态分配带宽,权重高的流获得更多带宽,会自动识别交互式流量(如 Telnet)并给予更高优先级。
  • CBWFQ (Class-Based Weighted Fair Queuing): WFQ 的增强版,允许用户自定义流量类别,并为每个类别分配保证带宽,这是最常用、最灵活的排队机制之一。
    policy-map CBWFQ_POLICY
      class VOICE_TRAFFIC
        priority 128  // 严格优先级,保证 128 kbps 带宽,延迟低
      class VIDEO_TRAFFICE
        bandwidth 512 // 保证 512 kbps 带宽
      class class-default
        bandwidth 256 // 保证 256 kbps 带宽给默认流量
  • LLQ (Low Latency Queuing): 这是 CBWFQ 的一个特殊子集,它在 CBWFQ 的基础上增加了一个严格优先级队列,这个队列里的流量(通常是语音)会被绝对优先发送,不受带宽限制,LLQ 是实现 VoQ 的黄金标准。

流量监管与整形

这两者都是用来控制流量速率的工具,但目的和方式不同。

特性 流量监管 流量整形
目的 强制限制流量速率,丢弃超出的流量。 平滑流量速率,使其不超过限制,但不会丢弃数据包,而是进行缓存。
工作方式 使用“令牌桶”算法,当桶中没有令牌时,数据包被丢弃。 使用“令牌桶”算法,当桶中没有令牌时,数据包被缓存在缓冲区中,等待有令牌时再发送。
结果 速率恒定,但有丢包。 速率平滑,无丢包,但会增加延迟和抖动。
典型应用 在网络入口处,防止某个用户或应用占用过多带宽。 在网络出口处,连接到一个速率较低的链路,确保发出的流量不会超过对方能处理的速率。
配置命令 police cir 1000000 bc 12500 shape average 1000000

Cisco QoS 实施步骤(一个完整的例子)

假设我们要为一个办公室的 Cisco IP 电话和 PC 实施QoS,目标是保障语音质量。

网络拓扑: PC --- IP Phone --- 接入交换机

目标:

  1. 来自电话的语音流量获得最高优先级。
  2. 来自 PC 的流量(网页、邮件)获得普通优先级。
  3. 来自 PC 的大文件下载被限制带宽,不影响语音。

步骤 1:在接入交换机上配置信任边界

interface GigabitEthernet0/1
  switchport mode access
  switchport voice vlan 100       # 假设语音 VLAN 是 100
  mls qos trust device cisco-phone # 关键一步!信任 Cisco IP Phone 的标记
  • 效果: 交换机会信任电话发过来的语音流量标记(通常是 DSCP EF),并将来自 PC 的流量自动标记为 DSCP AF21(或类似值)。

步骤 2:配置 LLQ 策略

! 定义类映射
class-map match-any VOICE
  match dscp ef
class-map match-any DATA
  match dscp af21
! 定义策略映射
policy-map QOS-LLQ-POLICY
  class VOICE
    priority 128  ! 语音流量,严格优先级,保证 128kbps
  class DATA
    bandwidth 256  ! 数据流量,保证 256kbps
  class class-default
    police 1000000  ! 默认流量,限制总速率为 1Mbps,超出部分丢弃

步骤 3:将策略应用到接口

interface GigabitEthernet0/1
  service-policy output QOS-LLQ-POLICY ! 通常在出方向应用策略,因为拥塞发生在发送时

步骤 4:在整个路径上启用 QoS 确保从接入交换机 -> 汇聚交换机 -> 核心路由器 -> WAN 边界路由器的所有设备都:

  1. 信任来自下游设备的标记(或在边缘重新标记)。
  2. 应用了相应的 QoS 策略(如 LLQ),确保语音流量始终走在优先级队列里。

最佳实践与注意事项

  1. 端到端实施: QoS 必须在网络的所有设备(接入、汇聚、核心、WAN 边界)上协同工作,才能保证端到端的服务质量。
  2. 从边缘开始: 在网络的边缘(接入层)进行分类和标记,核心设备信任这些标记。
  3. 简化策略: QoS 策略越简单越好,避免过度复杂的分类,否则会增加设备 CPU 负担。
  4. 监控是关键: 使用 show mls qos interface, show policy-map interface, show queueing interface 等命令监控 QoS 策略的运行效果,并根据实际情况进行调整。
  5. 区分 CoS 和 DSCP:
    • CoS (802.1p): 二层标记,只在 VLAN 内部有效。
    • DSCP (DiffServ): 三层标记,端到端(跨越不同 VLAN 和三层网络)都有效。优先使用 DSCP。
  6. 不要过度使用 LLQ: LLQ 的优先级队列会抢占所有其他队列的带宽,如果放入 LLQ 的流量过多(多个视频会议),可能会“饿死”其他所有流量,导致网络整体性能下降,应为 LLQ 流量设置一个合理的带宽上限。

Cisco QOS 是一个功能强大但复杂的工具集,其核心思想是通过分类、标记、排队、调度四个步骤,为不同业务提供差异化的服务,成功的 QoS 部署需要一个清晰的端到端设计,从网络边缘进行信任和标记,在核心路径上应用拥塞避免优先级队列(如 LLQ),并通过持续的监控和调优来确保效果,掌握这些技术和模型,是构建高质量、高可靠现代网络的必备技能。

分享:
扫描分享到社交APP
上一篇
下一篇