首先要基于业务划分流量类:语音/视频、实时游戏、交互应用、下载/备份和公共管理流量。结合香港网络特点(低延迟、国际出口高并发),建议采用基于DSCP的分层优先策略,将延迟敏感流量标记为EF/CS5,将视频标记为AF41/AF31,普通流量为BE。
设计步骤包括:1) 流量采样与基线测量(利用sFlow/NetFlow/采样工具);2) 带宽预算分配(例如总出口2Gbps,可按业务分配EF 100Mbps、AF 400Mbps、BE 1.5Gbps);3) 定义队列与调度算法(优先级队列+CBWFQ/HTB);4) 定义整形与限速点(边缘出口做整形,核心做队列管理);5) 定义丢包与拥塞策略(优先级保护EF,使用ECN/fq_codel降低队列延迟)。
带宽分配时需计算token bucket参数:rate、burst与cburst。burst ≈ RTT * rate,香港到国际节点RTT通常20-80ms,burst应根据MSS和链路速率调整以避免突发丢包。
常见做法是在出口接口用HTB做分配、结合fq_codel做队列管理。示例如下(请在root下执行并根据接口/速率替换):
tc qdisc add dev eth0 root handle 1: htb default 30
tc class add dev eth0 parent 1: classid 1:1 htb rate 2000mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 100mbit ceil 100mbit prio 0
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 400mbit ceil 800mbit prio 1
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 1500mbit prio 2
tc qdisc add dev eth0 parent 1:10 handle 10: fq_codel
tc qdisc add dev eth0 parent 1:20 handle 20: fq_codel
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 5060 0xffff flowid 1:10
以上示例将SIP或语音流引导到EF队列,视频到AF队列,剩余为BE。对于大带宽需注意HTB的ceil设置、防止桶溢出以及结合ingress policing限制上行速率。
1) 在高带宽(>1Gbps)场景下,内核参数(如net.core.rmem_max/wmem_max)需调整;2) 使用ethtool开启SG/TSO/XDP等功能时需测试延迟影响;3) 监控tc qdisc统计并调整fq_codel的target和interval。
Cisco IOS示例(MQC)——先创建class-map匹配DSCP或ACL,再用policy-map分配带宽和队列:
class-map match-any VOIP
match ip dscp ef
policy-map QOS-OUT
class VOIP
priority 100000
class VIDEO
bandwidth 400000
class class-default
fair-queue
interface GigabitEthernet0/0
service-policy output QOS-OUT
其中 priority 为低延迟保证(用于语音),bandwidth用于保留带宽,剩余流量进入fair-queue。
Huawei使用traffic classifier + traffic behavior + traffic policy:定义流分类、行为(car或queue)并应用到接口出方向。注意在大带宽上使用car做policing会有突发丢包风险,优先采用shaping与队列分配。
关键是将延迟敏感流量隔离并保证其队列深度小,同时对大流量采用整形以避免队列排队膨胀。建议:
1) 使用小队列深度+主动队列管理(AQM,如fq_codel或PIE)来降低尾延迟;
2) 对TCP大流量使用HTB限速并设置合理的burst,以避免瞬时占满链路;
3) 在边缘对来自香港原生IP的入站/出站做流量分类,使用DSCP标记贯穿网络;
4) 监控关键指标(延迟、抖动、丢包率、队列长度),并在发现拥塞时动态调整ceil与优先级比例。
使用iperf3做并发测试,使用SLA/RTT探针和VOIP脚本模拟实际呼叫。必要时配置NetEm在受控环境中模拟国际链路抖动验证策略鲁棒性。
运维实践包括自动化、告警与容量规划:1) 使用配置管理(Ansible/NetBox)模板化QoS策略,避免手工误配置;2) 部署流量采集(sFlow/NetFlow)并在ELK/Prometheus+Grafana上做可视化,监控队列利用率、丢包和延迟分位数;3) 设置告警阈值(例如EF丢包>0.1%或视频带宽占用>90%触发告警);4) 定期回顾策略与回归测试,基于流量变化调整类比率与带宽上限。
对跨多节点部署,保持DSCP一致性并在BGP策略中避免社区或NAT改变标记;对大带宽国际链路,考虑与上游运营商协商流量工程(TE)和黑洞策略,确保在攻击或突发流量时保护延迟敏感业务。
