Thursday, February 25, 2010

Mixing & Matching Different OSPF Network Types


So here I am with possibly my first and last technical post for this month on - Mixing and Matching Different OSPF Network Types. Have you ever tried to mix and match OSPF network types ? Hmmm...probably in real world we don't need to do that. But in CCIE labs chances are pretty high that they will try to mess up with you ospf config by asking you to do this stuff.

So first thing I am sure that's coming in you mind is If I mix and match different network types of OSPF, will that cause any problem ?....and the answer is hmmm...MAY BE...if you never tried this thing earlier then it all depends upon how much you understand OSPF and how deeper you can dig to troubleshoot the problems that may arise along the way.

Anyways...so far to demonstrate this I have created a really nice diagram this time after so many diagrams that I drew up in MS Paint in my last couple of posts :) So hopefully you guys will like it

Note that all OSPF netowork types mixes can't make two OSPF routers Adjacent but Neighborship can still be formed. Now just hold this thought for a sec and lets first discuss what are different Network Types combinations that are compatible with each other and why some are not compatible with each other.

Here is a quick list of which combinations will work:
Broadcast to Broadcast
Non-Broadcast to Non-Broadcast
Point-to-Point to Point-to-Point
Point-to-Multipoint to Point-to-Multipoint
Broadcast to Non-Broadcast (adjust hello/dead timers)
Point-to-Point to Point-to-Multipoint (adjust hello/dead timers)


So the first question that comes in mind is why only these combinations will work and why some not ? For example what if I configure Network Type Broadcast on one side and Network Type Point-To-Point on other. Will it work ? And the Answer is NO


The reason why some network types are not compatible with some other is based on a fact and that is  - Network Types that elects/requires DR election in first place will be only compatible with other types that also elects/requires DR election. On the other hand Network Types that doesn't elect/requires DR are only compatible with network type that also doesn't elect/requires DR election. So that's why these two categories don't work with each other. Now considering this criteria it's very easy to remember the list that I write up above.

Now if you try to break this criteria and try to match Network Type that Elects/Requires DR with Network Type that doesn't Elects/Requires DR ,you will see that although the neighborship comes up between OSPF routers but routes are not getting exchanged.

So based on this we can say that it's possible that two ospf routers can become neighbor but are not adjacent (No Route Exchange). But it can never be possible that two routers become Adjacent but not neighbors.

Now lets jump into the scenario to test this. In my topology here I am gonna  Initially configure all Three routers with OSPF Network Point-To-Multipoint. Later I will jump over to R2 and will change Network Type to Point-To-Point. And we will see if everything is working fine. I will also add some little troubleshooting later in this scenario to make it more interesting. Because although the list I provided above is fine but sometimes things doesn't work as expected. So in such case you have to do some basic troubleshooting to fix the issues.

Just one more thing I want to add before jumping into config and that is never forget to match the HELLO Timer and DEAD Timer values to match the other side after changing the Network Type.

So here is the quick config:

-----------------------------------------------------------------------------------
R1(config)#do sh ip int b | e unassig|do
Interface                  IP-Address      OK? Method Status  Protocol
Serial0/0                  10.0.0.1        YES manual       up       up
Loopback11            11.11.11.11     YES manual    up       up
R1(config)#

R1(config)#do sh run int s0/0
Building configuration...

Current configuration : 260 bytes
!
interface Serial0/0
 ip address 10.0.0.1 255.255.255.0
 encapsulation frame-relay
 ip ospf network point-to-multipoint
 clock rate 2000000
 frame-relay map ip 10.0.0.3 103 broadcast
 frame-relay map ip 10.0.0.2 102 broadcast
 no frame-relay inverse-arp
end

R1(config)#do sh prot | e down
Global values:
  Internet Protocol routing is enabled
Serial0/0 is up, line protocol is up
  Internet address is 10.0.0.1/24
Loopback11 is up, line protocol is up
  Internet address is 11.11.11.11/24

R1(config)#do sh run | s rout
router ospf 1
 router-id 1.1.1.1
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0
R1(config)#

R1(config)#do sh ip ro os
     33.0.0.0/32 is subnetted, 1 subnets
