网络设计第十一问:QoS——网络的优先级和插队机制
所有包在路由器眼中互相平等——除非你说不。QoS 就是给路由器和交换机一种能力:认出哪些包重要——发给它们优先通行的权利。社保系统的结算请求必须比报表查询先获得排队的入口——这就是 QoS。
文章目录
- 网络设计第十一问:QoS——网络的优先级和插队机制
- 一、没有 QoS 的现实
- 二、分类与标记——让路由器认出你的包
- 三、队列调度——怎么在高优先级占满时不让低优先级饿死
- 四、令牌桶算法——限制发送端速率
- 五、政务系统里的 QoS
一、没有 QoS 的现实
路由器的输出队列只有一条——带宽恒定——所有包按先到先出排队。一条 FTP 大文件传输的包加入队列——前方 300 毫秒的队列深度——现在社保的结算请求到达——排队在 FTP 的所有包之后——300ms 后才发出——现在这笔结算请求的延迟扩展了两倍——因为所有类型的流量在同一个管道里。
这就是没有 QoS——一个应用的高带宽占据了另一个关键应用的低延迟需求。
二、分类与标记——让路由器认出你的包
识别不同流的标志——IP 头里的 DS 字段(旧称 TOS)、VLAN 的 CoS、MPLS 的 EXP。你的出口设备在包的头中打一个"优先级"——例如 5(高)、1(低)——路由器查这个标记——高优先级的塞入优先队列——1 的等。
标记的方法从最简到最细:
- 服务型号——只分尽力和关键两类
- 优先级位——最多 8 个级别
- 差异型服务——使用 6 位 DS 字段——分不同服务等级——Af(保证转发)+ EF(加快转发)+ 默认——共 64 个值——可以灵活地为不同的应用事先规划带宽
三、队列调度——怎么在高优先级占满时不让低优先级饿死
加权公平队列(WFQ)——把每类流量分开——固定带宽权重。即使最高优先级的流量满载——低优先级也得到它的最小保证带宽——不会完全饥荒。
另外——低时延队列(LLQ)——专门把高优先级的实时流量(如VoIP)配到特殊队列——队列空就发——如果没空就等着但优先——上限带宽——最大不能挤爆链路。
四、令牌桶算法——限制发送端速率
发送端不能无限推送——令牌桶拦截你的流量——每单位时间往桶里投入一个令牌——你发送一个包必须消耗一个令牌。令牌用完了你就停下排队等下一个令牌。桶容量限制突发——如果积了很多令牌——可以一次发送一大段——但速率最后还是落到平均速率的限制。
这个机制在实际的运营商限速中(如社保专线套餐——100Mbps 固定——如果你超过这个速率——丢弃多余的包)——就是用令牌桶实现的。
五、政务系统里的 QoS
社保全省平台跨省对接时——费用结算请求优先于统计报表。在医院和结算平台之间通过 MPLS 专线——出口端对费用结算接口发特定 IP 的包打上 EF 级别——路由器这个流优先传——统计报表走 ‘best effort’。
没有这个标记——费用结算请求和日常批处理混在同一个出口——不会堵到不能传——但延迟会从原来的 15ms 变成随机的 100ms+——前端操作员以为系统不行了。
✅ 亮点:从队列的漏洞出发——所有流量在同一队列时就无QoS可言——分类标记→多队列调度→令牌桶限速→QoS落地到政务结算和统计报表分离的真实场景。扩展方向:SD-WAN智能流量调度、5G网络切片的QoS模型。