路由选择协议:RIP、OSPF、BGP 的核心原理与区别

聊到路由协议,我总想起刚入行时的一个场景。那时候公司网络经常断,领导让我查原因。我登录路由器一看,路由表乱成一锅粥。后来才发现,是 RIP 的跳数限制把一条关键路径给掐了。嗯,从那天起,我就开始认真研究这些协议到底在干什么。

说白了,路由选择协议就是让路由器之间互相“打招呼”,然后交换各自知道的路由信息。最终目的只有一个——生成一张正确的、高效的路由表。

路由表是怎么生成的?

路由表不是人工一条条敲进去的(虽然静态路由可以)。在动态路由协议里,生成过程大致分三步:

  1. 发现邻居——路由器通过协议报文找到直连的邻居设备。
  2. 交换信息——邻居之间互相通告自己知道的路由条目。
  3. 计算最优——根据某种度量标准(比如跳数、带宽),算出到每个目的地的最佳路径,写进路由表。

我习惯把路由表想象成一张“导航地图”。每条记录就是一个“目的地 + 下一跳 + 出接口”的映射。没有这张表,数据包出了门就不知道往哪拐。

核心要点:路由表是路由器转发数据的唯一依据。动态路由协议的作用,就是让这张表能自动适应网络变化。

RIP:最朴素的“跳数党”

RIP(Routing Information Protocol)是我最早接触的动态路由协议。它的逻辑非常简单——以跳数作为度量标准。一跳就是经过一个路由器,跳数越少,路径越优。

举个例子:从路由器 A 到网络 X,如果经过 B 需要 2 跳,经过 C 需要 3 跳,RIP 就选 B 那条路。

但这里有个大坑。我曾经在一个项目中遇到过这样的情况:A 到 B 是一条 56Kbps 的慢速链路,A 到 C 再到 B 是 1000Mbps 的光纤,虽然多了 1 跳,但实际速度快得多。RIP 却死活不走光纤,因为它只看跳数。你说气不气人?

避坑指南:RIP 最大跳数限制是 15 跳,16 跳视为不可达。大型网络千万别用 RIP,否则路由会“断片”。

RIP 有两个版本:RIPv1 是有类路由(不传子网掩码),RIPv2 是无类路由(传子网掩码)。现在基本都用 v2 了。

OSPF:链路状态“学霸”

OSPF(Open Shortest Path First)比 RIP 聪明得多。它不看跳数,而是看“开销”(Cost)。开销通常跟带宽挂钩——带宽越大,开销越小。

OSPF 的工作方式很有意思:

  • 每个路由器都收集整个区域的链路状态信息(LSDB)。
  • 然后各自运行 SPF 算法(最短路径优先),算出一棵以自己为根的树。
  • 最后把最优路径放进路由表。

我记得有一次帮客户做网络割接,核心层跑的是 OSPF。我调整了一条链路的 Cost 值,整个网络的路由在几秒内就收敛了。要是换成 RIP,估计得等好几分钟,而且中间还会出现路由环路。

个人经验:OSPF 适合中大型网络。它支持区域划分(Area),可以把网络分成多个小区域,减少路由计算量。我建议骨干区域(Area 0)一定要设计得简洁稳定。

BGP:互联网的“外交官”

BGP(Border Gateway Protocol)是跑在自治系统(AS)之间的路由协议。说白了,就是不同公司、不同运营商之间的“外交谈判”。

BGP 跟 RIP、OSPF 有本质区别:

  • 它不是基于度量(Metric)选路,而是基于路径属性(Path Attribute)。
  • 它不追求“最短路径”,而是追求“策略最优”。
  • 它承载了全球互联网的路由表,条目数量超过 90 万条。

你想想看,互联网上有几万个 AS,每个 AS 都有自己的商业策略。比如 A 运营商可能不想经过 B 运营商的网络,因为要付钱。BGP 就是用来实现这些策略的。

我曾经处理过一个 BGP 路由黑洞的问题。客户从上游 ISP 学到了某条路由,但没通告给自己的对等体,结果数据包到了他的网络就丢了。查了半天,发现是 BGP 的 next-hop 属性没处理好。

关键区别:RIP 和 OSPF 是 IGP(内部网关协议),跑在一个 AS 内部。BGP 是 EGP(外部网关协议),跑在 AS 之间。三者定位完全不同。

核心区别对比

我把三者的关键差异整理成了一张表,方便你对照着看:

特性 RIP OSPF BGP
类型 距离矢量 链路状态 路径矢量
度量标准 跳数(最大15) 开销(Cost) 路径属性(AS Path等)
收敛速度 慢(分钟级) 快(秒级) 较慢(策略复杂)
适用范围 小型网络 中大型网络 互联网/跨AS
路由计算 Bellman-Ford SPF(Dijkstra) 基于策略选择
是否支持VLSM v2支持 支持 支持

一张图看懂三者的关系

下面这张 SVG 图展示了 RIP、OSPF、BGP 在典型网络中的位置和作用范围:

RIP、OSPF、BGP 作用范围示意图 RIP / OSPF / BGP 作用范围 AS 100(内部网络) AS 200(内部网络) R1 R2 R3 R4 RIP 或 OSPF(IGP) R5 R6 R7 R8 RIP 或 OSPF(IGP) BR1 BR2 BGP(EGP) AS Path、Next Hop 等属性 IGP(RIP/OSPF):负责 AS 内部路由 EGP(BGP):负责 AS 之间路由交换

如何选择?我的建议

在实际项目中,我一般这样选:

  • 小型网络(几台路由器)——用 RIP 就够了,配置简单,维护成本低。
  • 中大型企业网——首选 OSPF。收敛快,支持分层设计,扩展性好。
  • 跨运营商、跨 AS 的场景——必须上 BGP。别想着用 OSPF 打通互联网,那是行不通的。

一个小提醒:很多初学者喜欢在同一个网络里同时跑 RIP 和 OSPF,然后搞路由重分发。我建议你一开始别这么干。路由重分发搞不好就会出环路,我当年就吃过这个亏。

好了,这一章的内容就到这里。路由协议的核心就是“交换信息、计算路径、生成路由表”。RIP 简单但局限,OSPF 高效但复杂,BGP 强大但策略性强。理解了三者的本质区别,你就能在实际工作中做出合理的选择。