技术博客

HCIP 数通:QoS 流量质量保障、分类标记、队列调度与流量整形实战

系统讲解 QoS(Quality of Service)的完整实现:流量分类(Class-Based Classification)、DSCP/802.1p 标记、PQ/WFQ/CBWFQ 队列调度原理与对比、流量整形(Traffic Shaping)与限速(Traffic Policing)的差异,以及语音/视频/数据业务的典型 QoS 策略配置。

QoSHCIP流量整形队列调度DSCP数通网络优化

QoS(Quality of Service,服务质量)解决网络带宽有限时的流量优先级问题:语音通话需要低延迟(< 150ms),视频会议需要稳定带宽,而文件传输可以等待。通过 QoS 把流量分类、标记、调度,让关键业务即使在网络拥塞时也能正常运行。

QoS 模型概述

无 QoS(Best Effort):
  所有流量同等对待,先来先服务
  网络拥塞时随机丢包 → 语音通话断续,视频卡顿

QoS 实现模型:
  DiffServ(Differentiated Services,差分服务)← 企业网主流
    在包头打标记(DSCP),沿途设备按标记差异化处理
    
  IntServ(Integrated Services,综合服务)
    为每个流预留带宽(RSVP 协议),复杂度高,大规模不适用

DiffServ QoS 流程:
  1. 分类(Classification):识别业务类型
  2. 标记(Marking):在包头写入优先级(DSCP)
  3. 调度(Scheduling):按优先级决定发送顺序
  4. 整形/限速(Shaping/Policing):控制流量速率

一、流量分类与标记

DSCP(差分服务代码点)

IP 包头的 DSCP 字段(6 bit,0-63):

常用 DSCP 值:
  EF  (Expedited Forwarding, 46):语音/实时视频(最高优先级)
  AF4 (Assured Forwarding Class 4, 34):视频流
  AF3 (30):关键业务数据
  AF2 (22):普通业务数据
  AF1 (10):低优先级数据
  CS1 (8) :Scavenger(最低优先级,P2P/垃圾流量)
  BE  (Default, 0):默认最低优先级

802.1p(二层以太网帧头,3 bit,0-7):
  7 = Network Control(STP/OSPF 等协议报文)
  6 = Internetwork Control
  5 = CRITIC/ECP(语音信令)
  4 = Video (视频会议)
  3 = Call Signaling(语音信令)
  2 = Excellent Effort(关键业务)
  1 = Best Effort(默认)
  0 = Background(最低)

流量分类(MQC - Modular QoS CLI)

# 华为 VRP 使用 MQC(模块化 QoS CLI)三步走:
# 1. 定义 traffic classifier(分类规则)
# 2. 定义 traffic behavior(行为动作)
# 3. 创建 traffic policy(策略 = 分类 + 行为)
# 4. 在接口应用 traffic-policy

# === 步骤 1:定义分类规则 ===

# 分类语音流量(基于 DSCP 值)
traffic classifier VOICE
  if-match dscp ef            # 匹配 DSCP=EF(46)的流量(已标记)

# 分类视频会议(基于 DSCP)
traffic classifier VIDEO
  if-match dscp af41          # AF41 = 34

# 分类语音信令(基于目标端口)
traffic classifier SIGNALING
  if-match acl 3001           # 匹配 ACL 3001 定义的流

# 分类管理流量(Telnet/SSH/SNMP)
traffic classifier MGMT
  if-match acl 3002

# 定义对应 ACL
acl number 3001
  rule 5 permit tcp destination-port eq 5060  # SIP 语音信令
  rule 10 permit udp destination-port eq 5060
acl number 3002
  rule 5 permit tcp destination-port eq 22    # SSH
  rule 10 permit tcp destination-port eq 23   # Telnet
  rule 15 permit udp destination-port eq 161  # SNMP

# 也可以基于 IP 地址分类(不推荐,IP 地址可能变化)
traffic classifier SERVER-TRAFFIC
  if-match ip-precedence 6    # IP Precedence = 6(旧的分类方法)

流量标记

# 在网络入口处(接入层)标记流量

# 语音流量标记为 DSCP EF
traffic behavior MARK-VOICE
  remark dscp ef              # 改写 DSCP 为 EF(46)

