接收更新时,接收接口做如下检查:
如果更新是和本接口在同一主类网络下,则用本接口的MASK作为掩码,正因为如此,RIP需要是一致的掩码,否则就套错了(如果收到的是/32的主机路由更新,则接受它).
如果更新和本接口不在同一主类下,则检查路由表是否存在这个主类下的子网:
存在,则忽略该更新.
不存在则用主类的掩码(这里需要注意下:正常情况下更新如果不是和接收接口一个主类,则发送过来的更新就应该是个汇总的主类路由,而若两个路由器之间用的是无编号接口并包含子网信息的话,接收路由器将使用/32的主机掩码匹配这个更新).
发送更新,发送接口做如下检查:
更新是否和自己是同一主类,是的话,检查该路由的掩码是否和发送接口的掩码一致:
一致则发送出去
不一致,如果更新是/32的主机路由则发送更新,否则丢弃更新.
更新如果和发送接口不在同一主类,则自动汇总为主类网络发送出去.
Rtr A在发送更新包的时候,因为172.16.1.33/28与发送接口172.16.3.1/24同在一个主网络下,但是子网掩码不同,所以接口172.16.3.1/24不会向外通告172.16.1.33/28这一条路由。
Rtr A在发送更新包的时候,因为173.16.1.33/28与发送接口172.16.3.1/24不在同一个主网络下,所以接口172.16.3.1/24会通告一条173.16.0.0/16的路由。
Rtr A在发送更新包的时候,因为173.16.1.33/28与发送接口172.16.3.1/24不在同一个主网络下,所以接口172.16.3.1/24会通告一条173.16.0.0/16的路由,但Rtr B路由器在收到更新包的时候,检查自己的路由表有一条173.16.1.1/28的路由,所以Rtr B不会接收173.16.0.0/16这一条路由。
从上面可以看出,不连续子网下,R1先131.108.5.0/24汇总成131.108.0.0/16发送出去,接收的路由器因为接收接口和该路由条目不是一个主类,所以查看路由器是否存在该更新的子网,由于存在,所以忽略更新,因而导致了不连续子网在RIP下无法正常更新.
Why Don't RIPv1 and IGRP Support Variable-Length Subnet Mask?
http://www.cisco.com/en/US/tech/tk364/technologies_tech_note09186a0080093f1e.shtml
Don't RIPv1 and IGRP Support Variable-Length Subnet Mask?
文章评论