Skip to content

BGP LocalPref 与 MED 调优手册:多出口网络的稳定流量工程实践

9 min read

在多出口网络里,LocalPref 与 MED 常被同时使用,但很多故障恰恰来自两者混用失控。 常见现象是:出口流量看起来调通了,过几天业务高峰又回抖;或者对端入口流量偏置生效了,却引发本地收敛震荡。

问题根源通常不是协议本身,而是策略边界不清。 LocalPref 负责自治系统内部优先级,MED 负责向同一对端 AS 提示入口偏好。二者语义不同、作用域不同、风险也不同。

本文目标是给出一套可发布、可运维、可回滚的调优框架。

一、先建立“目标优先级”,再选属性

调优前先明确目标顺序,推荐按以下优先级:

  1. 业务连续性。
  2. 收敛稳定性。
  3. 时延优化。
  4. 成本优化。

如果把成本放在前面,通常会在故障场景失去弹性。 因为高成本路径往往也是高冗余路径,过度压成本会削弱故障缓冲能力。

二、LocalPref 设计:固定档位,禁止自由漂移

LocalPref 是 AS 内最有力的出口控制杆。越强的杠杆越要制度化。 建议用固定档位而非自由数值:

  1. 320:关键业务保护档。
  2. 280:低时延优先档。
  3. 240:默认主出口档。
  4. 200:普通备出口档。
  5. 150:成本优先档。

并执行三条硬规则:

  1. 单次变更最多跨一档。
  2. 应急档位必须有过期时间。
  3. 关键前缀档位变更必须双人审批。

这样做可以把“临时经验值”从系统中清理掉。

三、MED 设计:协商属性,不是万能控制器

MED 经常被过度期待。它本质上是“建议值”,而且通常只在同一对端 AS 的路径比较中有效。 因此 MED 调优要强调外部协同:

  1. 明确对端是否比较 MED。
  2. 明确对端是否会覆盖你的 MED。
  3. 明确多互联点的 IGP 与物理路径约束。

如果这些前提不清楚,MED 再精细也可能没有效果,甚至产生反直觉路径。

四、组合策略:LocalPref 决定“我怎么出”,MED 影响“你怎么进”

成熟实践不是二选一,而是分层组合:

  1. 出口流量主控用 LocalPref。
  2. 入口流量偏置用 MED + 社区值协同。
  3. 细粒度修正用 AS_PATH prepend。
  4. 风险兜底用 NO_EXPORT 与泄露防线。

这套组合避免了把单一属性拉到极限。 “所有问题都用一个属性解决”在 BGP 里几乎必定失稳。

flowchart LR
    A["前缀进入策略域"] --> B["安全检查: RPKI/前缀白名单/max-prefix"]
    B --> C["业务分类: 关键/普通/成本"]
    C --> D["LocalPref 档位映射"]
    D --> E["MED 设定与对端协商策略"]
    E --> F["可选 Prepend 微调"]
    F --> G["发布并观测: 收敛+业务指标"]

五、收敛稳定:调优动作要限制爆炸半径

调优时最危险的不是某个参数,而是动作叠加。 建议执行以下收敛纪律:

  1. 一个维护窗口只改一种核心属性。
  2. 每次只灰度一个区域。
  3. 观察窗至少覆盖一个业务峰值片段。
  4. 任一阈值触发就立即冻结放量。

阈值建议包含三类:

  1. 控制面阈值:会话 flap、更新峰值、重算时延。
  2. 路由面阈值:关键前缀路径切换次数。
  3. 业务面阈值:核心 API 成功率和 P99 延迟。

六、路由泄露防护:调优不能突破安全基线

流量工程常在高压场景执行,最容易“先调通再补安全”。 这个顺序必须反过来:

  1. 无策略默认拒绝(RFC 8212)。
  2. 客户/对等/上游角色约束与 OTC(RFC 9234)。
  3. max-prefix 分级阈值。
  4. RPKI Origin Validation 结果分流。
  5. 异常传播自动隔离。

只有安全门禁先过,LocalPref/MED 才允许放量。

七、可观测性:判断调优有效,必须看联动指标

建议最少构建 12 个指标:

  1. 各档位 LocalPref 前缀数。
  2. 各档位流量占比。
  3. MED 值分布与变化率。
  4. 关键对端入口流量偏移。
  5. 会话 flap 频率。
  6. 更新峰值和重算耗时。
  7. RIB/FIB 差异时长。
  8. 关键业务错误率。
  9. 关键业务 P99 延迟。
  10. 回滚触发次数。
  11. 告警关闭时长。
  12. 变更后 24 小时异常事件数。

如果没有这些指标联动,你只能凭“感觉”判断调优效果。

八、维护窗口流程:从“手工调值”升级为“工程发布”

标准流程建议分八步:

  1. 变更前仿真:评估路径变化范围。
  2. 变更评审:确认目标优先级与风险边界。
  3. 基线快照:记录当前 LocalPref/MED 分布。
  4. 小流量灰度:单节点或单区域先行。
  5. 联动验收:网络+业务指标同时达标。
  6. 阶段放量:逐批推进并持续观察。
  7. 条件回滚:触发阈值立即回退。
  8. 复盘归档:更新模板、字典和阈值。

流程的价值不是增加手续,而是降低不可逆风险。

九、回滚策略:提前设计比临场反应更可靠

