距离向量路由中的无穷大计数问题17 Mar 2025 | 4 分钟阅读 由于 Bellman-Ford 算法无法防止路由环路,因此距离向量路由(DVR)协议的基本问题是路由环路。无限计数问题就是由 DVR 网络中的这种路由环路引起的。当两个路由器同时发送更新或接口关闭时,路由环路经常发生。 无限计数距离向量路由的一个缺点是,成本增加(坏消息)传播缓慢,而成本降低(好消息)传播迅速。距离向量路由需要一些时间才能让所有其他路由器意识到连接中断(成本变为无穷大),而这是路由协议正常运行所必需的。这个问题被称为无限计数。一条损坏链路的成本可能不会在多个更新传递之前就被所有路由器记录为无穷大。 两节点环路两节点环路问题是无限计数的一个例子。让我们通过图中的案例来更好地理解这个问题。 
 - 图中描绘了一个三节点的系统。为了便于讨论,只显示了转发表中的必要条目。节点 A 和 B 最初都可以连接到节点 X。然而,A 和 X 之间的连接突然中断。节点 A 的表发生了变化。如果 A 能够快速将其表发送给 B,一切都会好起来。如果 B 在等待 A 发送其转发表之前,首先将自己的转发表发送给 A,那么系统就会变得不稳定。

 - 当节点 A 收到更新时,如果 B 已经成功连接到 X,它会立即更新其转发表。A 刚刚更新了 B 并向其发送了新的消息。现在 B 更新了其转发表,因为它认为 A 周围发生了一些变化。到达 X 的成本会逐渐增加,直到它接近无穷大。A 和 B 都知道此时无法到达 X。然而,系统目前是不稳定的。
 - 节点 A 认为节点 B 是通往 X 的路径,而节点 B 认为节点 A 是通往 X 的路径。当 A 收到一个发送给 X 的数据包时,数据包会先发送到 B,然后再返回 A。同样,如果 B 收到一个发送给 X 的数据包,它会发送到 A,然后再返回 B。数据包在 A 和 B 之间来回传递,导致了两节点环路问题。针对这种不稳定的情况,已经提出了一些解决方案。
以下是无限计数问题解决方案的答案: - 水平分割
水平分割是一种解决不稳定的方法。在这种技术中,每个节点通过每个接口发送其表的一部分,而不是通过所有接口广播整个表。如果节点 B 认为通往 X 的最佳路径是通过节点 A,那么节点 B 就无需将此信息告知节点 A,因为此信息已经由节点 A 提供(A 已经知道)。 从节点 A 接收数据、修改数据然后将其发送回节点 A 会导致混淆。在我们上面的例子中,节点 B 在将其转发表发送给节点 A 之前会截断表的末尾。在这种情况下,节点 A 会将到 X 的距离保持为无穷大。稍后,当节点 A 将其转发表发送给节点 B 时,节点 B 也会对自己的转发表进行类似的修改。在初始更新之后,系统将变得稳定,因为节点 A 和 B 都知道 X 无法到达。 - 毒性逆向
水平分割方法有一个缺点。如果在一定时间内没有关于某个路由的消息,相应的协议通常会使用一个计时器,并指示节点从其表中删除该路由。在前面的例子中,节点 A 无法确定节点 B 决定从其广告中删除到 X 的路由是由于水平分割技术(信息来自 A)还是因为 B 最近没有收到关于 X 的消息。 在 **毒性逆向技术** 中,B 仍然可以为 X 提供一个值,但如果信息来自 A,则可以将距离替换为无穷大作为警告:“*不要使用此值;你是我关于此路由的知识来源。*”
注意:通过水平分割和毒性逆向,可以防止两节点不稳定。但是,如果出现三节点之间的不稳定,则无法保证稳定。三节点之间的不稳定被称为三节点不稳定。
|