OSPF路由协议实验设计报告.docx
《OSPF路由协议实验设计报告.docx》由会员分享,可在线阅读,更多相关《OSPF路由协议实验设计报告.docx(28页珍藏版)》请在冰点文库上搜索。
OSPF路由协议实验设计报告
OSPF路由协议实验设计报告
20014010-02陈果
设计目标
设计一个关于OSPF路由协议的实验,要求采用如下的拓扑:
单区域
多区域
设计要求
1.设计实验指导书,要求包括:
实验目的、预备知识、实验环境、实验原理、实验方法、实验步骤、思考题。
2.设计实验记录的内容和格式。
3.根据指导书中设计的实验方法和步骤完成实验,记录实验数据,并回答指导书中设计的思考题。
4.分析实验数据,解释实验现象,总结实验结果。
5.完成设计报告。
设计方法
1.以小组为单位进行课程设计。
2.小组成员共同设计一份实验指导书,协同完成本小组的实验内容。
3.小组成员独立完成课程设计报告。
设计安排
设计时间为两周,具体安排如下:
第一周——设计并完成实验指导书,收集实验所需的路由器配置命令
周一:
了解设计内容、要求和环境,选举组长。
周二:
搜集相关材料,讨论、分析实验原理、方法和步骤。
周三:
完成实验指导书,分析实验所需环境、设备配置内容。
周四:
与指导老师讨论和修改实验指导书、实验环境和实验设备的配置内容。
周五:
完成实验指导书,完成实验准备工作。
第二周——实现并验证所设计的实验,完成设计报告,进行答辩
周一~周三:
在指导老师和组长的组织下完成实验内容,记录实验数据和实验现象。
周四:
分析设计过程和实验过程,完成并提交设计报告。
周五:
答辩。
设计过程
确定目标
实验环境是一个相对简单的小规模网络,且网络的拓扑比较简单(实际上就是线型拓扑),权衡各方面的因素,我们确定了三条实验目的:
1、基本的OSPF配置;2、分别在单区域与多区域中观察LSA的扩散过程;3、观察OSPF是如何应对链路状态发生改变的情况的。
另外有一个可选的实验目的,即截获实际的OSPF报文并对其进行解码。
后来的实验证明,在现有的实验条件下是可以完成以上实验目的的。
配置过程
实验环境中有5台CISCO2600路由器,运行的操作系统是IOS12.1。
在配置过程中我们曾经遇到了以下几个问题:
1、超级终端的速率设置不当,导致输出乱码。
解决方法是指定速率为9600bps。
另外,通过超级终端的捕获功能将输出导入到文本文件中,非常有利于实验数据的采集与分析。
2、对IOS的模式不是很熟悉,因而常常出现某些特定命令无法执行的情况。
3、以前保存在路由器中的配置文件没有清除,因而干扰了本次实验的配置。
解决方法是在特权模式下输入:
Router#erase
然后重新启动路由器:
Router#reload
4、在配置路由器串口的过程中忘记了指定时钟频率,导致串口的链路层协议不能启用。
解决方法是在串口的DCE端指定时钟频率:
Router(config-if)#clockrate72000
5、没有指定RID,即没有创建Loopback接口。
结果导致了在此后的实验过程中,如果某个接口的IP地址恰恰被选择成为RID,当我们手工将其shutdown之后,就会导致路由器的RID改变,从而引起链路状态数据库中的信息标识发生混乱。
解决办法是为每台路由器创建Loopback接口。
在我们的实验中,A、B、C、D、E的Loopback地址分别是1.1.1.1、1.1.1.2、1.1.1.3、1.1.1.4、1.1.1.5。
另外,对于OSPF数据包的截取,因为无法在串口上进行侦听,我们选择了A与C之间的以太网线路。
将采用交叉双绞线连接更换成采用集线器连接,这样就可以通过PC的以太网卡来捕获数据。
配置路由器E所用到的命令如下:
接口标识:
Fa0/0接口类型:
以太网
Router(config)#interfacefastethernet0/0
Router(config-if)#ipaddress192.168.248.1255.255.255.0
Router(config-if)#noshutdown
观察此接口状态的命令:
Router>showinterfacefastethernet0/0
显示结果表明此接口已经启用:
FastEthernet0/0isup,lineprotocolisup
Internetaddressis192.168.248.1/24
接口标识:
S0/0接口类型:
串口
Router(config)#interfaceserial0/0
Router(config-if)#ipaddress192.168.240.2255.255.255.252
Router(config-if)#clockrate72000
Router(config-if)#noshutdown
观察此接口状态的命令:
Router>showinterfaceserial0/0
显示结果表明此接口已经启用:
Serial0/0isup,lineprotocolisup
Internetaddressis192.168.240.2/30
配置Loopback接口:
Router(config)#interfaceloopback0
Router(config-if)#ipaddress1.1.1.5255.255.255.0
单区域测试
在实验中,我们采用debug命令来观察各路由器之间的信息交互过程。
我们发现Router#debugipospfadj命令比Router#debugipospfevents命令更有效,因为它能提供更详细的信息。
但是,debug命令会持续不断的刷屏,干扰正常的操作过程(可以通过undall来结束debug进程),而实际上,LSA的传播过程可以通过链路状态数据库和路由表来观察,因而我们没有将debug命令写入实验指导书中。
打开debugipospfadj 命令后,可以观察出两台路由器从发现邻居到建立邻接关系的过程。
以路由器E为例:
打开debug命令:
Router#debugipospfadj
OSPFadjacencyeventsdebuggingison
启动ospf进程:
Router(config)#routerospf1
配置各个网络接口所在的区域(单一区域):
Router(config-router)#network192.168.248.10.0.0.255area0
Router(config-router)#network192.168.240.20.0.0.3area0
以太网接口所产生的信息:
00:
29:
52:
OSPF:
InterfaceFastEthernet0/0goingUp
00:
29:
52:
OSPF:
BuildrouterLSAforarea0,routerID1.1.1.5,seq0x80000001
00:
30:
32:
OSPF:
endofWaitoninterfaceFastEthernet0/0
00:
30:
32:
OSPF:
DR/BDRelectiononFastEthernet0/0
00:
30:
32:
OSPF:
ElectBDR1.1.1.5
00:
30:
32:
OSPF:
ElectDR1.1.1.5
00:
30:
32:
OSPF:
ElectBDR0.0.0.0
00:
30:
32:
OSPF:
ElectDR1.1.1.5
00:
30:
32:
DR:
1.1.1.5(Id)BDR:
none
00:
30:
32:
OSPF:
BuildnetworkLSAforFastEthernet0/0,routerID192.168.248.1
00:
30:
32:
OSPF:
NofullnbrstobuildNetLsaforinterfaceFastEthernet0/0
以上信息反映了在以太网接口产生LSA,选举指定路由器和备份路由器的过程。
由于路由器E所在的以太网只有一台路由器(它本身),因而其结果就是DR和BDR都为1.1.1.5。
串行接口所产生的信息:
00:
31:
06:
OSPF:
InterfaceSerial0/0goingUp
00:
31:
07:
OSPF:
BuildrouterLSAforarea0,routerID1.1.1.5,seq0x80000002
00:
31:
47:
OSPF:
Rcvhellofrom1.1.1.4area0fromSerial0/0192.168.240.1
00:
31:
47:
OSPF:
Endofhelloprocessing
00:
31:
56:
%SYS-5-CONFIG_I:
Configuredfromconsolebyconsole
00:
31:
56:
OSPF:
RcvDBDfrom1.1.1.4onSerial0/0seq0x1DCFopt0x2flag0x7len32mtu1500stateINIT
00:
31:
56:
OSPF:
2WayCommunicationto1.1.1.4onSerial0/0,state2WAY
00:
31:
56:
OSPF:
SendDBDto1.1.1.4onSerial0/0seq0xE5Eopt0x2flag0x7len32
00:
31:
56:
OSPF:
FirstDBDandwearenotSLAVE
00:
31:
56:
OSPF:
RcvDBDfrom1.1.1.4onSerial0/0seq0xE5Eopt0x2flag0x2len52mtu1500stateEXSTART
00:
31:
56:
OSPF:
NdBRNegotiationDone.WearetheMASTER
00:
31:
56:
OSPF:
SendDBDto1.1.1.4onSerial0/0seq0xE5Fopt0x2flag
0x3len52
00:
31:
56:
OSPF:
Databaserequestto1.1.1.4
00:
31:
56:
OSPF:
sentLSREQpacketto1.1.1.4,length12
00:
31:
56:
OSPF:
RcvDBDfrom1.1.1.4onSerial0/0seq0xE5Fopt0x2flag0x0len32mtu1500stateEXCHANGE
00:
31:
56:
OSPF:
SendDBDto1.1.1.4onSerial0/0seq0xE60opt0x2flag0x1len32
00:
31:
56:
OSPF:
RcvDBDfrom1.1.1.4onSerial0/0seq0xE60opt0x2flag0x0len32mtu1500stateEXCHANGE
00:
31:
56:
OSPF:
ExchangeDonewith1.1.1.4onSerial0/0
00:
31:
56:
OSPF:
Synchronizedwith1.1.1.4onSerial0/0,stateFULL
00:
31:
57:
OSPF:
BuildrouterLSAforarea0,routerID192.168.248.1,seq0x80000003
00:
31:
57:
OSPF:
Rcvhellofrom1.1.1.4area0fromSerial0/0192.168.240.1
00:
31:
57:
OSPF:
Endofhelloprocessing
00:
32:
07:
OSPF:
Rcvhellofrom1.1.1.4area0fromSerial0/0192.168.240.1
00:
32:
07:
OSPF:
Endofhelloprocessing
00:
32:
17:
OSPF:
Rcvhellofrom1.1.1.4area0fromSerial0/0192.168.240.1
00:
32:
17:
OSPF:
Endofhelloprocessing
……
……
此后收到的都是保持邻接状态的Hello报文。
以上信息反映了路由器E和路由器D发现对方并形成邻接关系的过程:
首先通过Hello报文确认对方的存在,然后进行协商并指定主从路由器,再发送各自的链路状态信息,更新数据库,最后通过每隔10秒钟发送一次的hello报文维持两台路由器的联系。
显示此时的OSPF信息:
Router#showipospf
RoutingProcess"ospf1"withID1.1.1.5
SupportsonlysingleTOS(TOS0)routes
SPFscheduledelay5secs,HoldtimebetweentwoSPFs10secs
MinimumLSAinterval5secs.MinimumLSAarrival1secs
NumberofexternalLSA0.ChecksumSum0x0
NumberofDCbitlessexternalLSA0
NumberofDoNotAgeexternalLSA0
Numberofareasinthisrouteris0.0normal0stub0nssa
Externalfloodlistlength0
AreaBACKBONE(0)
Numberofinterfacesinthisareais2
Areahasnoauthentication
SPFalgorithmexecuted5times
Arearangesare
NumberofLSA2.ChecksumSum0x105F1
NumberofDCbitlessLSA0
NumberofindicationLSA0
NumberofDoNotAgeLSA0
Floodlistlength0
从以上信息可以看出,在这台路由器上,为了防止网络状态改变频繁时占用大量CPU时间,将SPF算法的间隔设置为10秒钟。
同时还可以看到,至OSPF1进程运行以来,SPF算法一共执行了5次。
显示此时的邻居路由器:
Router#showipospfneighbor
NeighborIDPriStateDeadTimeAddressInterface
1.1.1.41FULL/-00:
00:
37192.168.240.1Serial0/0
从这里也可以看出,路由器E已经发现了与它串口相连的邻居路由器1.1.1.4。
显示链路状态数据库:
Router#showipospfdatabase
OSPFRouterwithID(10.1.1.5)(ProcessID1)
RouterLinkStates(Area0)
LinkIDADVRouterAgeSeq#ChecksumLinkcount
1.1.1.11.1.1.11530x800000050xEECA3
1.1.1.21.1.1.27300x800000030x1E13
1.1.1.31.1.1.31510x800000050x5E133
1.1.1.41.1.1.41580x800000050xBFD64
1.1.1.51.1.1.57660x800000020xB6FC3
NetLinkStates(Area0)
LinkIDADVRouterAgeSeq#Checksum
1.1.1.11.1.1.11530x800000010x219E
对比其他各路由器可以发现,所有路由器上的链路状态数据库是一致的。
这正是单区域下OSPF的特征。
显示路由表:
Router#showiproute
192.168.72.0/30issubnetted,1subnets
O192.168.72.0[110/1628]via192.168.240.1,00:
01:
03,Serial0/0
192.168.224.0/30issubnetted,1subnets
O192.168.224.0[110/845]via192.168.240.1,00:
01:
03,Serial0/0
192.168.240.0/30issubnetted,1subnets
C192.168.240.0isdirectlyconnected,Serial0/0
192.168.64.0/30issubnetted,1subnets
O192.168.64.0[110/1627]via192.168.240.1,00:
01:
03,Serial0/0
C192.168.248.0/24isdirectlyconnected,FastEthernet0/0
O192.168.1.0/24[110/846]via192.168.240.1,00:
01:
04,Serial0/0
以上的路由表是通过链路状态数据库通过SPF算法得出,与实际的网络情况完全符合。
几乎在相同时刻,其他的路由器也得到了正确的路由表,可见OSPF在很短的时间内就已经快速收敛了。
在192.168.248.2上进行连通性测试:
C:
\DocumentsandSettings\User>ping192.168.72.2
Pinging192.168.72.2with32bytesofdata:
Replyfrom192.168.72.2:
bytes=32time=39msTTL=123
Replyfrom192.168.72.2:
bytes=32time=32msTTL=123
Replyfrom192.168.72.2:
bytes=32time=32msTTL=123
Replyfrom192.168.72.2:
bytes=32time=32msTTL=123
Pingstatisticsfor192.168.72.2:
Packets:
Sent=4,Received=4,Lost=0(0%loss),
Approximateroundtriptimesinmilli-seconds:
Minimum=32ms,Maximum=39ms,Average=33ms
路由测试:
C:
\DocumentsandSettings\User>tracert192.168.72.2
Tracingrouteto192.168.72.2overamaximumof30hops
1<1ms<1ms<1ms192.168.248.1
219ms19ms19ms192.168.240.1
321ms20ms20ms192.168.224.1
420ms20ms20ms192.168.1.2
540ms39ms39ms192.168.64.2
649ms47ms47ms192.168.72.2
Tracecomplete.
显示整个网络通信正常。
然后将D的S0/0端口断开,观察E的链路状态数据库,发现其表项并未减少:
RouterLinkStates(Area0)
LinkIDADVRouterAgeSeq#ChecksumLinkcount
1.1.1.11.1.1.113960x800000040xDDE13
1.1.1.21.1.1.217980x800000030xFEE13
1.1.1.31.1.1.313960x800000050x1E743
1.1.1.41.1.1.42820x800000060xFFD92
1.1.1.51.1.1.52800x800000030xF9CD3
NetLinkStates(Area0)
LinkIDADVRouterAgeSeq#Checksum
1.1.1.11.1.1.113970x800000010x7BB1
但是注意到被断开的链路所对应的年龄字段在不断增大(粗体部分)。
观察E的路由表,发现已经更新了路由信息。
后来发现,在链路断开的时候,E的路由信息就已经立即更新了,只不过被断开的链路的信息仍然保留在链路状态数据库中。
因而观察链路状态改变有三种途径:
debug命令的输出、链路状态数据库的age字段以及路由表。
考虑到debug命令容易干扰正常的实验,因而在设计实验指导书的时候采用了后两种方法。
多区域测试
多区域的测试过程与单区域的大同小异。
需要注意的是,如果之前曾经配置了单区域的OSPF进程,那么在配置多区域的OSPF之前一定要将以前的配置清除掉,否则会对多区域的配置产生干扰。
实验中我们采用的是用erase命令清除所有配置,然后重新启动路由器。
后来我们发现clear命令可以清除一个OSPF进程,而不会对路由器的接口配置产生影响。
在路由器E上配置多区域OSPF的过程如下:
启动OSPF进程:
Router(config)#routerospf1
配置区域:
Router(config-router)#network192.168.248.10.0.0.255area2
Router(config-router)#network192.168.240.20.0.0.3area2
在实验中我们发现,虽然配置了多区域,但是任何一台路由器的链路发生改变之后,所有的路由器都可以感知到变化,LSA的扩散过程与单区域的OSPF并没有什么不同。
后来才知道路由器在默认状态下是不进行链路聚合的,必须手工进行链路聚合。
在边界路由器进行链路聚合的命令如下(以路由器C为例):
Router(config-router)#area2range192.168.224.0255.255.224.0
进行链路聚合之后,路由器E的链路状态数据库如下:
OSPFRouterwithID(1.1.1.5)(ProcessID1)
RouterLinkStates(Area2)
Link