以下内容摘自刚刚上市,已被纳入全国高校教材系统,并在全国热销、好评如潮的《深入理解计算机网络》新书。

7.5.3  距离矢量路由算法

现代计算机网络通常使用动态路由算法,因为这类算法能够适应网络的拓扑和流量变化,其中最流行的两种动态路由算法是“距离矢量路由算法”和“链路状态路由算法”。

距离矢量路由算法(Distance Vector Routing,DV)是ARPANET网络上最早使用的路由算法,也称Bellman-Ford路由算法和Ford-Fulkerson算法,主要在RIP(Route Information Protocol)协议中使用。Cisco的IGRP和EIGRP路由协议也是采用DV这种路由算法的。

“距离矢量路由算法”的基本思想如下:每个路由器维护一个距离矢量(通常是以延时是作变量的)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新。每个距离矢量表项包括两部分:到达目的结点的最佳输出线路,和到达目的结点所需时间或距离,通信子网中的其它每个路由器在表中占据一个表项,并作为该表项的索引。每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。这样以此类推,经过一段时间后便可将网络中各路由器所获得的距离矢量信息在各路由器上统一起来,这样各路由器只需要查看这个距离矢量表就可以为不同来源分组找到一条最佳的路由。

现假定用延时作为距离的度量,举一个简单的例子,如图7-37所示。假设某个时候路由器Y收到其邻居路由器X的距离矢量,其中m是Y估计到达路由器X的延时。若Y路由器知道它到邻居Z的延时为n,那么它可以得知Z通过Y到达X需要花费时间m+n。如果Z路由器还有其他相邻路由器,则对于从其他每个邻居那儿收到的距离矢量,该路由器执行同样的计算,最后从中选择费时最小的路由作为Z去往X的最佳路由,然后更新其路由表,并通告给其邻居路由器。

图7-37  距离矢量路由算法简单实例

现以一个如图7-38所示的示例介绍距离矢量算法中的路由的确定流程,各段链路的延时均已在图中标注。A、B、C、D、E代表五个路由器,假设路由表的传递方向为:A → B → C → D → E(这与路由器启动的先后次序有关)。下面具体的流程。

(1)初始状态下,各路由器都只收集直接相连的链路的延时信息,各路由器结点得出各自的初始矢量表如图7-39所示。因为各结点间还没有交换路由信息,所以它们的初始状态的路由表也如它们的矢量表。 

图7-38 距离矢量算法路由确定示例

图7-39 初始状态下各结点的矢量表

(2) 现在路由器A把它的路由表发给路由器B。此时它会综合从A路由器发来的路由表和它自己的初始路由表,更新为一个新的矢量表,如图7-40左图所示(最终的矢量表如图中深颜色部分)。从图中可以看出,从B结点到达E结点此时存在两条路径,一条是直达的,一条是通过A结点到达的。而且这两条线的开销不同,经过A结点到达E结点的开销(7)比直达线路的开销(8)更低,所以最终在形成的路由表中,把到达E结点的线路改为经由A结点这条线路,如图7-40右图所示。

图7-40  B结点新的矢量表和路由表

(3)B再把最终形成的路由表发给路由器C。同样,路由器C也要把它原来的初始路由表与从B路由器发来的路由表进行综合,形成新的矢量表,如图7-41左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的B和D结点间的矢量外,还新收集了到达A和E结点的矢量信息。因为C结点没有与A和E结点的直接连接,在初始路由表中并没有到达这两个结点的路由信息,所以现在只有采用从B路由器发来的路由表中,经过B结点到达A、E结点的路径。

这里要注意一点,因为在B结点路由表中就已识别了直接通过B结点到达E结点的开销(8)还比依次通过B、A结点到达E结点的开销(7)大,所以在C结点路由表中是采用依次通过B、A结点到达E结点这条路径。最终形成的路由表如图7-41右图所示。

图7-41  C结点新的矢量表和路由表

(4)路由器 C再把它的最终路由表发给路由器D。同样,路由器D也要把它原来的初始路由表与从C路由器发来的路由表进行综合,形成新的矢量表,如图7-42左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的C和E结点间的矢量信息外,还新收集了到达A和B结点的矢量信息。因为D结点没有与A和B结点的直接连接,所以在其最初的路由表中并没有到达这两个结点的矢量信息,此时仍采用经过C结点到达A和B结点的路径。

在这里同样要注意一点,从D结点到达E结点也有两条路径:一是直接到达,二是依次通过C、B、A结点到达,经过比较发现直接连接到达的开销(2)要比通过C、B、A结点到达E结点路径的开销(10)要小,所以在D结点中,到达E结点是采用直接连接这条线路。最终形成的路由表如图7-42右图所示。

(5)路由器 D再把它的最终路由表发给路由器E。同样,路由器E也要把它原来的初始路由表与从D路由器发来的路由表进行综合,形成新的矢量表,如图7-43左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的A、B和D结点间的矢量外,还新收集了到达C结点的矢量信息,因为E结点没有与C结点的直接连接。此时仍采用经过D结点到达C结点的路径。

 

图7-42  D结点新的矢量表和路由表

