SPF算法.docx

上传人:b****6 文档编号:4431742 上传时间:2022-12-01 格式:DOCX 页数:15 大小:323.36KB
下载 相关 举报
SPF算法.docx_第1页
第1页 / 共15页
SPF算法.docx_第2页
第2页 / 共15页
SPF算法.docx_第3页
第3页 / 共15页
SPF算法.docx_第4页
第4页 / 共15页
SPF算法.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

SPF算法.docx

《SPF算法.docx》由会员分享,可在线阅读,更多相关《SPF算法.docx(15页珍藏版)》请在冰豆网上搜索。

SPF算法.docx

SPF算法

南华大学

计算机科学与技术学院

实验报告

(2016春季学年度)

课程名称网络设备

 

实验名称OSPF协议原理

 

姓名:

谢华巧学号:

20134360201

专业:

网络工程班级:

02班

地点:

8教教师:

夏石莹

 

一、实验目的:

通过实验对SPF算法原理、OSPF协议原理进行深刻的理解。

二、实验内容

SPF算法原理

SPF是ShortPathFirst的缩写即最短路径优先,也称为Dijkstra算法,可以计算从某结点(如源结点u)到网络中其他所有结点的最低费用路径树。

Dijkstra算法是迭代算法,其性质是经过算法的第k次迭代后,可知道所有目的结点的最低费用路径,这些路径形成了一棵生成树。

算法原理:

定义下列记号。

D(v):

根据算法进行本次迭代,从源结点u到目的结点v的最低费用路径的费用。

p(v):

沿着当前最低费用路径从源结点到目的结点v的前一结点(v的邻居)的路径。

N’:

结点子集;如果从源结点到目的结点v的最低费用路径已知,则v在N’中。

该全局路由选择由一个初始化步骤和其后的循环组成。

循环执行的次数与网络中结点的个数相同。

在算法结束时,该算法会计算从源结点u到网络中其他所有结点的最短路径。

1.初始化

2.N’={u}

3.for所有结点v

4.ifv是u的邻居

5.thenD(v)=c(u,v);

6.elseD(v)=无穷大;

7.Loop

8.找到不在N’中的w使D(w)为最小;

9.将w加进N’中;

10.对于每个不在N’中的邻居v更新D(v);

11.D(v)=min(D(v)),D(w)+c(w,v));

12./*v的新的费用,或者是过去的费用,或者是到w的已知最低路径费用加上从w到v的费用*/

13.UntilN’=N;

 

OSPF协议原理

OSPF是openshortestpathfirst的缩写,即开放式最短路径优先,它是一种广泛应用于因特网AS内部的路由选择协议。

作为一种路由选择协议,OSPF用于将路由选择信息传递给组织网络中的所有路由器。

作为一种链路状态的路由协议,OSPF将链路状态广播包,LSA(LinkStateAdvertisement)传送给在某一区域内的路由器,这一点与距离矢量路由协议不同。

链路状态路由协议只在网络拓扑图发生变化以后产生路由更新。

当链路状态发生变化以后,检测到变化的设备创建LSA,更新它自己的LSDB(LinkStateDataBase,链路状态数据库),接着再转发LSA给其他路由设备。

这种LSA的洪泛保证了所有路由设备更新自己的路由表之前更新它自己的LSDB。

LSDB通过使用Dijkstra算法(ShortPathFirst,SPF)来计算到达目标网络的最佳路径,建立一条SPF树,最佳路径从SPF树里选出来,被放进路由表里。

OSPF和IS-IS协议被归类到链路状态路由协议中。

链路状态路由协议在一个特定的区域从邻居处收集网络信息,一旦路由信息被收集后,每个路由器开始通过使用Dijkstra算法独立计算到达目标网络的最佳路径。

下面是一张OSPF链路状态算法的路由计算过程:

1、建立路由器的邻居关系;

2、进行必要的DR/BDR选举;

3、链路状态数据库的同步;

4、产生路由表;

5、维护路由信息。

网络拓扑图:

 

R0的配置:

1)、可以看到我设置了一个以太网口和一个串口,一定要记住设置完之后开启端口。

2)、OSPF协议配置:

将fa0/0端口放在area0;将虚接口放在area1

R1的配置:

1)、以太网口和串口的设置:

2)、OSPF协议的配置:

两个端口都放在area0中

R2的配置:

1)、串口和虚接口的配置

2)、OSPF的配置:

串口放在area0;虚接口放在area2

配置好之后查看链路是否是通了,使用ping命令,可以看到R0和R2相通

查看R0的路由表:

查看R1的路由表:

查看R2的路由表:

抓包分析OSPF协议:

先以图中这个R2发给R1的OSPF包为例看一下,

点开先查看IP包:

可以看出源IP地址是路由器R2的IP地址,然后目的地址是224.0.0.5是组播地址

然后我们先还可以看到R2的第一个hello包:

我们可以看到RP是0,表示该路由器的优先级为0,所以它是不参与DR/BDR选择过程的,因此我们可以看到它的DR和BDR都为0.0.0.0

可以看到很多内容,比如版本号是2,ROUTEID(始发路由器的路由ID)是192.168.4.1,AREAID(始发路由的接口的区域地址)是0等,NETWORKMASK(始发路由的接口地址掩码)是255.255.255.0,HELLOINTERVAL(始发路由的hello时间间隔)为10s以及ROUTEDEADINTERVAL(始发路由的无效路由的时间间隔)为40s,最后我们还可以看到R2告诉了R1它有一个邻居是192.168.2.1.

再抓一个R0的hello包观察:

可以看出它确定了自己的DR为192.168.1.1,BDR为192.168.1.2

为了便于分析,我先断开一下R2路由器的串口再重新连接,看看R2会发出一下什么样的OSPF包:

做完上面动作后抓到个第一个R2发出的OSPF包:

我们可以看到这是发给目的路由是R1

出现了数据库描述包,DBD,指出了版本号为2,RouteID为192.168.4.1;IInitial,表示发送的是第一个DBD包时,设置为1,如果是最后一个DBD包设置为0;MMore,表示发送不是最后一个DBD包时设置为1,如何是最后一个DBD包设置为0;MSMaster/Slave,如果设置为1代表是Master路由器,设置为0代表是Slave路由器;DDSequenceNumberDBD包的序列号由Master路由器设置。

做完上面动作后抓到个第二个R2发出的OSPF包:

我们可以看到除了刚刚已经出现过的IP包和DBD包外,又多了下面的包,

一系列的LSAHeader包,下面我们就对包里面的内容进行统一的解释,不一一介绍了:

LSAAGE其实是LSA的老化时间默认为3600s;LSTYPE为LSA的类型;LINKSTATEID其实就是LSA所描述的内容;ADVERTISINGRIUTER就是始发LSA路由器的ROUTEID;LSSEQUENCENUM是LSA的序列号,识别是否为最新;LSCHECKSUM除AGE字段外的其他信息的校验和;LENGTH包含LSA头部内的LSA长度;

做完上面动作后抓到个第三个R2发出的OSPF包:

出现了LSU包,这里是一个单播的LSU包,实际中还有组播的,路由器R2发出链路状态更新包,进行链路状态更新,更新的内容紧接着后面

LINKSCOUNT为2,表示LSA所描述的路由器链路数量是2

做完上面动作后抓到个第四个R2发出的OSPF包:

出现链路状态的确认包,

四、实验小结:

本实验使用了一个比较简单的拓扑图,但是它包含了虚接口,串口还有以太网口,并且简单地划分了三个区域,area0、area1和area2。

通过本次试验实现了对OSPF协议的一些简单配置。

实验中一直没有抓到LSR包所以没有办法对其进行分析。

通过本次试验对OSPF协议有了一些认识:

首先,hello包它是组播出去的,它其中包含了很多内容,比如RouteID是多少,area的ID是什么,DR(指定路由)和BDR(备份指定路由)是哪个路由器,路由器的优先级以及它的邻居是哪个路由器等等内容;数据库描述包DBD,它的作用是描述路由器的链路状态数据库的容量,并且是形成邻接的第一步;链路状态更新包LSU,当链路发生变化时主路由器会组播发送LSU包来告诉其他路由器链路的最新状态,此时是组播方式,如果某一路由器向主路由器发出链路状态请求包,那么此时主路由器会定向地向该路由器发送LSU包,这时是单播方式,可以看出LSU它是有不同发送方式的;LSA链路状态确认包,当路由器收到链路状态广播数据包时,LSA就进行应答。

实验结束,发现自己做这个试验并没有想象的那么轻松,本以为会是一个很简单的实验,但是发现其实实现起来虽然不难,但是做到对每个包都清晰的理解却很难,平时应该多动手这样才能够切身地体会到知识点。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1