# 视频流量标记为 DSCP AF41
traffic behavior MARK-VIDEO
  remark dscp af41

# 普通业务标记为 DSCP AF21
traffic behavior MARK-BUSINESS
  remark dscp af21

# 丢弃恶意流量(P2P 等)
traffic behavior DROP-P2P
  deny                        # 直接丢弃

二、队列调度

常见队列类型对比

FIFO(先进先出):最简单,无差异,网络拥塞时都受影响

PQ(Priority Queuing,优先队列):
  高优先级队列清空后才处理低优先级
  优点:关键业务绝对优先
  缺点:低优先级可能饿死(长时间得不到处理)
  适合:带宽充足时的实时业务保障

WFQ(Weighted Fair Queuing,加权公平队列):
  按权重分配带宽,每个流都能得到服务
  优点:公平,防止饿死
  缺点:无法保证实时业务的严格优先

CBWFQ(Class-Based WFQ,基于类的加权公平队列):
  结合分类的 WFQ,不同类的流量设置不同带宽保证
  适合:企业 QoS 的基础队列

LLQ(Low Latency Queuing,低延迟队列):
  = PQ + CBWFQ
  语音类流量进 PQ(严格优先),其他流量进 CBWFQ
  生产推荐:绝大多数企业 QoS 使用 LLQ 模型

LLQ 队列配置(生产推荐)

# 定义带宽策略
traffic behavior VOICE-BEHAVIOR
  queue pq bandwidth 2000      # 语音进 PQ(严格优先),预留 2Mbps

traffic behavior VIDEO-BEHAVIOR
  queue af bandwidth pct 30    # 视频进 AF 队列,保证 30% 带宽

traffic behavior BUSINESS-BEHAVIOR
  queue af bandwidth pct 40    # 关键业务保证 40% 带宽

traffic behavior BEST-EFFORT-BEHAVIOR
  queue af bandwidth pct 20    # 普通流量 20% 带宽

traffic behavior SCAVENGER-BEHAVIOR
  queue af bandwidth pct 5     # 低优先级最多 5% 带宽
  # P2P 等流量,拥塞时最先丢弃

# 创建 Traffic Policy
traffic policy ENTERPRISE-QOS
  classifier VOICE      behavior VOICE-BEHAVIOR
  classifier VIDEO      behavior VIDEO-BEHAVIOR
  classifier MGMT       behavior BUSINESS-BEHAVIOR
  classifier SIGNALING  behavior BUSINESS-BEHAVIOR

# 在接口(WAN 出口)应用策略
interface GigabitEthernet0/0/1
  traffic-policy ENTERPRISE-QOS outbound    # 出方向(对 WAN 出口最有意义)

三、流量整形与限速

流量整形(Traffic Shaping):
  超出速率的流量放入缓冲队列,稍后发送
  特点:平滑突发,不丢包(除非队列满)
  效果:流量曲线变平滑
  适合:向 ISP 发送流量,匹配运营商 CIR(承诺信息速率)

流量限速(Traffic Policing):
  超出速率的流量直接丢弃或重新标记
  特点:立即丢弃,可能导致重传(影响 TCP 性能)
  适合:在接入口对用户流量限速(防止单用户占满带宽)

流量整形配置

# 场景:WAN 出口带宽 100Mbps,运营商限制 CIR=80Mbps
# 超过 80Mbps 的流量会在运营商侧被丢弃,影响用户体验
# 解法:在出口做流量整形,超出的缓冲发送(不让流量冲破 80Mbps)

# 对出向流量进行整形
traffic behavior WAN-SHAPING
  car cir 80000 pir 100000 cbs 3000000 pbs 5000000 \
      green pass yellow pass red discard
# CIR(承诺信息速率):80Mbps
# PIR(峰值信息速率):100Mbps
# CBS(承诺突发大小):3MB
# PBS(峰值突发大小):5MB
# green(低于 CIR)→ pass
# yellow(CIR 到 PIR 之间)→ pass(允许短时突发)
# red(超过 PIR)→ discard

interface GigabitEthernet0/0/1
  traffic-policy WAN-SHAPING outbound

流量限速配置(用户接入)