O       33.33.33.33 [110/65] via 10.0.0.3, 00:04:55, Serial0/0
     22.0.0.0/32 is subnetted, 1 subnets
O       22.22.22.22 [110/65] via 10.0.0.2, 00:07:44, Serial0/0
     10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
O       10.0.0.2/32 [110/64] via 10.0.0.2, 00:07:44, Serial0/0
O       10.0.0.3/32 [110/64] via 10.0.0.3, 00:04:55, Serial0/0
------------------------------------------------------------------------------------------

R2(config)#do sh ip int b | e unassig|do
Interface                  IP-Address      OK? Method Status  Protocol
Serial0/0                  10.0.0.2            YES manual up         up
Loopback22            22.22.22.22     YES manual up         up
R2(config)#

R2(config)#do sh run int s0/0
Building configuration...

Current configuration : 217 bytes
!
interface Serial0/0
 ip address 10.0.0.2 255.255.255.0
 encapsulation frame-relay
 ip ospf network point-to-multipoint
 clock rate 2000000
 frame-relay map ip 10.0.0.1 201 broadcast
 no frame-relay inverse-arp
end

R2(config)#do sh prot | e do
Global values:
  Internet Protocol routing is enabled
Serial0/0 is up, line protocol is up
  Internet address is 10.0.0.2/24
Loopback22 is up, line protocol is up
  Internet address is 22.22.22.22/24

R2(config)#do sh run | s rout
router ospf 1
 router-id 2.2.2.2
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0.0.0.0
R2(config)#

R2(config)#do sh ip ro os
     33.0.0.0/32 is subnetted, 1 subnets
O       33.33.33.33 [110/129] via 10.0.0.1, 00:07:15, Serial0/0
     10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
O       10.0.0.3/32 [110/128] via 10.0.0.1, 00:07:15, Serial0/0
O       10.0.0.1/32 [110/64] via 10.0.0.1, 00:10:05, Serial0/0
     11.0.0.0/32 is subnetted, 1 subnets
O       11.11.11.11 [110/65] via 10.0.0.1, 00:10:05, Serial0/0



R2(config-if)#do ping 33.33.33.33 so lo 22 re 10

Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 33.33.33.33, timeout is 2 seconds:
Packet sent with a source address of 22.22.22.22
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 12/82/148 ms
----------------------------------------------------------------------------------------------
R3(config)#do sh ip int b | e unassig|do
Interface                  IP-Address      OK? Method Status  Protocol
Serial0/0                  10.0.0.3           YES manual up         up
Loopback33            33.33.33.33     YES manual up         up
R3(config)#

R3(config)#do sh run int s0/0
Building configuration...

Current configuration : 217 bytes
!
interface Serial0/0
 ip address 10.0.0.3 255.255.255.0
 encapsulation frame-relay
 ip ospf network point-to-multipoint
 clock rate 2000000
 frame-relay map ip 10.0.0.1 301 broadcast
 no frame-relay inverse-arp
end

R3(config)#do sh prot | e do
Global values:
  Internet Protocol routing is enabled
Serial0/0 is up, line protocol is up
  Internet address is 10.0.0.3/24
Loopback33 is up, line protocol is up
  Internet address is 33.33.33.33/24


R3(config)#do sh run | s rout
router ospf 1
 router-id 3.3.3.3
 log-adjacency-changes
 network 0.0.0.0 255.255.255.255 area 0.0.0.0
R3(config)#

R3(config)#do sh ip ro os
     22.0.0.0/32 is subnetted, 1 subnets
O       22.22.22.22 [110/129] via 10.0.0.1, 00:09:28, Serial0/0
     10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
O       10.0.0.2/32 [110/128] via 10.0.0.1, 00:09:28, Serial0/0
O       10.0.0.1/32 [110/64] via 10.0.0.1, 00:09:28, Serial0/0
     11.0.0.0/32 is subnetted, 1 subnets
O       11.11.11.11 [110/65] via 10.0.0.1, 00:09:28, Serial0/0
-----------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------

Everything worked so far as expected. Now lets hop on to R2 and change the network type to Point-To-Point 

