文档介绍:基于距离矢量算法的路由器模拟实验
一试验目的
/深入理解分布式路由选择算法
/理解、掌握和利用距离向量算法
/所实现的路由器模拟Internet上的IP路由器,它能确定网络的最短路由,并在其上
传输分组
二算法描述
距离向量算法也称为 Bellman-Ford shortest path algorithm
◊它是一种动态路由选择算法 「
每个路由器都定期与其相邻的所有路由器交换路由表,据此更新它们自己的路由表
路由表更新规则:
1所有结点都监听从其它结点传来的路由表,并在下列情况下更新其路由表1发现 了一条到达某目的的新路由,而该路由在原来的路由表中不存在(即发现了一条新路 由),则在路由表中增加该路由
2发现了一条到达某目的的、距离更短的新路由,则用该路由替换原有的路由
3到达某目的的一条路由,其后继结点到达该目的地的距离发生了变化,则需要更 新该路由的距离
三实验要求
>编写一个程序利用距离向量算法更新路由表
该程序的多个实例(进程或线程)可以以运行在一台机器
一个实例代表一个路由器(结点)
实例之间利用UDP交换路由
>假设结点与其邻居结点的都为距离为1。路由表采用如下结构:
目的结点(dest_addr) 路由(route)
3,4,5
>在路由表中,我们登记路由而不是下一跳,以方便处理。转发分组 时,只考虑第一
个下一个结点
>为了指明实例及其邻居,程序启动时必须能接收以下参数:
router ID, myport, portl, port2, port3... 其中:
-ID:实例的编号,数字0〜9
-myport:该实例使用的UDP端口,以便发送和接收分组
-portl, port2, port 3,...:该实例的邻居所使用的UDP端口
>程序必须能处理以下命令:
N—打印活动的邻居列表。
-用空格分开代表各个邻居的数字(在一行)
-所谓活动邻居是指直接可达的结点(距离为1)
-如果没有邻居,则输出空行
-例如:47
T—输出路由表。
-输出到每个目的结点的路由
-每条路由一行
-例如:
43
76
0, 1, ... 9—发送分组
-每个数字代表一个数据分组发送请求
-数据分组发送到数字代表的目的地
-如果目的结点不是邻居结点,不能直接发送分组,而必须在路由的各个结点上沿路由转 发该分组
0, 1, ...9 —向目的结点发送分组
-收到数据分组的结点必须输出一行,显示该分组的目的
-例如:
»发送分组:5
»转发分组:显示F5
-如果结点不法转发分组,则丢弃该分组,显示:D目的
»例如:显示D5
-数据分组没有数据,只需要目的地址和TTL
»TTL: Time to Live
»分组应该在TTL规定的时间或步数内到达目的结点,否则丢弃之
»分组经过每个中间结点时,将其TTL减1。若TTL=0,丢弃,否则》继续转发
四开发环境
本程序是使用VC++,开发的软件环境为Windows
XP平台,硬件环境为CPU Intel P4 ,内存512M。
五实验用例
由于本程序在创建工程时采用了 ,所以运行方式如下所示:
首先:打开开始->运行,键