计算机网络:动态路由协议与选路算法

假设距离定义为跳数,走一个路由器就是1个距离,那么如何动态学习到达其他路由器的最短路径?
在这里插入图片描述
学了算法都知道,这种问题就是最短路径问题,动态规划法就可以搞定。计算机网络里叫距离矢量路由算法,和单纯的动态规划还是有很多不同,学习这个算法要脱离出动态规划的思想,不然很容易陷入死结……

距离矢量路由算法(DV算法 distance-Vector)

本质上是邻居之间交换路由信息使用加法更新路由表。

距离向量算法的工作方式是:每个路由器将自己所连的网络结构通告给邻居。
每个路由器根据邻居告诉给自己的路由信息改变自己的路由表。一般的通告都是定期的

例如每15秒通告一次。例如A知道和邻居B的最短距离是2,A会将这个信息告诉A的另一个邻居C,C知道到A的距离为1(它们之间相邻),所以C知道经过A到B的最短距离为3(=1+2)。

每个路由器就是根据这种异步的方式不断收到邻居的路由信息,更新自己的路由信息。当某个路由器的路由信息不再改变时,该路由器就不再将自己的信息通告出去,其路由算法也告一段落。当整个网络的所有路由器的路由信息都不改变时,距离向量路由算法也就全部收敛,也叫路由收敛
在这里插入图片描述

DV算法示例

该网络中的信息如下:
假设每经过一个路由器,它的跳数就增加1
路由器B到网络3和4的跳数都是0,因为不需要经过路由器
在这里插入图片描述
此时邻居A通告路由信息,B更新路由表
在这里插入图片描述
A也可以通告它到网3,
但是从B到A再到网3的跳数是1,B原本记录的0。B发现原有的更小,此条不更新。

在这里插入图片描述
通过互相通告后,一次通告结束,等待下一次的通告

在这里插入图片描述
通告是周期性的,因为防止路由器的结构变化,而其他路由器不知道,发生问题

路由环路问题

路由环路问题就是指数据包在一系列路由器中不断循环往复传输而始终无法达到预期的目的网络的一种现象。

产生的原因一般是:

  • 静态路由配置错误。
  • 动态路由协议因为网络异常学习了错误的路由。

比如根本没有网一的线路,但是第一个路由器认为自己可以通过第二个路由器到网1,第二个路由器认为自己可以通过第一个路由器到网一,不停往复。
在这里插入图片描述

DV算法导致路由环路问题

具体是这样的
首先,在一个已经路由收敛的网络中
在这里插入图片描述
忽然,R3到它的局域网的线路突然断开
在这里插入图片描述
于是R3需要发送这跳路断开的信息给R2更新它的路由表,但是恰好R2正在周期性地告知R3自己的路由信息。
在这里插入图片描述
在这里插入图片描述
R3于是就以为可以通过R2发给10.4.0.0
于是网络就出现了环路

  • R2认为R3可以到达,把包发给R3.
  • R3认为R2可以到达,把包发给R2。

于是就出现了死循环,俗称路由环路。

DV算法导致无穷计数问题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

讨论

无论是路由环路还是无穷计数其根本就是学习了错误的路由

解决方法

  • 方法1:防止无穷计数问题,比如RIP协议设定了最大距离(计数)为16.
    在这里插入图片描述
  • 方法2:防止路由环路,BGP协议设定每条路由都记录所经过的路由器,确保路由器不会学习错误的路由
    在这里插入图片描述
  • 方法3,水平分割:不向某条路由对应的出接口通告该路由信息。
    R2从R3学到了知道到达10.4.0.0的路由,但是不告诉R3,它能到达10.4.0.0.
    在这里插入图片描述

-方法4,路由毒化

路由毒化和水平分割很像。
但是路由毒化是告诉它不可能到达(其实它也许可以到达),水平分割是不告诉它能不能到达。
在这里插入图片描述

至此,DV算法以及它导致的问题和解决方案都通告完毕,欢迎交流。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zeker62

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值