- OSPFv3 Configuration simple. It's the verification that deserves much attention.
- OSPFv3 runs completely independent of OSPFv2 (They can both run at the same time in parallel).
- While OSPFv3 can advertise both IPv4 and IPv6, it uses IPv6 to perform necessary functions like creating and maintaining OSPFv3 neighbors and adjacencies. Even if advertising only IPv4 addresses with OSPFv3, IPv6 Link Local Addresses (LLA) must be configured and ipv6 unicast routing command must be issued. This may be especially useful to know depending on the deployment method of Dual Stack.
- The OSPFv3 Router Identification (RID) uses the IPv4 address format. If there are no IPv4 addresses already configured on the router for OSPFv3 to use for auto-configuration of the RID, the router will prompt for manual configuration.
- When verifying OSPFv3 we need to ensure we specify ipv6 within the verification commands. Otherwise, we’ll be looking at ipv4 information (and may not take notice if there is a lack of address output). One example is show ip protocols vs. show ipv6 protocols.
OSPFv3 configuration is simple and straightforward. This lesson will give more focus to verification. Being able to thoroughly verify OSPFv3 is not only useful to prove it's behaving as expected, but to see if adjustments need to be made to the OSPFv3 domain's design. The trade-off of OSPF's flexibility and scalability is its complexity. This increased complexity causes OSPF to consume a lot of network resources (i.e. bandwidth, CPU overhead) compared to other routing protocols. This is important to manage, especially if the size of the OSPF domain grows.
How it Works
Being well versed in verifying OSPFv3 means that not only that we can see that our configurations are correct, but that we have the desired in the traffic flow and aren't consuming too much of the network's resources.
Here are a list of useful verification commands for OSPFv3 that we'll be discussing in the sections that follow:
show run | section ospf show ipv6 protocols show ipv6 interfaces show ipv6 ospf interface brief show ipv6 ospf neighbor show ipv6 route show ipv6 ospf route show ipv6 ospf Show ipv6 ospf database show ipv6 ospf ?
Configuration and Verification
Before beginning to configure and verify, accurate documentation like the topology diagram are critical:
Let's take a moment to get familiar with the topology diagram.
Notice how I embedded information about the topology into the addressing to make the lab easier to work with:
- The subnet ID assigned between R-1 and R-2 is 12 and the subnet ID assigned between R-2 and R-3 is 23. Likewise, the subnet ID assigned between R-3 and R-4 is 34.
- The loopback interface addresses have the value of the router name as the subnet ID and the host ID.
- The physical interfaces' host ID matches the router name.
It should be second nature to know that Area 0 is the backbone as Area 0 is always the required Backbone Area.
FYI: Area 0, being the backbone area, must be logically (and in this case also physically) directly connected to Area 1 and Area 2. This idea is explained further in the lesson about OSPFv3's virtual link. In brief, there is a way to logically connect an area to the backbone even though it isn't physically connected. This can only be done once in an OSPFv3 domain.
Addressing needs to be carefully configured per the topology diagram. If the diagram, or other documentation, has an error or omission it's a good idea to correct the documentation before moving forward with the configuration.
- Some ipv6 commands won’t work properly if ipv6 unicast-routing isn't enabled first. I like to issue the ipv6 unicast-routing command before adding any addresses.
Let's begin addressing with router R-1:
R-1(config)#configure terminal R-1(config)#ipv6 unicast-routing R-1(config)#interface Loopback 6 R-1(config-if)#ipv6 address 2001:1::1/128 R-1(config-if)#interface Gi0/0 R-1(config-if)#no shutdown R-1(config-if)#ipv6 address 2001:12::1/64 R-1(config-if)#end
Let's first verify that ipv6 unicast-routing has been enabled. FYI: Issuing the ipv6 unicast-routing command will automatically enable ipv6 cef (Cisco Express Forwarding). Both are required for IPv6 to work properly.
Let's first verify that ipv6 unicast-routing and ipv6 cef have been enabled by issuing the ipv6 unicast-routing command.
Router#show running-config | include ipv6 ipv6 unicast-routing ipv6 cef ipv6 address 2001:1::1/128 ipv6 address 2001:12::1/64
Things are good here. We can see ipv6 unicast-routing and ipv6 cef have been enabled. We can also see the addresses that were assigned to Lo6 and Gi0/0.
Pro Tip: The interfaces may need a little time to come up before the show ipv6 interface brief command will have the appropriate output:
R-1#show ipv6 interface brief (Some output omitted) GigabitEthernet0/0 [up/up] FE80::E5E:FAFF:FEDD:2400 2001:12::1 Loopback6 [up/up] FE80::E5E:FAFF:FEDD:2400 2001:1::1
Gi0/0 and Lo6 have had their Link-Local Addresses (LLAs) automatically assigned and the Global Unicast Addresses (GUAs) properly configured. Both interfaces are up/up. All is good here.
The below configurations for R-2,3,4 are similar to R1. For your convenience, you can copy the below commands by hovering to the button in the upper right of the below section.
FYI: The ! means that the line is for comment. Remove the ! to issue the command. I used the ! for the router name and for the verification commands that may need some time before being issued.
! R2 configure terminal ipv6 unicast-routing interface Loopback 6 ipv6 address 2001:2::2/64 interface Gi0/0 no shutdown ipv6 address 2001:12::2/64 interface Gi0/1 no shutdown ipv6 address 2001:23::2/64 end ! show ipv6 interface brief ! ping 2001:12::1
! R3 configure terminal ipv6 unicast-routing interface Loopback 6 ipv6 address 2001:3::3/64 interface Gi0/0 no shutdown ipv6 address 2001:23::3/64 interface Gi0/1 no shutdown ipv6 address 2001:34::3/64 end ! show ipv6 interface brief ! ping 2001:23::2
! R4 configure terminal ipv6 unicast-routing interface Loopback 6 ipv6 address 2001:4::4/64 interface Gi0/0 no shutdown ipv6 address 2001:34::4/64 end ! show ipv6 interface brief ! ping 2001:34::3
After your satisfied with the above addressing configurations and verifications, don't forget to save them on the router with the write command:
! R1-4 write
OSPFv3 Configuration and Verification
First, let’s verify that no other OSPF configurations have already been configured on the routers. This is a good practice because we want to ensure we don't blend our configurations with something that another engineer may have put in previously.
The below command covers both v2 and v3 of OSPF:
! R1-4 show run | section ospf
If you’re not familiar with the above command the | symbol is called “Pipe”. It further specifies what you want to see. In this case, we want to show the running configuration section with OSPF.
The routers didn't return any output because there are no OSPF commands in the running configurations.
Let's check to see if any other routing protocols running on the routers.
! R1-4 show ipv6 protocols IPv6 Routing Protocol is "connected" IPv6 Routing Protocol is "application" IPv6 Routing Protocol is "ND"
Note: ND is for Neighbor Discovery
Since there are no other Interior Gateway Routing Protocols (IGPs) running on the routers, we're ready to start configuring OSPFv3. Let's began with R-1 and work our way across the topology to R-4.
Let's begin by enabling the OSPFv3 process on R-1:
R-1#conf t R-1(config)#ipv6 router ospf 6 *May 13 08:41:21.668: %OSPFv3-4-NORTRID: Process OSPFv3-6-IPv6 could not pick a router-id, please configure manually R-1(config-rtr)#
After the router created the OSPFv3 process, it returns a Warning about the required Router ID (RID):
*May 10 06:14:16.352: %OSPFv3-4-NORTRID: Process OSPFv3-6-IPv6 could not pick a router-id, please configure manually
This message is normal. When the OSPFv3 process is enabled this message is issued. Note that this is a level 4 syslog message. Level 4 is a Warning, not an Error or worse. It's a "For Your Information" message. A RID is required for OSPFv3 to work.
If there are IPv4 addresses already configured on the router, it will pick one of those to auto-configure the router ID.
Since we don't have any IPv4 addresses already configured, we need to enter one manually.
Pro Tip: It's recommended to manually enter the Router ID, even if OSPFv3 can use an IPv4 address on an interface to auto-configure. If addressing were to change in the topology, it could make a mess of the OSPFv3 domain.
The router ID is configured in the OSPFv3 router process configuration mode:
R-1(config-rtr)#router-id 22.214.171.124 R-1(config-rtr)#end
Notice how I embedded information about the topology in the router ID. The name of the router is R-1, so I made the router ID 126.96.36.199. This makes verifying and troubleshooting much easier.
Let's verify the creation of the OSPFv3 process 6 and router ID 188.8.131.52 by looking at a specific portion of the running configuration:
R-1#show run | section ospf ipv6 router ospf 6 router-id 184.108.40.206
Things look as expected.
To enable OSPFv3 we simply go into interface configuration mode for the participating interfaces and specify OSPF for ipv6, the OSPFv3 process ID and area ID:
R-1#configure terminal R-1(config)#interface loopback 6 R-1(config-if)#ipv6 ospf 6 area 1 R-1(config-if)#exit R-1(config)#interface gigabitEthernet 0/0 R-1(config-if)#ipv6 ospf 6 area 1 R-1(config-if)#end
Let's take a look at a summary of our OSPFv3 participating interfaces:
R-1#show ipv6 ospf interface brief Interface PID Area Intf ID Cost State Nbrs F/C Lo6 6 1 9 1 LOOP 0/0 Gi0/0 6 1 2 1 DR 0/0
With the above output, we can verify:
- Configured interfaces have the correct Process ID (PID) and have been placed in the correct Area.
- Cost = 1. This is because in OSPFv3 the cost is incremented on the outgoing interface.
- State is LOOP for Loopbacks and Gi0/0's State will be WAIT until the Designated Router (DR) election is finished. R-1 will be elected the DR for the link (of course, because there are no other active interfaces on the link...yet). And it will win the next election when R-2 is configured and forms a FULL adjacency with R-1.
- Nbrs - There aren't currently any neighbors. This will change after we enable OSPFv3 on R-2.
It can also be useful to check OSPFv3 information at the interface level:
R-2#show ipv6 ospf interface g0/0 GigabitEthernet0/0 is up, line protocol is up Link Local Address FE80::E5E:FAFF:FE0A:C00, Interface ID 2 Area 1, Process ID 6, Instance ID 0, Router ID 220.127.116.11 Network Type BROADCAST, Cost: 1 Transmit Delay is 1 sec, State DR, Priority 1 Designated Router (ID) 18.104.22.168, local address FE80::E5E:FAFF:FE0A:C00 Backup Designated router (ID) 22.214.171.124, local address FE80::E5E:FAFF:FEDD:2400 Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5 Hello due in 00:00:00 Graceful restart helper support enabled Index 1/1/2, flood queue length 0 Next 0x0(0)/0x0(0)/0x0(0) Last flood scan length is 9, maximum is 9 Last flood scan time is 0 msec, maximum is 0 msec Neighbor Count is 1, Adjacent neighbor count is 1 Adjacent with neighbor 126.96.36.199 (Backup Designated Router) Suppress hello for 0 neighbor(s)
There is a lot of useful information here.
Note that the Time Intervals are listed here.
Let's enable the OSPFv3 process, configure the RID and enable OSPFv3 for the interface that points to R-1 (Gi0/0) in the same step:
R-2#configure terminal R-2(config)#ipv6 router ospf 1 R-2(config-rtr)#router-id 188.8.131.52 R-2(config-rtr)#int g0/0 R-2(config-if)#ipv6 ospf 1 area 1 R-2(config-if)#end *May 10 05:55:23.938: %OSPFv3-5-ADJCHG: Process 1, Nbr 184.108.40.206 on GigabitEthernet0/0 from LOAD ING to FULL, Loading Done
Well, this is interesting. We can see from the console message that an OSPFv3 FULL adjacency has been formed with 220.127.116.11 on Gi0/0. But the process ID is 1...it's 6 on R-1. Remember, unlike other routing protocols, OSPF process IDs are locally significant so it's no problem for OSPFv3. However, to avoid confusion I prefer to use the same process ID throughout the OSPFv3 domain so I'll replace the 1 with 6.
All that needs to be done to remove the entire above configuration under process 1 is:
R-2#conf t R-2(config)#no ipv6 router ospf 1 R-2(config)#^Z R-2#sh run | section ospf R-2#sh ipv6 ospf int br R-2#
After removing the OSPFv3 process, the show commands return no output. Perfect!
FYI: ^Z has the same result as issuing the end command...but it's easier!
We have a clean slate to enter the above configuration with a process ID 6:
R-2#configure terminal R-2(config)#ipv6 router ospf 6 R-2(config-rtr)#router-id 18.104.22.168 R-2(config-rtr)#int g0/0 R-2(config-if)#ipv6 ospf 6 area 1 *May 10 06:14:16.352: %OSPFv3-4-NORTRID: Process OSPFv3-6-IPv6 could not pick a router-id, please configure manually *May 10 06:14:18.124: %OSPFv3-5-ADJCHG: Process 6, Nbr 22.214.171.124 on GigabitEthernet0/0 from LOADING to FULL, Loading Done
After enabling the OSPFv3 process, RID and enabling int g0/0 we get two console messages. One message is the RID Warning message discussed above. The other message is:
*May 10 06:14:18.124: %OSPFv3-5-ADJCHG: Process 6, Nbr 126.96.36.199 on GigabitEthernet0/0 from LOADING to FULL, Loading Done
This syslog message gives us a level 5 message. This type of message is a Notice message to alert us to a normal, but significant condition. More specifically, the message here is telling us that R-2 has formed a FULL Adjacency with with R-1 (RID 188.8.131.52) with a Process ID of 6 out the Gi0/0 interface. Good stuff!
For completeness, let's issue the same show commands we issued with R-1:
show run | section ospf ipv6 ospf 6 area 1 ipv6 router ospf 6 router-id 184.108.40.206
Line 2 is the configuration under interface g0/0.
Line 3 is the command to enable the OSPFv3 process itself.
Line 4 creates OSPFv3's Router ID.
Let's now check the OSPFv3 participating interfaces:
R-2#show ipv6 ospf interface brief Interface PID Area Intf ID Cost State Nbrs F/C Gi0/0 6 1 2 1 BDR 1/1
Things are normal here.
We can see G0/0 is enabled with a Process ID of 6 in Area 1. It's the Backup Designated Router on the link with a cost of 1 to R-1. It has one neighbor.
Let's enable and verify a Loopback interface and the interface (Gi0/1) that points to R-3.
Per the topology diagram, Gi0/1 and Lo6 are to be in Area 0.
R-2#conf t R-2(config)#int lo6 R-2(config-if)#ipv6 ospf 6 area 0 R-2(config-if)#int g0/1 R-2(config-if)#ipv6 ospf 6 area 0 R-2(config-if)#end
R-2#sh ipv6 ospf int br Interface PID Area Intf ID Cost State Nbrs F/C Lo6 6 0 9 1 LOOP 0/0 Gi0/1 6 0 3 1 DR 0/0 Gi0/0 6 1 2 1 BDR 1/1
- Interfaces, PID, Area and Cost are as expected.
- States are correct.
- Lo6 shouldn't have a neighbor and G0/1 shouldn't have a neighbor, yet.
- G0/0 does have a neighbor.
I'm satisfied with the above so I issued the write command to save the configuration.
Let's further verify R-2's neighborship with R-1: