距离矢量路由算法原理实验教案

合集下载

计算机网络原理 距离矢量路由

计算机网络原理  距离矢量路由

计算机网络原理距离矢量路由距离矢量路由选择(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,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路由节点0 路由节点2 路由节点N-1 局域网(Ethernet )N = 4 ~ 10●为实验者提供记录路由计算结果的窗口——路由表窗口。

●为实验者提供分组逐站转发方法来验证路由选择的结果。

图2-1 路由选择算法模拟软件主界面2、模拟软件的使用方法1)建立小组通过建立小组,每个小组成员可以获得本节点的编号和本地直连链路信息。

a)4~10人一组,在实验前自由组合形成小组。

小组人数尽量多些,每人使用一台计算机。

启动实验软件后点击“建立小组”按钮。

(图2-2)图2-2 选择建立小组b)在建立小组的窗口内填入小组名称和成员数量。

同一小组成员必须填写同样的小组名称和成员数量才能正确建立小组。

(图2-3)图2-3 建立小组窗口图2-4 小组建立过程c)点击“加入”按钮后,实验软件以广播形式将组名广播出去。

基于距离矢量算法的路由器模拟实验

基于距离矢量算法的路由器模拟实验

基于距离矢量算法的路由器模拟实验一试验目的深入理解分布式路由选择算法理解、掌握和利用距离向量算法所实现的路由器模拟Internet上的IP路由器,它能确定网络的最短路由,并在其上传输分组二算法描述距离向量算法也称为Bellman-Ford shortest path algorithm 它是一种动态路由选择算法每个路由器都定期与其相邻的所有路由器交换路由表,据此更新它们自己的路由表路由表更新规则:1所有结点都监听从其它结点传来的路由表,并在下列情况下更新其路由表1发现了一条到达某目的的新路由,而该路由在原来的路由表中不存在(即发现了一条新路由),则在路由表中增加该路由2发现了一条到达某目的的、距离更短的新路由,则用该路由替换原有的路由3到达某目的的一条路由,其后继结点到达该目的地的距离发生了变化,则需要更新该路由的距离三实验要求编写一个程序利用距离向量算法更新路由表该程序的多个实例(进程或线程)可以以运行在一台机器一个实例代表一个路由器(结点)实例之间利用UDP交换路由假设结点与其邻居结点的都为距离为1。

路由表采用如下结构:目的结点(dest_addr) 路由(route)5 3,4,5… …在路由表中,我们登记路由而不是下一跳,以方便处理。

转发分组时,只考虑第一个下一个结点为了指明实例及其邻居,程序启动时必须能接收以下参数:其中: router ID, myport, port1, port2, port3…–ID:实例的编号,数字0,9–myport:该实例使用的UDP端口,以便发送和接收分组–port1, port2, port 3, …:该实例的邻居所使用的UDP端口程序必须能处理以下命令:1)N,打印活动的邻居列表。

–用空格分开代表各个邻居的数字(在一行) –所谓活动邻居是指直接可达的结点(距离为1) –如果没有邻居,则输出空行–例如:4 72)T,输出路由表。

输出到每个目的结点的路由–每条路由一行––例如:4 37 63)0,1,… 9,发送分组–每个数字代表一个数据分组发送请求–数据分组发送到数字代表的目的地–如果目的结点不是邻居结点,不能直接发送分组,而必须在路由的各个结点上沿路由转发该分组4)0,1,… 9,向目的结点发送分组–收到数据分组的结点必须输出一行,显示该分组的目的–例如:发送分组:5转发分组:显示 F5–如果结点无法转发分组,则丢弃该分组,显示:D目的例如: 显示 D5 –数据分组没有数据,只需要目的地址和TTL TTL:Time to Live分组应该在TTL规定的时间或步数内到达目的结点,否则丢弃之分组经过每个中间结点时,将其TTL减1。

距离矢量路由协议(RIP)

