第一章:流量调度基础
1.1 什么是流量调度
流量调度,说白了就是「把网络流量安排到该去的地方」。
我刚开始接触这个概念时,觉得它不就是路由转发吗?后来才发现,事情远没那么简单。路由解决的是「能不能通」,流量调度解决的是「怎么通得更好」。
举个例子。你公司有两条专线,一条联通,一条电信。正常情况下,流量各走各的。但某天联通的专线突然抖了一下,延迟飙到200ms。这时候,流量调度系统会自动把联通的流量切到电信线路上。用户无感知,业务不中断。
这就是流量调度的价值。
核心定义:流量调度是指根据预设策略,动态或静态地将网络流量分配到不同链路、设备或服务节点的过程。它不仅仅是路由,更是对网络资源的精细化运营。
1.2 流量调度的核心目标
我在项目中总结过,流量调度无非围绕三个目标转:负载均衡、故障切换、成本优化。咱们一个一个说。
1.2.1 负载均衡
负载均衡是最基础的目标。你想想看,三条专线,一条带宽100M,两条50M。如果流量一股脑全走100M那条,另外两条闲着,这不浪费吗?
我曾在某电商大促期间遇到过这种情况。当时三条专线,其中一条利用率飙到95%,另外两条只有20%。结果那条高负载的线路开始丢包,用户下单失败。后来加了基于权重的调度策略,才把流量均匀散开。
负载均衡的核心指标:
- 链路利用率:各链路带宽使用率的均衡程度
- 连接数分布:新建连接在各节点间的分配比例
- 响应时间:各路径的端到端延迟差异
1.2.2 故障切换
故障切换是流量调度的「保底能力」。说白了,就是一条路断了,另一条能顶上。
我记得有一次深夜值班,某银行客户的MPLS专线突然中断。正常情况下,BGP会收敛,但收敛时间往往要几十秒甚至几分钟。对于金融交易来说,这几十秒就是灾难。
我们当时配置了BFD(双向转发检测)配合静态路由的浮动路由机制。BFD检测到链路故障后,3毫秒内触发切换。嗯,这才是合格的故障切换。
避坑指南:我曾经遇到过BFD和路由协议配合不当的情况。BFD检测到故障,但路由协议还在hold-down状态,结果流量被黑洞了。记住:BFD的检测间隔一定要小于路由协议的收敛时间。
1.2.3 成本优化
成本优化这个目标,很多工程师容易忽略。但老板们可不会忘。
举个例子。你公司有两条专线,一条是贵的电信CN2 GIA,一条是便宜的普通BGP。核心业务走CN2,下载、备份等非关键流量走普通线路。这就是成本优化。
我见过一个案例:某公司把所有流量都走CN2,月成本30万。后来做了基于应用类型的调度,把视频会议、大文件传输切到普通线路,成本直接降到12万。业务体验几乎没变。
成本优化的常见手段:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 基于应用分级 | 高优先级应用走优质线路 | 核心交易、实时通信 |
| 基于时段调度 | 闲时流量走低价线路 | 数据备份、批量同步 |
| 基于流量比例 | 按比例分配流量到不同成本线路 | 混合线路场景 |
1.3 调度策略概述
策略是流量调度的灵魂。没有策略,调度就是瞎搞。我习惯把策略分为三类:基于路由、基于策略、基于应用。
1.3.1 基于路由的调度
这是最传统的方式。通过调整路由协议(BGP、OSPF)的选路属性,来影响流量走向。
比如BGP的MED属性、Local Preference、AS Path等。我调过最狠的一次,是通过修改AS Path长度,让某条线路的优先级降低,从而把流量引到另一条线路上。
# 示例:通过BGP策略控制流量走向
route-map PREFER-LINK permit 10
match ip address prefix-list CRITICAL
set local-preference 200
route-map PREFER-LINK permit 20
set local-preference 100
基于路由的调度优点是简单、设备原生支持。缺点是不够精细,只能做到「网段级」的调度。
1.3.2 基于策略的调度
基于策略的调度,说白了就是「看人下菜碟」。根据源IP、目的IP、端口、协议、甚至时间等条件,决定流量走哪条路。
我曾在某跨国企业做过一个策略:中国区访问海外总部的流量,走CN2线路;访问东南亚的流量,走香港POP点中转。这就是典型的基于策略调度。
个人经验:策略调度最怕策略冲突。我曾经遇到过两条策略匹配同一个流量,结果流量被来回踢皮球。建议策略列表从上到下排列,匹配即停止,不要搞复杂的优先级计算。
1.3.3 基于应用的调度
这是目前最流行的方式。通过DPI(深度包检测)或应用识别技术,识别出流量属于哪个应用,然后执行调度策略。
举个例子:
- Zoom视频会议流量 → 走低延迟线路
- YouTube视频流量 → 走高带宽线路
- 数据库同步流量 → 走稳定线路
- P2P下载流量 → 走便宜线路
基于应用的调度,需要设备支持应用识别能力。我建议使用专门的流量调度设备,比如F5的BIG-IP、A10的Thunder系列,或者开源的m0n0wall、pfSense。
1.4 知识体系总览
下面这张图,是我自己画的流量调度知识体系。你一看就明白。
这张图把流量调度的核心逻辑串起来了。三个目标决定了「为什么做」,三种策略决定了「怎么做」。实际项目中,往往是多种策略组合使用。
我的建议:刚开始做流量调度,别贪多。先搞定基于路由的调度,再逐步引入策略和应用识别。一口吃不成胖子,网络这东西,稳字当头。
公众号:蓝海资料掘金营,微信deep3321