ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:141.41KB ,
资源ID:15128622      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15128622.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(RIP协议设计实现软件详细设计说明书.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

RIP协议设计实现软件详细设计说明书.docx

1、RIP协议设计实现软件详细设计说明书案卷号日期2014/7/4RIP协议设计软件详细设计说明书 作 者: 完成日期: 2014年7月3日 签 收 人: 签收日期: 修改情况记录:版本号修改批准人修改人安装日期签收人 目录 1 引言 21.1 编写目的 21.2 背景 21.3 定义 21.4 参考资料 22 程序系统的结构 23 程序1(标识符)设计说明 23.1 程序描述 23.2 功能 23.3 性能 23.4 输入项 23.5 输出项 23.6 算法 23.7 流程逻辑 23.8 接口 23.9 存储分配 23.10 注释设计 23.11 限制条件 23.12 测试计划 23.13 尚未

2、解决的问题 24 程序2(标识符)设计说明 21 引言1.1 编写目的了解RIP协议的原理和应用以及其实现机制,通过距离矢量算法来实现最短传输路径的路由选择。通过本次课程设计,可以对路由表的建立和路由信息的更新等有更直观和清晰的认识。适合于熟悉C+语言的人和开发改程序的编程人员和设计人员阅读。1.2 背景a 系统名称:RIP协议设计;b 项目提出者:冯健c. 项目开发者:石东梅d. 项目使用者:相关用户。1.3 定义 水平分割(splithorizon)水平分割保证路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它。这是保证不产生路由循环的最基本措施。毒性逆转(poison

3、reverse)当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去。这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何环路。触发更新(triggerupdate)当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期。同样,当一个路由器刚启动RIP时,它广播请求报文。收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。这样,网络拓扑的变化会最快地在网络上传播开,减少了路由循环产生的可能性。抑制计时(hold downtimer)一条路由信息无效之后,一段时间内

4、这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新。如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效。这个有效的信息往往是不正确的,抑制计时避免了这个问题,且当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性。D-V算(DISTANCE-VECTOR)距离矢量(简称D-V)算法,周期性地将路由表信息的拷贝在路由器之间传送。当网络拓扑变化时,也会将更新信息及时传送给路由器。每一个路由器只能接收到网络中相邻路由器的路由表,通过增加一个距离矢量数(例如一个跳数)来增大距离矢量,然后将更新的路由表信息再传送给相邻路由器。这种逐步过

5、程发生在相邻路由器之间。1.4 参考资料a.谢希仁,计算机网络(第五版).电子工业出版社,2008b.闵应骅,计算机网络路由研究综述J;计算机学报;2003年06期c.苏湘玉,路由信息协议及重发布技术研究与实现;中国人民解放军国防科学技术大学;2002年d.RFC1058;RFC1388;RFC24532 程序系统的结构3 程序1(标识符)设计说明从本章开始,逐个地给出各个层次中的每个程序的设计考虑。以下给出的提纲是针对一般情况的。对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。3.1

6、程序描述a.常驻程序模块start_rip_daemon():rip的守护程序,调用gen_request_all(),broadcast_rip_packet(), pthread_create(),pthread_join()等函数,完成rip程序的主要功能部分b.非常驻程序模块 send_rip_packet_to():使用数据报式套接字发送rip包到目的地址。可重入,顺序处理 receive_rip_packet():接收rip包检查RIP包,并判断处理方式。可重入,顺序处理 handle_request():处理一个输入请求。可重入,顺序处理 handle_response():处理

7、响应并更新路由表。可重入,顺序处理 update_routing_table():更新路由表可。重入timer_routine():rip路由定时器。可重入init_all():对获得的本地IP、RIP相应包、初始路由表进行初始化,并发处理3.2 功能该程序主要有以下功能:a. 初始化获得的本地IP、对RIP报文、路由表进行初始化b.发送报文将报文从本地序转化为网络序,使用数据报式套接字发送到目的地址c.接收报文将报文从网络序转换为本地序,并检查rip包是否有误,无误的话根据命令字节判断接下来要进行请求处理或是响应处理d.处理一个请求报文收到rip消息,判断数据字节是否为空,不为空则开始处理。

8、处理分为整张路由表的请求响应,或者部分路由条目的请求处理。完成处理后将报文发出,做出响应e.处理响应收到一个响应报文后,进行相应的路由处理。然后重置rip包为响应报文,发出rip包并准备更新路由表f.更新路由表对于要删除的表项,若在垃圾删除超时时间内,则将相应条目置为无效,然后进行删除,否则增加删除表项,等待下次删除。如果有新的表项,则插入列表添加路由条目,由此更新路由信息g.路由定时器在广播时间间隔内则向相邻路由广播rip报文,并重置rip包为响应报文。h.广播利用UDP在特定端口(520)广播路由信息给相邻路由,如果报文发送错误则返回错误信息。3.3 性能a.过于简单,以跳数为依据计算度量

9、值,经常得出非最优路由。b.适用范围:度量值以16为限,适用于较小型网络,诸如校园网。 c.时间特性性:更新计时器30秒,无效计时器180秒和刷新计时器240秒。d.安全性:接受来自任何设备的路由更新。无密码验证机制,默认接受任何地方任何设备的路由更行。不能防止恶意的rip欺骗。e.收敛性差,时间经常大于5分钟。f.消耗带宽很大。完整的复制路由表,把自己的路由表复制给所有邻居,尤其在低速广域网链路上更以显式的全量更新g.不支持无类ip地址和VLSM。3.4 输入项本程序在设计过程中并未用到输入项。3.5 输出项 a.输出rip消息:输出rip消息的题目及内容b.输出输出rip包:包含命令类型、

10、版本号、当前路由条目、IP地址以及跳数 c.输出路由表:包含输出当前路由信息,包括目的地址,下一条IP地址以及跳数3.6 算法D-V算法距离矢量(DISTANCE-VECTOR,简称D-V)算法(也称BELLMAN-FORD 算法)周期性地将路由表信息的拷贝在路由器之间传送。当网络拓扑变化时,也会将更新信息及时传送给路由器。每一个路由器只能接收到网络中相邻路由器的路由表,就通过增加一个距离矢量数(例如一个跳数)来增大距离矢量,然后将更新的路由表信息再传送给相邻路由器。这种逐步过程发生在相邻路由器之间。距离矢量算法的数学算法如下:我们用D(i,j)来表示从实体i到j的最佳路由的Metric,i、

11、j可以是系统中的任意一对实体,用d(i,j)来表示单个跳数的花费,也就是从i直接到j的花费,如果i与j不是直接相邻的,则d(i,j)为无穷大。这样任意两个实体间的最佳Metric可以表示如下:D(i,j)0 对所有的i: D(i,j)min D(i,j)d(i,k) i不等于k时由于我们把非相邻两实体间的d(i,j)定义为无穷大,当表达式中k不是i的相邻主机或路由器时,D(i,j)永远不可能为最小,故我们也可以把k限定为与i相邻。由此我们可以得出一个基于这个数学模型的计算Metric的简单算法:实体i接收它的邻居们k发送给它的到目标主机j的距离评价,并加上d(i,j),在这里是通过i,k之间网

12、络所需的cost 值,接下来i比较来自所需邻居的信息,并选择其中最小的。可以证明,在拓扑结构不变的情况下该算法在有限时间内收敛于正确的D(i,j)。距离矢量算法通过上述方法累加网络距离,并维护网络拓扑信息数据库。使用这种算法,路由器并不能知道整个网络的确切拓扑结构。3.7 流程逻辑3.8 接口3.9 存储分配a. int型#define RIP_VERSION 1 rip版本号1字节#define RIP_REQUEST 1 rip命令类型为request 1字节#define RIP_RESPONSE 2 rip命令类型为response 1字节#define RIP_INFINITY 16

13、 最大跳数16#define RIP_PACKET_HEAD 4 rip包首部占4字节#define ROUTE_MAX_ENTRY 256 路由最大条目256字节#define LOCAL_ROUTE_ENTRY 10 本地路由条目10条#define ROUTE_VALID 1 路由有效则置为1 占一字节#define ROUTE_UNVALID 0 路由无效则置为0 占一字节#define RIP_CHECK_OK 1 rip包检查无误#define RIP_CHECK_FAIL 0 rip包检查有误#define BROADCAST_INTERVAL 10 广播间隔10s#define

14、 CLOCK_TIMEOUT 15 块超时15s#define GARBAGE_REMOVE_TIMEOUT 25 垃圾删除超时时间25sb. structstruct rip_entry rip路由条目(可重复)struct rip_packet rip包格式struct route_entry 路由条目c. char型 char * local_ipLOCAL_ROUTE_ENTRY 字符型数组储存本地路由条目3.10 注释设计说明准备在本程序中安排的注释,如:a 加在模块首部的注释;b 加在各分枝点处的注释;c 对各变量的功能、范围、缺省条件等所加的注释;d 对使用的逻辑所加的注释等等。

15、3.11 限制条件a. 本程序在linux环境下开发,在其他环境下运行可能会产生错误。b. 本RIP协议最大跳数为15,16就不可达,所以只适用于较小型网络的选路,且内部网关协议3.12 测试计划测试的步骤包括模块测试、子系统测试、系统测试、验收测试(用户测试)和平行运行(新老系统一起运行)。 本软件采用单元测试,着重测试点主要包括五个方面: a模块接口:参数的数目、次序、属性或单位系统与变元是否一致;是否修改了只作输入用的变元:全局变量的定义和用法在各个模块中是否一致。 b局部数据结构:仔细设计测试方案,以便发现局部数据说明、初始化、默认值等方面的错误。 c重要的执行通路:设计测试方案硬盘内过来发现由于错误的计算、不正确的比较或不适当的数据流而造成的错误。 d出错处理同路:要能遇见出错误的条件,并且设置适当的处理错误的通路。 e边界条件:软件常常在它的边界上失效,当我们使用刚好小于、刚好等于和刚好大于最大值或最小值的数据结构、控制量和数据值得测试方案。3.13 尚未解决的问题a. 只实现了获取本地路由更新路由的功能能,未能实现从网络上获取数据包更新路由的功能。b.由于是在linux环境下开发,受本身环境的影响,很难联通网络是两台主机互通。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2