路由技术(IPv4版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 有类路由协议

路由信息更新时只发送路由条目而不携带路由条目的子网掩码的路由协议称为有类路由协议。RIPv1和IGRP协议属于有类路由协议。

2.1.1 有类路由协议的路由表

由于有类路由协议只发送路由条目,不携带掩码,所以运行有类路由协议的路由器在接收到路由条目后,进行如下的判断:

●如果路由更新信息中的路由条目与自己的接收接口的地址属于同一主类网络(A类、B类、C类网络号被称为主网号),路由器则使用自己接口上的子网掩码作为接收到的路由条目的网络掩码。

●如果路由更新信息中的路由条目与自己的接收接口地址不属于同一主类网络,路由器则根据接收到的路由条目所属的地址类别采用默认的主类网络掩码(把子网归纳到主网)。

根据路由器的第一种做法,在规划网络时可以使用子网,但要求属于同一主网的所有子网必须使用相同的掩码,且在规划网络时应使属于同一主网的子网连续(中间不插入属于其他主网的网络)。如图2-1所示,两个同属于A类的子网掩码相同且连续使用,两个同属于B类的子网掩码相同且连续使用。被配置了属于同一主网的子网地址的路由器可以交换子网路由。路由器B可以和A交换子网路由,也可以和C交换子网路由。所以路由器B收到的全部是子网路由条目。

图2-1 有类路由协议在主网边界归纳

根据路由器的第二种做法,所有子网路由信息在到达主网边界时都被丢弃,即当路由信息跨越主类网络时只通告相应的主类网络路由。所以路由器A收到的路由是172.16.0.0;路由器C收到的路由是10.0.0.0。

当属于同一主网的子网不连续时,如图2-2所示,路由器A和C都向路由器B通告可以到达网络172.16.0.0,路由器B可能做出不正确的转发决定。

图2-2 子网不连续的拓扑

根据以上特点,当使用有类路由协议时还需要谨慎规划网络地址,除了保证子网连续外,还必须保证同一主网内的子网掩码要相同。如果掩码不同,也会造成路由表不正确。下面以图2-3所示的地址规划方案解释该问题。

图2-3中的两个同属于B类的子网是连续规划的,但它们的掩码不同,一个使用24位掩码,一个使用26位掩码。观察它们的路由表是否有错误。

图2-3 子网掩码不同造成路由丢失

(1)路由器Middle的路由表

Middle#sh ip route
(代码部分省略)
    172.16.0.0/16 is variably subnetted, 2 subnets, 2 masks
C       172.16.3.0/24 is directly connected, FastEthernet0/1
C       172.16.4.64/26 is directly connected, FastEthernet0/0
R    10.0.0.0/8 [120/1] via 172.16.4.66, 00:00:16, FastEthernet0/0
R    192.168.1.0/24 [120/1] via 172.16.3.1, 00:00:03, FastEthernet0/1
Middle#

该路由表是正确的。

(2)路由器Left的路由表

Left#sh ip route
(代码部分省略)
     172.16.0.0/24 is subnetted, 1 subnets
C        172.16.3.0 is directly connected, FastEthernet0/0
R    10.0.0.0/8 [120/2] via 172.16.3.3, 00:00:20, FastEthernet0/0
C    192.168.1.0/24 is directly connected, FastEthernet0/1
Left#

路由表显示,既没有172.16.4.0的路由也没有172.16.0.0的路由。也就是说,既没有子网路由也没有主网路由。

(3)路由器Right的路由表

Right#sh ip route
(代码部分省略)
     172.16.0.0/26 is subnetted, 1 subnets
C        172.16.4.64 is directly connected, FastEthernet0/1
     10.0.0.0/16 is subnetted, 2 subnets
C        10.11.0.0 is directly connected, FastEthernet0/0
R        10.12.0.0 [120/1] via 10.11.0.2, 00:00:03, FastEthernet0/0
R    192.168.1.0/24 [120/2] via 172.16.4.65, 00:00:11, FastEthernet0/1
Right#

路由表中既没有172.16.3.0的路由也没有172.16.0.0的路由。

2.1.2 ip classless 指令

在运行有类路由协议的路由器上,如果收到数据包,目的地是它直连子网所在的主类网络中的一些该路由器未知的子网,路由器就会丢弃这些数据包。如果让路由器为这些数据选择默认路由转发,则必须使用ip classless命令开启该功能。如图2-4所示,路由器Right和Middle都有到达网络172.16.3.0和172.16.4.0的路由,如果有到达172.16.5.0等其他一些属于172.16.0.0网络的子网的数据包,并且没有开启ip classless功能,路由器会认为既然172.16.3.0和172.16.4.0存在于路由表中,那么该主网(172.16.0.0)的所有子网都应该存在,只是此时没有具体的172.16.5.0这条路由罢了。即使存在默认路由也不会使用默认路由传送该数据包。如果开启ip classless功能,它们则使用默认路由转发这些数据包。

图2-4 解释ip classless的图例

在IOS 11.3之后的版本中,ip classless功能默认是开启的。