从直连到 BGP:路由协议原理、选路机制与工程实践全景解析

本文面向网络工程师、运维工程师、架构师及希望系统理解 IP 路由的读者。内容覆盖直连路由、静态路由、默认路由、策略路由,以及 RIP、OSPF、IS-IS、EIGRP、BGP、Babel 等动态路由协议,并延伸到收敛、路由引入、安全防护、故障排查和选型方法。

摘要

路由的本质不是"运行某个协议",而是持续回答三个问题:

  1. 哪些目的网络可达?
  2. 到同一目的网络存在多条路径时,哪一条更优?
  3. 拓扑或策略变化后,如何快速、稳定且安全地更新转发表?

直连路由和静态路由依赖本地接口状态或人工配置;OSPF、IS-IS 等内部网关协议负责自治系统内部的拓扑发现与最短路径计算;BGP 则在自治系统之间交换可达性信息,并以策略为核心进行路径选择。工程上真正困难的部分,通常不在协议命令本身,而在地址规划、故障域划分、路由策略、重分发边界、收敛目标和安全控制。


1. 先建立统一认知:路由、路由协议与转发不是一回事

1.1 路由条目是什么

一条典型路由至少包含以下信息:

  • 目的前缀 :例如 10.20.30.0/24
  • 下一跳 :例如 192.0.2.2,表示数据包应交给哪个相邻设备。
  • 出接口 :例如 GE0/0/1
  • 路由来源:直连、静态、OSPF、BGP 等。
  • 度量值:协议内部比较路径优劣的数值或属性集合。
  • 状态与附加属性:标签、路由标记、BGP 社区、路由类型等。

路由器通常维护多个逻辑层次的数据结构:

  • 协议数据库:例如 OSPF 的链路状态数据库 LSDB、BGP 的邻居入向路由库。
  • RIB(路由信息库):汇集不同来源的候选路由,并选出活动路由。
  • FIB(转发信息库):面向数据平面的高效查找结构。
  • 邻接表:保存下一跳对应的二层重写信息,例如目的 MAC 地址。

路由协议工作在控制平面,负责学习和选择路径;FIB 工作在数据平面,负责逐包转发。控制平面"知道怎么走"不等于数据平面"一定能走通",邻接解析失败、硬件表项耗尽、策略丢弃或 MTU 问题都可能造成两者不一致。

1.2 路由来源不等于路由协议

"直连路由""静态路由"是路由来源或配置方式,不是路由器之间交换路由信息的协议。OSPF、IS-IS、BGP 才是动态路由协议。策略路由则改变了传统的纯目的地址查表逻辑,也不属于动态路由协议。

1.3 IGP 与 EGP

  • IGP(内部网关协议):在一个自治系统内部运行,典型协议有 RIP、OSPF、IS-IS、EIGRP。
  • EGP(外部网关协议):在自治系统之间交换路由。现代互联网实际使用的是 BGP-4。

这里的"自治系统"并不等同于"一家公司"。它更准确地表示:对外呈现一致路由策略、由统一管理主体控制的一组网络。一个大型组织可能拥有多个 AS,也可能在一个 AS 内运行多个 IGP 域。


2. 直连、静态、默认与策略路由

2.1 直连路由

当三层接口配置了有效 IP 地址、接口状态可用,且协议栈确认该网络直接连接时,设备会自动生成直连路由。例如:

text 复制代码
接口:10.10.10.1/24
直连网络:10.10.10.0/24
本地地址:10.10.10.1/32(具体表现因平台而异)

直连路由的特点:

  • 无须下一跳路由器即可到达目标网段。
  • 生命周期与接口状态、地址配置和链路协议状态密切相关。
  • 常作为动态协议建立邻居、解析下一跳和发布网段的基础。
  • 不代表二层邻接一定成功;ARP 或 IPv6 邻居发现失败仍会导致转发异常。
工程风险
  1. 接口物理状态正常,但业务不可达:例如链路单向故障、对端二层配置错误。
  2. 大二层故障域扩大影响:接口仍显示正常,实际路径中间已中断。
  3. 错误掩码形成意外直连范围:设备可能尝试在错误的二层网络内解析本应交给网关的地址。

2.2 静态路由

静态路由由管理员显式配置,一般形式为:

text 复制代码
目的前缀 + 下一跳
目的前缀 + 出接口
目的前缀 + 下一跳 + 出接口
适用场景
  • 小型、拓扑稳定的网络。
  • 末梢站点仅有一个出口。
  • 默认路由、黑洞路由、汇总路由。
  • 管理网、带外网等要求行为高度可预测的网络。
  • 动态协议的补充路径或应急路径。
优点
  • 行为可预测,控制面开销低。
  • 不会主动接收错误路由通告。
  • 易于构造精确的单向策略和安全边界。
