4. 路由选择协议:静态路由与动态路由、RIP协议、OSPF协议、BGP协议基础

路由选择,说白了就是数据包在互联网上问路的过程。一个数据包从你的电脑出发,要经过十几个路由器才能到达目标服务器。每个路由器都得做决定:下一步往哪走?这个决定,就是靠路由协议来完成的。

我刚开始接触网络的时候,觉得路由协议特别神秘。后来在项目里配了几年路由器,踩了不少坑,才慢慢摸清楚里面的门道。今天咱们就把静态路由、动态路由,以及 RIP、OSPF、BGP 这几个核心协议捋一遍。

核心观点:路由协议的本质,就是让路由器之间交换网络可达性信息,从而构建出全局的转发视图。没有路由协议,互联网就是一盘散沙。

4.1 静态路由 vs 动态路由

路由选择分两大类:静态路由和动态路由。这两者的区别,我习惯用一个比喻来解释。

静态路由,就像你开车去一个陌生城市,提前用地图规划好了一条固定路线。只要路不修、不堵车,你就一直走这条路。优点是简单、稳定、不占带宽。缺点也很明显——一旦路断了,你得手动改地图。

动态路由,就像你开着导航开车。导航会实时获取路况信息,哪条路堵了、哪条路新开通了,它都知道,然后自动帮你重新规划路线。动态路由协议就是路由器的“导航系统”。

我在一个金融客户的项目里遇到过这么个事。他们的核心网络用了纯静态路由,结果某天一条专线断了,整个业务中断了将近两个小时——因为运维人员赶回机房手动改配置花了很长时间。从那以后,他们的核心段全部改成了动态路由。

对比维度 静态路由 动态路由
配置复杂度 低,手动逐条添加 高,需配置协议参数
网络变化响应 不响应,需人工干预 自动收敛,秒级响应
带宽消耗 无 需要交换路由更新报文
适用场景 小型网络、末梢网络 大型网络、复杂拓扑
安全性 高,无协议攻击面 需额外认证机制

我的建议:对于只有三五台路由器的网络,静态路由完全够用。但一旦超过十台,或者有冗余链路需求,就别偷懒了,上动态路由吧。我曾经见过一个用静态路由堆了二十多条路由表的网络,每次变更都像在拆炸弹。

4.2 RIP 协议:距离向量算法的经典代表

RIP(Routing Information Protocol)是最早的动态路由协议之一。它基于距离向量算法,核心思想很简单:每个路由器只告诉邻居“我能到达哪些网络,以及距离是多少跳”。

你想想看,这就像村里的大喇叭广播。张三喊一嗓子:“我能到李四家,1跳。”王五听到了,就记下来:“通过张三能到李四家,2跳。”然后王五再广播出去:“我能到李四家,2跳。”这样一层层传下去,整个网络就知道了所有可达路径。

RIP 有几个关键特征:

  • 跳数作为度量值:最大 15 跳,16 跳视为不可达。这个限制是 RIP 最大的硬伤。
  • 每 30 秒广播一次完整路由表:这在低速链路上简直是灾难。
  • 使用 UDP 端口 520:传输层走 UDP,不保证可靠。

注意:RIP 的收敛速度很慢。一条路由失效后,可能要等几分钟才能全网更新完毕。这期间会出现路由环路,数据包在路由器之间来回兜圈子,直到 TTL 耗尽。我曾经在实验室里亲眼看到 RIP 环路导致 CPU 飙升到 100%,那场面……嗯,挺壮观的。

RIP 有两个版本:RIPv1 是有类路由(不携带子网掩码),RIPv2 是无类路由(携带子网掩码,支持 VLSM)。现在基本只用 RIPv2。

说实话,RIP 在今天的生产网络中已经很少见了。它的价值更多在于教学——让你理解距离向量算法是怎么工作的。

4.3 OSPF 协议:链路状态算法的中坚力量

OSPF(Open Shortest Path First)是目前企业网和运营商网络中最常用的内部网关协议。它基于链路状态算法,和 RIP 完全是两套思路。

OSPF 的工作方式,我这么跟你描述:每个路由器都把自己“认识”的邻居和链路信息,打包成一个 LSA(链路状态通告),然后在整个区域里泛洪。最终,每个路由器手里都有一张完整的网络拓扑图——这叫 LSDB(链路状态数据库)。

有了这张图,路由器就可以独立运行 SPF 算法(最短路径优先),计算出到每个目的地的最优路径。这就像你手里有一张完整的地图,而不是只靠邻居指路。

