
在高速汇聚、多业务并发的企业网络边缘,网关既是“交通警察”,又是“调度员”。当语音、视频、ERP、网盘、IoT 等流量混杂在同一条出口链路时,若无精细的 QoS(Quality of Service)策略,关键业务将因突发流量而被挤占,导致抖动、丢包甚至中断。流量整形(Traffic Shaping)正是 QoS 工具箱中最具弹性的一环,它通过延缓而非丢弃超额报文,把“锯齿状”突发流削成“平滑曲线”,既避免下游拥塞,又提升链路利用率。本文以常见企业网关(Cisco IOS-XE、华为 VRP、Linux TC)为例,给出一份大于 500 字的实战配置思路与范例,帮助网络工程师在真实场景中“按图索骥”。
一、策略先行:业务分级与指标量化
在敲命令之前,先回答三个问题:
- 业务有几级?——推荐四层模型:Scavenger(网盘下载)、Best-Effort(普通上网)、Critical-Data(ERP/数据库)、Real-Time(VoIP/视频会议)。
- 每级要多少带宽?——用“80/20 原则”估算:例如 100 Mb 出口,给 Real-Time 20 Mb,Critical-Data 30 Mb,其余为 Best-Effort,Scavenger 限速 5 Mb。
- 允许的最大时延、抖动、丢包阈值?——VoIP 要求单向时延 <150 ms、抖动 <30 ms、丢包 <1%;ERP 可容忍 200 ms、抖动 50 ms、丢包 3%。
把答案写成 SLA 表格,后续所有配置参数都围绕这张表展开,避免“拍脑袋”。
二、模型选择:队列 + 整形器 + 丢弃器
- 队列(Queuing):CBWFQ / LLQ / PQ 负责“谁先走”。
- 整形器(Shaper):Token Bucket 负责“按什么速率走”。
- 丢弃器(Dropper):WRED / Tail-Drop 负责“超了怎么办”。
在网关上,通常把三者组合成一张 Hierarchical QoS Policy:父策略做整形,子策略做队列与丢弃。
三、Cisco IOS-XE 配置范例
场景:GigabitEthernet0/0 为 LAN,GigabitEthernet0/1 为 100 Mb 专线。
- 定义 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
- 定义子策略(队列 + 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
- 定义父策略(整形)
policy-map PARENT-SHAPE
class class-default
shape average 100000000
service-policy CHILD-QOS
- 绑定到接口
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
六、验证与调优
- 用 iperf 打 UDP 流测试 VoIP 带宽与抖动;
- 用 SNMP/NetFlow 持续监控队列深度;
- 若 WRED 丢包率 > SLA,则调高
min-threshold
或降低队列长度; - 每月复盘:业务增长 15% 以上时,提前扩容或重新分配百分比。
结语
流量整形不是简单地把带宽“一刀切”,而是基于业务价值的持续运营。通过在网关部署分级队列、Token Bucket 整形器与智能丢弃机制,网络团队可以在同一条物理链路上,让实时语音低抖动、ERP 稳定、下载流量不“野蛮生长”。当 SLA 被量化、策略被脚本化、指标被可视化,QoS 便从“玄学”变成可度量、可持续改进的工程实践。