📡 第三章 路由器和它庞大的功能
📄 一句话概括

路由表每一行都在回答四个问题:去哪儿、走哪条、多可信、多贵。 「管理距离」比来源,「度量值」比路径——两个都比小,但比的不是一回事。

📝 本节和前面几节的关系

03.05.02 走完了一个包,这一节拆开「它查的那张表」。 「路由表」与「转发表」是两样东西,03.01.02 提过一句,这里说清区别。

一、六列各管什么

一张路由表的最小形态是「目的前缀 + 下一跳」,但真实设备上永远不止这两列。

字段 含义 缺了会怎样


目的网络 要去哪个网段 不知道该送哪儿 掩码/前缀 这个网段有多大 最长匹配没法做 下一跳 交给谁 不知道往哪个方向发 出接口 从哪个口出去 点对点链路可省 度量值 这条路有多好 多条路时选不出最优 管理距离 这个来源多可信 静态与动态冲突时无法决断

「目的网络 + 掩码」必须成对出现:只写 10.0.0.0 不写 /8, 这条路由就没有意义——它不知道这个网段有多大。

二、管理距离与度量值:两个「越小越好」,但不是一回事

管理距离(AD)比的是「不同来源之间谁更可信」,是设备厂商定死的常数:直连 0、静态 1、EIGRP 90、 OSPF 110、RIP 120。 度量值(metric)比的是「同一个来源内部哪条路更近」,OSPF 里是开销、RIP 里是跳数、 EIGRP 里是带宽与延迟的复合值。

比较顺序是「先 AD、后 metric」: 先在同一前缀的所有候选里挑出 AD 最小的那个来源,再在这个来源内部比 metric。

两句话记住:「信谁」看管理距离,「哪条近」看度量值。 而两者都是数小的赢。

三、路由表怎么变成转发表

路由表是控制面的产物,可能有几十万条、带各种属性。 转发表是数据面的产物,是压平过、给芯片查的版本。

压平做了三件事:把递归的下一跳解析成直连的出接口与 MAC; 把「同一前缀的多条路径」按等价多路径展开成几个下一跳; 把前缀按长度重新组织,让芯片一次查表就能拿到最长匹配。

所以「show ip route 看到的」与「芯片里存的」不是一回事。 这也是为什么有时候路由表对、但转发不对——问题在同步那一步。

四、动手 Demo:路由表里那六列,每一列都在管什么

这段列出六列字段与缺失后果,区分管理距离与度量值, 再按「一条 IPv4 路由约 200 字节」算四种规模下路由表要占多少内存。

for n in (100000, 500000, 950000):
    P(u"  %s 条:约 %d MB。" % (format(n, u","), n * 200 // (1024 ** 2)))

实跑输出:

--------------------------------------------------------------------
路由表里那六列,每一列都在管什么
--------------------------------------------------------------------
**路由表不是「一张地址清单」**,每一行都带着「怎么去、多可信、多贵」。

  字段           含义                 缺了会怎样
  ----------------------------------------------------------------
  目的网络       要去哪个网段         不知道该送哪儿
  掩码/前缀     这个网段有多大       最长匹配没法做
  下一跳         交给谁               不知道往哪个方向发
  出接口         从哪个口出去         (点对点链路可省)
  度量值         这条路有多好         多条路时选不出最优
  管理距离       这个来源有多可信     静态与动态冲突时无法决断

**「度量值」与「管理距离」最容易混**:

  · **管理距离**比的是「不同来源之间」:直连 0、静态 1、OSPF 110、RIP 120。**数小的赢。**
  · **度量值**比的是「同一来源内部」:OSPF 里是开销、RIP 里是跳数。**也是数小的赢。**

**所以先比管理距离、再比度量值。**两句话记:**「信谁」看管理距离,「哪条近」看度量值。**

**算一张典型企业路由表的规模**:

  来源            典型条数     说明
  -----------------------------------------------
  直连网段        12           每个接口一段
  静态路由        8            默认路由、专线
  OSPF 学到的     120          内部网段
  BGP 学到的      950,000      公网全表

**「BGP 学到 95 万条」这一行是关键**:公网路由表规模在 2026 年已经接近百万条,
**所以「能不能装下全表」成了选型硬指标。**

**算一下内存**:一条 IPv4 路由约 200 字节(含前缀、下一跳、属性指针),

  100,000 条:约 19 MB。
  500,000 条:约 95 MB。
  950,000 条:约 181 MB。

**190 MB 看起来不多,但路由表要在 TCAM 里存一份、内存里存一份,**
**还要给每个邻居存一份未处理的版本**——实际占用是这个数的几倍。
**这就是「运营商级路由器内存要几十 GB」的原因。**

95 万条这个数要记:2026 年公网 BGP 全表已经接近百万条前缀, 而十年前只有五十多万。增长几乎全是「拆细前缀」来的。

200 字节是「一条路由的净大小」,但真实占用远不止:TCAM 里存一份做转发、 内存里存一份做协议计算、每个邻居还存一份未处理的。所以「能装下全表」要看三份,不是一份。

「能不能装下全表」是选型的硬指标:一台号称支持 BGP 的设备,如果内存只够 20 万条, 它在公网上就是个残废——收不全表就会缺路由,缺路由就会黑洞。

30 秒实验

  1. 在路由器或电脑上打印路由表,数一数一共几行。
  2. 找出表里的默认路由,看它的下一跳是谁。
  3. 对比同一前缀的两条路由,看它们的度量值差多少。

常见误区

  1. 以为管理距离与度量值是同一件事。一个比来源,一个比路径。
  2. 以为路由表就是转发表。前者给 CPU 算,后者给芯片查。
  3. 以为内存够存 95 万条就行。要存三份,还要留增长余量。
自测三问(点开对答案) 1. 管理距离比的是什么?度量值比的是什么? —— 管理距离比「不同来源的可信度」,度量值比「同一来源内哪条路更近」。 2. 静态路由的管理距离是多少?为什么它比 OSPF 优先? —— 静态是 1,OSPF 是 110,数小的优先,所以静态压过 OSPF。 3. 路由表与转发表差在哪一步? —— 转发表把递归下一跳解析成出接口与 MAC,并按前缀长度重组,供芯片一次查表。

下一节:一张表里有多条都能匹配,路由器凭什么只挑一条。

相关笔记