有类及无类路由查找方式
CISCO 路由器在路由的全局查找上有两种方式:有类(Classful)查找方式及无类(Classless)查找方式。
当路由器执行无类别路由查找时(默认,ip classless),它不会注意目的地址的类别,它会在目的地址和所有
己知的路由之间逐位(bit by bit)执行最长匹配;
而如果是有类路由查找(no ip classless 且关闭 ip cef),那么收到一个数据包时,路由器先查找目的地址所
属主类,如果路由表中有主类路由,则再去找子网,如果有子网路由,则查询被限定在这些子网中,并进一步查
找,如果最终查找失败(没有任何子网匹配这条路由),则丢弃数据包,即使有默认路由存在;如果本地没有该主
类路由,则看是否有默认路由,如果有,则按默认路由转发,如果无,则丢弃数据包。
在 R2 上做如下配置并做测试(均在 no ip classless 且关闭 ip cef 环境下做的测试):
【实验 1】有主类路由;有默认路由,走主类路由
ip route 0.0.0.0 0.0.0.0 192.168.23.3
ip route 172.16.0.0 255.255.0.0 192.168.12.1 !! 走主类路由
【实验 2】有子网路由(匹配);有默认路由,走子网路由
ip route 0.0.0.0 0.0.0.0 192.168.23.3
ip route 172.16.1.0 255.255.255.0 192.168.12.1 !! 走子网路由
【实验 3】无主类网络;有默认路由,走默认路由
ip route 0.0.0.0 0.0.0.0 192.168.23.3 !! 走默认路由
ip route 172.17.0.0 255.255.255.0 192.168.12.1
【实验 4】有主类网络;有子网路由(匹配),按最长匹配
ip route 172.16.1.0 255.255.255.0 192.168.12.1
ip route 172.16.0.0 255.255.0.0 192.168.23.3
【实验 5】有子网路由,子网路由前缀长度不一样(但都匹配),按最长匹配
ip route 172.16.1.0 255.255.255.0 192.168.12.1
ip route 172.16.1.0 255.255.255.224 192.168.23.3 !! 按最长匹配,走这条
【实验 6】有子网路由,子网路由前缀长度不一样(匹配及不匹配均有),走匹配路由
ip route 172.16.1.0 255.255.255.224 192.168.12.1 !! 匹配,走这条
ip route 172.16.1.32 255.255.255.224 192.168.23.3
【实验 7】有子网路由(不匹配);有默认路由
ip route 0.0.0.0 0.0.0.0 192.168.12.1
ip route 172.16.1.32 255.255.255.224 192.168.23.3
无法 ping 通,因为去往 172.16.1.1 查表后发现有子网路由,因此查找被限定在子网路由中,然后却发现这条路由不匹配,因此直接丢弃报文,而不会走默认路由。
PS:要注意将有类、无类路由查找方式,与有类、无类路由选择协议区分开来。