Introduction
Open Shortest Path First is a dynamic routing protocol. This is an open-source protocol meaning it should be compatible with any form of device that has routing function. OSPF is a Link State protocol, as it monitors the state of links on the network and updates it topology depending on available paths.
It was once described to me that; a distance vector protocol (EIGRP) is similar to following road signs to a destination. The path to the destination is picked while on route. Sign says "left" you go left. This works but you may find yourself on a road with roadworks, or an accident that you had no idea about, and be forced to follow "diversion" signs. Link state is more like having a live GPS system. Paths with roadworks are automatically re-routed around for and a more efficient route is discovered.
At CCNA level there are a couple other things to note about OSPF.
It has an Administrative Distance of 110
The OSPF Metric is based on a cost. Different link types have different costs associated with them. This is calculated with Dijkstra algorithm.
When costs were originally developed the fastest links were Fast Ethernet (100 Mbps)
The default values don't work well to calculate the cost of faster links (Gig and 10Gig)
This is because the Cost must be an integer (whole number) When calculating a faster link, the answer is a float (decimal number) and is rounded up to the nearest whole number. This means 10Gig links have the same cost as a 1Gig link.
E.g.
Cost = Reference bandwidth (100) / interface bandwidth (varies)
10mg Ethernet cost = 100 / 10 = 10
100mg FastEthernet cost= 100 / 100 = 1
1000mg GigEthernet cost = 100 / 1000 = 0.1 = 1
10000mg 10GigEthernet cost = 100 / 10000 = 0.01 = 1
**Note - Because of this, it is good practice to change the Reference bandwidth that is used. **
E.g.
Cost = Modified Reference bandwidth (10000) / interface bandwidth (varies)
10mg Ethernet cost = 10000 / 10 = 1000
100mg FastEthernet cost= 10000 / 100 = 100
1000mg GigEthernet cost = 10000 / 1000 = 10
10000mg 10GigEthernet cost = 10000 / 10000 = 1
OSPF uses Multicast addresses
224.0.0.5 Used by all OSPF Routers
224.0.0.6 Only to Designated and Backup Designated Routers (DR/BDR)
In a broadcast network a DR and BDR are elected to help control adjacencies between routers.
Can be configured as Single or Multi "Area".
If you are studying for your CCNA then this lab is ideal to help you understand several components of this configuration on a Cisco IOS device.
Instructions
In this lab (Download lab pack here) we will configure routers R1, R2, and R3 to work using Open Shortest Path First. Each router will advertise their locally connected networks to the other routers. To do all of this we will conduct the following steps...
1. On each of the routers, the interfaces will need to be configured with the IP addressing information provide in the IP table
2. Complete OSPF configuration with Process id - 999 and Area - 0 on all routers .
3. Configure all LAN interfaces as Passive
4. Redistribute a default route from R2 to the router R1 and R2.
In the initial network, only hostnames and logging synchronous enabled on the console line. (Logging synchronous is an extremely useful tool to improve your experience on the CLI especially when configuring a protocol that sends lots of messages to the console).
Topology
IP Table
Device | Interface | Address |
R1 | G0/0/0 | 10.1.2.1/24 |
R1 | G0/0/1 | 10.1.3.1/24 |
R1 | Loopback 1 | 192.168.1.1/24 |
R1 | Loopback 2 | 192.168.2.1/24 |
R2 | G0/0/0 | 10.1.2.2/24 |
R2 | G0/0/1 | 10.2.3.2/24 |
R2 | Loopback 1 | 208.113.96.2/28 |
R2 | Loopback 10 | 10.10.10.2/24 |
R3 | G0/0/0 | 10.2.3.3/24 |
R3 | G0/0/1 | 10.1.3.3/24 |
R3 | Loopback 3 | 192.168.3.3/24 |
R3 | Loopback 4 | 192.168.4.3/24 |
**Note - Packet Tracer will use G0/0/0 and G0/0/1 interfaces Cisco Modelling Labs (CML) will use G0/0 and G0/1 interfaces**
Activity
Part 1 - Configure R1, R2 and R3 interfaces
1. The config below demonstrates how to initially configure interfaces on R1. You should be able to configure R2 and R3 similarly with the information in the IP Table
You may notice that I "No Shut" my loopback interfaces. This is not required as the process of creating them brings them up. This is simply a force of habit on my part.
R1> enable
R1# conf t
R1(config)# interface GigabitEthernet 0/0/0
R1(config-if)# description LINK TO R2
R1(config-if)# ip address 10.1.2.1 255.255.255.0
R1(config-if)# no shut
R1(config-if)# exit
R1(config)#
R1(config)# int g0/0/1
R1(config-if)# desc LINK TO R3
R1(config-if)# ip add 10.1.3.1 255.255.255.0
R1(config-if)# no shut
R1(config-if)# exit
R1(config)#
R1(config)# int lo1
R1(config-if)# desc LINK TO LAN1
R1(config-if)# ip add 192.168.1.1 255.255.255.0
R1(config-if)# no shut
R1(config-if)# exit
R1(config)#
R1(config)# int lo2
R1(config-if)# desc LINK TO LAN2
R1(config-if)# ip add 192.168.2.1 255.255.255.0
R1(config-if)# no shut
R1(config-if)# exit
R1(config)#
2. Repeat this process on R2 and R3 changing address information and interface details as required.
Part 2 – Configure OSPF on R1, R2, and R3
1. Firstly go into the OSPF router configuration. At this stage you need to set a Process id (PID), unlike EIGRP this number does not need to match across all routers in the OSPF domain, the PID is only locally significant. Later we will configure the Area number, this will need to match across the routers. At this point you can also configure the OSPF router ID and the new reference bandwidth.
R1
R1(config)# router ospf 999
R1(config-router)# router-id 100.100.100.1
R1(config-router)# auto-cost reference-bandwidth 1000000
R2
R2(config)# router ospf 999
R2(config-router)# router-id 100.100.100.2
R2(config-router)# auto-cost reference-bandwidth 1000000
R3
R3(config)# router ospf 999
R3(config-router)# router-id 100.100.100.3
R3(config-router)# auto-cost reference-bandwidth 1000000
2. At this stage you can start configuring the networks to be advertised. It is most likely that you will want to see what networks each specific router can advertise, the "show ip route connected" command is a great help here.
To save you the hassle of ending or exiting all the way back to privilege Exec mode. Use the "do" command.
R1(config-router)# do show ip route connected
C 10.1.2.0/24 is directly connected, GigabitEthernet0/0/0
C 10.1.3.0/24 is directly connected, GigabitEthernet0/0/1
C 192.168.1.0/24 is directly connected, Loopback1
C 192.168.2.0/24 is directly connected, Loopback2
When it comes to adding the network statements you can do a few things. Either
Add the specific network
R1(config-router)# network 10.1.2.0 0.0.0.255 area 0
R1(config-router)# network 10.1.3.0 0.0.0.255 area 0
R1(config-router)# network 192.168.1.0 0.0.0.255 area 0
R1(config-router)# network 192.168.2.0 0.0.0.255 area 0
R1(config-router)#
Assign individual interfaces in to the OSPF process.
This method permits great control over which interfaces are taking part on OSPF, but a disadvantage is that it is not contained within the OSPF process configuration, this means if you are troubleshooting you have to be aware of not only looking at the OSPF process but the interfaces also. In this lab we do not want to advertise Loopback 1 (simulated internet) interface we can miss it out.
R2(config-router)# exit
R2(config)# int g0/0/0
R2(config-if)# ip ospf 999 area 0
R2(config-if)#
00:21:18: %OSPF-5-ADJCHG: Process 999, Nbr 100.100.100.1 on GigabitEthernet0/0/0 from LOADING to FULL, Loading Done
R2(config-if)# exit
R2(config)# int g0/0/1
R2(config-if)# ip ospf 999 area 0
R2(config-if)# exit
R2(config)# int lo10
R2(config-if)# ip ospf 999 area 0
R2(config-if)# exit
R2(config)#
Although not used in this Lab, you can add a summary of addresses (In this instance all networks beginning with 10.x.x.x will be added) As mentioned earlier, we do not want to advertise the ISP network on R2. As this is the case this actually works well on this router.
One up/downside of this method is that any new networks added to this router that are fall inside the 10.0.0.0/8 range will automatically be included into the OSPF process and area. If the future intent is for this to happen then excellent. If this is not the intention then you will inevitably have to undo this method, in favour of the first two options.
R2(config-router)# do show ip route conn
C 10.1.2.0/24 is directly connected, GigabitEthernet0/0/0
C 10.2.3.0/24 is directly connected, GigabitEthernet0/0/1
C 10.10.10.0/24 is directly connected, Loopback10
C 208.113.96.0/28 is directly connected, Loopback1
R2(config-router)# network 10.0.0.0 0.255.255.255 area 0
00:20:04: %OSPF-5-ADJCHG: Process 999, Nbr 100.100.100.1 on GigabitEthernet0/0/0 from LOADING to FULL, Loading Done
R2(config-router)#
Use a full summary statement. This can be useful but should be used with caution. As Above any new network or interface you add to this router will automatically be added in to OSPF. In live environments this may not be desired, for the same reasons mentioned above. In this instance, on R3 it will work fine.
R3(config-router)#
R3(config-router)# network 0.0.0.0 255.255.255.255 area 0
R3(config-router)#
00:30:27: %OSPF-5-ADJCHG: Process 999, Nbr 100.100.100.1 on GigabitEthernet0/0/1 from LOADING to FULL, Loading Done
00:30:31: %OSPF-5-ADJCHG: Process 999, Nbr 100.100.100.2 on GigabitEthernet0/0/0 from LOADING to FULL, Loading Done
R3(config-router)#
At this point we should have a fully converged network. We should take the time to confirm this.
R1(config-router)# end
R1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
100.100.100.2 1 FULL/BDR 00:00:38 10.1.2.2 GigabitEthernet0/0/0
100.100.100.3 1 FULL/BDR 00:00:40 10.1.3.3 GigabitEthernet0/0/1
R1#
R2# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
100.100.100.1 1 FULL/BDR 00:00:35 10.1.2.1 GigabitEthernet0/0/0
100.100.100.3 1 FULL/DR 00:00:35 10.2.3.3 GigabitEthernet0/0/1
R2#
R3# sh ip os nei
Neighbor ID Pri State Dead Time Address Interface
100.100.100.2 1 FULL/BDR 00:00:30 10.2.3.2 GigabitEthernet0/0/0
100.100.100.1 1 FULL/BDR 00:00:39 10.1.3.1 GigabitEthernet0/0/1
R3#
Excellent!
Part 3 – Configure Passive interfaces
1. Like EIGRP, OSPF also sends out regular messages and this both the beauty in how dynamic protocols work, but also has disadvantages. As we have covered the disadvantages to this in the EIGRP blog we will quickly summarise.
LAN Traffic
Additional bandwidth utilization
Additional Processing of packets destined to be dropped
Security
Information about the network being intentionally distributed
Could be taken advantage of by hackers.
The solution to this is simple an elegant, simply stop these messages being sent out of interfaces that do not face other internal Routers.
R1# conf t
R1(config)# router ospf 999
R1(config-router)# passive-interface loopback 1
R1(config-router)# passive-interface loopback 2
R1(config-router)#
R2(config)# router ospf 999
R2(config-router)# passive-interface lo10
R2(config-router)# passive-interface lo1
R2(config-router)#
R3(config)# router ospf 999
R3(config-router)# pass lo3
R3(config-router)# pass lo4
* The above demonstrates shorter versions of the same command
Part 4 – Redistribute a default route
1. Finally, and again similar to EIGRP we can used OSPF to populate a default route to all routers in our OSPF domain. In this case a route to the simulated internet on R2.
Let's configure the default route first on R2
R2(config-router)# exit
R2(config)# ip route 0.0.0.0 0.0.0.0 lo1
%Default route without gateway, if not a point-to-point interface, may impact performance
Now let's redistribute.
R2(config)#
R2(config)# router ospf 999
R2(config-router)# default-information originate
R2(config-router)#
Other Verifications
If you haven't already there are a few useful show commands that are helpful when configuring OSPF.
Overall OSPF configuration
Viewing your running configuration is always an easy way to reconfirm the commands you have entered. Let's use a pipe and view the OSPF section of the config with show running-config | section ospf
R1# show running-config | section ospf
router ospf 999
router-id 100.100.100.1
log-adjacency-changes
passive-interface Loopback1
passive-interface Loopback2
auto-cost reference-bandwidth 1000000
network 10.1.2.0 0.0.0.255 area 0
network 10.1.3.0 0.0.0.255 area 0
network 192.168.1.0 0.0.0.255 area 0
network 192.168.2.0 0.0.0.255 area 0
R1#
Although viewing the running config is one of the best tools in troubleshooting (as a lot of issues are misconfiguration based at this level). Cisco like to make sure you know a few other outputs too.
View OSPF Neighbors
If you have been doing this correctly you have hopefully already seen important messages about Adjacency changes relating to the OSPF process (back here). But checking these neighbor adjacencies is equally important. If you are configuring dynamic routing, you should know which routers should be neighbors. So, if they do not appear on this list. Then something is probably wrong with your configuration (somewhere).
R1# show ip ospf neighbor
Neighbor ID Pri State Dead Time Address Interface
100.100.100.2 1 FULL/DR 00:00:39 10.1.2.2 GigabitEthernet0/0/0
100.100.100.3 1 FULL/DR 00:00:31 10.1.3.3 GigabitEthernet0/0/1
R1#
View OSPF configuration details
The output from the show ip protocols command can be a little intimidating at first. But goes into good detail about the overall configuration of OSPF. Router ID, number of Areas, Networks advertised and passive interfaces.
R1# show ip protocol
Routing Protocol is "ospf 999"
Outgoing update filter list for all interfaces is not set
Incoming update filter list for all interfaces is not set
Router ID 100.100.100.1
Number of areas in this router is 1. 1 normal 0 stub 0 nssa
Maximum path: 4
Routing for Networks:
10.1.2.0 0.0.0.255 area 0
10.1.3.0 0.0.0.255 area 0
192.168.1.0 0.0.0.255 area 0
192.168.2.0 0.0.0.255 area 0
Passive Interface(s):
Loopback1
Loopback2
Routing Information Sources:
Gateway Distance Last Update
100.100.100.1 110 00:28:38
100.100.100.2 110 00:07:37
100.100.100.3 110 00:28:42
Distance: (default is 110)
R1#
View the Routing Table
This is the reason we are here anyway. We are trying to manipulate routing tables across multiple routers. show ip route and some of its variations come in very handy.
View the full routing table
R1# show ip route
Codes: L - local, C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is 10.1.2.2 to network 0.0.0.0
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
C 10.1.2.0/24 is directly connected, GigabitEthernet0/0/0
L 10.1.2.1/32 is directly connected, GigabitEthernet0/0/0
C 10.1.3.0/24 is directly connected, GigabitEthernet0/0/1
L 10.1.3.1/32 is directly connected, GigabitEthernet0/0/1
O 10.2.3.0/24 [110/2000] via 10.1.2.2, 10:36:57, GigabitEthernet0/0/0
[110/2000] via 10.1.3.3, 10:36:57, GigabitEthernet0/0/1
O 10.10.10.2/32 [110/1125] via 10.1.2.2, 10:36:57, GigabitEthernet0/0/0
192.168.1.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.1.0/24 is directly connected, Loopback1
L 192.168.1.1/32 is directly connected, Loopback1
192.168.2.0/24 is variably subnetted, 2 subnets, 2 masks
C 192.168.2.0/24 is directly connected, Loopback2
L 192.168.2.1/32 is directly connected, Loopback2
192.168.3.0/32 is subnetted, 1 subnets
O 192.168.3.3/32 [110/1125] via 10.1.3.3, 10:36:57, GigabitEthernet0/0/1
192.168.4.0/32 is subnetted, 1 subnets
O 192.168.4.3/32 [110/1125] via 10.1.3.3, 10:36:57, GigabitEthernet0/0/1
O*E2 0.0.0.0/0 [110/1] via 10.1.2.2, 00:09:56, GigabitEthernet0/0/0
R1#
View only OSPF routes in the routing table
R1# show ip route ospf
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
O 10.2.3.0 [110/2000] via 10.1.2.2, 10:39:40, GigabitEthernet0/0/0
[110/2000] via 10.1.3.3, 10:39:40, GigabitEthernet0/0/1
O 10.10.10.2 [110/1125] via 10.1.2.2, 10:39:40, GigabitEthernet0/0/0
192.168.3.0/32 is subnetted, 1 subnets
O 192.168.3.3 [110/1125] via 10.1.3.3, 10:39:40, GigabitEthernet0/0/1
192.168.4.0/32 is subnetted, 1 subnets
O 192.168.4.3 [110/1125] via 10.1.3.3, 10:39:40, GigabitEthernet0/0/1
O*E2 0.0.0.0/0 [110/1] via 10.1.2.2, 00:12:39, GigabitEthernet0/0/0
R1#
View the OSPF Interface information
This one is vital, because not only does it give great information about who is a designated router or Backup DR, but also the details of the network type (e.g. Broadcast or Point to Point), cost, Hello and dead timers, countdown to next hello due on each interface.
R1# show ip ospf interface
GigabitEthernet0/0/0 is up, line protocol is up
Internet address is 10.1.2.1/24, Area 0
Process ID 999, Router ID 100.100.100.1, Network Type BROADCAST, Cost: 1000
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 100.100.100.2, Interface address 10.1.2.2
Backup Designated Router (ID) 100.100.100.1, Interface address 10.1.2.1
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Hello due in 00:00:07
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 100.100.100.2 (Designated Router)
Suppress hello for 0 neighbor(s)
GigabitEthernet0/0/1 is up, line protocol is up
Internet address is 10.1.3.1/24, Area 0
Process ID 999, Router ID 100.100.100.1, Network Type BROADCAST, Cost: 1000
Transmit Delay is 1 sec, State BDR, Priority 1
Designated Router (ID) 100.100.100.3, Interface address 10.1.3.3
Backup Designated Router (ID) 100.100.100.1, Interface address 10.1.3.1
Timer intervals configured, Hello 10, Dead 40, Wait 40, Retransmit 5
Hello due in 00:00:07
Index 2/2, 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 100.100.100.3 (Designated Router)
Suppress hello for 0 neighbor(s)
Loopback1 is up, line protocol is up
Internet address is 192.168.1.1/24, Area 0
Process ID 999, Router ID 100.100.100.1, Network Type LOOPBACK, Cost: 125
Loopback interface is treated as a stub Host
Loopback2 is up, line protocol is up
Internet address is 192.168.2.1/24, Area 0
Process ID 999, Router ID 100.100.100.1, Network Type LOOPBACK, Cost: 125
Loopback interface is treated as a stub Host
R1#
Comments