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

上传人:b****1 文档编号:15128622 上传时间:2023-07-01 格式:DOCX 页数:13 大小:141.41KB
下载 相关 举报
RIP协议设计实现软件详细设计说明书.docx_第1页
第1页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第2页
第2页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第3页
第3页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第4页
第4页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第5页
第5页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第6页
第6页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第7页
第7页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第8页
第8页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第9页
第9页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第10页
第10页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第11页
第11页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第12页
第12页 / 共13页
RIP协议设计实现软件详细设计说明书.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

《RIP协议设计实现软件详细设计说明书.docx》由会员分享,可在线阅读,更多相关《RIP协议设计实现软件详细设计说明书.docx(13页珍藏版)》请在冰点文库上搜索。

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

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

案卷号

日期

2014/7/4

 

RIP协议设计

软件详细设计说明书

 

作者:

完成日期:

2014年7月3日

签收人:

签收日期:

修改情况记录:

版本号

修改批准人

修改人

安装日期

签收人

目录

1引言2

1.1编写目的2

1.2背景2

1.3定义2

1.4参考资料2

2程序系统的结构2

3程序1(标识符)设计说明2

3.1程序描述2

3.2功能2

3.3性能2

3.4输入项2

3.5输出项2

3.6算法2

3.7流程逻辑2

3.8接口2

3.9存储分配2

3.10注释设计2

3.11限制条件2

3.12测试计划2

3.13尚未解决的问题2

4程序2(标识符)设计说明2

 

1引言

1.1编写目的

了解RIP协议的原理和应用以及其实现机制,通过距离矢量算法来实现最短传输路径的路由选择。

通过本次课程设计,可以对路由表的建立和路由信息的更新等有更直观和清晰的认识。

适合于熟悉C++语言的人和开发改程序的编程人员和设计人员阅读。

1.2背景

a.系统名称:

RIP协议设计;

b.项目提出者:

冯健

c.项目开发者:

石东梅

d.项目使用者:

相关用户。

1.3定义

水平分割(split horizon)

水平分割保证路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它。

这是保证不产生路由循环的最基本措施。

毒性逆转(poison reverse)

当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去。

这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何环路。

触发更新(trigger update)

当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期。

同样,当一个路由器刚启动RIP时,它广播请求报文。

收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。

这样,网络拓扑的变化会最快地在网络上传播开,减少了路由循环产生的可能性。

抑制计时(holddown timer)

一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新。

如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效。

这个有效的信息往往是不正确的,抑制计时避免了这个问题,且当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性。

D-V算(DISTANCE-VECTOR)

距离矢量(简称D-V)算法,周期性地将路由表信息的拷贝在路由器之间传送。

当网络拓扑变化时,也会将更新信息及时传送给路由器。

每一个路由器只能接收到网络中相邻路由器的路由表,通过增加一个距离矢量数(例如一个跳数)来增大距离矢量,然后将更新的路由表信息再传送给相邻路由器。

这种逐步过程发生在相邻路由器之间。

1.4参考资料

a.谢希仁,《计算机网络(第五版)》.电子工业出版社,2008

b.闵应骅,计算机网络路由研究综述[J];计算机学报;2003年06期

c.苏湘玉,路由信息协议及重发布技术研究与实现;中国人民解放军国防科学技术大学;2002年

d.RFC1058;RFC1388;RFC2453

2程序系统的结构

3程序1(标识符)设计说明

从本章开始,逐个地给出各个层次中的每个程序的设计考虑。

以下给出的提纲是针对一般情况的。

对于一个具体的模块,尤其是层次比较低的模块或子程序,其很多条目的内容往往与它所隶属的上一层模块的对应条目的内容相同,在这种情况下,只要简单地说明这一点即可。

3.1程序描述

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():

处理响应并更新路由表。

可重入,顺序处理

update_routing_table():

更新路由表可。

重入

timer_routine():

rip路由定时器。

可重入

init_all():

对获得的本地IP、RIP相应包、初始路由表进行初始化,并发处理

3.2功能

该程序主要有以下功能:

a.初始化

获得的本地IP、对RIP报文、路由表进行初始化

b.发送报文

将报文从本地序转化为网络序,使用数据报式套接字发送到目的地址

c.接收报文

将报文从网络序转换为本地序,并检查rip包是否有误,无误的话根据命令字节判断接下来要进行请求处理或是响应处理

