第一章:流量调度基础

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 知识体系总览

下面这张图,是我自己画的流量调度知识体系。你一看就明白。

流量调度知识体系 流量调度 负载均衡 故障切换 成本优化 基于路由 基于策略 基于应用 基于路由 • BGP属性控制 • OSPF Cost调整 • 静态路由优先级 基于策略 • 源/目的IP匹配 • 端口/协议匹配 • 时间/时段匹配 基于应用 • DPI深度识别 • 应用特征匹配 • 动态策略调整 图:流量调度三大目标与三种策略的关系

这张图把流量调度的核心逻辑串起来了。三个目标决定了「为什么做」,三种策略决定了「怎么做」。实际项目中,往往是多种策略组合使用。

我的建议:刚开始做流量调度,别贪多。先搞定基于路由的调度,再逐步引入策略和应用识别。一口吃不成胖子,网络这东西,稳字当头。


公众号:蓝海资料掘金营,微信deep3321