OSPF Equal-Cost Paths Not Load Balancing Traffic
Presenting Symptom
Traffic from R1 to R3 is not being load-balanced across two equal-cost OSPF paths, even though both paths have the same OSPF cost.
Network Context
The network consists of three routers (R1, R2, R3) running OSPF in a single area (Area 0). R1 and R3 are connected via two parallel links: one directly (R1-R3) and one through R2 (R1-R2-R3). Both paths have an OSPF cost of 10. The routers are Cisco IOS 15.x. This is a small branch office scenario where load balancing is expected to utilize both links.
Diagnostic Steps
Check the routing table on R1 for the destination network
show ip route 192.168.3.0Routing entry for 192.168.3.0/24
Known via "ospf 1", distance 110, metric 20
Last update from 10.1.1.2 on GigabitEthernet0/0, 00:00:05 ago
Routing Descriptor Blocks:
* 10.1.1.2, from 3.3.3.3, via GigabitEthernet0/0
Route metric is 20, traffic share count is 1
10.1.2.2, from 3.3.3.3, via GigabitEthernet0/1
Route metric is 20, traffic share count is 1If only one path appears, OSPF is not installing multiple equal-cost paths. If two paths appear with traffic share count 1 each, OSPF is installing both paths but load balancing may be affected by CEF or per-packet vs per-destination switching.
Verify OSPF neighbor relationships and link costs
show ip ospf interface briefInterface PID Area IP Address/Mask Cost State Nbrs F/C Gi0/0 1 0 10.1.1.1/24 10 DR 1/1 Gi0/1 1 0 10.1.2.1/24 10 DR 1/1
Both interfaces should show cost 10. If costs differ, OSPF will not consider them equal. Also verify neighbors are FULL.
Check OSPF database for the prefix to see if both paths are advertised
show ip ospf database external 192.168.3.0 OSPF Router with ID (1.1.1.1) (Process ID 1)
Type-5 AS External Link States
LS age: 100
Options: (No TOS-capability, DC)
LS Type: AS External Link
Link State ID: 192.168.3.0 (External Network Number )
Advertising Router: 3.3.3.3
LS Seq Number: 80000001
Checksum: 0x1234
Length: 36
Network Mask: /24
Metric Type: 2 (Larger than any link state path)
TOS: 0
Metric: 20
Forward Address: 0.0.0.0
External Route Tag: 0If the prefix is external, check the metric type and forward address. If the forward address is non-zero, OSPF may use that to determine next hops. If only one advertising router appears, the other path may not be in the database.
Examine CEF forwarding table to see how traffic is actually forwarded
show ip cef 192.168.3.0 detail192.168.3.0/24, version 123, epoch 0, per-destination sharing
via 10.1.1.2, GigabitEthernet0/0, 2 dependencies
traffic share 1
next hop 10.1.1.2
via 10.1.2.2, GigabitEthernet0/1, 2 dependencies
traffic share 1
next hop 10.1.2.2
Load distribution: 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 (per-destination)If CEF shows both paths with traffic share 1, CEF is load balancing. If only one path appears, CEF is not using both. Also check if load balancing mode is per-destination or per-packet.
Root Cause
The issue is that OSPF is not performing load balancing because the 'maximum-paths' command is set to 1 (default is 8 on most platforms, but may be changed). Alternatively, the router may be using process switching or fast switching instead of CEF, which does not support per-destination load balancing for multiple equal-cost paths. In this scenario, the router had 'no ip cef' configured, disabling CEF, and the default switching mode (fast switching) only uses one path per destination.
Resolution
Verification
Verify CEF is enabled: R1# show ip cef %IPv4 CEF is enabled Check routing table again: R1# show ip route 192.168.3.0 Routing entry for 192.168.3.0/24 Known via "ospf 1", distance 110, metric 20 Last update from 10.1.1.2 on GigabitEthernet0/0, 00:00:05 ago Routing Descriptor Blocks: * 10.1.1.2, from 3.3.3.3, via GigabitEthernet0/0 Route metric is 20, traffic share count is 1 10.1.2.2, from 3.3.3.3, via GigabitEthernet0/1 Route metric is 20, traffic share count is 1 Verify CEF load balancing: R1# show ip cef 192.168.3.0 detail 192.168.3.0/24, version 123, epoch 0, per-destination sharing via 10.1.1.2, GigabitEthernet0/0, 2 dependencies traffic share 1 next hop 10.1.1.2 via 10.1.2.2, GigabitEthernet0/1, 2 dependencies traffic share 1 next hop 10.1.2.2 Load distribution: 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 (per-destination)
Prevention
1. Always enable CEF globally on routers that support it, as it is required for efficient load balancing. 2. Verify OSPF maximum-paths is set to a value greater than 1 (default is 8 on most platforms). 3. When designing OSPF networks with redundant links, ensure interface costs are manually set to equal values to guarantee equal-cost multipath.
CCNA Exam Relevance
On the CCNA 200-301 exam, this scenario appears in troubleshooting questions where OSPF is not load balancing. The exam may present a multiple-choice question asking why traffic is not being load-balanced across equal-cost paths, with options including 'CEF is disabled', 'maximum-paths is set to 1', or 'OSPF cost mismatch'. The key fact a CCNA candidate must know is that OSPF automatically load balances across up to 4 equal-cost paths (default maximum-paths) only if CEF is enabled.
Exam Tips
Remember that OSPF load balancing requires CEF to be enabled; without CEF, only one path is used per destination.
The default maximum-paths for OSPF is 8 on most Cisco IOS platforms, but the exam may test that it is 4 for OSPF.
Know the 'show ip cef' and 'show ip route' commands to verify equal-cost multipath.
Commands Used in This Scenario
Test Your CCNA Knowledge
Practice with scenario-based questions to prepare for the CCNA 200-301 exam.
Practice CCNA Questions