三种协议的差别不在「谁更先进」,在「适合多大规模」。 RIP 的 15 跳是防环设计而非性能限制——它被淘汰是因为收敛慢。
上一节讲人写的路由,这一节讲协议学的路由。 这一节的重点是「选型」:什么规模用什么协议,为什么。
一、两类算法:听传闻 vs 看全图
距离矢量(distance vector):每个路由器只跟邻居说话,「我这儿到某个网段要 3 跳」。 它拿到的是二手信息,本质是传闻。 链路状态(link state):每个路由器把自己周围的链路状态泛洪给全网, 每个人都攒出一张完整的地图,然后自己算最短路。
听传闻的问题是「坏消息传得慢」:一条链路断了,邻居可能还在说「我这儿能到」,于是形成环路, 要很多轮才能收敛。这就是 RIP 的 15 跳上限与「水平分割」「毒性逆转」这些机制要解决的问题。
二、四种协议对照
协议 类型 度量 规模上限 收敛
RIP 距离矢量 跳数 15 跳 分钟级 OSPF 链路状态 开销(带宽反比) 单区域几百台 秒级 IS-IS 链路状态 开销 运营商级 秒级 BGP 路径矢量 路径属性 全公网 分钟级
OSPF 与 IS-IS 都是链路状态,区别在「跑在哪一层」:OSPF 直接跑在 IP 上(协议号 89), IS-IS 跑在二层。跑在二层的好处是不依赖 IP 配置,所以运营商更爱用 IS-IS。
三、RIP 的 15 跳要单说
它不是性能上限,是防环设计:16 跳直接算「不可达」,这样环路最多绕 15 圈就会被丢掉。
这个上限在今天的实际意义很小:现代企业网直径通常 3 到 5 跳,15 跳够用。 RIP 被淘汰的真实原因是「收敛慢」与「度量太粗」——跳数不看带宽,一条 10G 与一条 2M 都算 1 跳。
但 RIP 在两个地方还活着:极简的小网络,以及教学。 因为它是唯一一个「看一遍就懂」的路由协议。
四、BGP 为什么慢,又为什么必须用
BGP 慢在三处:全表 95 万条要一条条收;路径属性多,比较规则复杂; 而且它默认不急着收敛(有各种定时器与抑制机制)。
但公网只能用 BGP, 因为只有它带「AS 路径」——这个属性既能防环(看到自己的 AS 号就不收),又能做策略(选路、 牵引流量)。
企业网很少需要 BGP 全表:多线路由通常只要「默认路由 + 几条本地前缀」, 收全表是运营商与大型内容网的事——收了也用不上,还占内存。
五、动手 Demo:RIP、OSPF、BGP,三种动态路由的适用规模
这段列出四种协议的类型、度量与规模上限, 再按「公网全表 10 万/50 万/95 万条」算 BGP 启动时要收多少条更新。
for n in (100000, 500000, 950000):
P(u" 全表 %s 条:启动时要收 %s 条更新。"
% (format(n, u","), format(n, u",")))
实跑输出:
--------------------------------------------------------------------
RIP、OSPF、BGP,三种动态路由的适用规模
--------------------------------------------------------------------
**动态路由的核心差别是「规模」**:小网用 RIP,中等用 OSPF,公网用 BGP。
协议 类型 度量 规模上限 收敛
-----------------------------------------------------------------------
RIP 距离矢量 跳数 15 跳 分钟级
OSPF 链路状态 开销(带宽反比) 单区域几百台 秒级
IS-IS 链路状态 开销 运营商级 秒级
BGP 路径矢量 路径属性 全公网 分钟级
**RIP 的 15 跳上限要单说**:它不是「性能限制」,是「防环设计」——16 跳就算不可达。
**所以网络直径超过 15 跳就不能用 RIP。**
**这个上限在今天的意义**:一个 15 跳的网络直径意味着「经过 15 台路由器」,
而现代企业网直径通常 3 到 5 跳。
**所以 RIP 在规模上其实够用,它被淘汰是因为「收敛慢」而不是「跳数少」。**
**BGP 的规模要单独算**:公网全表在 2026 年约 95 万条前缀。
而 BGP 更新是「增量」的,一条前缀变化就要发一次更新。
全表 100,000 条:启动时一次要收 100,000 条更新。
全表 500,000 条:启动时一次要收 500,000 条更新。
全表 950,000 条:启动时一次要收 950,000 条更新。
**启动时「收全表」要几十秒到几分钟**,
这就是为什么「重启一台 BGP 路由器」在生产网里是一件要报备的事。
**最后一条实践**:企业网很少需要 BGP 全表。
**多线路由通常只需要「默认路由 + 几条本地前缀」**,
**收全表是运营商与大型内容网的事**——收了也用不上,还占内存。
「启动收全表要几十秒到几分钟」这一句是运维常识: 这就是为什么重启一台 BGP 路由器在生产网里要报备——它重启期间,那一片的流量会走别的路, 回来时又要重新收敛。
「企业网很少收全表」这一条要写进设计原则:收全表的唯一收益是「能对每个目的地做精细选路」, 而企业出口只有一两条链路,精细选路用不上。
四种协议里 IS-IS 最容易被忽略:它在国内运营商网里其实是主流, 因为它跑在二层、扩展性好、而且(历史上)比 OSPF 更早支持 IPv6。
30 秒实验
- 在你的路由器上查一下跑的是什么路由协议。
- 看 OSPF 邻居表,数一下有几个邻居。
- 想一想:一条 10G 链路与一条 2M 链路,RIP 会认为哪条更好?
常见误区
- 以为 RIP 的 15 跳是性能限制。它是防环设计。
- 以为 OSPF 一定比 RIP 好。规模小时 RIP 更简单,出错更少。
- 以为企业出口也该收 BGP 全表。用不上,还占内存。
自测三问(点开对答案)
1. 距离矢量与链路状态的根本差别是什么? —— 前者只跟邻居交换「到各网段的距离」,本质是传闻;后者泛洪链路状态,各自算最短路。 2. RIP 为什么把 16 跳定义为不可达? —— 作为防环机制:环路最多绕 15 圈就会被丢弃。 3. 公网为什么必须用 BGP? —— 只有它带 AS 路径属性,既能防环又能做策略选路。下一节:路由讲完了,看「把整包再包一层」的技术——隧道与 VPN。
- ☐ (本节完,下一节 03.05.07 IP隧道与VPN)