您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > RIP路由协议原型系统的实现(谢刚)
课程设计报告课程名称:计算机网络设计题目:RIP路由协议原型系统的实现系别:计算机与信息工程学院专业:物联网专业组别:第五组--起止日期:2014年6月8日~2014年6月14日--指导教师:刘进军计算机科学与技术系二○一四年制2组长谢刚学号88班级2012级物联网系别计算机与信息工程学院专业物联网专业组员谢刚指导教师老师刘进军课程设计目的1)进一步理解动态内部网关协议RIP的工作原理。2)学会将所学知识联合运用,如本次RIP协议原型系统的设计即是将网络与数据结构(图)及C编程语言相结合。3)提高团队合作能力,发挥每一名组员的长处。4)体会做一个项目的流程(包括前期的资料收集,系统要求分析,系统实现的语言选择及实现方法的讨论等)。课程设计所需环境1)Windows操作系统平台2)VC++编译环境3)CiscoPacketTracer仿真软件课程设计任务要求1)实现一个RIP路由协议的原型系统2)广播发布本地节点的路由信息3)其它节点接收信息并选择最优路径4)支持最大不超过15跳的特性5)动态支持网络拓扑结构的变化(如增加路由节点)课程设计工作进度计划序号起止日期工作内容分工情况12014年6月8日~2014年6月9日展开思路讨论工作并搜集相关资料参考相关资料独立完成22014年6月9日~2014年6月10日分析课程设计要求,确定目标参考相关资料独立完成32014年6月10日~2014年6月11日设计软件功能模块参考相关资料独立完成42014年6月11日~2014年6月12日编写代码、实现功能模块参考相关资料独立完成52014年6月12日~2014年6月13日系统整合以及测试参考相关资料独立完成62014年6月13日~2014年6月14日完成课程设计文档参考相关资料独立完成教研室审核意见:教研室主任签字:年月日3课程设计任务书目录1.引言……………………………………………………………………………………….42.系统开发分析…………………………………………………………………………….4系统需求分析……………………………………………………………………...4系统设计原理………………………………………………………………………43.系统功能描述与软件模块划分…………………………………………………………..54.系统设计详细…………………………………………………………………………….5程序流程图……………………………………………………………………6程序源代码…………………………………………………………………………75.设计过程关键问题及其解决方法……………………………………………………….10如何实现广播本地路由及更新动态更新路由表………………………………….10如何在网络拓扑结构改变后实现动态更新维护路由表…………………………..116.程序设计结果界面演示……………………………………………………………………11设计结果演示………………………………………………………………………..117.课程设计总结与体会………………………………………………………………………15总结…………………………………………………………………………………..15体会…………………………………………………………………………………..17致谢………………………………………………………………………………………………17参考文献…………………………………………………………………………………………1841.引言RIP(RoutinginformationProtocol,路由信息协议)是应用较早、使用较普遍的内部网关协议(InteriorGatewayProtocol,IGP),适用于小型同类网络的一个自治系统(AS)内的路由信息的传递。RIP协议是基于距离矢量算法(DistanceVectorAlgorithms)的,在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为1~15,数值16表示无穷大。它使用“跳数”,即metric来衡量到达目标地址的路由距离。这种协议的路由器只关心自己周围的世界,只与自己相邻的路由器交换信息,范围限制在15跳(15度)之内,再远,它就不关心了。RIP进程使用UDP的520端口来发送和接收RIP分组。RIP分组每隔30s以广播的形式发送一次,为了防止出现“广播风暴”,其后续的的分组将做随机延时后发送。在RIP中,如果一个路由在180s内未被刷,则相应的距离就被设定成无穷大,并从路由表中删除该表项。RIP应用于OSI网络七层模型的网络层。RIP是一个用于路由器和主机间交换路由信息的距离向量协议,目前最新的版本为v4,也就是RIPv4。2.系统开发分析系统需求分析1.实现一个RIP路由协议的原型系统。2.广播发布本地节点的路由信息。53.其它节点接收信息并选择最优路径。4.支持最大不超过15跳的特性。5.动态支持网络拓扑结构的变化(如增加路由节点)系统设计原理RIP协议是动态路由协议,其运行至路由器中,而路由器是运行路由协议软件的专用硬件,它的主要功能可以分成两部分:路由选择和分组转发。其中路由选择是基础。一个路由器对到来的每一个分组先选择合适的路由,然后才能依据此路由进行正确的转发,本次课程设计就是设计有着广泛的使用范围的动态路由协议RIP协议体统原型。它是距离向量协议中的一种,属于内部网关协议。运行协议的相邻路由器通过彼此之间交换路由信息RIP的距离向量,从而知道网络的连接情况,实现各个网络之间的连通,这也是距离向量名称的由来。(DistanceVector)运行协议的每个路由器都要维护一张自己的路由RIP表,该路由表是相应于与它直接相联和通过路由器相连的网络连接情况而动态变化的。因此协议属于动态路由协RIP议。路由器根据路由表对发给它的包进行转发,从而实现IP路由功能。3.系统功能描述与系统模块划分本设计实现的RIP路由协议的原型系统功能主要包括,一:初始化每个路由器的路由表信息。即在使用者输入网络拓扑结构中的路由节点数及链路数后,系统首先会自动生成每个节点到其相邻路由节点的路由信息,具体包括:目的地址、跳数、下一跳,初始设置相邻节点的跳数为1。二:当路由器的初始路由表建立后,接下来就开始进行邻接节点的路由信息广播,即路由节点将自身的路由表信息广播至其相邻的节点,具体的广播信息是将每一条路由的目的地址不变,跳数加一,吓一跳修改为自身路由器接口的名称进行传送,收到广播信息的路由表对收到的每一条路由信息进行判断,分两大情况::若原来的路由表中没有目的网络N,则将该项添加到路由表中,否则(即在该路由表中有到目的网络N的信息,则观察下一条)此时分两种小情况1:若吓一跳与原路由表项相同,则无条件进行更新。2:若吓一跳与原路由表项不相同,则若收到的路由信息中距离d小于路由表中的距离,则进行更新。(还有对于接受的路由信息跳数=16的信息,则将跳数置为16,表明不可达。)三:动态改变网络拓扑结构,即当因为实际需要,需增设路由节点时,系统会根据增设的路由节点6数、名称、链路数,首先进行新增设节点的路由表信息初始化,而后将该节点的路由信息想邻接节点进行广播,随后整个网络节点向邻接节点进行路由信息广播,这样经过几轮广播后,每一个节点都接收到了新增路由节点的最小路径信息,从而实现了路由表的动态维护与创建。4.系统设计详细4,1程序流程图7开始输入要建立网络的拓扑结构所需路由节点数及链路数各路由节点向邻接节点广播路由信息各节点接收信息便进行路由表的更新建立各节点的初始路由表广播信息内容:目的地址:不变跳数:加1吓一跳:修改为广播该路由信息的路由节点名称若原来的路由表中无到此网络的信息,则添加,否则1:若吓一跳与原路由表项相同,则无条件进行更新。2:若吓一跳与原路由表项不相同,则判断距离d若小于路由表中的距离,则更新。(还有对于接受的路由信息跳数=16的信息,则将跳数置为16)节点路由信息更新完毕,询问是否还需添加新的路由节点否结束是初始化新增路由节点路由表8程序源码因为系统的设计涉及到网络拓扑图的存储,所以本设计采用数据结构中图的存储思想来进行拓扑结构的存储,输出。下面是系统设计的主要代码:首先分别设置了4种类型的结构体,以来表示链路信息、路由表、路由器,网络拓扑图。#include#include#defineMAX_VERTEX_NUM15#defineMAX15#includeiostreamtypedefstructArcCell;[i].t[0]=end;}for(i=0;i;i++)dj=10000;for(k=0;k;k++)dj=1;[j][i].adj=1;exnum;i++){if(compare(s,(*G).vex[i].r)==1)returni;}return-1;}ex[i].t[m].distance!=0;m++);copy((*G).vex[i].t[m].destination,(*G).vex[j].r);(*G).vex[i].t[m].distance=1;copy((*G).vex[i].t[m].nextjump,(*G).vex[i].r);(*G).vex[i].t[m+1]=end;for(n=0;(*G).vex[j].t[n].distance!=0;n++);copy((*G).vex[j].t[n].destination,(*G).vex[i].r);(*G).vex[j].t[n].distance=1;copy((*G).vex[j].t[n].nextjump,(*G).vex[j].r);(*G).vex[j].t[n+1]=end;}exnum;i++)for(j=0;j(*G).vexnum;j++){if((*G).arcs[i][j].adj==1)ex[i].t[k].distance!=0;k++)ex[i].t[k].destination);=(*G).vex[i].t[k].distance+1;if16)=16;copy,(*G).vex[i].r);count=0;9for(h=0;(*G).vex[j].t[h].distance!=0;h++){if(compare,(*G).vex[j].r)==1)ex[j].t[h].destination,==1){count++;if(compare((*G).vex[j].t[h].nextjump,==1)(*G).vex[j].t[h].distance=;elseif((*G).vex[j].t[h].distance{(*G).vex[j].t[h].distance=;copy((*G).vex[j].t[h].nextjump,;}}}if(count==0){copy((*G).vex[j].t[h].destination,;(*G).vex[j].t[h].distance=;copy((*G).vex[j].t[h].nextjump,;(*G).vex[j].t[h+1]=end;}}ex[i].r,(*G).vex[j].r);printG(G);}ex[num+(*G).vexnum].r);(*G).vex[num+(*G).vexnum].t[0]=end;}(*G).vexnum+=nVexNum;(*G).arcnum+=nArcNum;for(k=0;knArcNum;k++)rcs[i][j].adj=1;(*G).arcs[j][i].adj=1;initRoute(G,i,j);}for(i=0;i(*G).vexnum;i++)exnum;j++){if((*G).arcs[i][j].adj!=1)(*G).arcs[i][j].adj=10000;}Exchange(G);}exnum;i++){10printf(\t路\t由\t器%s:\n,(*G).vex[i].r);printf(目
本文标题:RIP路由协议原型系统的实现(谢刚)
链接地址:https://www.777doc.com/doc-7377119 .html