距离矢量路由协议(RIP)
自治系统的编号范围是1到65535,其中1到65411是注册的因特网编号,65412到65535是专用网络编号。
1.4
按照工作区域,路由协议可以分为IGP和EGP:
IGP(Interior gateway protocols)内部网关协议
在同一个自治系统内交换路由信息,RIP和IS-IS都属于IGP。IGP的主要目的是发现和计算自治域内的路由信息。
如上图所示,如果网络11.4.0.0故障,就可能会在路由器之间产生路由环路,下面是产生路由环路的步骤:
在网络11.4.0.0发生故障之前,所有的路由器都具有正确一致的路由表,网络是收敛的。在本例中,路径开销用跳数来计算,所以,每条链路的开销是1。路由器C与网络11.4.0.0直连,跳数为0。路由器B经过路由器C到达网络11.4.0.0,跳数为1。路由器A经过路由器B到达网络11.4.0.0,跳数为2。
⑷RouterA的路由表中去往某目标网络的下一跳为RouterB,而RouterB的路由表中不再包含去往该目标网络的路径,则RouterA的路由表中相应路径应删除。
2.4
2.4.1
由于网络故障可能会引起路径与实际网络拓扑结构不一致而导致网络不能快速收敛,这时,可能会发生路由环路现象。图中用一个简单的网络结构来说明路由环路的产生。
每个自治系统都有一个唯一的自治系统编号,这个编号是由因特网授权的管理机构IANA分配的。它的基本思想就是希望通过不同的编号来区分不同的自治系统。这样,当网络管理员不希望自己的通信数据通过某个自治系统时,这种编号方式就十分有用了。例如,该网络管理员的网络完全可以访问某个自治系统,但由于它可能是由竞争对手在管理,或是缺乏足够的安全机制,因此,可能要回避它。通过采用路由协议和自治系统编号,路由器就可以确定彼此间的路径和路由信息的交换方法。

距离矢量路由算法

距离矢量路由算法

距离矢量路由算法
距离矢量路由算法是一种计算网络中最佳路径的算法。

这种算法通过在网络上的每个节点中保存到其他节点的距离向量来工作。

每个节点根据它们之间的距离向量,计算到每个其他节点的最短路径。

这个过程不断重复,直到每个节点都拥有网络中所有其他节点的最短路径信息。

距离矢量路由算法可以用于计算全网最短路径,也可以用于计算子网内的最短路径。

它是一种分布式算法,因为每个节点都只能看到它的邻居节点的距离向量,而不知道网络的整体拓扑结构。

这种算法虽然简单,但它的计算复杂度较高,因为每个节点都需要计算到其他节点的最短路径。

在距离矢量路由算法中,节点会周期性地向邻居发送它们的距离向量,以便邻居节点可以更新它们的路由表。

如果一个节点发现它的距离向量发生了变化,它会向它的邻居发送一个更新消息。

这个过程也会不断重复,直到每个节点的路由表都被更新到最优状态。

距离矢量路由算法在实际应用中有一些限制。

由于每个节点都只能看到它的邻居节点的距离向量,因此它可能会选择一个不是全局最短路径的路径。

此外,如果一个节点的路由表发生了错误,它可能会向其他节点发送错误的路由信息,导致整个网络的不稳定性。

为了解决这些问题,其他类型的路由算法,如链路状态路由算法和路径矢量路由算法,也被广泛使用。

计算机网络实验报告(路由算法、Socket编程)

计算机网络实验报告(路由算法、Socket编程)

计算机网络实验报告班级:姓名:学号:实验一一.实验目的及要求编写程序,模拟距离矢量路由算法的路由表交换过程,演示交换后的路由表的变化。

二.实验原理距离矢量路由算法是这样工作的:每个路由器维护一张路由表(即一个矢量),它以网络中的每个路由器为索引,表中列出了当前已知的路由器到每个目标路由器的最佳距离,以及所使用的线路。

