🌐 第六章 路由
📄 一句话概括

路由表大到装不下怎么办——把下一跳相同的连续网段合并成一条更粗的路(路由聚合):四条 /24 并成一条 /22,表更小、查得快、通告少;聚合的本质是"掩码变短、前缀变粗",靠 6.3 的最长前缀匹配保证明细永远优先于聚合行。

📝 本节和前面几节的关系

6.9 说了远方路的登记要"一条条写"或"协议一条条学"——网段一多,表就爆炸。本节是 6.9 的续集:登记完再瘦身。计算靠 3.11 的掩码、6.3 的最长前缀匹配,全是老朋友。

一、问题:骨干路由器的表大到装不下

互联网核心路由器的路由表有几十万条——每条都占内存、每条都要逐行比对、每条都要随路由协议通告(6.9)。不瘦身,设备扛不住、查表慢、全网通告流量也爆炸。

二、聚合:把"同一出口的一片网"并成一行(第一张配图)

观察这四条路由:目的网段不同,但下一跳全一样(都交给 R2)——既然都走同一条路,何必登记四遍?

一行顶四行。本质上这是把 6.3 说的"一片网"的粒度再放大一层:/24 是"一片楼",/22 就是"一片街区"。

三、怎么算:二进制对齐,取公共前缀(第二张配图)

聚合口诀只有一句:把各网段的二进制对齐,从左往右数,数到第一位不同为止,前面相同的位数就是聚合掩码。

以 192.168.0.0 ~ 192.168.3.0 为例:

为什么不会冲突:6.3 的最长前缀匹配保证——包的目的地址同时命中明细行(/24)和聚合行(/22)时,明细优先(前缀更长更具体)。所以聚合行只是"兜大面",明细在时它让位、明细撤了(比如某网段断了)它还能按聚合方向继续扔(黑洞风险见误区)。

四、红线:只聚合"下一跳相同"的网段

聚合省表的前提是这些网段真的都从同一个口走。把去向不同的网段硬聚进一条,包就会被扔错方向——省了表,错了路。这是聚合唯一但致命的纪律。

五、动手 Demo80:亲手算一次聚合

  1. 拿这四个网段练手:10.1.0.0/24、10.1.1.0/24、10.1.2.0/24、10.1.3.0/24;
  2. 对齐第 3 字节:0、1、2、3 的二进制前 6 位相同(同 192.168 那题)→ 聚合为 10.1.0.0/22(掩码 255.255.252.0);
  3. 再练一个"不能聚"的反例:10.1.0.0/24 和 10.1.128.0/24——第 3 字节 00000000 vs 10000000,第 1 位就不同,公共前缀只有 17 位,硬聚 /17 会把 10.1.0.0~10.1.127.255 一大堆没登记的地址全裹进来;
  4. 30 秒实验:route print 里看自己网卡那条 192.168.1.0/24(或你所在网段)——想想运营商的骨干路由器上,你所在的整个小区/城市可能就是被聚合成了一行,几万用户共享表里的一格。
  5. 全部完成。你现在能"会算":给几个连续网段,算出聚合掩码。

六、常见误区

七、动手自测

点开自测(先自己答,再展开) 1. 路由聚合解决什么问题? 2. 聚合的前提条件是什么?(两条) 3. 聚合口诀是什么?掩码位数怎么定? 4. 192.168.0.0~3.0 四个 /24 聚合后是什么?掩码呢? 5. 为什么聚合行和明细行不会冲突? 6. 明细网段断了但聚合行还在,会发生什么? 7. 聚合有什么副作用? 8. 静态路由能不能用聚合? 9. 10.1.0.0/24 和 10.1.128.0/24 为什么不能聚成 /17? 10. 聚合的本质用 6.3 的话说是什么?

答案:① 骨干路由表几十万条,表太大装不下、查得慢、通告多;聚合把同出口的连续网段并成一条。② 地址连续(二进制拼成一片)+ 下一跳相同。③ 二进制对齐取公共前缀;数到第一位不同为止,相同位数=掩码长度。④ 192.168.0.0/22(255.255.252.0)。⑤ 最长前缀匹配:明细 /24 比聚合 /22 更长更具体,永远优先。⑥ 黑洞:包仍朝聚合方向空扔,直到对方丢弃。⑦ 有损压缩:故障时黑洞空扔、定位变难——精确度换表容量。⑧ 能:静态可只写聚合条;协议在区域边界也能自动聚合。⑨ 第 3 字节 00000000 vs 10000000 第 1 位就不同,公共前缀只 17 位;硬聚 /17 会裹进未登记的 10.1.0.0~10.1.127.255。⑩ "一片网"的粒度再放大一层——掩码变短、前缀变粗。

八、下一步学什么

相关笔记