缺点
  • 不自动感知远端故障。
  • 配置量随网络规模快速增长。
  • 容易因变更遗漏产生黑洞或绕路。
  • 多设备配置的一致性依赖自动化和审计。
递归静态路由与直连下一跳

若静态路由只指定下一跳,设备需要再次查询如何到达该下一跳,这叫递归解析。若底层路径变化,递归结果也可能变化。只指定广播型出接口可能使设备对大量目的地址逐一执行 ARP,因此在以太网环境中通常应谨慎。

浮动静态路由

通过设置低于主路径优先级的静态路由,可将其作为备份。这里的"优先级"常由厂商所谓的管理距离、协议优先级或路由偏好控制,具体数值和比较顺序属于平台实现,不能跨厂商机械套用

跟踪静态路由

仅跟踪本地接口只能发现近端故障。更可靠的方法是将静态路由与对象跟踪、链路检测或 BFD 联动,验证远端关键地址或转发路径是否仍可用。

2.3 默认路由

IPv4 默认路由是 0.0.0.0/0,IPv6 默认路由是 ::/0。它匹配所有未被更具体前缀覆盖的目的地址。

默认路由适合:

  • 单出口分支。
  • 汇聚层向核心层收敛。
  • 防火墙指向上游运营商。
  • Stub 区域或末梢区域减少路由规模。

默认路由不是"优先级最高"的路由。由于最长前缀匹配,更具体路由会优先于默认路由。

2.4 黑洞路由

黑洞路由把匹配流量送入 NullDiscard 等逻辑接口。常见用途:

  • 为汇总路由提供兜底,避免递归回流形成环路。
  • DDoS 场景下执行远程触发黑洞。
  • 明确丢弃不应出现的地址空间。

黑洞路由必须与精确的前缀范围、优先级和监控配合,否则可能误伤正常流量。

2.5 策略路由

传统路由主要依据目的地址。策略路由可以进一步依据:

  • 源地址或源网段。
  • 入接口。
  • DSCP、协议类型、端口号。
  • 应用标识或安全域。

典型用途包括多出口分流、特定业务引流至防火墙或代理、让不同租户使用不同链路。策略路由会增加排障复杂度,因为普通路由表可能显示路径正确,但实际流量在进入接口时已被策略改写下一跳。


3. 路由器究竟怎样选路

3.1 第一原则:最长前缀匹配

假设路由表同时存在:

text 复制代码
0.0.0.0/0       -> 出口 A
10.0.0.0/8      -> 出口 B
10.20.0.0/16    -> 出口 C
10.20.30.0/24   -> 出口 D
10.20.30.8/32   -> 出口 E

访问 10.20.30.8 时,/32 最具体,因此选择出口 E;访问 10.20.30.99 时选择 /24;访问 10.20.40.1 时选择 /16

最长前缀匹配发生在不同前缀长度之间。只有当前缀长度相同、目标相同且存在多个候选来源时,设备才需要比较路由偏好、协议内部度量或其他规则。

3.2 第二层:不同来源之间的偏好

同一前缀可能同时由静态路由、OSPF 和 BGP 提供。设备需要决定哪一种来源进入活动 RIB。常见厂商使用"管理距离""协议优先级""路由偏好"等概念,但:

  • 名称不同。
  • 默认数值不同。
  • 数值越大越优还是越小越优也可能不同。
  • 某些路由类型还会在协议内部先进行分类比较。

因此,设计文档应写"期望优先关系",不要只写一个脱离平台的数字。

3.3 第三层:协议内部的路径比较

  • RIP 主要比较跳数。
  • OSPF 比较 Cost,并区分区域内、区域间和外部路由类型。
  • IS-IS 使用链路度量并区分 Level 1、Level 2 等路由层次。
  • EIGRP 使用复合度量和 DUAL 可行性条件。
  • BGP 使用策略属性进行多级比较,目标不是单纯寻找物理最短路径。

3.4 等价多路径

如果多条路径在协议和平台规则下被认为等价,设备可将多个下一跳安装到 FIB,即 ECMP。数据平面通常按流进行哈希,常见输入包括源/目的 IP、协议号、源/目的端口。

注意:

  • ECMP 不保证每条链路字节级完全均衡。
  • 少量大流可能造成明显偏斜。
  • 双向业务经过不同设备时,状态防火墙、NAT 和会话检测可能失败。
  • 成员路径的 MTU、时延和丢包差异过大,会影响应用体验。

3.5 路由选择与转发查找的关系

控制平面先从多个候选路径中选出活动路由,再将下一跳编程到 FIB;数据平面随后对每个数据包执行前缀查找。可以把过程概括为:

text 复制代码
路由学习 -> 策略过滤 -> 同前缀归组 -> 候选比较 -> 活动 RIB -> 下一跳/递归解析 -> FIB/邻接表 -> 实际转发