通过在邻居之间相互交换信息,路由器不断地更新他们的内部路由表。

举例来说,假定使用延迟作为“距离”的度量标准,并且该路由器发送一个列表,其中包含了他到每一个目标路由器的延时估计值;同时,他也从每个邻居路由器接收到一个类似的列表。

假设一个路由器接收到来自邻居x的一个列表,其中x(i)表示x估计的到达路由器i所需要的时间。

如果该路由器知道他到x的延时为m毫秒,那么他也知道在x(i)+m毫秒之间内经过x可以到达路由器i。

一个路由器针对每个邻居都执行这样的计算,就可以发现最佳的估计值,然后在新的路由器表中使用这个最佳的估计值以及对应的输出路线。

三.源程序:#include "stdio.h"#include "stdlib.h"#include "malloc.h"#include "graphics.h"#include "dos.h"#define VERNUM 7typedef struct{int dis;int flag;int flag2;}RoutNode;char tmp[10];RoutNode data[VERNUM][VERNUM];void welcome();void InitRoutData(FILE* pfile);void PrintRoutData();void SendInf(int recv, int send);void Exchange();int main(){int start, end, i, j, m, n;FILE *pfile;welcome();pfile = fopen("1.txt", "r");if (pfile == NULL){printf("the file wrong,press any key to come back.\n");getch();return;}elseInitRoutData(pfile);fclose(pfile);printf("\nthe original route table:\n");for (i = 0; i<VERNUM; i++){printf("%c||", i + 65);for (j = 0; j < VERNUM; j++)if (data[i][j].dis > 0)printf("<%c %d> ", j + 65, data[i][j].dis);printf("\n");}PrintRoutData();getch();for (i = 0; i < VERNUM; i++){for (m = 0; m < VERNUM; m++)for (n = 0; n < VERNUM; n++)data[m][n].flag = 0;Exchange();PrintRoutData();getch();}printf("\nexchange the route table:\n");return 0;}void welcome(){int gdriver=DETECT,gmode;registerbgidriver(EGAVGA_driver);initgraph( &gdriver, &gmode,"C:\Win-TC");cleardevice();setbkcolor(CYAN);setviewport(0,0,639,479,1);clearviewport();setbkcolor(BLUE);setcolor(14);rectangle(200,200,440,280);setfillstyle(1,5);floodfill(300,240,14);settextstyle(0,0,2);outtextxy(50,30,"Distance Vector Routing Algorithm");setcolor(15);settextstyle(1,0,4);outtextxy(260,214,"Welcome to use!");line(0,80,640,80);getch();delay(300);cleardevice();}void InitRoutData(FILE* pfile){char num[10];int i = 0;char c;int m, n;fseek(pfile, 0, 0);for (m = 0; !feof(pfile) && m < 7; m++){for (n = 0; !feof(pfile) && n < 7; n++){while (!feof(pfile)){c = fgetc(pfile);if (c == ','){num[i] = '\0';data[m][n].dis = atoi(num);data[m][n].flag = 0;data[m][n].flag = 0;i = 0;break;} /*end of if*/else if ((c >= '0' && c <= '9') || c == '-'){num[i++] = c;} /*end of else if*/} /*end of while*/} /*end of for (n = 0*/} /*end of for (m = 0*/}void PrintRoutData(){int i, j;for (i = 0; i < VERNUM; i++){settextstyle(1,0,3);sprintf(tmp," %c",i + 65);outtextxy(i*80+50,130,tmp);outtextxy(10,160+i*40,tmp);}for (j = 0; j< VERNUM; j++){for (i = 0; i < VERNUM; i++){if (data[i][j].dis <= 0&&i!=j){if(data[i][j].flag2 ==1){setfillstyle(SOLID_FILL,5);bar(80*i+50,40*j+155,80*i+120,40*j+185);delay(50000);data[i][j].flag2 =0;}setfillstyle(SOLID_FILL,3);bar(80*i+50,40*j+155,80*i+120,40*j+185);settextstyle(1,0,2);sprintf(tmp,"-");outtextxy(80*i+65,40*j+165,tmp);}elseif(data[i][j].dis >=0){if(data[i][j].flag2 ==1){setfillstyle(SOLID_FILL,5);bar(80*i+50,40*j+155,80*i+120,40*j+185);delay(50000);data[i][j].flag2 =0;}setfillstyle(SOLID_FILL,3);bar(80*i+50,40*j+155,80*i+120,40*j+185);settextstyle(1,0,2);sprintf(tmp,"%d",data[i][j].dis);outtextxy(80*i+65,40*j+165,tmp);}} /*end of for (j = 0*/} /*end of for (i = 0*/}void SendInf(int recv, int send){int i;for (i = 0; i < VERNUM; i++){if (data[send][i].dis > 0&& data[send][i].flag!=1) { if (data[recv][i].dis <= 0&&recv!=i) {data[recv][i].dis = data[send][i].dis + data[recv][send].dis;data[recv][i].flag =1;data[recv][i].flag2 =1;}else if (data[recv][i].dis > data[send][i].dis + data[recv][send].dis){data[recv][i].dis = data[send][i].dis + data[recv][send].dis;data[recv][i].flag =1;data[recv][i].flag2 =1;}} /*end of if*/} /*end of for*/}void Exchange(){int i, j;for (i = 0; i < VERNUM; i++){for (j = 0; j < VERNUM; j++){if (data[i][j].dis > 0&& data[i][j].flag!=1){SendInf(i, j);} /*end of if*/} /*end of for (j = 0*/} /*end of for (i = 0*/}四、实验心得体会通过本次实验训练,我了解了距离矢量路由算法的基本原理,复习了C语言编程的内容,通过对路由算法的实现,加深了对路由表交换的理解。

