OSPF Cost Calculation

Interface costs

Computed cost

Each interface has an associated cost. It is computed as follows:

reference bandwidth / configured bandwidth of interface in kbps

On Cisco routers, the reference bandwidth defaults to 100000 kbps. So, a DS-3 interface, with a configured bandwidth of 45000 kbps, has a cost of:

100,000,000 / 45,000 = 2222

The interface bandwidth must be explicitly configured. If not, the router will probably get it wrong. It is configured using the following syntax:

int h1/0

 bandwidth 45000

Different manufacturers use different reference bandwidths. It is therefore common practice for every router to have it's OSPF reference bandwidth set. Many sysadmins set it to 10000(k) using the following syntax:

router ospf 100

 auto-cost reference-bandwidth 10000

This reference bandwidth should be the same on all of your routers.

Once this is done, our DS-3 interface will have a cost of:

10,000,000 / 45,000 = 222

Configured cost

You may want to configure the costs on some of your interfaces, for instance to make the interface costs of both ends of a link match, to make path cost computation simpler for humans, or to force OSPF to prefer certain paths. To do this, use the following syntax:

int h1/0

 ip ospf cost 200

Now the OSPF cost of my DS-3 is 200.

Route metrics

Here's the easy part. To compute the OSPF cost of a route, start at the router doing the calculation and sum the costs of the interfaces used to exit each router that is traversed.

Note that the costs of the same path in the reverse direction will be different, if the exit interfaces have different costs than the interfaces used in the forward direction. This causes asymmetrical path costs, and may result in asymmetrical routes. (There is nothing wrong with asymmetrical routes, per se.)

Redistributed routes

An ASBR is an OSPF router that redistributes routes into OSPF that were learned from another protocol. When doing this redistribution, the ASBR often sets a metric.

For instance:

router OSPF 100

 redistribute static subnets route-map REDIST-MAP

!

route-map REDIST-MAP permit 10

 match ip address REDIST-LIST

 set metric 180

 set metric-type type-1

!

ip access-list standard REDIST-LIST

 permit 81.0.0.0 0.255.255.255

 permit 82.0.0.0 0.255.255.255

!

ip route 81.0.0.0 255.0.0.0 172.16.25.1

ip route 82.0.0.0 255.0.0.0 172.16.25.1

This code will tell OSPF that 81.x and 82.x are reachable via 172.16.25.1, with an OSPF metric of 180 and an OSPF metric type of E1 (external type 1). Some other router will calculate the cost to these networks by summing the exit interface costs to 172.16.25.1, and then adding 180.

(Had the metric-type been E2 (external type 2), the other router would not include the interface costs, and would consider the route to have a metric of 180.)