4. 动态路由算法的三大思想

4.1 距离矢量

距离矢量协议向邻居表达:"我到某个目的地的距离是多少,应通过我到达。"设备通常不掌握完整拓扑,只知道邻居通告的方向和代价。

代表协议:RIP、传统距离矢量算法;EIGRP 和 Babel 也建立在距离矢量思想之上,但引入了更强的无环与收敛机制。

优点:

  • 模型简单。
  • 状态和计算开销通常较低。

不足:

  • 可能出现计数到无穷、临时环路和慢收敛。
  • 大规模网络中的故障传播与查询范围需要严格控制。

4.2 链路状态

链路状态协议让每台路由器描述自己的本地链路状态,并在域内可靠泛洪。各设备形成基本一致的拓扑数据库,再以自己为根运行最短路径算法。

代表协议:OSPF、IS-IS。

优点:

  • 掌握拓扑全貌。
  • 收敛通常较快。
  • 支持分层、汇总和较大规模部署。

代价:

  • 邻接、数据库同步、泛洪和 SPF 计算更复杂。
  • 错误 LSA/LSP 或大规模抖动会放大控制面压力。

4.3 路径矢量

BGP 不只通告"距离",还携带经过的 AS 路径和一组策略属性。AS_PATH 既帮助检测 AS 级环路,也让网络运营者能依据商业关系和流量工程目标选路。


5. RIP:简单,但边界非常明确

RIPv2 是经典距离矢量 IGP,以跳数作为度量。RFC 2453 明确指出,RIP 的"无穷大"取值限制了其可用网络直径,工程上通常理解为最大有效跳数 15,16 表示不可达。

5.1 工作过程

  1. 路由器周期性向邻居发送路由信息。
  2. 邻居收到路由后,将跳数加一。
  3. 选择跳数更小的路径。
  4. 拓扑变化时使用触发更新加快传播。

5.2 环路抑制手段

  • 水平分割:不向学习该路由的接口再次通告。
  • 毒性逆转:向原邻居通告该路由不可达。
  • 触发更新:变化发生时不等待完整周期。
  • 失效与抑制定时器:避免旧信息永久保留。

5.3 适用与不适用

适用:

  • 教学、实验环境。
  • 规模很小且设备能力有限的封闭网络。
  • 少量遗留系统兼容。

不适用:

  • 跳数较多的网络。
  • 要求快速收敛和精细链路度量的生产核心网。
  • 大规模、多区域或复杂冗余拓扑。

6. OSPF:企业网络中最常见的链路状态 IGP

OSPFv2 用于 IPv4,核心规范是 RFC 2328;OSPFv3 最初为 IPv6 设计,核心规范是 RFC 5340。OSPF 通过 Hello 建立邻居关系,交换并泛洪 LSA,形成 LSDB,再运行 SPF 算法计算最短路径树。

6.1 OSPF 的核心对象

  • Router ID:32 位路由器标识,不应随接口抖动变化。
  • 邻居与邻接:邻居不一定都形成完整邻接。
  • LSA:描述路由器、网络或外部可达性的信息单元。
  • LSDB:区域内拓扑视图。
  • SPF 树:以本机为根计算的最短路径树。
  • Cost:路径代价,通常与接口带宽相关,但计算方式和参考带宽可配置。

6.2 邻居状态

常见状态序列可概括为:

text 复制代码
Down -> Init -> 2-Way -> ExStart -> Exchange -> Loading -> Full

排障时:

  • 卡在 Init:常与单向通信、组播或 ACL 有关。
  • 卡在 ExStart/Exchange:常见于 MTU、主从协商或报文交互异常。
  • 到达 2-Way 但不进入 Full:在广播网络的 DROther 之间可能是正常现象。

6.3 DR 与 BDR

在广播或 NBMA 多路访问网络上,如果所有路由器两两建立完整邻接,邻接数量会快速增长。OSPF 通过选举 DR 和 BDR 减少邻接及泛洪开销。点到点链路通常不需要 DR/BDR。

6.4 区域设计

OSPF 通过区域控制 LSDB 大小和故障传播范围:

  • Area 0:骨干区域。
  • 普通区域:可接收区域内、区域间和外部信息。
  • Stub 区域:减少外部路由。
  • Totally Stubby:常见厂商扩展,进一步减少区域间明细。
  • NSSA:允许区域内部引入外部路由,再由边界转换。

ABR 连接多个区域,ASBR 将其他来源的路由引入 OSPF。

在经典多区域设计中,非骨干区域应逻辑连接到 Area 0;虚链路更适合作为过渡或特殊场景手段,不应替代清晰的长期骨干规划。

6.5 OSPF 路由类型与外部度量

