Artículos del equipoCómo funciona Internet

为什么互联网服务提供商(ISP)和企业依赖CIDR以提高路由效率

用四个子网汇总成一个 /22 的例子,讲清 CIDR 前缀、地址数量、路由汇总的价值,以及不能忽略的边界和具体路径。

Índice

四栋白色房屋前各有一条蓝色小路,共同接入一条蓝色道路。
先指向一组目的地,再按具体路径前进。路由汇总减少重复信息,并不抹去内部的差别。

给一栋楼送快递,不必在出发前就记住每个房间怎么走。先找到楼的入口,再按内部指引送到具体房间就行。网络也能这样简化:用一条路由指向一组目的地,到了更靠近目的地的路由器,再按更细的路径转发。CIDR 让这种分组摆脱了早期固定地址类别的限制。

先看懂斜杠后面的数字

CIDR 是“无类别域间路由”的英文缩写。以 192.168.0.0/24 为例,IPv4 地址一共 32 位,/24 表示前 24 位是共同的前缀。剩下 8 位可以变化,所以这一块共有 256 个地址。/25 有 128 个,/22 有 1,024 个。斜杠后的数字越大,地址块反而越小。

这算的是地址总数,不是可以接入的设备数量。普通 IPv4 局域网子网还要留出网络地址、广播地址,网关等设施也需要地址。例如,常规 /25 有 126 个主机地址,给终端分配时还得扣除网关等设施占用的部分。IPv4 地址结构这篇文章会进一步解释怎么算。

四条路由,怎样汇总成一条?

假设一家公司内部有四个私网子网:

  • 192.168.0.0/24
  • 192.168.1.0/24
  • 192.168.2.0/24
  • 192.168.3.0/24

它们恰好拼成 192.168.0.0/22,范围从 192.168.0.0 到 192.168.3.255。上游路由器可以用一条汇总路由,把这整块的流量交给负责这四个子网的网络;网络内部仍要保留通往各个子网的具体路径。这里用的是企业内网例子,私网地址段不能向公网发布。

边界不能算错。如果只有后面三个子网,却直接汇总成这个 /22,就会把 192.168.0.0/24 也包含进来。因此,汇总不是找一个“装得下”的大范围就行。需要核对它覆盖的每段地址、后面的实际路由,以及自己是否有权发布整个地址块。

运营商和企业各自得到什么?

对运营商来说,把适合汇总的客户路由合在一起,可以减少其他网络需要保存的路由信息。网络之间通过 BGP 交换哪些目的地可达,BGP 支持这样的前缀。收益是减少独立公告、控制路由信息规模,而不是保证每个数据包或每个网页都会更快。

对企业来说,可以按实际设备数量和增长需要规划不同大小的子网,不必只在历史上的 A、B、C 类大小中选择。但地址规划和路由汇总是两件相互关联的事:把地址划成几个子网,并不意味着在网络的每个位置都能把它们有效汇总。

汇总之后,数据仍得送对地方

转发表里如果同时有一条 /22 和一条与目的地址匹配的 /24,就按更具体的 /24 转发。这就是最长前缀匹配。同一客户接入多家运营商,或需要特定的流量调度时,往往仍需发布更具体的路由。

生成汇总路由的设备还需要设置丢弃路由:如果目的地址落在汇总范围内,却没有更具体的可达路径,就把数据包丢弃。否则,某个子网失联后,数据可能又被送回上游,在两边绕圈。这些汇总规则可以在 RFC 4632 中查到。

把技术协调和资源控制分开看

CIDR 解决的是如何用更少的重复信息描述可达路径。它并不替我们回答号码资源归谁、能否转让、应该由谁控制。先把技术机制弄清楚,才更容易讨论后面的问题。可以先读公网和私网地址的区别,再看卢恒的 Note 29,了解他关于运营者自主权与 IPv4 资产的主张。