回滚建议分三层:

  1. 属性回滚:恢复 LocalPref 档位基线。
  2. 边界回滚:撤销 MED 与 prepend 变更。
  3. 路由回滚:回到上个稳定策略版本。

每层都要定义触发条件和验证条件。 例如“触发条件”可以是连续 5 分钟业务错误率超阈值;“验证条件”可以是 10 分钟内指标回归。

十、典型场景打法

场景 A:双运营商出口,关键业务时延波动

建议:

  1. 关键前缀先提升到低时延档位。
  2. 观察一个峰值周期。
  3. 若成功再扩大前缀范围。
  4. 同时记录成本变化,防止超预算。

场景 B:入口流量集中打爆某互联点

建议:

  1. 与对端确认 MED 比较策略。
  2. 小步调整 MED 值。
  3. 必要时配合 prepend 温和偏置。
  4. 若无效,快速回退并改用社区协同方案。

场景 C:调优窗口叠加泄露告警

建议:

  1. 立即冻结调优放量。
  2. 先执行安全隔离。
  3. 恢复稳定后再继续优化。

十一、治理制度:让策略长期可维护

建议建立四个资产库:

  1. LocalPref 档位字典。
  2. MED 协商矩阵。
  3. 变更模板与回滚模板。
  4. 事故复盘与阈值演进记录。

并把它们放进同一版本库,任何生产变更都要引用版本号。 没有版本号的策略,等于不可审计策略。

十二、季度演练建议

每季度至少做三次演练:

  1. 出口切换演练:验证 LocalPref 档位与回滚时长。
  2. 入口偏置演练:验证 MED 协商有效性。
  3. 风险叠加演练:验证泄露告警下的变更冻结机制。

每次演练都应输出改进项并追踪关闭。

十三、落地核查清单

  1. 是否有固定 LocalPref 档位体系。
  2. 是否有 MED 协商记录与适用边界。
  3. 是否设置安全门禁优先于调优动作。
  4. 是否具备 12 项联动观测指标。
  5. 是否具备三层回滚包。
  6. 是否建立季度演练和复盘机制。

这些核查项长期达标,LocalPref 与 MED 才会成为“稳定器”,而不是“风险放大器”。

十四、数据驱动调优案例:从“感觉切流”到“证据切流”

下面给一个可复用的案例框架,帮助团队把 LocalPref/MED 调优变成可验证实验。

案例背景

某区域有两条互联网出口:A 出口时延低但成本高,B 出口成本低但高峰拥塞明显。 业务方希望白天优先稳定,夜间适当降成本。

调优前基线

  1. 关键前缀全部走 A,普通前缀混合。
  2. 高峰期 B 出口丢包上升,出现短时重传。
  3. 入口流量在两个互联点分布不均。

调优动作

  1. 对关键前缀维持高档 LocalPref,不参与成本策略。
  2. 对普通前缀在夜间窗口下调一档 LocalPref,导向 B。
  3. 对入口拥塞互联点提高 MED,配合对端协商做缓慢偏置。
  4. 对高风险前缀启用严格 max-prefix 与角色约束,防止误发布。

验收指标

  1. 关键业务成功率保持不变。
  2. 高峰期 P99 延迟不恶化。
  3. 夜间总成本下降达到预期目标区间。
  4. 更新峰值与 flap 不超过基线上限。

结果判读

如果成本下降但高峰延迟恶化,说明策略过度偏向 B,需要回调一档。 如果入口偏置无明显变化,先检查对端是否接受 MED,再决定是否引入更强入口手段。

这个案例的关键不是“某个参数值”,而是调优全过程有可复盘证据。 有了证据,你可以持续迭代;没有证据,每次优化都像重来一次。

十五、跨团队协作建议:把网络策略翻译成业务可理解语言

LocalPref/MED 往往由网络团队维护,但影响的是业务体验与成本。 为了减少沟通损耗,建议在变更文档中同时提供两套描述:

  1. 技术描述:改了哪些属性、影响哪些前缀。
  2. 业务描述:预计影响哪些地域、时段、服务等级。

并约定一个统一“发布信号灯”:

  1. 绿灯:网络和业务指标都在可接受范围。
  2. 黄灯:网络稳定但业务轻微劣化,需要继续观察。
  3. 红灯:触发阈值,立即回滚。

当业务方能看懂策略影响,变更决策会更快,复盘也更聚焦。

十七、策略回收节奏与成本复盘补充

LocalPref/MED 调优最容易被忽略的阶段是“回收”。很多团队在故障或大促时上调策略强度,事后没有按计划回收,最终形成长期成本漂移和路径偏态。建议建立固定回收节奏:窗口后 24 小时做首次回看,72 小时做峰值时段复核,7 天做成本与体验联合复盘。复盘内容不只看总带宽费用,还要看关键前缀的路径稳定性、重选频率和业务延迟变化。对于临时标签和临时档位,必须绑定到期动作,逾期自动回退到默认档位并通知责任人。把回收做成制度,才能避免调优从“短期有效”变成“长期负债”,同时让成本优化与稳定性目标保持一致。

补充一条治理建议:成本导向策略必须绑定预算护栏和自动回调条件。当月成本收益未达预期且稳定性指标恶化时,应自动回退到上一个稳态档位,避免“降本动作”在业务高峰期转化为可用性风险。