d.处理一个请求报文

收到rip消息,判断数据字节是否为空,不为空则开始处理。

处理分为整张路由表的请求响应,或者部分路由条目的请求处理。

完成处理后将报文发出,做出响应

e.处理响应

收到一个响应报文后,进行相应的路由处理。

然后重置rip包为响应报文,发出rip包并准备更新路由表

f.更新路由表

对于要删除的表项,若在垃圾删除超时时间内,则将相应条目置为无效,然后进行删除,否则增加删除表项,等待下次删除。

如果有新的表项,则插入列表添加路由条目,由此更新路由信息

g.路由定时器

在广播时间间隔内则向相邻路由广播rip报文,并重置rip包为响应报文。

h.广播

利用UDP在特定端口(520)广播路由信息给相邻路由,如果报文发送错误则返回错误信息。

3.3性能

a.过于简单,以跳数为依据计算度量值,经常得出非最优路由。

b.适用范围:

度量值以16为限,适用于较小型网络,诸如校园网。

c.时间特性性:

更新计时器30秒,无效计时器180秒和刷新计时器240秒。

d.安全性:

接受来自任何设备的路由更新。

无密码验证机制,默认接受任何地方任何设备的路由更行。

不能防止恶意的rip欺骗。

e.收敛性差,时间经常大于5分钟。

f.消耗带宽很大。

完整的复制路由表,把自己的路由表复制给所有邻居,尤其在低速广域网链路上更以显式的全量更新

g.不支持无类ip地址和VLSM

3.4输入项

本程序在设计过程中并未用到输入项。

3.5输出项

a.输出rip消息:

输出rip消息的题目及内容

b.输出输出rip包:

包含命令类型、版本号、当前路由条目、IP地址以及跳数

c.输出路由表:

包含输出当前路由信息,包括目的地址,下一条IP地址以及跳数

3.6算法

D-V算法

距离矢量(DISTANCE-VECTOR,简称D-V)算法(也称BELLMAN-FORD算法)周期性地将路由表信息的拷贝在路由器之间传送。

当网络拓扑变化时,也会将更新信息及时传送给路由器。

每一个路由器只能接收到网络中相邻路由器的路由表,就通过增加一个距离矢量数(例如一个跳数)来增大距离矢量,然后将更新的路由表信息再传送给相邻路由器。

这种逐步过程发生在相邻路由器之间。

距离矢量算法的数学算法如下:

我们用D(i,j)来表示从实体i到j的最佳路由的Metric,i、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之间网络所需的cost值,接下来i比较来自所需邻居的信息,并选择其中最小的。

可以证明,在拓扑结构不变的情况下该算法在有限时间内收敛于正确的D(i,j)。

距离矢量算法通过上述方法累加网络距离,并维护网络拓扑信息数据库。

使用这种算法,路由器并不能知道整个网络的确切拓扑结构。

3.7流程逻辑

3.8接口

3.9存储分配

a.int型

#defineRIP_VERSION1rip版本号1字节

#defineRIP_REQUEST1rip命令类型为request1字节

#defineRIP_RESPONSE2rip命令类型为response1字节

#defineRIP_INFINITY16最大跳数16

#defineRIP_PACKET_HEAD4rip包首部占4字节

#defineROUTE_MAX_ENTRY256路由最大条目256字节

#defineLOCAL_ROUTE_ENTRY10本地路由条目10条

#defineROUTE_VALID1路由有效则置为1占一字节

#defineROUTE_UNVALID0路由无效则置为0占一字节

#defineRIP_CHECK_OK1rip包检查无误

#defineRIP_CHECK_FAIL0rip包检查有误

#defineBROADCAST_INTERVAL10广播间隔10s

#defineCLOCK_TIMEOUT15块超时15s

#defineGARBAGE_REMOVE_TIMEOUT25垃圾删除超时时间25s

b.struct

structrip_entry{}rip路由条目(可重复)

structrip_packet{}rip包格式

structroute_entry{}路由条目

c.char型

char*local_ip[LOCAL_ROUTE_ENTRY]字符型数组储存本地路由条目

3.10注释设计

说明准备在本程序中安排的注释,如:

a.加在模块首部的注释;

b.加在各分枝点处的注释;

c.对各变量的功能、范围、缺省条件等所加的注释;

d.对使用的逻辑所加的注释等等。

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