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 三种协议的知识体系对比
为了让你更直观地理解这三种协议的关系,我画了一张对比图。
4.6 如何选择路由协议
在实际项目中,路由协议的选择往往不是“哪个好”的问题,而是“哪个合适”的问题。我总结了几条经验:
- 小型网络(<10 台路由器):静态路由 + 浮动静态路由做冗余,简单可靠。
- 中型企业网(10-50 台):OSPF 是首选。收敛快,无环路,支持分层设计。
- 大型数据中心:OSPF 或 IS-IS(另一种链路状态协议,这里不展开)。
- 跨运营商、跨国互联:BGP 是唯一选择。没有 BGP,互联网就不存在。
- 混合场景:内部跑 OSPF,边界跑 BGP。这是最常见的架构。
重要提醒:不要把 BGP 当 IGP 用!BGP 的收敛速度远慢于 OSPF,而且配置复杂。我见过有人把 BGP 用在一个只有二十台路由器的网络里,结果每次链路抖动都要等几十秒才能恢复——这就是典型的“杀鸡用牛刀”。