R2(config)#int s0/0
R2(config-if)#ip ospf ne point-to-p
R2(config-if)#
*Mar  1 00:30:08.411: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from FULL to D
OWN, Neighbor Down: Interface down or detached <- Neighborship went DOWN
R2(config-if)#ip ospf hello 30 <- Don't Forget To Change the Timers
R2(config-if)#ip ospf dead 120 <- Here we making timers compatible with Neighbor R1
R2(config-if)#
*Mar  1 00:30:58.215: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from LOADING t
o FULL, Loading Done <- Neighborship came back UP

R2(config-if)#do sh ip ro os
     33.0.0.0/32 is subnetted, 1 subnets
O       33.33.33.33 [110/129] via 10.0.0.1, 00:00:28, Serial0/0 <- R3 is still reachable
     10.0.0.0/8 is variably subnetted, 3 subnets, 2 masks
O       10.0.0.3/32 [110/128] via 10.0.0.1, 00:00:28, Serial0/0
O       10.0.0.1/32 [110/64] via 10.0.0.1, 00:00:28, Serial0/0
     11.0.0.0/32 is subnetted, 1 subnets
O       11.11.11.11 [110/65] via 10.0.0.1, 00:00:28, Serial0/0

R2(config-if)#do sh ip ospf ne

Neighbor ID     Pri   State           Dead Time   Address         Interface
1.1.1.1           0   FULL/  -        00:01:54    10.0.0.1        Serial0/0

R2(config-if)#do ping 33.33.33.33

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 33.33.33.33, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)


R2(config-if)#do ping 33.33.33.33 so lo 22 re 10

Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 33.33.33.33, timeout is 2 seconds:
Packet sent with a source address of 22.22.22.22
!!!!!!!!!!
Success rate is 100 percent (10/10), round-trip min/avg/max = 8/54/128 ms

Hmmm...isn't this interesting that we are not able to ping 33.x.x.x address when it's sourced from R2's serial ip address 10.0.0.1, but we source the packet from R2's loopback we are able to ping 33.x.x.x
-------------------------------------------------------------------------------

Lets do some troubleshooting. Lets configure network type back to original one back and see if we are able to ping R3's Serial interface.

R2(config-if)#ip ospf ne point-to-m
R2(config-if)#
*Mar  1 00:43:43.231: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from FULL to D
OWN, Neighbor Down: Interface down or detached
*Mar  1 00:43:43.679: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from LOADING t
o FULL, Loading Done
R2(config-if)#do ping 10.0.0.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/60/184 ms
R2(config-if)#do sh ip ospf int s0/0
Serial0/0 is up, line protocol is up
  Internet Address 10.0.0.2/24, Area 0.0.0.0
  Process ID 1, Router ID 2.2.2.2, Network Type POINT_TO_MULTIPOINT, Cost: 64
  Transmit Delay is 1 sec, State POINT_TO_MULTIPOINT
  Timer intervals configured, Hello 30, Dead 120, Wait 120, Retransmit 5
    oob-resync timeout 120
    Hello due in 00:00:20
  Supports Link-local Signaling (LLS)
  Cisco NSF helper support enabled
  IETF NSF helper support enabled
  Index 1/1, flood queue length 0
  Next 0x0(0)/0x0(0)
  Last flood scan length is 1, maximum is 1
  Last flood scan time is 0 msec, maximum is 0 msec
  Neighbor Count is 1, Adjacent neighbor count is 1
    Adjacent with neighbor 1.1.1.1
  Suppress hello for 0 neighbor(s)
R2(config-if)# Now lets change it back to P2P type and see if R3's serial is still pingable
R2(config-if)#ip ospf ne point-to-p
*Mar  1 00:44:38.791: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from FULL to D
OWN, Neighbor Down: Interface
R2(config-if)#ip ospf hello 30
R2(config-if)#ip ospf dead 120
R2(config-if)#
*Mar  1 00:45:28.119: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from LOADING t
o FULL, Loading Done
R2(config-if)#do ping 10.0.0.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.3, timeout is 2 seconds:
.....
Success rate is 0 percent (0/5)

Hmmm... so all though we have reachability to R3's Loopback but we have some resolution issue with R3's Serial interface.

So as in our scenario we have used a Frame Relay cloud. So lets see if Frame Relay L3 to L2 resolution is occurring properly. 
----------------------------------------------------------------------------------