距离矢量_DV_算法分析实验

距离矢量_DV_算法分析实验
距离矢量(DV)算法分析实验
距离矢量(DV)算法原理
DV算法根据跳数确定路由
子网: 202.112.138.0/24
A
B
C
D
子网:
202.112.130.0/24
2
距离矢量(DV)对网络的描述
A
子网: 202.112.138.0/24
B
子网: 202.112.130.0/24
目的地址 202.112.130.0
2. 在各台计算机上运行Wireshark,观察截取 到的报文。
3. 按照指导书上的步骤对截取的报文进行分析, 理解距离矢量算法的计算过程。
7
下一跳 B
路由器A的路由表
跳数 1
3
路由器收到一条Rip选路信息后的计算过程
每个当路由器收到相邻路由器R发来的一个跳数为 M、目的地址为D的更新消息时,会将收到的路由信息 与自己的路由表进行比较,如果
1. 没有到D这个网段的路由表项存在,则生成路由表项(D、 M+1,R),其中跳数为M+1;
2. 否则,如果已存在(D,*源自R)的路由表项,则更新为(D、 M+1,R);
E1:192.168.3.1/24
R1
E0/13
Vlan1:192.168.2.1/24
Loop1:
192.168.1.1/24
S1
E0/1 E0/2
Vlan1:192.168.3.2/24 E0/13
S2
E0/1
E0/2
PCA
PCB
PCC
PCD
Ip:192.168.2.10/24 Ip:192.168.2.11/24 Gw:192.168.2.1 Gw:192.168.2.1 Ip:192.168.3.10/24

计算机网络距离矢量路由算法实验报告

计算机网络距离矢量路由算法实验报告

计算机网络实验报告距离矢量路由算法一,实验内容: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来判断路由表是否变的稳定。

距离矢量算法解析

距离矢量算法解析