# 场景:在核心交换机上,限制每个用户 VLAN 的带宽
# VLAN 100 用户最多 50Mbps 上行

traffic classifier VLAN100-TRAFFIC
  if-match vlan-id 100

traffic behavior LIMIT-50M
  car cir 50000 cbs 1000000 \
      green pass \
      yellow discard \     # 超出 CIR 立即丢弃(限速,不缓冲)
      red discard

traffic policy USER-LIMIT
  classifier VLAN100-TRAFFIC behavior LIMIT-50M

interface GigabitEthernet0/0/24  # 接 VLAN 100 用户的接口
  traffic-policy USER-LIMIT inbound

四、WRED(加权随机早期检测)

# 传统的 Tail Drop 问题:
# 队列满时,新来的包都丢弃 → TCP 全局同步(所有 TCP 流同时重传,拥塞)

# WRED 解决方案:
# 当队列长度超过阈值时,随机丢弃部分包(而不是等队列满)
# 高优先级流量的丢弃阈值更高(更晚开始丢弃)

traffic behavior CBWFQ-WITH-WRED
  queue af bandwidth pct 30
  wred dscp-based
  # DSCP AF41 的丢弃阈值比 AF31 高
  # 这样视频流比普通业务更晚被丢弃

interface GigabitEthernet0/0/1
  traffic-policy MY-POLICY outbound

五、完整 QoS 策略示例(企业出口)

# 完整配置:4 类业务 + LLQ + 流量整形

# === ACL 定义 ===
acl number 3010
  rule 5  permit udp any any destination-port range 16384 32767  # RTP 语音媒体
  rule 10 permit tcp any any destination-port eq 5060             # SIP
  rule 15 permit udp any any destination-port eq 5060
acl number 3020
  rule 5  permit tcp any any destination-port eq 443  # HTTPS 视频会议
  rule 10 permit udp any any destination-port eq 8801 # Zoom
acl number 3030
  rule 5  permit tcp any any destination-port range 1024 5999   # 业务应用

# === 分类器 ===
traffic classifier CLASS-VOICE
  if-match acl 3010
traffic classifier CLASS-VIDEO
  if-match dscp af41 af42 af43
traffic classifier CLASS-DATA
  if-match acl 3030
traffic classifier CLASS-MGMT
  if-match dscp cs6 cs7       # 网络管理报文

# === 行为 ===
traffic behavior BEH-VOICE
  remark dscp ef
  queue pq bandwidth 5000      # 严格优先,5Mbps

traffic behavior BEH-VIDEO
  remark dscp af41
  queue af bandwidth pct 25    # 保证 25% 带宽

traffic behavior BEH-DATA
  remark dscp af21
  queue af bandwidth pct 50    # 保证 50% 带宽

traffic behavior BEH-MGMT
  remark dscp cs6
  queue af bandwidth pct 10    # 管理流量 10%

traffic behavior BEH-DEFAULT
  queue af bandwidth pct 10    # 剩余 10% 给其他

# === Policy ===
traffic policy WAN-QOS
  classifier CLASS-MGMT    behavior BEH-MGMT
  classifier CLASS-VOICE   behavior BEH-VOICE
  classifier CLASS-VIDEO   behavior BEH-VIDEO
  classifier CLASS-DATA    behavior BEH-DATA

# === 应用 ===
interface GigabitEthernet0/0/1
  traffic-policy WAN-QOS outbound

# === 验证 ===
display traffic policy statistics interface GigabitEthernet0/0/1 outbound
# 查看各队列的流量统计:包数、字节数、丢包数

小结

QoS 的实施思路:在入口分类和标记(用最精确的特征识别流量,打上 DSCP 标记)→ 在拥塞点调度(WAN 出口使用 LLQ,语音进 PQ,其他按优先级分配带宽)→ 在必要时整形/限速(出口整形匹配运营商带宽,入口限速防止单用户过量占用)。DSCP EF 给语音(最高优先),AF 系列给视频和数据(按级别分档),BE/CS1 给 P2P(最低,拥塞时先丢)。CBWFQ + LLQ 是企业 QoS 的黄金组合,既保证语音的严格优先,又对数据流量公平分配。