R3(config)#do debug frame pa <- This is one of the best command to see frame relay resolution issues
Frame Relay packet debugging is on
R3(config)#do ping 10.0.0.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:

*Mar  1 00:48:40.483: Serial0/0:Encaps failed--no map entry link 7(IP).<- Typical Resolution Issue indeed 
*Mar  1 00:48:42.483: Serial0/0:Encaps failed--no map entry link 7(IP).
*Mar  1 00:48:44.483: Serial0/0:Encaps failed--no map entry link 7(IP).
*Mar  1 00:48:46.483: Serial0/0:Encaps failed--no map entry link 7(IP).
*Mar  1 00:48:48.483: Serial0/0:Encaps failed--no map entry link 7(IP).
Success rate is 0 percent (0/5)
R3(config)#
R3(config)#int s0/0
R3(config-if)#frame map i 10.0.0.2 301<- This command is to fix the FR L3 to L2 resolution issue for R2
R3(config-if)#
R3(config-if)#do debug frame pack
Frame Relay packet debugging is on

*Mar  1 00:49:52.215: Serial0/0(i): dlci 301(0x48D1), pkt type 0x800, datagramsize 8810.

R3(config-if)#do ping 10.0.0.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 4/82/224 ms
R3(config-if)#
*Mar  1 00:50:01.795: Serial0/0: broadcast search
*Mar  1 00:50:01.795: Serial0/0(o): dlci 301(0x48D1), pkt type 0x800(IP), datagramsize 8
4
*Mar  1 00:50:01.867: broadcast dequeue
*Mar  1 00:50:01.867: Serial0/0(o):Pkt sent on dlci 301(0x48D1), pkt type
0x800(IP), datagramsize 84
*Mar  1 00:50:03.063: Serial0/0(o): dlci 301(0x48D1), pkt type 0x800(IP), datagramsize 1
04
*Mar  1 00:50:03.159: Serial0/0(i): dlci 301(0x48D1), pkt type 0x800, datagramsize 60
*Mar  1 00:50:03.231: Serial0/0(i): dlci 301(0x48D1), pkt type 0x800, datagramsize 104
*Mar  1 00:50:03.235: Serial0/0(o): dlci 301(0x48D1), pkt type 0x800(IP), datagramsize 1

R2(config)#do ping 10.0.0.3

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.0.0.3, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/78/156 ms
------------------------------------------------------------------------------------
 Now same we we can configure R3 with Network Type Point-To-Multipoint NBMA and things should work fine without further changes in timer because P2M and P2M NBMA have same timer values by default

R3(config)#int s0/0
R3(config-if)#ip ospf network point-to-multipoint non-broadcast
R3(config-if)#
*Mar  1 01:04:56.547: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from FULL to D
OWN, Neighbor Down: Interface down or detached
R3(config-if)#
*Mar  1 01:05:27.431: %OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on Serial0/0 from LOADING t
o FULL, Loading Done
R3(config-if)#do sh ip ro os
     22.0.0.0/32 is subnetted, 1 subnets
O       22.22.22.22 [110/129] via 10.0.0.1, 00:00:15, Serial0/0
     10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
O       10.0.0.1/32 [110/64] via 10.0.0.1, 00:00:15, Serial0/0
     11.0.0.0/32 is subnetted, 1 subnets
O       11.11.11.11 [110/65] via 10.0.0.1, 00:00:15, Serial0/0
R3(config-if)#do ping 22.22.22.22 so lo 33

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 22.22.22.22, timeout is 2 seconds:
Packet sent with a source address of 33.33.33.33
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/40/92 ms

So everything looks perfectly functional now :)

Happy Studying ...

Best Regards,
Deepak Arora




3 comments:

Gangadhar said...

Hello Deepak,

Great work and excellent explanation.
It may be silly doubt but please clarify if possible. I am running GNS3 to simulate this topology. But i had a difficulty to configure the FR like your diagram says with only ONE Serial interface in each Router.
How can i go with. Thanks a million in advance :D
/Gangadhar

A Network Artist said...

GNS Frame-Relay Switch PVC configuration screen shot has been posted as requested.

HTH...
Deepak Arora

Gangadhar said...

Thanks a lot for the help.
Good run for Lab attempt.
I wish you all the best :)