工程上常见:

  • 区域内路由。
  • 区域间路由。
  • 外部类型 1:外部代价与到 ASBR 的内部代价共同影响总成本。
  • 外部类型 2:主要比较外部代价,内部代价通常作为后续比较因素。
  • NSSA 外部路由。

不同类型的优先关系由 OSPF 规则和设备实现共同决定,不能仅比较显示出来的一个 Cost 数字。

6.6 OSPFv2 与 OSPFv3

OSPFv3 保留了泛洪、DR 选举、区域和 SPF 等基本机制,但采用按链路处理、显式泛洪范围、链路本地地址作为邻接通信基础,并将地址前缀从基础拓扑描述中分离出来。

OSPFv3 最初支持 IPv6 单播地址族;RFC 5838 又定义了多地址族机制,使其可以在独立实例中承载 IPv4 等其他地址族。具体设备是否支持及其配置方式仍需按平台核实。

6.7 OSPF 设计建议

  1. Router ID 使用稳定的逻辑接口地址。
  2. 只在真正需要建立邻居的接口启用协议报文,其余接口设为被动接口。
  3. 统一 Hello/Dead、网络类型、MTU、认证和区域配置。
  4. 合理设置参考带宽,避免高速链路 Cost 大量相同。
  5. 在 ABR/ASBR 边界做汇总、过滤与标记。
  6. 不要为了"看起来分层"而创建大量小区域;区域划分应服务于规模、故障域和运维边界。
  7. 调整 SPF/LSA 节流参数前先评估 CPU、拓扑规模和抖动特征。

7. IS-IS:运营商与大型骨干常用的链路状态协议

集成 IS-IS 由 RFC 1195 将 OSI IS-IS 扩展到 IP 环境。它同样使用链路状态数据库和 SPF 算法,但协议封装、层次结构和信息编码方式与 OSPF 不同。

7.1 Level 1 与 Level 2

  • Level 1:负责区域内部路由。
  • Level 2:负责区域之间的骨干路由。
  • L1/L2 路由器:连接区域内与区域间层次。

与 OSPF 的 Area 0 模型相比,IS-IS 的骨干由连续的 Level 2 路由器构成,不要求一个显式编号为 0 的区域。

7.2 LSP、TLV 与扩展能力

IS-IS 使用 LSP 描述链路状态,并通过 TLV(类型、长度、值)编码可达性和扩展信息。TLV 机制使协议较容易承载 IPv6、流量工程、分段路由等新能力。

7.3 DIS 与伪节点

在广播网络中,IS-IS 选举 DIS,并用伪节点简化拓扑表示。DIS 与 OSPF DR 的职责和备份机制并不完全相同,不能直接一一类比。

7.4 IS-IS 的工程优势

  • 协议直接运行在二层之上,IP 地址配置变化通常不直接决定协议报文能否传送。
  • TLV 扩展机制成熟。
  • 适合大规模、双栈、MPLS 和分段路由骨干。
  • 层次结构清晰,常用于运营商或大型数据中心底层网络。

7.5 主要挑战

  • 企业网络团队的经验储备可能少于 OSPF。
  • NET、区域地址、Level 和 TLV 的概念学习成本较高。
  • 抓包、监控和运维平台需要完整支持。

8. EIGRP:带可行性条件的高级距离矢量协议

RFC 7868 将 EIGRP 描述为基于距离矢量技术、使用 DUAL 扩散更新算法的协议。该 RFC 属于信息类文档,而非互联网标准轨规范。

8.1 DUAL 的核心概念

  • 后继(Successor):当前最优且用于转发的下一跳。
  • 可行后继(Feasible Successor):满足可行性条件的无环备用下一跳。
  • 可行距离(Feasible Distance):自上次进入稳定状态后记录的最小距离。
  • 通告距离(Reported Distance):邻居通告的其自身到目的地的距离。
  • 稳定状态(Passive):路由当前无须执行扩散计算。
  • 活动状态(Active):需要向邻居发起查询以重新计算无环路径。

若备用路径满足可行性条件,主路径故障后可快速切换;若没有可行后继,路由进入活动状态并扩散查询。查询范围过大可能造成收敛压力和 SIA 问题。

8.2 设计要点

  • 使用 Stub 能力限制查询范围。
  • 在层次边界进行汇总。
  • 保持链路度量和 K 值一致。
  • 避免任意改变复合度量参数。
  • 多厂商环境中应先核实实现完整性、互通能力和长期支持策略。

9. BGP:互联网与大型多域网络的策略路由核心

BGP-4 由 RFC 4271 定义,是自治系统之间交换网络可达性信息的路径矢量协议。BGP 使用 TCP 端口 179 建立会话,并通过 UPDATE 消息发布或撤销 NLRI。

BGP 的核心目标不是寻找"最短物理路径",而是在满足无环和可达性的基础上执行本地策略。

