多上游选路:local-pref 之外的顺序与策略表设计
在多上游环境中,BGP 选路策略的设计直接影响网络的稳定性和流量效率。通常,我们习惯依赖 local-pref 来区分上游优先级,但在实际运营中,单靠 local-pref 不足以覆盖所有细节,尤其是在处理 AS-Path 和 MED 等属性时。本文将从选路优先级的全貌出发,探讨如何将复杂的策略梳理成一张清晰、易维护的“策略表”,以提升多上游环境的运维效率和决策准确性。
一、BGP 选路优先级的全局视角
BGP 的选路过程是一个多步骤的比较流程,常见的顺序如下:
- 检查是否为本地路由(本地直连)
- Highest
local-pref - Shortest AS-Path
- 最低的 Origin 类型(IGP < EGP < incomplete)
- 最低的 MED(多出口判定)
- eBGP 路由优先于 iBGP
- 最低的 IGP 路径成本到下一跳
- 最早学习路由(最低的 Router ID)
在多上游场景中,local-pref 是最直接的策略手段,用于定义“首选出口”。但当多个上游的 local-pref 相同时,AS-Path 长度和 MED 成为决胜因素。理解这几个属性的作用和边界,有助于构建更细粒度的选路策略。
二、合理设计 local-pref:分层与模块化
local-pref 是 BGP 选路中最重要的指标,数值越大优先级越高。设计时建议采用分层策略:
- 第一层:区分不同上游服务商。比如 ISP-A 设为 200,ISP-B 设为 150,ISP-C 设为 100。
- 第二层:内部根据业务或链路质量微调,比如对 ISP-A 的主链路设 210,备链路设 190。
这种分层设计有助于快速识别策略意图,避免同一上游内部不同链路因 local-pref 混乱而产生不必要的路由波动。同时,建议将这些数值定义写入配置模板或策略表中,方便统一管理和变更追踪。
三、AS-Path 预置与过滤:优先级细分的利器
AS-Path 长度是 BGP 选路的次要指标,越短优先级越高。通过预置 AS-Path 过滤和打标签,可以实现更细致的路径控制:
- 对合作伙伴或优质上游的 AS-Path 进行匹配,人工调整
local-pref或打上社区标签。 - 对路径较长或经过特定 AS 的路由,降低
local-pref,防止流量绕路。 - 结合 AS-Path 过滤规则,排除不合规的路由公告。
例如,假设 ISP-A 通过 AS100,ISP-B 通过 AS200 和 AS300 两跳,默认 local-pref 相同的情况下,路由器会选择经过 AS100 的路径。通过预置 AS-Path 策略,可以进一步强化这一选择逻辑。
四、MED 的边界与应用:多出口环境的“软”调节器
MED(Multi-Exit Discriminator)用于在相同邻居 AS 内部的多出口之间指示优先级。其作用范围仅限于同一邻居 AS,且只有在 local-pref 和 AS-Path 相同的情况下才会被考虑。因此:
- 不同上游之间的选路不要依赖 MED,避免误判。
- 在同一上游提供多出口链路时,合理设置 MED 值(数值越小优先级越高),实现出口流量的“软”负载均衡。
- 注意 MED 可能被上游忽略或重写,需与上游协商确认。
例如,ISP-A 提供两个出口链路,分别设置 MED 为 50 和 100,可以引导流量优先走 MED 50 的出口,且不会影响其他上游的选路逻辑。
五、构建“多上游选路策略表”:明确规则与维护便利
将上述选路优先级和属性设计,整理成一张清晰的策略表,有利于团队理解和快速调整。示例策略表结构:
| 策略维度 | 规则说明 | 示例数值/操作 |
|---|---|---|
local-pref |
按上游分层,主备链路区分 | ISP-A 主链路 210,备链路 190;ISP-B 150 |
| AS-Path | 匹配优质路径,调整优先级 | 匹配 AS100 路径,提升 local-pref 10 |
| MED | 同邻居 AS 多出口,设置出口优先级 | 出口1 MED=50,出口2 MED=100 |
| 社区标签 | 标记特殊路由,便于监控和过滤 | 社区 65535:100 标记主链路 |
这样的表格不仅是配置的蓝图,也便于版本管理和变更审批。
总结与检查清单
- 确认
local-pref分层设计:区分不同上游和链路等级,保持数值间距合理,避免冲突。 - 审视 AS-Path 预置规则:确保优质路径被正确识别并调整优先级,过滤异常路由。
- 合理利用 MED:仅限同一邻居 AS 内多出口,避免跨 AS 依赖 MED。
- 建立策略表:将选路策略以表格形式固化,便于团队理解和后续维护。
- 定期校验路由决策:使用工具(如 BGP 路由分析器)验证选路符合策略预期。
本文由 南方数据技术博客编辑整理,涉及具体环境时请以官方文档与实际配置为准。