OSPF 的核心概念:

  • 区域(Area):把大网络划分成多个区域,减少 LSA 泛洪范围。骨干区域是 Area 0。
  • DR/BDR:在广播型网络中,选举指定路由器和备份指定路由器,减少邻接关系数量。
  • 度量值(Cost):默认基于接口带宽计算,公式为 10^8 / 带宽(bps)。
  • Hello 协议:用于发现和维护邻居关系,默认每 10 秒发送一次。

OSPF 的优势:收敛速度快(秒级)、无环路、支持 VLSM、支持认证、适合大型网络。我在一个省级政务网的项目中,用 OSPF 管理了 200 多台路由器,运行了三年没出过问题。

OSPF 的配置示例(Cisco 设备):

router ospf 1
  router-id 1.1.1.1
  network 192.168.1.0 0.0.0.255 area 0
  network 10.0.0.0 0.255.255.255 area 1

这段配置的意思是:启动 OSPF 进程 1,指定 Router ID 为 1.1.1.1,将 192.168.1.0/24 网络宣告到 Area 0,将 10.0.0.0/8 网络宣告到 Area 1。

4.4 BGP 协议基础:互联网的粘合剂

BGP(Border Gateway Protocol)是互联网的“大总管”。它负责在不同自治系统(AS)之间交换路由信息。你访问一个国外网站,数据包要经过十几个不同的运营商网络,这些网络之间的路由信息,全靠 BGP 来传递。

BGP 和 OSPF/RIP 有一个本质区别:OSPF 和 RIP 是内部网关协议(IGP),运行在一个 AS 内部;BGP 是外部网关协议(EGP),运行在 AS 之间。

我参与过一个跨国企业的 BGP 部署项目。他们的总部在德国,亚太区总部在新加坡,中国有五个分公司。我们需要通过 BGP 和当地运营商建立对等连接,同时在公司内部跑 OSPF。那段时间我每天都在跟 AS 号、前缀列表、路由策略打交道。

BGP 的几个关键点:

  • 基于 TCP 端口 179:传输层走 TCP,保证了可靠性。
  • 路径向量算法:不只看距离,还看路径属性(AS_PATH、NEXT_HOP、LOCAL_PREF 等)。
  • 策略驱动:BGP 不是找最短路径,而是找“最符合策略”的路径。
  • 支持 CIDR:可以聚合路由,减少全球路由表条目。
属性 类型 作用
AS_PATH 公认必遵 记录经过的 AS 编号,防环路
NEXT_HOP 公认必遵 指明下一跳路由器地址
LOCAL_PREF 公认自决 在 AS 内传递,值越高越优先
MED 可选传递 告诉邻居 AS 选路偏好,值越低越优先

避坑指南:我曾经遇到过一个问题——BGP 邻居建立成功了,但路由就是学不到。排查了半天,发现是 TCP 的 MSS 设置不对,导致 BGP 更新报文被分片后丢弃了。嗯,BGP 的坑往往不在 BGP 本身,而在底层网络。

4.5 三种协议的知识体系对比

为了让你更直观地理解这三种协议的关系,我画了一张对比图。

路由选择协议知识体系 路由选择协议 静态路由 动态路由 IGP(内部网关协议) EGP(外部网关协议) 距离向量:RIP 链路状态:OSPF 路径向量:BGP 说明 IGP 运行在同一个自治系统内部,注重路径最优和快速收敛。 EGP(BGP)运行在自治系统之间,注重策略控制和路径可达性。

4.6 如何选择路由协议

在实际项目中,路由协议的选择往往不是“哪个好”的问题,而是“哪个合适”的问题。我总结了几条经验:

  1. 小型网络(<10 台路由器):静态路由 + 浮动静态路由做冗余,简单可靠。
  2. 中型企业网(10-50 台):OSPF 是首选。收敛快,无环路,支持分层设计。
  3. 大型数据中心:OSPF 或 IS-IS(另一种链路状态协议,这里不展开)。
  4. 跨运营商、跨国互联:BGP 是唯一选择。没有 BGP,互联网就不存在。
  5. 混合场景:内部跑 OSPF,边界跑 BGP。这是最常见的架构。

重要提醒:不要把 BGP 当 IGP 用!BGP 的收敛速度远慢于 OSPF,而且配置复杂。我见过有人把 BGP 用在一个只有二十台路由器的网络里,结果每次链路抖动都要等几十秒才能恢复——这就是典型的“杀鸡用牛刀”。