SPF算法Word格式.docx
- 文档编号:17357120
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:15
- 大小:323.36KB
SPF算法Word格式.docx
《SPF算法Word格式.docx》由会员分享,可在线阅读,更多相关《SPF算法Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
网络工程班级:
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就进行应答。
实验结束,发现自己做这个试验并没有想象的那么轻松,本以为会是一个很简单的实验,但是发现其实实现起来虽然不难,但是做到对每个包都清晰的理解却很难,平时应该多动手这样才能够切身地体会到知识点。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SPF 算法