1、SPF算法南华大学计算机科学与技术学院实 验 报 告(2016春季学年度)课程名称 网络设备实验名称 OSPF协议原理姓 名:谢华巧学号:20134360201专 业:网络工程班级: 02班地 点: 8教 教师: 夏石莹一、 实验目的:通过实验对SPF算法原理、OSPF协议原理进行深刻的理解。二、 实验内容SPF算法原理SPF是Short Path First的缩写即最短路径优先,也称为Dijkstra算法,可以计算从某结点(如源结点u)到网络中其他所有结点的最低费用路径树。Dijkstra算法是迭代算法,其性质是经过算法的第k次迭代后,可知道所有目的结点的最低费用路径,这些路径形成了一棵生成
2、树。算法原理:定义下列记号。D(v):根据算法进行本次迭代,从源结点u到目的结点v的最低费用路径的费用。p(v):沿着当前最低费用路径从源结点到目的结点v的前一结点(v的邻居)的路径。N:结点子集;如果从源结点到目的结点v的最低费用路径已知,则v在N中。该全局路由选择由一个初始化步骤和其后的循环组成。循环执行的次数与网络中结点的个数相同。在算法结束时,该算法会计算从源结点u到网络中其他所有结点的最短路径。1.初始化2. N=u3. for所有结点v4. if v是u的邻居5. then D(v)=c(u,v);6. else D(v)=无穷大;7. Loop 8. 找到不在N中的w使D(w)为
3、最小;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. Until N=N;OSPF协议原理OSPF是open shortest path first的缩写,即开放式最短路径优先,它是一种广泛应用于因特网AS内部的路由选择协议。作为一种路由选择协议,OSPF用于将路由选择信息传递给组织网络中的所有路由器。作为一种链路状态的路由协议,OSPF将链路状态广播包,LSA(Link State Advertisement)
4、传送给在某一区域内的路由器,这一点与距离矢量路由协议不同。 链路状态路由协议只在网络拓扑图发生变化以后产生路由更新。当链路状态发生变化以后,检测到变化的设备创建LSA,更新它自己的LSDB(Link State DataBase,链路状态数据库),接着再转发LSA给其他路由设备。这种LSA的洪泛保证了所有路由设备更新自己的路由表之前更新它自己的LSDB。LSDB通过使用Dijkstra算法(Short Path First,SPF)来计算到达目标网络的最佳路径,建立一条SPF树,最佳路径从SPF树里选出来,被放进路由表里。OSPF和IS-IS协议被归类到链路状态路由协议中。链路状态路由协议在一
5、个特定的区域从邻居处收集网络信息,一旦路由信息被收集后,每个路由器开始通过使用Dijkstra算法独立计算到达目标网络的最佳路径。下面是一张OSPF链路状态算法的路由计算过程:1、建立路由器的邻居关系;2、进行必要的DR/BDR选举;3、链路状态数据库的同步;4、产生路由表;5、维护路由信息。网络拓扑图:R0的配置:1)、可以看到我设置了一个以太网口和一个串口,一定要记住设置完之后开启端口。2)、OSPF协议配置:将fa0/0端口放在area 0;将虚接口放在area 1R1的配置:1)、以太网口和串口的设置:2)、OSPF协议的配置:两个端口都放在area 0中R2的配置:1)、串口和虚接口
6、的配置2)、OSPF的配置:串口放在area 0;虚接口放在area 2配置好之后查看链路是否是通了,使用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,ROUTE ID
7、(始发路由器的路由ID) 是192.168.4.1,AREA ID(始发路由的接口的区域地址)是0等,NETWORK MASK(始发路由的接口地址掩码)是255.255.255.0,HELLO INTERVAL(始发路由的hello时间间隔)为10 s以及ROUTE DEAD INTERVAL(始发路由的无效路由的时间间隔)为40 s,最后我们还可以看到R2告诉了R1它有一个邻居是192.168.2.1.再抓一个R0的hello包观察:可以看出它确定了自己的DR为192.168.1.1,BDR为192.168.1.2为了便于分析,我先断开一下R2路由器的串口再重新连接,看看R2会发出一下什么样
8、的OSPF包:做完上面动作后抓到个第一个R2发出的OSPF包:我们可以看到这是发给目的路由是R1出现了数据库描述包,DBD,指出了版本号为2,Route ID为192.168.4.1;I Initial,表示发送的是第一个DBD包时,设置为1,如果是最后一个DBD包设置为0;M More,表示发送不是最后一个DBD包时设置为1,如何是最后一个DBD包设置为0;MS Master/Slave,如果设置为1代表是Master路由器,设置为0代表是Slave路由器;DD Sequence Number DBD包的序列号由Master路由器设置。做完上面动作后抓到个第二个R2发出的OSPF包:我们可以
9、看到除了刚刚已经出现过的IP包和DBD包外,又多了下面的包,一系列的LSA Header包,下面我们就对包里面的内容进行统一的解释,不一一介绍了:LSA AGE其实是LSA的老化时间默认为3600s;LS TYPE为LSA的类型;LINK STATE ID其实就是LSA所描述的内容;ADVERTISING RIUTER就是始发LSA路由器的ROUTE ID;LS SEQUENCE NUM是LSA的序列号,识别是否为最新;LS CHECKSUM除AGE字段外的其他信息的校验和;LENGTH包含LSA头部内的LSA长度;做完上面动作后抓到个第三个R2发出的OSPF包:出现了LSU包,这里是一个单播
10、的LSU包,实际中还有组播的,路由器R2发出链路状态更新包,进行链路状态更新,更新的内容紧接着后面LINKS COUNT为2,表示LSA所描述的路由器链路数量是2做完上面动作后抓到个第四个R2发出的OSPF包:出现链路状态的确认包,四、实验小结:本实验使用了一个比较简单的拓扑图,但是它包含了虚接口,串口还有以太网口,并且简单地划分了三个区域,area 0、area 1和area 2。通过本次试验实现了对OSPF协议的一些简单配置。实验中一直没有抓到LSR包所以没有办法对其进行分析。通过本次试验对OSPF协议有了一些认识:首先,hello包它是组播出去的,它其中包含了很多内容,比如Route I
11、D是多少,area的ID是什么,DR(指定路由)和BDR(备份指定路由)是哪个路由器,路由器的优先级以及它的邻居是哪个路由器等等内容;数据库描述包DBD,它的作用是描述路由器的链路状态数据库的容量,并且是形成邻接的第一步;链路状态更新包LSU,当链路发生变化时主路由器会组播发送LSU包来告诉其他路由器链路的最新状态,此时是组播方式,如果某一路由器向主路由器发出链路状态请求包,那么此时主路由器会定向地向该路由器发送LSU包,这时是单播方式,可以看出LSU它是有不同发送方式的;LSA链路状态确认包,当路由器收到链路状态广播数据包时,LSA就进行应答。实验结束,发现自己做这个试验并没有想象的那么轻松,本以为会是一个很简单的实验,但是发现其实实现起来虽然不难,但是做到对每个包都清晰的理解却很难,平时应该多动手这样才能够切身地体会到知识点。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1