理解路由表的结构和查找过程,就相当于拥有了检验网络和排除网络故障的重要工具。排查路由问题时,知道路由表中应该包含哪些路由以及不应该包含哪些路由是一项非常重要的技能。

 
Cisco IP 路由表是按有类方式构造的,这意味着会使用默认地址和有类地址来组织路由条目。路由条目的来源可以是直连网络,也可以是静态路由,还可以是通过路由协议动态了解到的路由。
 
在本章中,您了解了 1 级路由和 2 级路由。1 级路由可以是最终路由,也可以是父路由。1 级最终路由是子网掩码等于或小于网络的默认有类掩码,并且有下一跳地址或送出接口的路由。例如,通过 RIP 获知的网络地址为 192.168.1.0、子网掩码为 /24 的路由就是 1 级最终路由。这些路由在路由表中显示为单个路由条目,例如:
 
R 192.168.1.0/24 [120/1] via 172.16.2.2, 00:00:25, Serial0/0/0
 
另一种 1 级路由是父路由。如果向路由表中添加子网路由,就会相应在表中自动生成 1 级父路由。子网路由也称为 2 级子路由。父路由是 2 级子路由的标题。以下是 1 级父路由和 2 级子路由的示例:
 
172.16.0.0/24 is subnetted, 1 subnets
R 172.16.1.0 [120/1] via 172.16.2.1, 00:00:07, Serial0/0/0
 
如果没有使用 VLSM,子路由的子网掩码会显示在父路由中。而如果使用了 VLSM,则父路由显示默认有类掩码,各 VLSM 路由条目含有自身的子网掩码。
 
在本章中,还向您介绍了路由表查找过程。路由器收到数据包后,会在路由表中查找最长匹配的路由。最长匹配的路由是指数据包的目的 IP 地址与路由表中路由的网络地址之间从左侧开始匹配位数最多的路由。路由表中与网络地址相关的子网掩码决定了必须达到的最少匹配位数。
 
只有父路由与数据包的目的 IP 地址匹配时,路由器才会检查 2 级子路由(子网)中是否有匹配路由。父路由的有类掩码决定了必须与该父路由匹配的位数。如果 1 级父路由匹配,接下来将搜索 2 级子路由,看其是否匹配。如果数据包的目的地址与父路由匹配,但不与任何子路由匹配,会出现什么情况?如果路由器使用的是有类路由行为,则不会搜索其它路由,数据包将被丢弃。IOS 11.3 版本以前,Cisco 路由器上默认的是有类路由行为。有类路由行为可以使用 no ip classless 命令来执行。
 
从 IOS 11.3 版本开始,无类路由行为成为默认的路由行为。如果数据包的目的地址与父路由匹配,但不与任何子路由匹配,则路由表过程将继续搜索路由表中的其它路由(包括默认路由)。无类路由行为使用 ip classless 命令来执行。
 
路由表中添加的网络路由来自于多个来源,包括直连网络、静态路由、有类路由协议和无类路由协议。查找过程、有类路由行为和无类路由行为不受路由来源影响。路由表可能会通过 RIPv1 等有类路由协议获取到路由信息,但会使用无类路由行为 (no ip classless) 来执行查找过程。