路由器收到 IP 数据包后,要根据目的 IP 决定下一跳。这个工作可以分成两层:控制平面通过路由协议学习和计算路径;数据平面查转发表,尽快把包送到对应端口。可以把它想成物流中心:控制平面规划目的地对应的分拣路线,数据平面负责处理每一件包裹。

IP 前缀与最长匹配

IPv4 地址有 32 位,常写成四组十进制数,例如 192.168.1.25。CIDR 用斜杠标出网络前缀长度:192.168.1.0/24 表示前 24 位是网络部分,剩余 8 位用于该网络中的地址。对应的子网掩码是 255.255.255.0。

路由表中的前缀可能重叠。若表里有 10.0.0.0/8 和 10.1.2.0/24,发往 10.1.2.7 的包应选更具体的 /24 路由。这叫最长前缀匹配(Longest Prefix Match)。它让路由器可以用一条较短的汇总路由覆盖许多地址,同时为少数网络提供更具体的路径。

IPv6 将地址扩展为 128 位,以十六进制分组表示,例如 2001:db8::1。连续的零分组可以压缩成 ::,但一个地址中最多只能使用一次。

从域内路由到域间路由

互联网由许多自治系统(Autonomous System,AS)组成。每个 AS 由一个组织管理,例如 ISP、大学或大型企业。一个组织内部使用域内路由协议计算路径;AS 之间则主要通过 BGP(Border Gateway Protocol)交换可达性信息。

BGP 不只是寻找跳数最少的路径。不同 AS 有不同的商业关系和流量政策:客户向供应商购买转发服务,互为对等方的网络则交换约定范围内的流量。因此,BGP 的路径选择会考虑策略,而不单是距离。

eBGP 在不同 AS 之间交换路由;iBGP 把外部学到的路由传播给本 AS 内的路由器。实际转发时,路由器先决定使用哪个外部出口,再通过域内路由找到到该出口的下一跳。某些场景会采用“热土豆”策略:在满足路由政策的前提下,尽快把流量交给邻接网络。

因此,域间路由和域内最短路径不是同一个问题:前者还要尊重网络之间的策略与商业关系。

下面的示意图展示了一类遵循客户—供应商关系的路径:流量可以先向上游网络传递,再沿对等关系跨网,最后向下游客户传递。

自治系统商业关系下的路径示意图