HCNA——距离矢量路由协议RIP的环路问题
为何称为距离矢量
- RTB收到路由,Metric就是距离,下一跳就是方面
RIP-环路:最大跳数
- 当网络发生故障时,RIP网络有可能产生路由环路。
此时RTA 路由表应该存在一条 10.0.0.0/8 下一跳是192.168.1.1 路由条目 此时断开10.0.0.0/8网络的接口 随之RTB就会删除本身它有的10.0.0.0/8 的路由条目
那么此时RTB没有了10.0.0.0/8网络的路由表 那么它还会有吗?
PS:还会有的 因为RTA RTB都开启了RIP 而且刚刚就已经RTB传送10.0.0.0/8路由条目给了RTA 此时 RTA下次工作时就会传送RTB刚刚删除掉的路由条目添加到RTB的路由表里 所以RTB会接收到 10.0.0.0/8 下一跳为 192.168.1.2 的路由条目
那么为什么下一跳是192.168.1.2 呢?
PS:因为此时RTB没有10.0.0/8的路由条目 当10.0.0/8的路由条目是RTA传输过来 所以RTA会是 192.168.1.2
那么问题来了 RTB更新后的10.0.0.0/8 的跳数是 2跳 (RTA到RTB就变成了2跳)当下一次RIP更新时 RTB就会把新的路由表传输给RTA 这样RTA就会更新路由表 同时跳数也会跟着递增 同理 多次更新路由表后 双方的跳数都会递增到16跳 当16跳数时 网络视为不可达
官方解释:
如图所示,RIP网络正常运行时,RTA会通过RTB学习到10.0.0.0/8网络的路由,度量值为1。一旦路由器RTB的直连网络10.0.0.0/8产生故障,RTB会立即检测到该故障,并认为该路由不可达。此时,RTA还没有收到该路由不可达的信息,于是会继续向RTB发送度量值为2的通往10.0.0.0/8的路由信息。RTB会学习此路由信息,认为可以通过RTA到达10.0.0.0/8网络。此后,RTB发送的更新路由表,又会导致RTA路由表的更新,RTA会新增一条度量值为3的10.0.0.0/8网络路由表项,从而形成路由环路。这个过程会持续下去,直到度量值为16。
下面我自己画一个图来理解路由环路
如果有PC1 现在要发送数据包到10.0.0.0/8的网络 那么此时数据包发送到RTA RTA找到路由表进行转发到RTB 此时RTB与10.0.0.0/8网络是不通的 而且RTB更新到的是RTA传输过来的路由表 自然下一跳会指向 192.168.1.2 那RTA又会根据路由表的下一跳把数据包传送给RTB 这样就形成了路由环路 当然数据包在两个路由器之间的转发次数不会是无限的 因为每经过一个路由器 TTL值就会减1 最终数据包就会被丢掉了
PS:这两个例子一个是路由协议的环路 下面这个是数据包的环路哦
RIP-环路:水平分割
- 路由器从某个接口学到的路由,不会从该接口再发回给邻居路由器。
也就是说刚才RTA是从RTB学习到10.0.0.0/8的路由条目 当我们做了水平分割 RTA就不会再给RTB发原来的路由条目
官方解释:
RIP路由协议引入了很多机制来解决环路问题,除了之前介绍的最大跳数,还有水平分割机制。水平分割的原理是,路由器从某个接口学习到的路由,不会再从该接口发出去。也就是说,RTA从RTB学习到的10.0.0.0/8网络的路由不会再从RTA的接收接口重新通告给RTB,由此避免了路由环路的产生。
环路避免-毒性反转
- 毒性反转是指路由器从某个接口学到路由后,将该路由的跳数设置为16,并从原接收接口发回给邻居路由器。
首先10.0.0.0/8网络还是可以通信的时候 RTA RTB的路由表都会更新10.0.0.0/8的路由条目 当10.0.0.0/8的网络故障了呢 RTA RTB会有怎样的操作呢?
PS:首先10.0.0.0/8网络故障 RTB会删除10.0.0.0/8路由表 RTA会经过180s=6x30s 的6个工作周期 才发现RTB没有更新10.0.0.0/8网络的路由条目给RTA RTA此时才会把10.0.0.0/8的路由条目标为不可达 也就是自动设置了跳数等于16跳 再过120s RTA才会删除10.0.0.0/8的路由条目
RTA总共要耗时300s才发现网络不可达 那要怎样才能加快它的收敛呢?
PS:配置毒性反转 也就是当10.0.0.0/8网络故障时 RTB还是会向RTA发送更新路由表 而这路由表的跳数会被设置成16跳 那么RTA接收更新路由表就会视为该网络不可达
官方解释:
RIP的防环机制中还包括毒性反转,毒性反转机制的实现可以使错误路由立即超时。配置了毒性反转之后,RIP从某个接口学习到路由之后,发回给邻居路由器时会将该路由的跳数设置为16。利用这种方式,可以清除对方路由表中的无用路由。本示例中,RTB向RTA通告了度量值为1的10.0.0.0/8路由,RTA在通告给RTB时将该路由度量值设为16。如果10.0.0.0/8网络发生故障,RTB便不会认为可以通过RTA到达10.0.0.0/8网络,因此就可以避免路由环路的产生。
环路避免-触发更新
- 触发更新是指当路由信息发生变化时,立即向邻居设备发送触发更新报文。
RTA RTB每三十秒会更新路由 当更新后第10秒 10.0.0.0/8网络故障了 那么还得等20秒后再次更新 那怎么去做当网络故障时立刻传送最新路由表呢?
PS:进行配置触发更新 网络故障时会立刻传送新的路由表 还有注意的时 原本的30秒更新还是不变的 这里只是多了网络故障立刻传送新的路由表而已 还有就是每台路由器有它自己的计时器 每台路由器的30秒更新都是不同的
官方解释:
缺省情况下,一台RIP路由器每30秒会发送一次路由表更新给邻居路由器。
当本地路由信息发生变化时,触发更新功能允许路由器立即发送触发更新报文给邻居路由器,来通知路由信息更新,而不需要等待更新定时器超时,从而加速了网络收敛。
水平分割&毒性反转
PS:水平分割和毒性反转虽然都是开启的 但只有毒性反转是生效的
总结
- 掌握RIP避免环路的基本工作原理
- 掌握RIP配置避免环路