OSPF Metric Cost

1. OSPF Metric Cost

OSPF uses the OSPF cost in order to calculate the best path to the destination.This cost comes from the speed your interfaces are operating at.
As you can see below, we have different types of interfaces, each with a cost number assigned.

Diagram showing OSPF metric cost values on different interfaces between routers

Figure 1 – OSPF cost per interface

To check the OSPF cost on our interfaces, we can use show ip ospf interface brief

R1# show ip ospf interface brief
Interface             PID   Area    IP Address/Mask            Cost  State  Nbrs
FastEthernet0/0         1   0     192.168.10.1/255.255.255.0   1     DR     0/0
GigabitEthernet0/0      1   0     192.168.12.1/255.255.255.0   1     DR     0/0
GigabitEthernet0/1      1   0     192.168.13.1/255.255.255.0   1     BDR    0/0
Ethernet0/0             1   0     192.168.11.1/255.255.255.0   100   DR     0/0

Here, we can clearly see that:

  • FastEthernet and GigabitEthernet interfaces have a cost of 1

  • Ethernet (10 Mbps) has a cost of 100

OSPF uses these values to evaluate the efficiency of each OSPF link.
The lower the cost, the more preferred the path.

2. How OSPF Selects the Path

In a typical OSPF network, to determine which path can be used to send packets to the destination, OSPF accumulates the cost of all the outgoing interfaces along the way and chooses the path with the lowest total cost.

OSPF route calculation showing path selection through multiple routers with equal interface costs

Figure 2 – OSPF Topology

In this example, we can check the route selected for 192.168.20.0/24 using:

R1# show ip route 192.168.20.0
Routing entry for 192.168.20.0/24
  Known via "ospf 1", distance 110, metric 3, type intra area
  Last update from 192.168.4.2 on GigabitEthernet0/1, 00:00:10 ago
  Routing Descriptor Blocks:
  * 192.168.4.2, from 192.168.20.1, 00:00:10 ago, via GigabitEthernet0/1
      Route metric is 3, traffic share count is 1

As you can see, the OSPF cost is 3 when using the path:
R1 -> R5 -> R4 -> 192.168.20.0/24
Cost: 1 + 1 + 1 = total cost 3

The alternative path is:
R1 -> R2 -> R3 -> R4 -> 192.168.20.0/24
Cost: 1 + 1 + 1 + 1 = total cost 4

OSPF chooses the path R1 → R5 → R4 with the lowest total cost of 3

Figure 3 – OSPF chooses the path with the lowest total cost

OSPF selects the first path because it has the lowest metric.

3. How OSPF Calculates Cost

The OSPF cost is calculated using the following formula:

OSPF cost formula showing reference bandwidth divided by link bandwidth in Mbps

Figure 4 – Formula used to calculate OSPF cost

The reference bandwidth (in Mbps) is, by default, set to 100 Mbps.
The link bandwidth is determined by your interface type on your OSPF router.

Imagine you have a FastEthernet 100 Mbps interface:
→ The calculation is: Cost = 100 / 100 = 1

Pretty easy, right?

This default reference value was defined a long time ago, back when 100 Mbps was considered fast.
But today, network speeds have evolved a lot and that creates a problem.

Let’s look at the different interface types, their bandwidths, and their default OSPF costs:

OSPF Default Cost per Interface Type

Interface

Formula (100 / Bandwidth in Mbps)

OSPF Cost

DSL (768 Kbps)

100 / 0.768

133

DS1 (1.544 Mbps)

100 / 1.544

64

Ethernet (10 Mbps)

100 / 10

10

FastEthernet (100 Mbps)

100 / 100

1

GigabitEthernet (1 Gbps)

100 / 1000

1

10-GigabitEthernet (10 Gbps)

100 / 10000

1

40-GigabitEthernet (40 Gbps)

100 / 40000

1

Table 1 – Default OSPF cost values per interface type (based on 100 Mbps reference).


If you examine the table above, you'll notice a key detail: from 100 Mbps and more, the OSPF cost stays fixed at 1, even as interface speeds increase. That’s because the cost is calculated using the formula 100 / bandwidth, and OSPF cost only works with whole numbers.

When the result is a decimal, like 0.1 for a 1 Gbps link, it gets rounded up to 1. This means that whether you're using FastEthernet, Gigabit, or even 10 Gbps interfaces, OSPF sees them all as equal in cost.

