示例演示“距离矢量路由算法”工作原理
- 格式:pdf
- 大小:1.10 MB
- 文档页数:5
计算机网络原理距离矢量路由距离矢量路由选择(Distance Vector Routing)算法是通过每个路由器维护一张表(即一个矢量)来实现的,该表中列出了到达每一个目标地的可知的最短路径及所经过的线路,这些信息通过相邻路由器间交换信息来更新完成。
我们称这张表为路由表,表中按进入子网的节点索引,每个表项包含两个部分,到达目的地最优路径所使用的出线及一个估计的距离或时间,所使用的度量可能是站段数,时间延迟,沿着路径的排队报数或其他。
距离矢量路由选择算法有时候也称为分布式Bellman-Ford路由选择算法和Ford-Fulkerson算法,它们都是根据其开发者的名字来命名的(Bellman,1957;Ford and Fulkerson,1962)。
它最初用于ARPANET路由选择算法,还用于Internet和早期版本的DECnet 和Novell的IPX中,其名字为RIP。
AppleTalk t Cisco路由器使用了改进型的距离矢量协议。
在距离矢量路由选择算法中,每个路由器维护了一张子网中每一个以其他路由器为索引的路由选择表,并且每个路由器对应一个表项。
该表项包含两部分:为了到达该目标路由器而首选使用的输出线路,以及到达该目标路由器的时间估计值或者距离估计值。
所使用的度量可能是站点数,或者是以毫秒计算的延迟,或者是沿着该路径排队的分组数目,或者其他类似的值。
假设路由器知道它到每个相邻路由器的“距离”。
如果所用的度量为站点,那么该距离就为一个站点。
如果所用的度量为队列长度,那么路由器只需检查每一个队列即可。
如果度量值为延迟,则路由器可以直接发送一个特殊的“响应”(ECHO)分组来测出延时,接收者只对它加上时间标记后就尽快送回。
距离矢量路由协议和链路状态路由协议距离矢量路由协议和链路状态路由协议是计算机网络中常见的两种路由协议。
它们分别通过不同的方式来确定网络中数据包的最佳传输路径。
本文将对这两种路由协议进行深入探讨,从协议原理、工作方式、优缺点等几个方面进行比较分析,以便读者更好地理解两种路由协议的异同之处。
一、距离矢量路由协议距离矢量路由协议(Distance Vector Routing Protocol)是一种基于距离度量的路由选择协议,它根据每条路径的距离(即跳数或者成本)来确定最佳路径。
常见的距离矢量路由协议有RIP(Routing Information Protocol)和IGRP(Interior Gateway Routing Protocol)等。
1.1原理距离矢量路由协议的原理比较简单,每个路由器会周期性地向它的邻居路由器发送路由更新信息,包括自己所知道的所有网络地址及到达这些地址的距离。
邻居路由器收到这些更新信息后,会根据这些信息更新自己的路由表。
如果某个路由器的路由表发生变化,它就会通知它的邻居路由器。
通过这种方式,路由表信息会在整个网络中传播,直到所有路由器的路由表都收敛到最优状态。
1.2工作方式距离矢量路由协议的工作方式是分散式的,每个路由器只知道它直接相连的邻居路由器的路由信息,并且根据这些信息来计算到达其他网络的最佳路径。
因此,距离矢量路由协议的路由表只包含了直接相连的邻居路由器的信息,而不包含整个网络的拓扑结构信息。
1.3优缺点距离矢量路由协议的优点是实现比较简单,对网络带宽和处理器资源的需求较低。
但是它也存在很多缺点,比如收敛速度慢、不适合大型网络、易受环路影响等。
二、链路状态路由协议链路状态路由协议(Link State Routing Protocol)是另一种常见的路由选择协议,它根据网络中每个路由器的链路状态信息来计算最佳路径。
常见的链路状态路由协议有OSPF(Open Shortest PathFirst)和IS-IS(Intermediate System to Intermediate System)等。
距离矢量路由算法(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所示。
距离矢量路由算法原理实验【实验目的】1、要求实验者利用路由选择算法模拟软件提供的通信功能,模拟距离矢量路由选择算法的初始化、路由信息扩散过程和路由计算方法;2、掌握距离矢量算法的路由信息扩散过程;3、掌握距离矢量算法的路由计算方法。
【预备知识】1、路由选择算法的特征、分类和最优化原则2、路由表的内容、用途和用法3、距离矢量算法的基本原理【实验环境】1、分组实验,每组4~10人。
2、拓扑:虚线表示节点之间的逻辑关系,构成一个逻辑上的网状拓扑结构。
3、设备:小组中每人一台计算机。
4、实验软件:路由选择算法模拟软件(routing.exe )【实验原理】路由选择算法模拟软件根据给定的拓扑结构,为实验者提供基本的本地路由信息,并能发送和接收实验者所组织的路由信息,帮助实验者完成路由选择算法的路由信息扩散过程、路由计算过程和路由测试过程。
1、模拟软件的功能(图2-1)● 在局域网内根据小组名称和成员数量建立一个模拟网络拓扑结构,每个成员模拟拓扑中的一台路由器,路由器上的本地路由信息由实验软件提供。
● 向实验者指定的发送对象发送实验者自行组织的发送内容。
● 提示实验者有数据需要接收,并显示接收内容。
N路由节点2 路由节点N-1 N = 4 ~ 10●为实验者提供记录路由计算结果的窗口——路由表窗口。
●为实验者提供分组逐站转发方法来验证路由选择的结果。
图2-1 路由选择算法模拟软件主界面2、模拟软件的使用方法1)建立小组通过建立小组,每个小组成员可以获得本节点的编号和本地直连链路信息。
a)4~10人一组,在实验前自由组合形成小组。
小组人数尽量多些,每人使用一台计算机。
启动实验软件后点击“建立小组”按钮。
(图2-2)图2-2 选择建立小组b)在建立小组的窗口内填入小组名称和成员数量。
同一小组成员必须填写同样的小组名称和成员数量才能正确建立小组。
(图2-3)图2-3 建立小组窗口图2-4 小组建立过程c)点击“加入”按钮后,实验软件以广播形式将组名广播出去。
距离矢量路由协议中路由环路问题的解决方法概括来讲,主要分为六种:1.定义最大值;2.水平分割技术;3.路由中毒;4.反向路由中毒;5.控制更新时间;6.触发更新。
下面我们就来一一讲解各种解决方法的实现原理:1.定义最大值:距离矢量路由算法可以通过IP头中的生存时间(TTL)来纠错,但路由环路问题可能首先要求无穷计数。
为了避免这个延时问题,距离矢量协议定义了一个最大值,这个数字是指最大的度量值(如rip协议最大值为16),比如跳数。
也就是说,路由更新信息可以向不可到达的网络的路由中的路由器发送15次,一旦达到最大值16,就视为网络不可到达,存在故障,将不再接受来自访问该网络的任何路由更新信息。
2.水平分割:一种消除路由环路并加快网络收敛的方法是通过叫做“水平分割”的技术实现的。
其规则就是不向原始路由更新的方向再次发送路由更新信息(个人理解为单向更新,单向反馈)。
比如有三台路由器ABC,B向C学习到访问网络10.4.0.0的路径以后,不再向C声明自己可以通过C访问10.4.0.0网络的路径信息,A向B学习到访问10.4.0.0网络路径信息后,也不再向B声明,而一旦网络10.4.0.0发生故障无法访问,C会向A和B发送该网络不可达到的路由更新信息,但不会再学习A和B发送的能够到达10.4.0.0的错误信息。
3.路由中毒(也称为路由毒化):定义最大值在一定程度上解决了路由环路问题,但并不彻底,可以看到,在达到最大值之前,路由环路还是存在的。
为此,路由中毒就可以彻底解决这个问题。
其原理是这样的:假设有三台路由器ABC,当网络10.4.0.0出现故障无法访问的时候,路由器C便向邻居路由发送相关路由更新信息,并将其度量值标为无穷大,告诉它们网络10.4.0.0不可到达,路由器B收到毒化消息后将该链路路由表项标记为无穷大,表示该路径已经失效,并向邻居A路由器通告,依次毒化各个路由器,告诉邻居10.4.0.0这个网络已经失效,不再接收更新信息,从而避免了路由环路。
计算机网络实验报告距离矢量路由算法一,实验内容:A D设计一个算法,实现上面拓扑图的各个结点之间路由表的交换,要求显示出结点路由表的交换过程并显示每次交换结束后的各个结点保存的路由表的内容。
最后显示交换了几次后各个结点路由表开始变得稳定。
二,算法设计:首先创建一个类。
它有两个成员变量。
一个是二维数组型的x[i][j]用来存放从加点i到结点j的距离,一个是一位数组型的y[i]用来存放从源结点到目标结点i的路径上的第一个途经的结点。
然后为每一个结点实例化一个对象用来存放此节点的路由表。
初始化各个节点的路由表,如果两个节点之间有连线则将其之间的距离赋给x[i][j],y[j]=j.如果没有直接路径则设x[i][j]=1000,y[j]=0.算法开始的时候各个结点交换路由表。
比较如果有类似x[i][j]和x[j][k]的项则设置x[i][k]=MIN(x[i][k],x[i][j]+x[j][k]),为了在结点A的邻居节点执行距离矢量路由更新时,它使用的是A的旧表,可以再设置两个二维数组用来暂时存放各个节点的新路由表,待各个节点一次交换都完毕后在把暂存的新节点依次赋给各个节点的路由表。
各个节点都执行此操作,为了确定供交换了几次可以设置一个标质量k.初始k=0,交换一次K就加一,最后k的值便是交换的次数。
三,遇到的问题及解决方案:刚开始遇到这个题目是觉得无从下手,觉得这个图这么复杂函数循环又没有规律怎样让各个节点依次交换呢,又怎样判断什么时候各个节点的路由表变稳定呢?着一些列的问题使自己变得很烦躁。
待到心情平静下来认真的一点一点推敲的时候发现只有七个节点,为每个节点设置一个交换函数也不麻烦而且这样思路便变得非常的清楚,至于怎样知道何时路由表稳定则我在每个结点函数中设置了一个标志量,在主函数中将其初始化为零,在下面的结点函数中都将其变成1,这样只有调用子函数这个标志量便会变成1,检测标质量是否为1来判断路由表是否变的稳定。
实验二十距离矢量算法计算过程分析【实验目的】1. 通过分析距离矢量算法的计算过程,理解距离矢量路由协议的工作原理。
【实验学时】2学时【实验环境】在本实验中需要4台路由、1台交换机、1台RG-PATS网络协议分析仪。
四台路由器运行RIP路由协议,使用协议分析仪采集数据包,对采集到的数据进行分析。
将所有的路由器都接入到交换机上,并在交换机上配置端口映像功能,具体IP分配如下表:表6-2 设备IP地址分配表设备接口IP地址连接到交换机192.168.1.1/24FA0/8 RSR-A FA0/0RSR-A LO0 192.168.10.1/24 --FA0/6 RSR-A FA0/1192.168.3.1/24RSR-B FA0/0 192.168.1.2/24 FA0/9RSR-B FA0/1FA0/10192.168.2.1/24-- RSR-B LO0192.168.20.1/24RSR-C FA0/0 192.168.2.2/24 FA0/7192.168.30.1/24-- RSR-C LO0RSR-D FA0/0 192.168.3.2/24 FA0/6192.168.400.1/24-- RSR-D LO0RG-PATS网络协议分析Eth 0 172.16.1.4 FA0/24仪设备连接如下图所示:249图6-43 实验拓扑图【实验内容】1、使用协议分析仪采集网络中的RIP选路数据包,分析距离矢量算法的计算过程。
【实验流程】图 6-44 实验流程图【实验原理】距离矢量算法是以R.EBellman、L.R.Ford和D.R.Fulkerson所做的工作为基础的,由于这个原因,所以有时距离矢量算法又称为Bellman-Ford或Ford-Fulkerson算法。
250在所有的动态路由协议中,最简单的就是距离矢量路由协议(D-V)。
它使用的是最简单的距离矢量(Distance-Vector,简称D-V)路由算法。
04 距离矢量路由协议4.1 距离矢量路由协议简介4.1.1 距离矢量路由协议1、距离矢量路由协议包括RIP、IGRP 和EIGRP。
1)RIPRIP(路由信息协议)最初在RFC 1058 中定义。
主要有以下特点:使用跳数作为选择路径的度量。
如果某网络的跳数超过15,RIP 便无法提供到达该网络的路由。
默认情况下,每30 秒通过广播或组播发送一次路由更新。
2)IGRPIGRP(内部网关路由协议)是由Cisco 开发的专有协议。
IGRP 的主要设计特点如下:使用基于带宽、延迟、负载和可靠性的复合度量。
默认情况下,每90 秒通过广播发送一次路由更新。
IGRP 是EIGRP 的前身,现在已不再使用。
3)EIGRPEIGRP(增强型IGRP)是Cisco 专用的距离矢量路由协议。
EIGRP 主要具有以下特点:能够执行不等价(且按比例)负载均衡。
使用扩散更新算法(DUAL) 计算最短路径。
不需要像RIP 和IGRP 一样进行定期更新。
只有当拓扑结构发生变化时才会发送路由更新。
4.1.2距离矢量技术1、距离矢量的含义:距离矢量意味着用距离和方向矢量来通告路由。
距离使用诸如跳数这样的度量确定,而方向则是下一跳路由器或送出接口。
2、使用距离矢量路由协议的路由器并不了解到达目的网络的整条路径。
该路由器只知道:●应该往哪个方向或使用哪个接口转发数据包●自身与目的网络之间的距离距离矢量路由协议的路由的获取都是基于从邻居处得到的,所以距离矢量路由协议也被称为传闻路由。
3、距离矢量路由协议的工作方式:1)按照一定的时间间隔发送定期(周期性)更新(Periodic Updates)(RIP 的间隔为30 秒,IGRP 的间隔为90 秒,EIGRP不作定期更新)。
2)使用距离矢量路由的路由器不了解网络拓扑结构。
3)(RIP、IGRP)定期向所有邻居发送整个路由表更新。
EIGRP触发更新变化信息。
4.1.3路由协议算法1、用于路由协议的算法定义了以下过程:1)发送和接收路由信息的机制。
计算机网络中的链路状态路由与距离向量路由链路状态路由与距离向量路由是计算机网络中常见的两种路由算法,它们分别基于不同的原理和思路,各自具有特点和优劣势。
本文将分别对两种路由算法进行介绍和比较,以帮助读者更好地理解它们的工作原理和应用场景。
一、链路状态路由链路状态路由(Link State Routing)是一种基于全局视图的路由算法,它通过收集整个网络中的链路状态信息,并计算出到达目的地最佳路径。
链路状态路由的核心思想是每台路由器将自身的链路状态信息发送给其它所有路由器,然后利用这些信息计算出最优的路径并更新路由表。
1、工作原理链路状态路由的工作原理大致可分为以下几个步骤:(1)链路状态信息收集:每台路由器通过发送链路状态信息,包括自身的IP地址、与相邻路由器的链路状态等,向整个网络广播自己的状态信息。
(2)链路状态信息处理:接收到链路状态信息的路由器将其保存在链路状态数据库中,并根据这些信息计算出到达目的地最佳路径。
(3)路径计算:路由器利用链路状态数据库中的信息,通过Dijkstra算法等计算出到达目的地的最优路径。
(4)更新路由表:路由器根据计算出的最优路径更新自身的路由表。
2、应用场景链路状态路由适用于网络规模较大、拓扑结构较为复杂的场景,例如大型企业内部网络、互联网等。
由于链路状态路由能够实时更新路由表并计算出最佳路径,因此在大规模网络中具有较高的效率和可靠性。
3、优劣势链路状态路由的优势在于能够实现全局最优的路径选择,保证了网络的高效性和稳定性。
但是,链路状态路由需要耗费大量的带宽和计算资源来处理链路状态信息,而且在网络规模较小的情况下可能造成不必要的开销。
二、距离向量路由距离向量路由(Distance Vector Routing)是一种基于局部信息的路由算法,它通过维护路由表中到达目的地的距禙向量信息,来选择到达目的地的最佳路径。
距离向量路由的核心思想是每台路由器周期性地向邻居路由器发送自己的路由表,然后根据邻居路由器的路由表信息,更新自身的路由表。
路由算法距离矢量路由算法的具体实现距离矢量路由算法的原理距离向量路由算法(Bellman-Ford Routing Algorithm),作为距离向量协议的一个算法,如RIP, (RIP 跳最大跳数16)BGP。
使用这个算法的路由器必须掌握这个距离表,它告诉在网络中每个节点的最远和最近距离。
在距离表中的这个信息是根据临近接点信息的改变而时时更新的。
这个在算法中的度量公式是跳跃的次数,等待时间,流出数据包的数量等等。
概括地说,距离向量算法要求每一个路由器把它的整个路由表发送给与它直接连接的其它路由器。
路由表中的每一条记录都包括目标逻辑地址、相应的网络接口和该条路由的向量距离。
当一个路由器从它的相邻处收到更新信息时,它会将更新信息与本身的路由表相比较。
如果该路由器比较出一条新路由或是找到一条比当前路由更好的路由时,它会对路由表进行更新:将从该路由器到邻居之间的向量距离与更新信息中的向量距离相加作为新路由的向量距离。
在距离向量路由算法中,相邻路由器之间周期性地相互交换各自的路由表备份。
当网络拓扑结构发生变化时,路由器之间也将及时地相互通知有关变更信息。
距离矢量路由算法在理论中可以工作,但在实践中有一个严重的缺陷:虽然它总是能够达到正确的答案,但是它收敛到正确答案的速度非常慢,尤其是,它对于好消息的反应非常快,但是对于坏消息的反应非常迟缓。
程序源代码(c语言)#include "stdio.h"#include "stdlib.h" //atoi的头文件//#include "alloc.h"#define ROUTNUM 7 //定义路由的个数为7个typedef struct{int dis; //存延迟大小int from; //存下一跳的路由}RoutNode;RoutNode data[ROUTNUM][ROUTNUM]; /*路由表,能存7行7列数据,数据为权值*/void InitData(FILE* pfile); /*从数据文件读取数据,初始化路由表*/void OutputRoutData(); /*输出所有的路由表*/void Communication(int recv, int send);/*send点向recv点发送自己的路由表*/void Exchange(); /*所有节点进行一次数据交换, 更新路由表*/void main(){int start, end, i, j;FILE *pfile;pfile = fopen("1.txt", "r");if (pfile == NULL){printf("文件打开错误,按任意键退出.\n");getch();return;}elseprintf("\n路由表初始:\n");InitData(pfile);fclose(pfile);for (i = 0; i<ROUTNUM; i++){printf("%c||", i + 65);for (j = 0; j < ROUTNUM; j++)if (data[i][j].dis > 0)printf("<%c %d> ", j + 65, data[i][j].dis);printf("\n");} //显示各路由的路由表for (i = 0; i < ROUTNUM; i++) //循环7次(好像多余,改成一次得到同样结果){Exchange();}printf("\n路由表交换:\n");OutputRoutData();printf("输入起始路由节点数字(%d-%d)[0代表A,1代表B...] : ", 0, ROUTNUM - 1); scanf("%d", &start);printf("输入终点路由节点数字(%d-%d)[0代表A,1代表B...] : ", 0, ROUTNUM - 1); scanf("%d", &end);if (start == end || start < 0 || start > 6 || end < 0 || end > 6){printf("\n输入错误,请按任意键退出\n");getch();return;}else{int cur = start;int total = 0;if (data[start][end].dis < 0){printf("没有路由路径发现!\n");getch();return;}printf("%c->", cur + 65);while (data[cur][end].from >= 0) //起始点与终点不相连。
电子科技大学通信学院《计算机通信网实验报告》距离矢量路由算法原理实验班级通信11班学生李楚鸣学号 20教师徐世中实验2:距离矢量路由算法原理实验报告【实验目的】1、要求实验者利用路由选择算法模拟软件提供的通信功能,模拟距离矢量路由选择算法的初始化、路由信息扩散过程和路由计算方法;2、掌握距离矢量算法的路由信息扩散过程;3、掌握距离矢量算法的路由计算方法。
【实验环境】1、分组实验,每组4~10人。
2、拓扑:虚线表示节点之间的逻辑关系,构成一个逻辑上的网状拓扑结构。
3、设备:小组中每人一台计算机。
4、实验软件:路由选择算法模拟软件(routing.exe——最新版本为5.0)【实验原理】(请根据实验指导书的相关内容及课程相关知识填写,距离矢量路由算法基本原理,实验软件的基本功能等)【实验步骤】1、建立实验小组。
2、按照距离矢量算法完成路由信息扩散和路由计算过程。
3、距离矢量算法收敛后,向路由表中列出的每个非直连节点发送路由测试数据,完成路由测试过程。
4、汇总实验小组的实验记录信息,检查路由是否正确。
如果有错误,分析并发现错误产生的原因。
5、将实验从头多做几次,观察如果各节点发送信息和接收处理信息的过程不一样,是否会影响路由表的正确形成。
如在第一次实验时,节点接收一份路由信息后,处理,再发送出新的路由信息,而第二次实验时,节点将当前所有的路由信息处理完后,才发送新的路由信息。
6、小组讨论将拓扑中的一条链路断掉,然后通过实验观察路由协议是如何适应这个变化的。
*7、小组讨论无穷计数问题如何在现有拓扑中产生,然后通过实验将无穷计数问题展现出来。
(选作)【实验记录】按照实验记录内容格式要求记录以下内容(不够请另附纸张):1、实验小组的建立要求记录:小组名称、成员数量、本节点编号、本地直连链路表和据此形成的路由表。
2、距离矢量算法的路由扩散和路由计算过程要求记录:每次发送、接收的路由信息和根据接收信息所形成的路由表。