9.1 eBGP 与 iBGP

  • eBGP:不同 AS 之间建立邻居。
  • iBGP:同一 AS 内传播 BGP 路由。

iBGP 的基本规则会带来全互联扩展问题。大规模网络通常使用:

  • 路由反射器:减少 iBGP 会话数量。
  • 联盟:将大 AS 在内部划分为多个子 AS,对外仍表现为一个 AS。

9.2 常见路径属性

  • AS_PATH:路由经过的 AS 序列,可用于环路检测和策略。
  • NEXT_HOP:到达该前缀的下一跳。
  • LOCAL_PREF:在本 AS 内表达出口偏好,通常越高越优。
  • MED:向相邻 AS 表达入站入口建议,通常越低越优,但其比较条件与平台策略有关。
  • ORIGIN:路由起源类型。
  • COMMUNITY:为路由附加策略标签。
  • 大型社区:使用更大的字段表达策略,便于 4 字节 ASN 场景。

常见厂商还提供 Weight 等本地私有属性,这不是 BGP 标准属性。

9.3 不要死记一条"全球统一"的 BGP 选路口诀

RFC 4271 定义的是概念性决策过程,各厂商会加入实现和配置相关的比较步骤。工程上应:

  1. 先通过导入策略决定路由是否有资格进入候选集。
  2. 再依据本地策略和路径属性选择最佳路径。
  3. 最后通过导出策略决定向哪些邻居发布什么内容。

确切顺序应以目标平台和版本文档为准,并通过实验验证。

9.4 BGP 的入站与出站流量工程

控制本 AS 的出站路径

优先使用:

  • LOCAL_PREF。
  • 本地导入策略。
  • 下一跳可达性和 IGP Cost。
影响外部进入本 AS 的路径

可使用:

  • 更具体前缀发布。
  • AS_PATH Prepend。
  • MED。
  • 运营商约定的 BGP Community。

外部网络拥有最终决策权,因此"影响入站"不等于"强制入站"。发布更具体前缀还会增加全网路由规模,应严格控制。

9.5 路由反射的收益与代价

路由反射器显著减少 iBGP 会话,但可能隐藏部分路径,使控制平面看到的最佳路径与真实 IGP 转发代价不完全一致。设计时需要考虑:

  • 反射器的部署位置与冗余。
  • 客户端分组和故障域。
  • 下一跳策略。
  • Add-Path、ORR 等增强能力是否需要。
  • 控制面路径多样性与数据面最优性之间的权衡。

10. 其他值得了解的路由协议与技术

10.1 Babel

Babel 由 RFC 8966 定义,是具有无环机制的距离矢量协议,面向有线网络与动态无线网状网络。它使用可行性条件和序列化路由,重点限制重收敛期间的环路与黑洞。

适合:

  • 社区网络。
  • 无线网状网络。
  • 链路质量变化频繁、拓扑不稳定的环境。

10.2 RIPng

RIPng 是面向 IPv6 的 RIP 变体,继承了距离矢量和跳数限制等基本特征。其定位与 RIPv2 类似,主要适合简单、小规模环境。

10.3 MP-BGP

多协议 BGP 通过地址族扩展承载 IPv6、VPNv4、VPNv6、EVPN 等可达性信息。现代网络中的"BGP"往往不仅是互联网 IPv4 路由,还可能承担 MPLS VPN、VXLAN EVPN 控制平面等职责。

10.4 分段路由(Segment Routing)与传统路由协议

分段路由不是替代 OSPF/IS-IS/BGP 的单一"新路由协议"。它通常借助 IGP 或 BGP 分发 SID,再通过源路由思想表达路径。底层仍需要稳定的拓扑发现、可达性和策略体系。

10.5 SDN 控制器与路由协议

SDN 并不意味着动态路由协议消失。常见架构是:

  • IGP 维护底层网络(underlay)的基础可达性。
  • BGP/EVPN 分发叠加网络(overlay)信息。
  • 控制器通过 NETCONF、RESTCONF、gNMI、PCEP 或厂商接口下发策略。

协议负责分布式生存能力,控制器负责全局编排,两者往往协同而不是互斥。


11. 收敛:从发现故障到业务恢复

收敛时间不是一个单独的 Hello 定时器,而是多阶段总和:

text 复制代码
故障检测
  + 邻接状态变化
  + 路由信息传播
  + SPF/DUAL/BGP 决策
  + RIB 更新
  + FIB 编程
  + 邻接解析
  + 业务重新建立或重传

11.1 BFD 的作用

RFC 5880 定义的 BFD 可独立于介质和路由协议,以较低时延检测双向转发路径故障。OSPF、IS-IS、BGP 或静态路由可与 BFD 联动。

BFD 不是越快越好:

  • 会消耗设备 CPU 或专用硬件会话资源。
  • 大量低间隔会话可能在拥塞时误判。
  • 两端能力和最小收发间隔需要协商。
  • 应按核心、汇聚、接入和广域链路等级设置不同目标。

