RIPv1收发数据包详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40478570/article/details/83108207

       本文将详解RIPv1收发路由更新的机制, 先来复习一下RIPv1,距离矢量路由,广播更新,不支持VLSM,CIDR,不支持认证,不支持手工汇总,不支持下一跳,不支持Tag字段,所以可以看出,RIPv1非常的不方便且不安全,因为他无法手工汇总与认证

       那么我们上面说到了一点,不支持VLSM,RIPv1在更新包中,不携带子网掩码,这就引出了一个问题,接收方是怎么赋予这个网段掩码的,这便是这章我们需要讨论的问题

       以下是拓扑环境,以及三台路由器的路由表状态,我们逐一对其进行分析

从这张拓扑可以看出两个问题,我们逐一解释

  1. R2,R3接收不到12.3.1/25的路由条目
  2. R3接收到11.2.0/23的条目,是错误的

R2,R3收不到12.1.3.1/25的路由,这是因为,RIPv1会在发送该条目之前,会进行比对,如果该网络与自己的出接口地址,为一个主类,那么必须掩码一致,如果掩码不一致,则放弃发送,如果与自己的出接口不为一个主类,那么将发送他的汇总网络号,拓扑中,12.1.3.1/25,与该更新包的出接口的12.1.1.1/24,为同一主类,但是掩码不一致,所以R1不会发送这条路由条目

       R3接收到的错误条目,其原因并不是发送端的问题,而是自身产生的原因,当一台运行RIP的路由器收到一条RIP的更新包之后,发现更新包中的地址与接收该数据包的接口地址属于一个主类时,进程会决定为这条条目赋予入接口的掩码,也就是说这条不携带掩码的条目,将会被接收端自行附加掩码,这个机制便导致了R3学习错误的问题,R3认为12.1.3.1与自己的12.1.1.3是一个主类,那么R3就会将自己的23位掩码附加给12.1.3.1,从而导致条目变成了12.1.3.0/23,这是RIPv1收发机制带来的一个问题,那么解决的方法便是,在F0/0上启用一个secondary地址,掩码为24,因为RIP优先使用secondary地址的掩码来计算路由,也可以在RIP进程中宣告secondary地址,但是这里要注意的是,RIP并不会将secondary发布出去,而是用secondary当做更新源来使用

       下面我们再来看一张实验拓扑

这里可以看出一个问题,也就是R2没有正确的学到1.1.1.0/24,而是被一条1.0.0.0/8的路由顶掉了,这里说明了R1发送的条目是1.1.1.1,但是R2处理时,发现1.1.1.1与自己入接口的地址不是同一主类,所以在本地计算之后会生成一条R 1.0.0.0/8的路由,但是R2本地也有一条C 1.0.0.0/8的直连路由,这时R2发现C>R,随后用C路由顶替掉R路由

接下来再说一张拓扑

这里发现一个很大的问题,R2学习到了一条12.1.3.0/32,这很明显是一条错误路由,造成这个现象的原因是在于,R1始终认为对方的掩码,网段与自己一致,所以做好本地验证之后就直接发送出更新,这个更新包的内容为12.1.3.0,metric 1,R2收到之后会为这个网络号附加掩码,但是附加之后产生了一个问题,也就是/23掩码覆盖在12.1.3.0上的话,主机位会多出一位,RIP认为,主机位如果不全为0,那么这就是一条主机路由,所以便产生了12.1.3.0/32这条路由,那么解决的方法便是添加secondary地址,掩码为/24,那么就可以纠正错误的路由了

       总结一下,RIPv1会产生四种问题

  1. 发送更新时,本地掩码教研
  2. 收更新时,使用入接口地址覆盖,导致路由错误学习
  3. 本地直连网段覆盖RIP路由
  4. 主机位不为0时,产生主机路由

猜你喜欢

转载自blog.csdn.net/qq_40478570/article/details/83108207