距离矢量路由 (DVR)协议要求路由器定期通知其邻居拓扑更改。历史上称为旧的 ARPANET 路由算法(或称为 Bellman-Ford 算法)。
Bellman Ford Basics –每个路由器都维护一个距离向量表,其中包含它自己和所有可能的目标节点之间的距离。距离,基于选定的度量,使用来自邻居的距离向量的信息计算。
Information kept by DV router -
- 每个路由器都有一个ID
- 与连接到路由器的每条链路相关的链路成本(静态或动态)。
- 中间啤酒花
距离向量表初始化 –
- 到自身的距离 = 0
- 与所有其他路由器的距离 = 无穷大。
距离向量算法 –
- 路由器在路由数据包中将其距离向量传输到其每个邻居。
- 每个路由器从其每个邻居接收并保存最近接收到的距离向量。
- 路由器在以下情况下重新计算其距离向量:
- 它从包含与以前不同的信息的邻居那里接收距离向量。
- 它发现与邻居的链接已断开。
DV 计算基于最小化每个目的地的成本
Dx(y) = Estimate of least cost from x to y
C(x,v) = Node x knows cost to each neighbor v
Dx = [Dx(y): y ∈ N ] = Node x maintains distance vector
Node x also maintains its neighbors' distance vectors
– For each neighbor v, x maintains Dv = [Dv(y): y ∈ N ]
笔记 –
- 不时地,每个节点都会向邻居发送自己的距离向量估计。
- 当节点 x 从任何邻居 v 接收到新的 DV 估计时,它保存 v 的距离向量并使用 BF 方程更新自己的 DV:
Dx(y) = min { C(x,v) + Dv(y), Dx(y) } for each node y ∈ N
示例 –考虑如图所示的 3 个路由器 X、Y 和 Z。每个路由器都有自己的路由表。每个路由表将包含到目的节点的距离。
考虑路由器 X,X 将其路由表共享给邻居,邻居将其路由表共享给 X,节点 X 到目的地的距离将使用 bellmenford 方程计算。
Dx(y) = min { C(x,v) + Dv(y)} for each node y ∈ N
正如我们所看到的,当 Y 是中间节点(跳)时,从 X 到 Z 的距离会更小,因此它将在路由表 X 中更新。
同样对于 Z 也 –
最后是所有的路由表——
距离矢量路由的优点 –
- 配置和维护比链路状态路由更简单。
距离矢量路由的缺点 –
- 收敛速度比链接状态慢。
- 它面临从计数到无穷大问题的风险。
- 由于跳数变化必须传播到所有路由器并在每个路由器上处理,因此它创建的流量比链路状态更多。即使网络拓扑没有变化,跳数更新也会定期进行,因此仍然会发生浪费带宽的广播。
- 对于较大的网络,距离矢量路由会产生比链路状态更大的路由表,因为每个路由器都必须了解所有其他路由器。这也可能导致 WAN 链接拥塞。
注 –距离矢量路由使用 UDP(用户数据报协议)进行传输。
GATE CS 角问题
练习以下问题将帮助您测试您的知识。所有问题都在前几年的 GATE 或 GATE 模拟测试中提出。强烈建议您练习它们。
- GATE CS 2011,问题 52
- GATE CS 2011,问题 53
- GATE CS 2010,问题 54
- GATE CS 2010,问题 55
- GATE IT 2005,问题 28
- GATE CS 2014(第 1 组),问题 33
- GATE IT 2008,问题 65
- GATE CS 2014(第 2 组),问题 65
参考 –
距离矢量路由 – 维基百科
www.eecs.yorku.ca