距离矢量路由算法实验
一、实验要求
网络拓扑图
实验过程描述
1、将上面的网络拓扑图保存待用
例如,可用二维数组保存,数组下标或索引可隐含表示网络节点。数组元素保存网络拓扑图边上的权值
2、为每个网络节点初始化并保存一张路由表
例如,可以用单链表表示一个网络节点的路由表,单链表的每个结点存储一个表项信息;表项信息是一个三元组(目的节点,下一跳,开销),可用结构体表示。结构体包括四个字段:目的节点,下一跳,开销,指向下一个结点的指针。以网络节点A为例,它的初始路由表仅包含两个表项,如下所示:
可将所有网络节点的路由表头指针保存在一个一维数组中,数组下标或索引可隐含表示网络节点。
3、给每个网络节点一次执行距离矢量路由更新的机会,可用一个循环达到此效果
例如,当A执行距离矢量路由更新时,它需要它的邻居B和G的路由表,这里可忽略B和G发送路由表的操作,直接使用即可。
A更新前的路由表不能丢弃,原因有二:一、需要与更新后的路由表比较,看是否有变化;二、在A的邻居节点执行距离矢量路由更新时,它使用的是A的旧表,尽管此方式并非实际所用,但我们要求采用此种方式模拟所有节点同时进行路由更新的效果。
距离矢量路由更新的过程见书。
需要记录这一次路由更新过程中,每个节点的路由表是否发生变化。可用一个布尔变量来标记,初始化这个布尔变量为“假”,若出现一个网络节点的路由表发生变化的情况就置为“真”。
4、若布尔变量为“真”,则累加一次更新记录,并重复开始步骤3;若为“假”,则所有节点的路由表稳定了,可以输出一个节点从初始到稳定的所有路由表数据以及更新次数。
二、实验分析与设计
1.用c语言来实现(结构化程序设计)
根据上述实验内容来做。一点一点实现即可。
2.实验中的注意点和难点。
(1)注意内存回收