The Problem With Default Cost

In this OSPF topology, all links with a bandwidth of 100 Mbps or more are assigned the same cost: 1.

OSPF topology showing all links with cost 1 by default when bandwidth is 100 Mbps or higher

Figure 5 – OSPF sees 100 Mbps and 1 Gbps as equal

Here’s an example:
If we use 1 Gbps interfaces on the path R1 → R5 → R6 → R4, each link will have a cost of 1.

But a 100 Mbps link will also have a cost of 1, so OSPF can’t tell the difference between FastEthernet and Gigabit links.

In this case, OSPF will see two paths with the same total cost, and will load-balance the traffic between them.

R1# show ip route 192.168.20.0
Routing entry for 192.168.20.0/24
  Known via "ospf 1", distance 110, metric 4, type intra area
  Last update from 192.168.6.2 on GigabitEthernet0/1, 00:00:12 ago
  Routing Descriptor Blocks:
  * 192.168.6.2, from 192.168.20.1, 00:00:12 ago, via GigabitEthernet0/1
      Route metric is 4, traffic share count is 1
    192.168.2.2, from 192.168.20.1, 00:00:12 ago, via GigabitEthernet0/0
      Route metric is 4, traffic share count is 1

So R1 sends packets on both paths equally even if one uses Gigabit links and the other uses older 100 Mbps interfaces.

4. How to Tune OSPF Cost (3 Configurable Elements)

In order to make sure OSPF always uses the best path and is able to recognize and prioritize faster links, we can adjust three components of the OSPF cost calculation.

OSPF cost formula with highlighted elements: reference bandwidth, link bandwidth, and cost

Figure 6 – Three elements can be tuned to influence OSPF cost

1. Reference Bandwidth

The first element we can modify is the reference bandwidth.
The best practice is to set the reference bandwidth to the highest bandwidth link in the OSPF network.

Since we have 1 Gigabit interfaces in our topology, we can set the reference bandwidth to 1000 Mbps using:

R1# conf t
Enter configuration commands, one per line. End with CNTL/Z.

R1(config)# router ospf 1
R1(config-router)# auto-cost reference-bandwidth ?
<1-4294967> The reference bandwidth in terms of Mbits per second

R1(config-router)# auto-cost reference-bandwidth 1000
% OSPF: Reference bandwidth is changed.
Please ensure reference bandwidth is consistent across all routers.

By using 1000 as the reference bandwidth:

OSPF cost formula with two examples: 1000 Mbps over 100 Mbps equals cost 10, and 1000 over 1000 equals cost 1

Figure 7 – With 1000 Mbps as reference, OSPF can now differentiate link speeds

  • A FastEthernet link of 100 Mbps will now have an OSPF cost of 10

  • A GigabitEthernet link of 1000 Mbps will have a cost of 1

The reference bandwidth must be configured the same on all OSPF routers.

The 1 Gbps interface now has a cost of 1, which allows OSPF to correctly view it as a more efficient path.

If we retake our example, we can see that packets to 192.168.20.0/24 will now use: R1 → R5 → R6 → R4 → 192.168.20.0/24

OSPF path selection example showing lower cost through R1, R5, R6, and R4 using Gigabit links

Figure 8 – OSPF now selects the faster path thanks to the updated cost values

This path gives a cost of: 1 + 1 + 1 + 10 = 13

Whereas the previous path:

R1 → R2 → R3 → R4 → 192.168.20.0/24 has a total cost of 40.

R1#show ip route 192.168.20.0
Routing entry for 192.168.20.0/24
  Known via "ospf 1", distance 110, metric 13, type intra area
  Last update from 192.168.6.2 on GigabitEthernet0/1, 00:00:15 ago
  Routing Descriptor Blocks:
  * 192.168.6.2, from 192.168.20.1, 00:00:15 ago, via GigabitEthernet0/1
      Route metric is 103, traffic share count is 1

By modifying the reference bandwidth, you can adjust the OSPF cost in your topology. Always follow the best practice of setting the reference bandwidth to match the highest bandwidth interface in your network.

2. OSPF Cost (Per Interface)

The second parameter is the OSPF cost, and this one is modifiable per interface.
If you want to increase or decrease the cost of a specific link, you can set it manually.