11.2 快速重路由

快速重路由通过预计算备用下一跳,在控制面完成全局收敛前先局部绕过故障。常见思路包括:

  • LFA 与远端 LFA。
  • TI-LFA。
  • MPLS 快速重路由。
  • EIGRP 可行后继。
  • 设备本地链路或下一跳保护。

快速重路由解决"短时间业务连续性",最终仍需正常路由协议完成全局一致收敛。

11.3 优雅重启与不间断转发

优雅重启允许控制平面重启时暂时保留转发表,但存在一个重要前提:转发平面确实仍然正确。若把真实故障误认为控制面短暂重启,旧路由可能造成黑洞。因此必须结合平台能力、拓扑和故障检测机制评估。


12. 路由重分发、汇总与默认路由注入

12.1 为什么重分发危险

当 OSPF、IS-IS、BGP、静态路由之间互相引入时,会发生"度量体系翻译"。一个协议的高质量路径进入另一个协议后,原始语义可能丢失。

双点双向重分发尤其危险:

  1. 路由从协议 A 引入协议 B。
  2. 在另一边界又从 B 引回 A。
  3. 因来源属性、优先级或度量变化,设备把回流路由当成新路径。
  4. 形成路由环路、次优路径或持续振荡。

12.2 安全的重分发原则

  • 尽量单点、单向。
  • 在边界使用前缀列表精确允许。
  • 写入 Route Tag 或 BGP Community。
  • 回向引入时拒绝已标记路由。
  • 明确设置种子度量。
  • 配置最大前缀和异常告警。
  • 变更前进行路径模拟和回滚设计。

12.3 路由汇总

汇总能减少路由数量、隐藏局部抖动、缩小故障传播范围,但前提是地址规划连续。

风险:

  • 汇总覆盖的部分明细实际不存在,产生黑洞。
  • 多出口站点汇总后破坏路径对称性。
  • 过度汇总掩盖精细流量工程需求。

通常需要配合指向 Null 的同长度汇总路由,阻止未命中明细的流量再次沿默认路由返回形成环路。

12.4 默认路由注入

动态协议发布默认路由时,应明确:

  • 是无条件发布,还是仅在上游可达时发布?
  • 检测的是接口、下一跳、远端探针,还是完整业务?
  • 多出口同时发布时如何表达主备或负载分担?
  • 默认路由撤销会不会触发大范围业务震荡?

13. 路由安全:认证只是第一层

路由安全应分为会话、信息、策略、资源和监控五层。

13.1 邻接与会话保护

  • 限制允许建立邻居的接口和源地址。
  • 使用协议支持的认证机制。
  • 对控制平面配置 ACL 与限速。
  • BGP 可采用 GTSM/TTL Security,降低非直连攻击者伪造会话报文的风险。
  • 在平台支持时评估 TCP-AO 等会话保护机制。

13.2 路由信息过滤

  • 入向只接收对端有权发布的前缀。
  • 出向只发布本 AS 或客户授权的前缀。
  • 拒绝特殊用途、过长、默认或不合理的前缀。
  • 设置最大前缀阈值。
  • 校验 AS_PATH、下一跳与社区。

RFC 8212 提出的安全默认原则是:eBGP 会话没有明确导入和导出策略时,不应接收或发送路由。

13.3 RPKI 与起源验证

RPKI 使用资源证书和 ROA 建立"前缀可由哪些 AS 起源"的可验证映射。BGP 起源验证通常将路由分为:

  • 有效(Valid):前缀长度和起源 AS 与 ROA 匹配。
  • 无效(Invalid):存在相关 ROA,但前缀长度或起源 AS 不匹配。
  • 未找到(Not Found):没有覆盖该路由的 ROA。

RPKI-ROV 主要验证起源授权,不能单独验证完整 AS_PATH,也不能替代前缀过滤、会话保护和泄漏防护。

13.4 路由泄漏防护

路由泄漏通常不是伪造前缀,而是违反商业或拓扑关系地传播真实路由。例如把从一个上游学到的全表错误发布给另一个上游。RFC 9234 定义 BGP Role 和 OTC 属性,用于协助预防和检测此类泄漏。

BGP Role 与 OTC 的实际效果取决于相邻双方及设备软件的支持情况,不能替代现有的导入、导出和客户前缀过滤策略。

13.5 监控与审计

至少监控:

  • 邻居状态和抖动次数。
  • 路由总量及变化速率。
  • 默认路由、关键业务前缀和下一跳。
  • RPKI 验证状态。
  • BGP 更新风暴、OSPF LSA/LSP 异常增长。
  • RIB 与 FIB 编程失败。
  • BFD 会话状态与误判。
  • 配置变更、策略命中数和被拒绝前缀。