距离矢量详解—包含到其他所有结点开销
存储在结点 的 信 息 A A B C D E F G 0 1 1 ∞ 1 1 ∞ B 1 0 1 ∞ ∞ ∞ ∞ C 1 1 0 1 ∞ ∞ ∞ 到每个结点的距离 D ∞ ∞ 1 0 ∞ ∞ 1 E 1 ∞ ∞ ∞ 0 ∞ ∞ F 1 ∞ ∞ ∞ ∞ 0 1 G ∞ ∞ ∞ 1 ∞ 1 0
存储在每个结点中的初始距离
距离矢量详解—发送包含自己距离表的消息给其他邻接点 1、结点F告诉A它可以到结点G,开销为1,A也知道它能以 开销1到达F,因此二者相加就可以知道经F到G的开销;A 到G的总开销2小于当前的开销无穷大,因此A记录它可经F 到达G,开销为2; 2、类似的,A从C得知,C能以开销1到达D;A将此与到C的 开销1相加,决定可通过C以开销2到达D,优于旧的开销无 穷大 3、同时,A从C得知,C能以开销1到达B,因此它推断经C 到B的开销为2,这比当前A到B的开销1大,因此新的信息 被忽略。
距离矢量详解—发送包含自己距离表的消息给其他邻接点
结点A的初始路由表 目标 B C 开销 1 1 下一跳 B C
结点A的最终路由表 目标 B C D E F G 开销 1 1 2 1 1 2 下一跳 B C C E F C
D
E F G

1 1 ∞

E F —
距离矢量详解
存储在结点 的 信 息 A A B C 0 1 1 B 1 0 1 C 1 1 0 到每个结点的距离 D 2 2 1 E 1 2 2 F 1 2 2 G 2 3 2
0
0
10.2.0.0
S0 S1 S1 E1 2
0
0
Possibly Down
10.3.0.0
S0 S0 S0 S0

【协议分析】【距离矢量算法计算过程分析】

【协议分析】【距离矢量算法计算过程分析】

实验二十距离矢量算法计算过程分析【实验目的】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)路由算法。

距离矢量路由算法中避免环路的方法

距离矢量路由算法中避免环路的方法

距离矢量路由算法中避免环路的方法距离矢量路由算法是一种用于计算网络中最佳路径的算法。

它基于每个节点维护一个距离表,其中记录了该节点到其他节点的最短距离。

然而,由于网络拓扑不稳定或错误配置的情况下,距离矢量路由算法可能会出现环路问题。

环路意味着数据包在网络中无限循环,导致网络资源浪费和网络性能下降。

为了避免环路问题,距离矢量路由算法可以采用如下方法:1.拆除环路:当检测到网络中存在环路时,一种简单的方法是手动拆除环路。

管理员可以手动更改路由配置,删除或修改造成环路的路由器之间的连接。

然而,这种方法需要管理员的主动干预,不适合大规模网络。

2.毒性反转:毒性反转是一种动态的方法,用于在距离矢量路由算法中避免环路问题。

当一条路径出现故障时,源节点会将该路径的距离设为无穷大。

通过将无效路径的距离设置为无穷大,可以防止数据包绕回到发出方,从而避免环路的产生。

3.拆分视图技术:拆分视图技术适用于具有多个逻辑网络的网络环境,其中每个逻辑网络都有自己的拓扑结构和路由表。

通过将整个网络拆分成多个独立的逻辑网络,可以避免不同的逻辑网络之间发生环路。

这种方法需要对网络进行适当的划分和配置,以确保每个逻辑网络正常工作,并且不会发生环路。

4.分割层次拓扑结构:分割层次拓扑结构是一种将网络拓扑分割成多个层次的方法,以避免环路问题。

在分割层次拓扑结构中,网络被划分为多个区域,每个区域有自己的路由器和连接。

不同区域之间的连接由特定的区域边界路由器处理,该路由器负责协调不同区域之间的路由信息交换。

通过将网络拓扑划分成不同的层次,可以有效地减少环路的可能性。

