路由表每一行都在回答四个问题:去哪儿、走哪条、多可信、多贵。 「管理距离」比来源,「度量值」比路径——两个都比小,但比的不是一回事。
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 秒实验
- 在路由器或电脑上打印路由表,数一数一共几行。
- 找出表里的默认路由,看它的下一跳是谁。
- 对比同一前缀的两条路由,看它们的度量值差多少。
常见误区
- 以为管理距离与度量值是同一件事。一个比来源,一个比路径。
- 以为路由表就是转发表。前者给 CPU 算,后者给芯片查。
- 以为内存够存 95 万条就行。要存三份,还要留增长余量。
自测三问(点开对答案)
1. 管理距离比的是什么?度量值比的是什么? —— 管理距离比「不同来源的可信度」,度量值比「同一来源内哪条路更近」。 2. 静态路由的管理距离是多少?为什么它比 OSPF 优先? —— 静态是 1,OSPF 是 110,数小的优先,所以静态压过 OSPF。 3. 路由表与转发表差在哪一步? —— 转发表把递归下一跳解析成出接口与 MAC,并按前缀长度重组,供芯片一次查表。下一节:一张表里有多条都能匹配,路由器凭什么只挑一条。
- ☐ (本节完,下一节 03.05.04 最长匹配与默认网关)