在这里有两个要注意的地方:一是从E结点到达A结点的路径问题,因为此时E结点与A结点是直接连接的,而且其开销(1)要比原来从D路由口器发来的路由表中提供的通过D、C、B结点到达A结点路径开销(11)要小,所以在最终的E结点路由表中,到达A结点是采用直接连接这条线路。二是E结点虽然也是与B结点直接连接,但它的开销(8)还要比原来从D路由器发来的路由表中提供的依次经过D、C这两个结点到达B结点的开销(5)大,所以在最终的E结点路由表中,到达B结点是采用依次经过D、C两个结点这条路径。最终形成的路由表如图7-43右图所示。

 

图7-43  E结点新的矢量表和路由表

通过以上步骤,网络中各路由器就完整了整个路由表的确定,当然在拓扑结构发生变化时,各路由器的路由表又会发生变化,重新进行更新。

示例演示“距离矢量路由算法”工作原理相关推荐

  1. 计算机网络矢量算法三个更新原则,距离矢量路由算法

    本文概述 距离矢量算法是迭代的, 异步的和分布式的.分布式的:分布式的是, 每个节点都从一个或多个直接连接的邻居接收信息, 执行计算, 然后将结果分发回其邻居.迭代:迭代的过程一直持续到邻居之间没有更 ...

  2. 距离矢量路由算法_简单聊聊路由协议

    帅天今天难得一次写两篇文章,希望兄弟们给点力,点个赞.码字不易啊. 这篇文章简单的聊聊路由协议,注意这里是简单,路由协议太复杂,了解一下即可. 我们在大学里面学习计算机网络与数据结构的时候,知道求最短 ...

  3. 距离矢量路由算法_计算机网络自学笔记:选路算法

    网络层必须确定从发送方到接收方分组所经过的路径.选路就是在网络中的路由器里的给某个数据报确定好路径(即路由). 一台主机通常直接与一台路由器相连接,该路由器即为该主机的默认路由器,又称为该主机的默认网 ...

  4. 距离矢量路由算法的java代码_八大排序算法比较(附Java代码)

    冒泡排序 /*** 冒泡排序 比较好理解* 两两相比 较大的放后面* 时间复杂度O(n^2)*//*** 改进前的冒泡排序算法进行100,000数据排序运行时间为:3829ms* 优化后的冒泡排序算法 ...

  5. 路由信息协议工作原理

    路由建立 路由器运行RIP后,会首先发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应:网络稳定后,路由器会周期性发送路由更新信息. 距离矢量的计算 RIP度量的单位是跳数,其单位是1, ...

  6. 4.2.1 路由算法与路由协议概述(静态路由和动态路由---距离-向量路由算法---链路状态路由算法、层次路由)

    文章目录 0.思维导图 1.路由算法分类与路由表 2.静态路由和动态路由 3.动态路由的两种算法:链路状态路由算法和距离向量路由算法 4.层次路由 0.思维导图 1.路由算法分类与路由表 路由器转发分 ...

  7. 网站排名算法——Reddit 排名算法工作原理

    Reddit是个社交新闻站点,其口号是"提前于新闻发生,来自互联网的声音".用户(也叫redditors)能够浏览并且可以提交互联网上内容的链接或发布自己的原创帖子.其他的用户可对 ...

  8. css3宽度变大动画_动画演示14种流量计的工作原理,真涨见识!

    点上面蓝色字体直观学机械可长期订阅我们 法律顾问:赵建英律师 流量计(Flowmeter)是工业生产的眼睛,与国民经济.国防建设.科学研究有着密切的关系,在国民经济中占据重要地位与作用,可用于气体.液 ...

  9. 计算机网络的工作原理演示动画,动画演示14种流量计的工作原理

    流量计(Flowmeter)是工业生产的眼睛,与国民经济.国防建设.科学研究有着密切的关系,在国民经济中占据重要地位与作用,可用于气体.液体.蒸汽等介质流量的测量.为了更好的展示流量计测量原理,小编采 ...

最新文章

  1. 20、HTML <textarea>标签(文本域)
  2. 【知识图谱】知识融合
  3. 【Notes8】Linux开发环境,Linux命令,vi命令,/正则,Hash,iNode,文件查找与读取,Linux开机自启动
  4. 词性标注与命名实体识别
  5. Multiple Origin composition test - Opportunity Creation case
  6. Git由浅入深之分支管理
  7. 数据同步框架MS Sync Framework-不同场景使用例子和简要分析
  8. Python项目实践:国家财政数据趋势演算
  9. 引领全球增长的60大技术:机会、增长、投资、洞察
  10. BZOJ2337:[HNOI2011]XOR和路径——题解
  11. Java 关于类型类、this.getClass()的理解
  12. 风火速打印小程序分析
  13. 实战 Flutter 象棋从零到上架
  14. 数据结构:树(Tree)【详解】
  15. 系统分析师——论文篇(三)
  16. IP转换器 V2.6
  17. 计算机自动隐藏桌面图标,Windows 8.1 右下角图标莫名自动隐藏
  18. 电商-支付相关表的表设计
  19. python有颜色进度条库_来看看Python炫酷的颜色输出与进度条打印
  20. 为大家推荐几个不错的公众号!

热门文章

  1. 百度快速收录服务价格多少钱
  2. wep加密破解原理简述 实战
  3. Voting_Averaging算法预测银行客户流失率
  4. 计算机组成原理——第三章存储系统(上)
  5. 第6节、如何解决failed to push some refs to git
  6. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接
  7. test---test
  8. 成都python培训收费
  9. c++算法--区间dp
  10. UniApp H5 跨域代理配置并使用(配置manifest.json、vue.config.js)