网关流量整形QoS配置

网关流量整形QoS配置

在高速汇聚、多业务并发的企业网络边缘,网关既是“交通警察”,又是“调度员”。当语音、视频、ERP、网盘、IoT 等流量混杂在同一条出口链路时,若无精细的 QoS(Quality of Service)策略,关键业务将因突发流量而被挤占,导致抖动、丢包甚至中断。流量整形(Traffic Shaping)正是 QoS 工具箱中最具弹性的一环,它通过延缓而非丢弃超额报文,把“锯齿状”突发流削成“平滑曲线”,既避免下游拥塞,又提升链路利用率。本文以常见企业网关(Cisco IOS-XE、华为 VRP、Linux TC)为例,给出一份大于 500 字的实战配置思路与范例,帮助网络工程师在真实场景中“按图索骥”。

一、策略先行:业务分级与指标量化
在敲命令之前,先回答三个问题:

  1. 业务有几级?——推荐四层模型:Scavenger(网盘下载)、Best-Effort(普通上网)、Critical-Data(ERP/数据库)、Real-Time(VoIP/视频会议)。
  2. 每级要多少带宽?——用“80/20 原则”估算:例如 100 Mb 出口,给 Real-Time 20 Mb,Critical-Data 30 Mb,其余为 Best-Effort,Scavenger 限速 5 Mb。
  3. 允许的最大时延、抖动、丢包阈值?——VoIP 要求单向时延 <150 ms、抖动 <30 ms、丢包 <1%;ERP 可容忍 200 ms、抖动 50 ms、丢包 3%。

把答案写成 SLA 表格,后续所有配置参数都围绕这张表展开,避免“拍脑袋”。

二、模型选择:队列 + 整形器 + 丢弃器

  1. 队列(Queuing):CBWFQ / LLQ / PQ 负责“谁先走”。
  2. 整形器(Shaper):Token Bucket 负责“按什么速率走”。
  3. 丢弃器(Dropper):WRED / Tail-Drop 负责“超了怎么办”。
    在网关上,通常把三者组合成一张 Hierarchical QoS Policy:父策略做整形,子策略做队列与丢弃。

三、Cisco IOS-XE 配置范例
场景:GigabitEthernet0/0 为 LAN,GigabitEthernet0/1 为 100 Mb 专线。

  1. 定义 ACL 与 Class-Map
ip access-list extended ACL-VOICE
 permit udp any any range 16384 32767
class-map match-any CM-VOICE
 match access-group name ACL-VOICE
class-map match-any CM-CRITICAL
 match protocol sqlnet
 match protocol ssh
class-map match-any CM-SCAVENGER
 match protocol bittorrent
  1. 定义子策略(队列 + WRED)
policy-map CHILD-QOS
 class CM-VOICE
  priority level 1
  police rate percent 20 conform-action transmit exceed-action drop
 class CM-CRITICAL
  bandwidth remaining percent 40
  random-detect dscp-based
 class class-default
  bandwidth remaining percent 60
  random-detect
  1. 定义父策略(整形)
policy-map PARENT-SHAPE
 class class-default
  shape average 100000000
  service-policy CHILD-QOS
  1. 绑定到接口
interface GigabitEthernet0/1
 service-policy output PARENT-SHAPE

至此,所有离开企业的流量被统一整形为 100 Mb,内部再按四级队列调度;VoIP 被严格限速 20 Mb,却享有最高优先级;Scavenger 流量即便突发 50 Mb,也会在网关处被缓存和延迟,而不会挤占专线。

四、华为 VRP 配置对照
华为语法与 Cisco 类似,但用 qos queue-profile + qos car 实现:

qos queue-profile ENTERPRISE
 queue 3 voip pq shaping 20
 queue 2 critical wfq weight 40
 queue 1 normal wfq weight 60
 queue 0 scavenger wfq weight 5
#
interface GigabitEthernet0/0/1
 qos queue-profile ENTERPRISE outbound
 qos lr outbound 100000

五、Linux TC 开源实现
对于虚拟化网关或白盒交换机,可用 TC-HFSC 做分层整形:

tc qdisc add dev eth1 root handle 1: hfsc default 30
tc class add dev eth1 parent 1: classid 1:1 hfsc sc rate 100mbit ul rate 100mbit
tc class add dev eth1 parent 1:1 classid 1:10 hfsc rt m1 20mbit d 5ms m2 20mbit
tc class add dev eth1 parent 1:1 classid 1:20 hfsc ls m1 30mbit d 50ms m2 30mbit
tc filter add dev eth1 parent 1: protocol ip u32 match ip dport 5060 0xffff flowid 1:10

六、验证与调优

  1. 用 iperf 打 UDP 流测试 VoIP 带宽与抖动;
  2. 用 SNMP/NetFlow 持续监控队列深度;
  3. 若 WRED 丢包率 > SLA,则调高 min-threshold 或降低队列长度;
  4. 每月复盘:业务增长 15% 以上时,提前扩容或重新分配百分比。

结语
流量整形不是简单地把带宽“一刀切”,而是基于业务价值的持续运营。通过在网关部署分级队列、Token Bucket 整形器与智能丢弃机制,网络团队可以在同一条物理链路上,让实时语音低抖动、ERP 稳定、下载流量不“野蛮生长”。当 SLA 被量化、策略被脚本化、指标被可视化,QoS 便从“玄学”变成可度量、可持续改进的工程实践。