14. 协议横向对比

类型 代表 核心算法/思想 典型度量或属性 规模与收敛 主要优势 主要限制
路由来源 直连 本地接口状态 无协议度量 本地即时变化 简单、基础可信 只能覆盖直连网段
路由来源 静态 人工指定 平台优先级、跟踪状态 不自动或依赖跟踪 可预测、低开销 扩展与维护困难
距离矢量 IGP RIPv2/RIPng Bellman-Ford 思想 跳数 小规模、较慢 简单 最大有效跳数 15
链路状态 IGP OSPF LSDB + SPF Cost 中大型、较快 标准化、企业生态成熟 区域与 LSA 设计复杂
链路状态 IGP IS-IS LSDB + SPF 链路度量 大型骨干、较快 TLV 扩展强、骨干常用 学习和运维门槛较高
高级距离矢量 EIGRP DUAL 复合度量 中大型、可快速切换 可行后继、配置直观 多厂商策略需评估
路径矢量 EGP BGP 策略 + AS_PATH 多种路径属性 超大规模、策略优先 可扩展、策略能力强 收敛与策略复杂
无环距离矢量 Babel 可行性条件 + 序列化 链路代价 动态网状网络 对不稳定链路适应性强 企业主流生态较小

表中的"快、慢"和"规模"是相对描述。真实表现取决于设备性能、定时器、拓扑、前缀数量、策略复杂度、硬件编程速度和故障类型。
"大型骨干"一行中的 BGP"必需"是指跨域、互联网或业务路由分发场景;骨干底层网络通常仍需要 OSPF、IS-IS 或其他机制提供基础下一跳可达性。


15. 如何选择:从业务约束反推协议

15.1 小型单出口办公室

推荐:

  • 直连 + 默认静态路由。
  • 对关键出口增加远端探测或 BFD 跟踪。

不必为了"高级"而引入复杂动态协议。少量设备上的清晰静态配置往往更可靠。

15.2 多分支企业 WAN

可选:

  • OSPF 作为统一 IGP。
  • 在特定单厂商环境评估 EIGRP。
  • SD-WAN 控制器负责业务策略,底层仍保留稳定的基础路由。

重点:

  • 分支 Stub 化。
  • 路由汇总。
  • 默认路由与双出口策略。
  • 避免在大量分支全量泛洪内部明细。

15.3 大型园区网

常见方案:

  • 接入层尽量二层或简化三层。
  • 汇聚/核心运行 OSPF 或 IS-IS。
  • 建立明确的区域、故障域与汇总边界。
  • 关键链路启用 ECMP、BFD 和快速重路由。

15.4 数据中心

传统三层 Clos 常使用:

  • eBGP 作为底层网络协议。
  • OSPF/IS-IS 作为底层网络协议。
  • BGP EVPN 作为叠加网络控制平面。

选择 eBGP 作为底层协议的原因通常是策略边界清晰、故障域隔离和水平扩展;选择 OSPF/IS-IS 则可能基于团队经验、设备特性和统一 IGP 运维体系。

15.5 运营商骨干

常见组合:

  • IS-IS 或 OSPF 维护基础拓扑和底层网络可达性。
  • iBGP/MP-BGP 承载互联网、VPN 和 EVPN 路由。
  • MPLS 或分段路由(Segment Routing)提供业务路径。
  • BFD、FRR 和精细遥测满足高可用要求。

15.6 多运营商互联网出口

推荐 BGP,并重点建设:

  • 入/出方向前缀过滤。
  • LOCAL_PREF 和社区策略。
  • 最大前缀。
  • RPKI-ROV。
  • GTSM 与控制平面保护。
  • 路由泄漏防护。
  • 双路由器、双链路、双电源和独立故障域。

16. 常见误区

误区一:管理距离可以跨厂商直接比较

管理距离或路由偏好是本地实现概念,不在不同设备之间通告。跨厂商设计必须核对各自平台。

误区二:Cost 最小就一定最终胜出

只有同一协议、同一路由类型且进入同一比较阶段时,Cost 才可能直接决定结果。前缀长度、路由来源、路由类型和策略都可能先于 Cost 生效。

误区三:BGP 总是选择 AS_PATH 最短

AS_PATH 只是 BGP 多级决策中的一个属性。本地策略、LOCAL_PREF、路由资格和厂商特性可能更早决定结果。

误区四:邻居 Full 就说明业务一定正常

Full 只说明控制面邻接和数据库同步达到预期。ACL、NAT、FIB、ARP/ND、MTU、QoS 和回程路径仍可能导致业务失败。

误区五:把所有路由都重分发最省事

无边界的双向重分发会破坏协议域隔离,增加回流、环路和故障扩散风险。

误区六:把定时器调到最小就能获得最佳高可用