总之,距离矢量路由算法中避免环路的方法包括手动拆除环路、毒性反转、拆分视图技术和分割层次拓扑结构。

这些方法可以根据网络的规模和需求进行选择和组合使用,以确保网络的正常运行和高性能。

距离向量路由算法

距离向量路由算法

当一个路由器从它的相邻处收到更 新信息时,它会将更新信息与本身 的路由表相比较。如果该路由器比
较出一条 新路由或是找到一条比当前路由更 好的路由时,它会对路由表进行更 新:将从该路由器到邻居之间的
向量距离与更新信息中的向量距离 相加作为新路由的向量距离。
收敛
所谓收敛,是指直接或间接交换
解决变法
• 限定最大跳数,当路由表中的度量值等于或大于该 值时认为该路径有故障,这样便加快了收敛速度;
• 水平分割技术,即当一个节点把路由表的更新信息 发送给相邻节点时,它并不把从各相邻节点处学到 的路由信息再回送给该节点;
• 带反向抑制的水平分割技术,即允许节点将其从相 邻节点处学到的路由信息反馈给该节点,但是反馈 信息中加了否定标志,以确保其相邻节点不会采用 该反馈信息。
路由信息的一组路由器在网络的 拓扑结构方面或者说在网络的路 由信息方面达成一致。路由协议 必须通过某种算法使路由器尽快 达到收敛状态。
路由环路(Routing Looops) 问题
如果B到E出现故障,B到E的距离就会变成无穷大,如果这 个时候A和C不知道出现故障,继续把自己的路由信息发给B, 因为A和C之前的路由信息中有通向E的路线,所以,B就会 认为可以通过A和C到达E。就会出现错误。
距离向量路由算法
ቤተ መጻሕፍቲ ባይዱ
距离向量路由算法
– 通过判断距离来查找到达远程网络的最佳路径。 即每个路由器都构造一个包含从本路由器出发 去往目的网络的最短距离路由信息(V,D), 其中V代表可到达的信宿,D代表距离;路由器 周期性地将自己的最短距离路由信息发送给与 它直接相连的所有邻居;相邻的路由器收到该 信息后,将它与自己原来已有的最短距离路由 信息进行组合,进而得到完整的连接到所有可 能到达的目的网络的路由信息。

距离向量算法更新路由表2