Imagine we are on R1, and we want to increase the cost of G0/1 (which is the link to R5) to 100.
We can use the command ip ospf cost :

R1(config)# interface GigabitEthernet0/1
R1(config-if)# ip ospf cost ?
  <1-65535>  Cost

R1(config-if)# ip ospf cost 100

By doing this, OSPF will now prefer the path: R1 → R2 → R3 → R4 → 192.168.20.0/24

OSPF topology with manual cost increase on R1 to R5 link, changing preferred path selection

Figure 9 – R1 now prefers the upper path due to the manual cost set to 100

Because its total cost is 40, while the other path through R5 now has a cost of 112.

To verify the change, we can use the command: show ip ospf interface brief

R1#show ip ospf interface brief 

Interface           PID   Area    IP Address/Mask           Cost  State  Nbrs F/C
GigabitEthernet0/0    1     0     192.168.1.1/255.255.255.0   10     DR     0/0
GigabitEthernet0/1    1     0     192.168.4.1/255.255.255.0   100     DR     0/0

Here we are the cost is now 100 for interface G0/1.

3. Interface Bandwidth

The last element we can modify is the interface bandwidth.

OSPF cost formula highlighting link bandwidth as a configurable parameter on Cisco IOS

Figure 10 – Link bandwidth can be modified manually.

On Cisco IOS, you can manually configure the bandwidth value of a link using the bandwidth command (in kilobits) under interface configuration mode.

For example, imagine we are using a GigabitEthernet interface (1 Gbps = 1,000 Mbps).
We can simulate that the interface operates at 100 Mbps, which is equivalent to 100,000 kilobits.

R1(config)# int g0/1
R1(config-if)# bandwidth ?
<1-10000000> Bandwidth in kilobits

R1(config-if)# bandwidth 1000000

Let’s verify it:

R1# show interfaces g0/1
GigabitEthernet0/1 is up, line protocol is up (connected)
Hardware is CN Gigabit Ethernet, address is 0002.1643.9701 (bia 0002.1643.9701)
Internet address is 192.168.4.1/24
MTU 1500 bytes, BW 100000 Kbit, DLY 10 usec,
reliability 255/255, txload 1/255, rxload 1/255
Encapsulation ARPA, loopback not set
Keepalive set (10 sec)
Full-duplex, 100Mb/s, media type is RJ45
output flow-control is unsupported, input flow-control is unsupported
ARP type: ARPA, ARP Timeout 04:00:00,
Last input 00:00:08, output 00:00:05, output hang never
Last clearing of "show interface" counters never
Input queue: 0/75/0 (size/max/drops); Total output drops: 0
Queueing strategy: fifo
Output queue :0/40 (size/max)
5 minute input rate 54 bits/sec, 0 packets/sec
5 minute output rate 54 bits/sec, 0 packets/sec
156 packets input, 11332 bytes, 0 no buffer
Received 0 broadcasts, 0 runts, 0 giants, 0 throttles
0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored, 0 abort
0 watchdog, 1017 multicast, 0 pause input
0 input packets with dribble condition detected
151 packets output, 10708 bytes, 0 underruns
0 output errors, 0 collisions, 1 interface resets
0 unknown protocol drops
0 babbles, 0 late collision, 0 deferred
0 lost carrier, 0 no carrier
0 output buffer failures, 0 output buffers swapped out

By doing this, OSPF will now calculate the cost using:

Cost = Reference Bandwidth (Mbps) / Interface Bandwidth (Mbps)Cost = 1000 / 100 = 10

Now, if we check the OSPF cost:

R1# show ip ospf interface brief

Interface              PID   Area    IP Address/Mask            Cost  State  Nbrs
GigabitEthernet0/0       1   0     192.168.12.1/255.255.255.0    1     DR     0/0
GigabitEthernet0/1       1   0     192.168.4.1/255.255.255.0     10    BDR    0/0

Keep in mind:
This command does not change the real bandwidth of the interface, it only tells the OSPF process how to calculate the cost.

Summary

  • OSPF chooses paths based on cumulative interface cost.

  • The default cost logic is outdated because it assumes 100 Mbps is the top speed.

  • You can fix this by:

    • Setting the reference bandwidth correctly

    • Manually adjusting interface cost

    • Changing the interface bandwidth value (affects OSPF cost calculation only)