过度激进的定时器可能在拥塞或 CPU 繁忙时制造误判和振荡。快速检测、快速修复和控制面稳定必须平衡。


17. 标准化排障方法

17.1 第一步:明确故障平面

  • 物理层:光功率、误码、双工、链路单向。
  • 二层:VLAN、STP、LACP、MAC 学习。
  • 邻接层:ARP/ND、Hello、认证、定时器。
  • 控制平面:邻居、数据库、策略、RIB。
  • 数据平面:FIB、ECMP、ACL、NAT、MTU。
  • 业务层:DNS、会话状态、应用重试。

17.2 第二步:按路径逐跳验证

建议检查顺序:

  1. 本机是否有匹配的最长前缀。
  2. 活动路由来源是否符合设计。
  3. 下一跳是否可递归解析。
  4. FIB 是否已安装。
  5. 邻接表是否完整。
  6. 出接口和链路是否正常。
  7. 对端是否有回程路由。
  8. 中间策略是否允许。

17.3 第三步:检查协议状态

OSPF/IS-IS
  • 邻接状态。
  • 区域或 Level。
  • 认证和定时器。
  • LSDB/LSP 是否一致。
  • SPF 运行频率。
  • 是否存在异常泛洪。
BGP
  • TCP 会话和状态机。
  • 收到、接受、最佳、发布的路由数量。
  • 前缀过滤和 Route Policy 命中情况。
  • NEXT_HOP 是否可达。
  • 属性是否被策略改写。
  • RPKI 状态和最大前缀告警。
静态路由
  • 下一跳递归。
  • 跟踪对象。
  • 备份路径优先关系。
  • 黑洞路由是否覆盖过宽。

17.4 第四步:用事实建立时间线

把接口日志、BFD、邻居变化、路由撤销、SPF/BGP 决策、FIB 更新和业务告警对齐到同一时间轴。没有时间线的排障容易把"后果"误认为"原因"。


18. 生产网络设计检查表

地址与拓扑

  • 地址是否支持按区域、站点和业务汇总?
  • 关键设备与链路是否处于独立故障域?
  • 是否存在不必要的大二层或三层环?

协议与层次

  • IGP 域、BGP 域和静态边界是否清晰?
  • 区域或 Level 划分是否服务于规模和运维?
  • 路由反射器、ABR、ASBR 是否有冗余?

策略

  • 导入、导出和重分发是否默认拒绝、按需允许?
  • 是否使用标签防止路由回流?
  • 默认路由是否与真实上游状态联动?

收敛

  • 业务允许中断多久?
  • 故障检测、局部修复和全局收敛分别需要多久?
  • BFD 和 FRR 的规模是否在设备能力范围内?

安全

  • 邻接是否认证?
  • 控制平面是否过滤和限速?
  • BGP 是否配置最大前缀、RPKI-ROV 和严格前缀策略?

可观测性

  • 能否看到邻居、RIB、FIB 和策略命中?
  • 是否保存路由变化历史?
  • 是否能把配置变更与收敛事件关联?

变更与自动化

  • 配置是否模板化并经过语法、策略和拓扑验证?
  • 是否支持分批发布、自动回滚和变更后验证?
  • 是否定期演练链路、设备和控制平面故障?

19. 结语

路由协议没有脱离场景的"最强者":

  • 直连和静态路由胜在简单、可预测。
  • RIP 适合极小规模或教学环境。
  • OSPF 适合大量企业网络。
  • IS-IS 擅长大型骨干与强扩展场景。
  • EIGRP 在合适生态中具有快速、直观的优势。
  • BGP 是跨域策略和超大规模可达性分发的核心。
  • Babel 对动态网状网络和不稳定链路具有独特价值。

高质量网络设计并不是堆叠最多协议,而是用最少的机制满足明确的可达性、收敛、扩展、安全和运维目标。协议选择只是起点,真正决定网络可靠性的,是清晰的层次、可验证的策略、受控的故障域、完整的监控和可回滚的变更流程。


参考标准

  1. RFC 1812:IPv4 路由器要求
  2. RFC 2453:RIP Version 2
  3. RFC 2328:OSPF Version 2
  4. RFC 5340:OSPF for IPv6
  5. RFC 5838:OSPFv3 多地址族支持
  6. RFC 1195:集成 IS-IS 支持 IP
  7. RFC 7868:EIGRP 协议设计与架构
  8. RFC 4271:BGP-4
  9. RFC 4760:Multiprotocol Extensions for BGP-4
  10. RFC 5880:BFD
  11. RFC 8966:Babel Routing Protocol
  12. RFC 8402:Segment Routing Architecture
  13. RFC 7454:BGP Operations and Security
  14. RFC 8212:eBGP 无策略时默认拒绝
  15. RFC 6811:BGP Prefix Origin Validation
  16. RFC 9234:BGP 路由泄漏预防与检测