今天和大家讨论一下OSPF在帧中继中的几种网络类型,以下是今天实验的拓扑:
以上拓扑是实验室的实际拓扑,在二层使用帧中继全互联网状结构,IP段为192.168.0.0/24
网段,为了达到我们的实验目的,我们需要手工将拓扑更改为Hub&Spoke,具体做法是不要使用Inverse-arp来自动映射DLCI号,而改为手动映射,以达到只使用红色PVC的目的,下面是实验拓扑:
首先我们把实验环境(帧中继配置)搭建好:选择IP段,建立LOOPBACK接口模拟用户网段命令:R1:
interfaceLoopback0ipaddress1.1.1.1interfaceSerial0
ipaddress192.168.0.1255.255.255.0encapsulationframe-relay
frame-relaymapip192.168.0.2102frame-relaymapip192.168.0.3103frame-relaymapip192.168.0.4104noframe-relayinverse-arp
R2:
interfaceLoopback0ipaddress2.2.2.2interfaceSerial0
ipaddress192.168.0.2255.255.255.0encapsulationframe-relay
frame-relaymapip192.168.0.1201frame-relaymapip192.168.0.3201frame-relaymapip192.168.0.4201noframe-relayinverse-arp
R3:
interfaceLoopback0ipaddress3.3.3.3interfaceSerial0
ipaddress192.168.0.3255.255.255.0encapsulationframe-relay
frame-relaymapip192.168.0.1301frame-relaymapip192.168.0.2301frame-relaymapip192.168.0.4301noframe-relayinverse-arp
R4:
interfaceLoopback0ipaddress4.4.4.4interfaceSerial0
ipaddress192.168.0.4255.255.255.0encapsulationframe-relay
frame-relaymapip192.168.0.1401frame-relaymapip192.168.0.2401frame-relaymapip192.168.0.3401noframe-relayinverse-arp
以下每部分做完都用clearipospfprocess命令重启一下OSPF进程
一:默认模式(NBMA)
由于OSPF在FRAME-RELAY里运行的默认模式是NBMA,所以,在该模式下OSPF是不会以组播方式来建立邻居的,所有邻居都要通过手工指定。在FRAME-RELAY里默认也是不支持转发广播和组播包的。
1、OSPF基本配置---宣告网络R1#
routerospf110
net1.1.1.00.0.0.255a0net192.168.0.00.0.0.255a0R2#
routerospf110
net2.2.2.00.0.0.255a0
net192.168.0.00.0.0.255a0R3#
routerospf110
net3.3.3.00.0.0.255a0net192.168.0.00.0.0.255a0R4#
routerospf110
net4.4.4.00.0.0.255a0net192.168.0.00.0.0.255a0
现在,我们把所有网络都宣告到了OSPF进程中,如果是在BMA网络中,这样做后OSPF就应该可以正常运行了,检查:
R1#showipospfneighbor
我们发现没有任何邻居信息。由于FRAME-RELAY默认是不能转发广播的,所以我们让FRAME-RELAY支持广播:R1(config-if)#
framemapip192.168.0.2102broadcastframemapip192.168.0.3103broadcastframemapip192.168.0.4104broadcastR2(config-if)#
framemapip192.168.0.1201broadcastframemapip192.168.0.3201broadcastframemapip192.168.0.4201broadcastR3(config-if)#
framemapip192.168.0.1301broadcastframemapip192.168.0.2301broadcastframemapip192.168.0.4301broadcastR4(config-if)#
framemapip192.168.0.1401broadcastframemapip192.168.0.2401broadcastframemapip192.168.0.3401broadcast
然后我们再看OSPF的邻居:
R1#showipospfneighbor
邻居依然没有建立,因为OSPF默认在帧中继中是以NBMA运行模式来运行的,在这种模式下它是不会主动发组播HELLO来建立邻居的,要建立邻居,必须用neighbor命令以单播方式来手工建立:
R1(config-router)#neighbor192.168.0.2R1(config-router)#neighbor192.168.0.3R1(config-router)#neighbor192.168.0.4
再检查:
R1#showipospfneighborNeighborIDN/AN/AN/A
Pri000
State
ATTEMPT/DROTHERATTEMPT/DROTHERATTEMPT/DROTHER
DeadTime00:01:4000:01:4100:01:41
Address192.168.0.2192.168.0.3192.168.0.4
InterfaceSerial0Serial0Serial0
现在我们看到所有邻居还没有收敛,在NBMA网络中,有一种特殊的状态,叫ATTEMPT状态,当一台路由器以neighbor手工指定邻居后,它不会立即向邻居发出单播HELLO,而是默认等待一个选举周期(默认120秒)后再向邻居发出HELLO,如果收到对方的回应,则进入2WAY状态,并用HELLO同期来代替选举周期。在NBMA网络中,HELLO周期默认为30秒,死亡间隔默认为120秒,可以通过下面的命令看到:
R1#showipospfinterfaceserial0
R1#showipospfneighborNeighborID2.2.2.23.3.3.34.4.4.4
Pri111
State
FULL/DROTHERFULL/DROTHERFULL/DR
DeadTime00:01:4100:01:4100:01:41
Address192.168.0.2192.168.0.3192.168.0.4
InterfaceSerial0Serial0Serial0
现在邻居可以建立起来了,但是还是会有问题,由于Spoke位置的路由器只能和Hub位置的路由器直接通信,由于路由器不转发Hello包,这样导致R2、R3、R4无法交流Hello(R1不转发它们),所以它们相互是不能知晓对方的存在的,它们只能看到R1,由于每个路由器才R-ID都比R1大,所以它们都认为自己为DR,而R1则认为R4是DR,因为它的R-ID最大。我们可以通过下面的命令证明这个事实:
R1/R2/R3/R4#showipospfneighbor
R1/R2/R3/R4#showipospfinterfaceserial0
现在网络中出现了多个DR,造成了OSPF运行混乱,为了解决该问题,我们要把DR手工固定在Hub位置,这样,所有DR-Other都能和DR建立邻居了,在这种网络中,必须避免BDR的选举,因为如果网络中存在BDR的话,一旦DR失效,则存在于非Hub位置的BDR接管了DR,即使DR恢复正常,也无法从之前的BDR手中抢回DR的地位,所以又会造成其它DR-Other一直停留在2WAY状态。所以,要把所有Spoke位置的路由器的接口优先级改为0,让Hub位置的路由器的接口优先级大于0.R1(config-if)#ipR2(config-if)#ipR3(config-if)#ipR4(config-if)#ip
ospfospfospfospf
prioritypriorityprioritypriority
10000
做完后我们可以看到所有路由器都把R1当做自己的DR了,网络中只存在一个共同的DR,并且没有BDR。
我们看看OSPF的路由表:
R4#shiprouteospf
1.0.0.0/32issubnetted,1subnetsO1.1.1.1[110/65]via192.168.0.1,00:01:05,Serial0
2.0.0.0/32issubnetted,1subnetsO2.2.2.2[110/65]via192.168.0.2,00:01:05,Serial0
3.0.0.0/32issubnetted,1subnetsO3.3.3.3[110/65]via192.168.0.3,00:01:05,Serial0
它们的下一跳都是自己非直连邻居,也就是说它们在互相访问时忽略了R1的中转。
二:点到多点(Point-to-multipoint)
在这种模式下,OSPF以组播发送Hello包来主动发起邻居的建立,并且它们不需要选举DR和BDR,路由器把点到多点链路看成是多条点到点链路的集合,但是和点到点链路不同,它们的Hello间隔是30秒,死亡间隔是120秒。
更改运行模式:
R1/R2/R3/R4#(config-if)#ipospfnetworkpoint-to-multipoint除了注意一定要在二层开启广播外,其它配置和上面实验一样。检查:
R1#showipospfneighborNeighborID2.2.2.23.3.3.34.4.4.4
Pri000
StateFULL/FULL/FULL/
DeadTime00:01:4500:01:3600:01:46
Address192.168.0.2192.168.0.3192.168.0.4
InterfaceSerial0Serial0Serial0
---
能够看到邻居的状态,但是不能看到邻居的角色,因为它们不选举DR和BDR。再看路由表:
R4#showiprouteospf
1.0.0.0/32issubnetted,1subnetsO1.1.1.1[110/65]via192.168.0.1,00:15:34,Serial0
2.0.0.0/32issubnetted,1subnets
OOOOO2.2.2.2[110/129]via192.168.0.1,00:15:34,Serial03.0.0.0/32issubnetted,1subnets
3.3.3.3[110/129]via192.168.0.1,00:15:34,Serial0192.168.0.0/24isvariablysubnetted,4subnets,2masks
192.168.0.1/32[110/64]via192.168.0.1,00:15:34,Serial0192.168.0.2/32[110/128]via192.168.0.1,00:15:34,Serial0192.168.0.3/32[110/128]via192.168.0.1,00:15:34,Serial0
在点到多点模式下,在Spoke上看到的所有非直连网段的下一跳都是Hub和自己相连的接口地址。
三:点到多点非广播(Poing-to-pointNo-Broadcast)
在这种模式下,OSPF不主动发起组播Hello来建立邻居,如果不用neighbor命令来指定邻居,即使开启二层广播转发功能,邻居也无法建立。
1、更改运行模式:
R1/R2/R3/R4#(config-if)#ipospfnetworkpoint-to-multipointnon-broadcast2、手工指定邻居:
R1(config-router)#neighborR1(config-router)#neighborR1(config-router)#neighborR2(config-router)#neighborR3(config-router)#neighborR4(config-router)#neighbor检查:
R1#showipospfneighborNeighborID2.2.2.23.3.3.34.4.4.4
Pri000
StateFULL/FULL/FULL/
DeadTime00:01:4500:01:3600:01:46
Address192.168.0.2192.168.0.3192.168.0.4
InterfaceSerial0Serial0Serial0
192.168.0.2192.168.0.3192.168.0.4192.168.0.1192.168.0.1192.168.0.1
---
能够看到邻居的状态,但是不能看到邻居的角色,因为它们不选举DR和BDR。再看路由表:
R4#showiprouteospf
1.0.0.0/32issubnetted,1subnetsO1.1.1.1[110/65]via192.168.0.1,00:15:34,Serial0
2.0.0.0/32issubnetted,1subnetsO2.2.2.2[110/129]via192.168.0.1,00:15:34,Serial0
OOOO
3.0.0.0/32issubnetted,1subnets
3.3.3.3[110/129]via192.168.0.1,00:15:34,Serial0192.168.0.0/24isvariablysubnetted,4subnets,2masks
192.168.0.1/32[110/64]via192.168.0.1,00:15:34,Serial0192.168.0.2/32[110/128]via192.168.0.1,00:15:34,Serial0192.168.0.3/32[110/128]via192.168.0.1,00:15:34,Serial0
在点到多点模式下,在Spoke上看到的所有非直连网段的下一跳都是Hub和自己相连的接口地址。
四:广播模式(BoardcastNBMA)
在这种模式下,OSPF会以组播Hello来主动发起邻居的建立,它把帧中继当作一种BMA网络来运行,所以它的Hello间隔和死亡间隔和以太网是一样的,都是10/40秒。可以通过下面的命令来证明:
R1/R2/R3/R4(config-if)#ipospfnetworkbroadcastR1/R2/R3/R4#Showipospfinterfaceserial0
由于之前的实验里我们已经把Frame-Realy的广播转发能力开启了,所以现在我们只要把每个路由器的单播邻居删除掉,度把OSPF接口运行模式更改为Broadcast就可以了,命令略过。
我们看看OSPF的路由表:
R4#shiprouteospf
1.0.0.0/32issubnetted,1subnetsO1.1.1.1[110/65]via192.168.0.1,00:01:05,Serial0
2.0.0.0/32issubnetted,1subnetsO2.2.2.2[110/65]via192.168.0.2,00:01:05,Serial0
3.0.0.0/32issubnetted,1subnetsO3.3.3.3[110/65]via192.168.0.3,00:01:05,Serial0
它们的下一跳都是自己非直连邻居,也就是说它们在互相访问时忽略了R1的中转。
五:点到点模式(Pointtopoint)
在这种模式下,OSPF会向224.0.0.5组播Hello包,Hello间隔为10秒,死亡间隔为40秒,但是它们不会选举DR和BDR。在Hub位置的路由器为了连接多个点到点链路,必须配置子接口,每个子接口为一个独立IP网络的成员,实现子接口间的路由。
1、把所有路由器之前的主接口IP地址删除,并把帧中继映射删除。2、建立子接口,指定接口模式,配置IP地址,并指定DLCI号:R1(config)#interfaceserial0.2point-to-point
R1(config-subif)#ipaddress12.12.12.1255.255.255.252R1(config-subif)#frame-relayinterface-dlci102R1(config)#interfaceserial0.3point-to-point
R1(config-subif)#ipaddress13.13.13.1255.255.255.252R1(config-subif)#frame-relayinterface-dlci103R1(config)#interfaceserial0.4point-to-point
R1(config-subif)#ipaddress14.14.14.1255.255.255.252R1(config-subif)#frame-relayinterface-dlci104
Spoke路由器不需要建立子接口,如果不配置子接口,就要把主接口配置为点到点模式,并要建立一条到达Hub路由器的帧中继映射。R2(config)#interfaceserial0
R2(config-if)#ipospfnetworkpoint-to-point
R2(config-if)#ipaddress12.12.12.2255.255.255.252R2(config-if)#frame-relay12.12.12.1201
R3(config)#interfaceserial0
R3(config-if)#ipospfnetworkpoint-to-point
R3(config-if)#ipaddress13.13.13.2255.255.255.252R3(config-if)#frame-relayinterface-dlci301R4(config)#interfaceserial0
R4(config-if)#ipospfnetworkpoint-to-point
R4(config-if)#ipaddress14.14.14.2255.255.255.252R4(config-if)#frame-relayinterface-dlci401再把所有网段宣告到OSPF中。
现在我们发现邻居根本没有自动建立起来,因为我们在二层(帧中继)没有开启组播/广播转发功能,现在我们开启它:
R1#由于帧中继在点到点链路由默认是开启,所以它不需要其它额外命令。R2(config-if)#frame-relaymapip12.12.12.1201broadcastR3(config-if)#frame-relaymapip13.13.13.1301broadcastR4(config-if)#frame-relaymapip14.14.14.1401broadcast
10秒后我们可以看到邻居正常建立,但是在这种网络中不须要DR和BDR,所以我们检查邻居表是看不到邻居角色的:R1#showipospfneighbor
NeighborID4.4.4.43.3.3.32.2.2.2Pri000StateFULL/FULL/FULL/
---
DeadTime00:00:3100:00:3300:00:31Address14.14.14.213.13.13.212.12.12.2InterfaceSerial0.4Serial0.3Serial0.2
用showipospfinterfaceserial0.2看到帧中继的点到点子接口在OSPF中默认就被置为了点到点运行模式,而且它的Hello间隔为10秒,死亡间隔为40秒。
因篇幅问题不能全部显示,请点此查看更多更全内容