距离向量算法更新路由表2
同样道理,路由器B还会产生一条(10.1.0.0,S0,1)路由,这条路由是通过网络端口S0从路由器A获得的。如此反复,直到最终收敛,形成图中所示的路由表。
概括地说,距离向量算法要求每一个路由器把它的整个路由表发送给与它直接连接的其它路由器。路由表中的每一条记录都包括目标逻辑地址、相应的网络接口和该条路由的向量距离。当一个路由器从它的相邻处收到更新信息时,它会将更新信息与本身的路由表相比较。如果该路由器比较出一条新路由或是找到一条比当前路由更好的路由时,它会对路由表进行更新:将从该路由器到邻居之间的向量距离与更新信息中的向量距离相加作为新路由的向量距离。
3. 能够用距离向量算法建立一个路由表并进行更新
4.所实现的路由器模拟Internet上的IP路由器,它能确定网络的最短路由,并在其上传输分组
二.原理概述
距离向量路由算法(Bellman-Ford Routing Algorithm),也叫做最大流量演算法(Ford-Fulkerson Algorithm),其被距离向量协议作为一个算法,如RIP, BGP, ISO IDRP, NOVELL IPX。使用这个算法的路由器必须掌握这个距离表(它是一个一维排列-“一个向量”),它告诉在网络中每个节点的最远和最近距离。在距离表中的这个信息是根据临近接点信息的改变而时时更新的。表中数据的量和在网络中的所有的接点(除了它自己本身)是等同的。这个表中的列代表直接和它相连的邻居,行代表在网络中的所有目的地。每个数据包括传送数据包到每个在网上的目的地的路径和距离/或时间在那个路径上来传输。这个在那个算法中的度量公式是跳跃的次数、等待时间、流出数据包的数量等等。
{
printf("%d ", i);
for (j=0; j<ROUTNUM; j++)

计算机网络技术第10章 距离矢量路由协议PPT课件

计算机网络技术第10章 距离矢量路由协议PPT课件
33
提问与回答
用思想传递正能量
34
结束语 CONCLUSION
感谢参与本课程,也感激大家对我们工作的支持与积极的参与。课程 后会发放课程满意度评估表,如果对我们课程或者工作有什么建议和 意见,也请写在上边,来自于您的声音是对我们最大的鼓励和帮助, 大家在填写评估表的同时,也预祝各位步步高升,真心期待着再次相 会!
• 默认支持4条路经做负载均衡,最多能支持6条。 • 30秒:周期性更新路由包时间 • 90秒: 如果90秒没有收到邻居的更新包,路由器就认
为邻居路由器坏了,进入保持状态。 • 180秒:保持时间 • RIPv1是分类路由选择协议,不支持子网。 • RIPv2是无分类路由选择协议,支持子网。RIPv2路由更
• (config)# router • (config)# network • (config)# version 2
30
RIP Configuration Example
31
10.2 IGRP协议的特性和配置方法
• Cisco专有协议。距离矢量路由选择协议,大型网络中( 30个路由器)。
• 度量值:根据延迟、带宽、负载、可靠性、MTU选择路 径。网络管理员设置度量值的权值,也可IGRP自动计算 。默认使用带宽和延迟作为度量值。
Байду номын сангаас17
Poison Reverse
• Poison reverse overrides split horizon.
18
Holddown Timers
• 在保持时间内,路由器不接受邻居对该网段的更新。
19
Triggered Updates
• The router sends updates when a change in its routing table occurs.

网络原理路由算法

网络原理路由算法

《计算机网络原理》试验报告学号XXXXX XXX姓名xxxxxxxxxxx专业班级XXXXXxxxxx完成时间2011-4-25实验一路由算法一.实验目的计算机网络通常使用动态的路由算法,其中距离矢量路由算法和链路状态路由算法最为常见。

本章实验的目的是模拟距离矢量路由算法及链路状态路由算法,使读者熟悉路由算法的基本原理。

二.实验内容在C/C++环境下,编程模拟距离矢量路由选择算法和链路状态路由选择算法中,具体要求如下:(1)距离矢量路由选择算法根据给出或自行设计的网络拓扑结构,初始化每个路由器的初始路由表,模拟并演示距离矢量路由选择算法过程中每个路由器在接收相邻节点发送的信息之后更新路由表的过程。

①根据给出的网络拓扑结构初始化每个路由器的路由选择表。

②每个路由器将其路由选择信息的列表发送给邻居路由器。

③路由器根据接收到的信息列表,修改自己的路由选择表。

④重复(b)(c)过程直到网络中所有路由器的路由选择表均不再发生改变。

在模拟上述过程中,要求显示每个路由器在执行步骤(c)之后路由选择表的内容。

(2)链路状态路由选择算法根据给出的网络拓扑结构和链路状态,模拟链路状态路由算法中路由器进行工作的过程。

①路由器发现其邻居节点,并测量到邻居节点的距离。

②根据邻居节点信息构造分组。

③将分组发送给邻居路由器。

对接收到的分组信息,将其发送给除发送节点外的其他邻节点,并向发送节点返回确认信息;若接收到的信息序号比现有序号小,则停止发送,向发送节点返回确认信息。

④当路由器获得所有节点的分组信息后,利用Dijkstra算法计算到达每个节点的最短路径。

三.实验步骤①距离矢量路由选择算法程序主流程图原理分析当路由器a接收到邻居路由器b的路由选择信息表后,对信息表中的信息进行比较,若发现有新的路径比当前路由表中的路径长度小,或者发现当前路由表中的路径长度发生了变化,则将路由表中的信息进行更新。

每一个路由表发生更新的路由器将新的路由选择信息发送给其邻节点,开始下一轮的更新过程,直到所有路由器的路由表均不发生更新操作,运行结束。

实验三距离矢量路由算法原理实验报告

实验三距离矢量路由算法原理实验报告

电子科技大学通信学院《计算机通信网实验报告》距离矢量路由算法原理实验班级通信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、距离矢量算法的路由扩散和路由计算过程要求记录:每次发送、接收的路由信息和根据接收信息所形成的路由表。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机通信网实验
实验3:距离矢量路由算法原理 实验
路由算法原理性实验
目标
要求实验者根据路由选择算法模拟软件提供的功 能,模拟分布式路由选择算法的初始化、路由信 息扩散过程和路由计算方法;
掌握D-V算法的路由信息扩散过程; 掌握D-V算法的路由计算方法。
实验前的准备
填写实验报告中实验原理部分 分组
2
实 验 软 件 主 界 面
3
建立小组
4~10人一组,互相配合,多多益善。 建立小组过程:设置组名和小组人数
4
建立小组:设置组名和成员数
同一小组成员设置的成员数量应一致 设置完成后选择加入,可观察到其他成员加
入的情况
5
小组建立
当成员到达预定数量后,可选择确定完成小 组建立
6
本地信息Biblioteka 小组通过路由更新信息的交互,形成新的路由
15
注意
实验各步骤都需 要进行记录
请翔实、忠实地 记录实验数据
如果路由发生错 误,将小组的记 录数据汇总后, 分析并发现错误 产生的原因。
16
思考题
1、一个路由节点如何判断所使用的路由算法已经收 敛?
2、一个路由节点在路由形成过程中(即路由算法没 有收敛时),应该如何处理收到的数据?为什么? 假设这些数据的目的都不是这个路由节点。
3、请根据实验记录中的距离矢量路由信息,画出对 应的拓扑图。
4、在距离矢量算法算法的路由测试实验中,被测路 由是否正确?是否都是最短路径?如果不是,原因 是什么?
17
再将更新后的路由表发送给相邻结点 经过多次来回,各结点算出到其它结点的最
短路由
11
测试路由
点击“测试路径”按钮,继续点击“已发送X 份数据按钮”
向各目的发送一份数据报文,报文内容自理
路由表中可
以到达目的
的下一站
12
中继节点
数据报文送到中继节点 时,自动在“有X份待 处理数据”按钮上显示 提示,点击会显示收到 的数据
实验者根据路由表选 择是转发还是报文已经 到达目的 转发的数据,须填写 下一站结点的ID
13
目的节点
数据到达目的节点后
实验者可选择查看内 容
同时可观察到该报文 经过的路由器,通过 这个信息可以测试路 由是否正确,是否为 最短路由
14
随机断链
小组中某一个节点点击随机断链按钮
实验软件将随机给出某条链路出现故障
建立小组后回到主界面,本节点ID和本地直 连信息已经建立,选择实验的路由算法
7
选择距离矢量算法
在发送路由信息窗口出现距离 矢量算法下的路由信息的一般 格式
点击路由选择过程,可进入发 送和接收处理路由信息阶段, 在路由表窗口出现路由表的一 般格式
8
发送路由信息
根据本地路由表,先形成(填写)路由表
以结点4为例
自行填写!
组织、发送路由信息
发送者 接收者
目的1 目的2 目的3
距离 距离 距离
路由 信息 表项
相邻 结点
9
接收路由信息
收到其它节点送来的路由信息后,状态栏显 示“新信息到达”
选择处理路由信息,显示一份路由信息报文
10
更新路由表
实验者按照距离矢量算法处理路由信息,更 新路由表
相关文档
最新文档