logo资料库

广工计算机网络课程设计.docx

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
一.课程相关基础知识
二.设计思路
计算机网络课程设计 题 学 专 班 学 姓 目 链路状态路由算法的实现 院 计算机学院 业 软件工程 别 号 名 2017 年 6 月 25 日
一.课程相关基础知识 (1)链路状态路由选择协议的定义 又称为最短路径优先协议,它基于 Edsger Dijkstra 的最短路径优先(SPF) 算法。它比距离矢量路由协议复杂得多,但基本功能和配置却很简单,甚至算法 也容易理解。路由器的链路状态的信息称为链路状态,包括:接口的 IP 地址和 子网掩码、网络类型(如以太网链路或串行点对点链路)、该链路的开销、该链 路上的所有的相邻路由器; (2)链路状态路由算法的原理 链路状态路由协议是目前使用最广的一类域内路由协议。它采用一种“拼 图”的设计策略,即每个路由器将它到其周围邻居的链路状态向全网的其他路 由器进行广播。这样,一个路由器收到从网络中其他路由器发送过来的路由信 息后,它对这些链路状态进行拼装,最终生成一个全网的拓扑视图,近而可以 通过最短路径算法来计算它到别的路由器的最短路径。运行链路状态路由协议 的路由器, 每台路由器公在其接口的状态发生变化时,才将变化后的状态发送 给其他所有路由器,每台路由器都使用收到的信息重新计算前往每个网络的最 佳路径,然后将这些信息存储到自己的路由选择表中。 (3)路由协议 链路状态路由协议是层次式的,网络中的路由器并不向邻居传递“路由项”, 而是通告给邻居一些链路状态。与距离矢量路由协议相比,链路状态协议对路由 的计算方法有本质的差别。距离矢量协议是平面式的,所有的路由学习完全依靠 邻居,交换的是路由项。链路状态协议只是通告给邻居一些链路状态。运行该路 由协议的路由器不是简单地从相邻的路由器学习路由,而是把路由器分成区域, 收集区域的所有的路由器的链路状态信息,根据状态信息生成网络拓扑结构,每 一个路由器再根据拓扑结构计算出路由。 (3)路由协议要求 现代链路状态路由协议设计旨在尽量降低对内存、CPU 和带宽的影响。使用 并配置多个区域可减小链路状态数据库。划分多个区域还可限制在路由域内泛洪 的链路状态信息的数量,并可仅将 LSP 发送给所需的路由器。
二.设计思路 简单网络拓扑 链路状态路由算法背后的思想非常简单,可以用 5 个基本步骤加以描述。 1、发现他的邻接点,并知道其网络的地址。 2、测量到各邻接点的延迟或开销。 3、构造一个分组,分组中包含所有他刚刚收到的信息。 4、将这个分组发送给其他的路由器。 5、计算出到每一个其他路由器的最短路径。例如,每个路由器运行 Dijkstra 算法就可以找从它到每一个其他路由器的最短路径。 三.程序流程图 创建并初始化网络拓扑 图 把拓扑图中的邻接矩阵 保存到文件中 使用迪杰斯特拉算法 打印得到的最短路径表 向 Route.txt 写数据
四.系统结构 手动输入拓扑图节点数目,输入路径权值,然后运用算法查找最短路径。然后可以生 成存储拓扑图和路由表的 txt 文档。 拓扑图的邻接矩阵 0 1 3 7 1 0 1 111 3 1 0 2 7 111 2 0 注: 111 表示无穷大 五.关键代码设计 拓扑图用邻接矩阵方式表示,手动输入。采用迪杰斯特拉算法 迪杰斯特拉算法 1 int v0; //定义源节点 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 bool * visit=new bool [vexnum];//已经确定最短路径的节点的集合 cout<<"请输入起始节点:"; cin>>v0; cout<
26 27 28 29 30 31 32 33 34 35 36 37 min=RL[j]; } visit[v]=TRUE; //离 v0 顶点最近的 v 加入到 s 集 for(int k=0;k"); outfile<");//
六.实现界面和功能以及屏幕截图 七.调试过程中遇到的问题和解决的方法 拓扑图中两个节点之间没有连线不是用 0 来表示,而是用无限大来表示。 八.总结(程序中待解决的问题及改进方向以及心得体会等,还可指出今后进 一步进行研究的展望与设想) 完成这个课程设计,我再一次熟悉了路由选择的最短路径算法,迪杰斯特拉算法。此 算法的优点是:比距离矢量算法收敛速度快,没有路由环路。缺点是:对 CPU 和内存要求 高,占用网络资源。当网络中的路由较多时,每个路由计算最短路径的时间将大大增加, 从而收敛变慢。今后可以尝试用其他算法来选择路径,也可以尝试用可视化界面来实现。
分享到:
收藏