Demystifying the OSPF database

A lot of people troubleshoot OSPF, without ever once looking at the OSPF database and understanding the LSA types. I think this has more to do with the fact that they do not understand it properly and how to actually get information from it.

I hope to demystify it and show what a powerful troubleshooting tool it can be.

OSPFv2 for IPv4 has 7 main LSA types. You’ll probably only have experience with 6 of them as LSA type 6 was for Multicast Extensions which isn’t supported in IOS and a number of other vendors implementations.

I’ll attempt to show database output for Cisco IOS, Juniper JUNOS as well as Brocade/Foundry’s code. I can’t show all the types with Brocade as I don’t have a Brocade lab handy to create them all.

Let’s first have a look at what each OS gives as as viewable database options. Note that I’ve changed my public IPs and DNS names as appropriate.

Cisco:

CISCO#sh ip ospf database ?
adv-router        Advertising Router link states
asbr-summary      ASBR summary link states
database-summary  Summary of database
external          External link states
internal          Internal LSA information
multicast         Multicast Topology
network           Network link states
nssa-external     NSSA External link states
opaque-area       Opaque Area link states
opaque-as         Opaque AS link states
opaque-link       Opaque Link-Local link states
router            Router link states
self-originate    Self-originated link states
summary           Network summary link states
topology          Unicast Topology

Juniper:

[email protected]> show ospf database ?
Possible completions:
<[Enter]>            Execute this command
advertising-router   Router ID of advertising router
area                 OSPF area ID
asbrsummary          Summary AS boundary router link-state advertisements
brief                Display brief output (default)
detail               Display detailed output
extensive            Display extensive output
external             External link-state advertisements
instance             Name of OSPF instance
link-local           Link local link-state advertisements
logical-system       Name of logical system, or 'all'
lsa-id               Link-state advertisement ID
netsummary           Summary network link-state advertisements
network              Network link-state advertisements
nssa                 Not-so-stubby area link-state advertisements
opaque-area          Opaque area-scope link-state advertisements
router               Router link-state advertisements
summary              Display summary output

Brocade:

[email protected]#show ip ospf database link-state ?
  advertise         Display link state by advertisement
  asbr              Display link state by asbr link
  extensive         Display detailed info of entries in OSPF database
  link-state-id     Display link state by link-state ID
  network           Display link state by network link
  nssa              Display link state by NSSA
  opaque-area       Display link state by opaque area
  router            Display link state by router link
  router-id         Display link state by router ID
  self-originate    Display self-originated links-states
  sequence-number   Display link state by sequence number
  summary           Display link state by summary link

The database allows us to see information in all of the needed LSAs. Hence it is important to also know what each LSA actually does, and what information it’s supposed to contain. We’ll go through each of them and extract the required information from the database itself. Each time you look at the database itself and specify a type, you need to give an argument. That argument will depend on the lsa type.

Type 1 – Router LSA:
The router LSA is the lsa that each router originates. It contains information about the local router, it’s attached links and associated costs of those links, and routers it is adjacent to. This LSA is kept within the local area in which it is originated from. The argument is the router ID (RID) of each router
Cisco:

CISCO#sh ip ospf database router 10.100.0.33

            OSPF Router with ID (196.196.196.196) (Process ID 1)

                Router Link States (Area 0)

  Routing Bit Set on this LSA in topology Base with MTID 0
  LS age: 1611
  Options: (No TOS-capability, DC)
  LS Type: Router Links
  Link State ID: 10.100.0.33
  Advertising Router: 10.100.0.33
  LS Seq Number: 80001FEB
  Checksum: 0x6B0C
  Length: 48
  Area Border Router
  AS Boundary Router
  Number of Links: 2

    Link connected to: another Router (point-to-point)
     (Link ID) Neighboring Router ID: 196.196.196.196
     (Link Data) Router Interface address: 10.100.0.33
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

    Link connected to: a Stub Network
     (Link ID) Network/subnet number: 10.100.0.32
     (Link Data) Network Mask: 255.255.255.252
      Number of MTID metrics: 0
       TOS 0 Metrics: 1

Juniper:

[email protected]> show ospf database router advertising-router 10.100.0.33 extensive

    OSPF database, Area 0.0.0.0
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Router   10.100.0.33      10.100.0.33      0x80001feb  1778  0x22 0x6b0c  48
  bits 0x3, link count 2
  id 196.196.196.196, data 10.100.0.33, Type PointToPoint (1)
    Topology count: 0, Default metric: 1
  id 10.100.0.32, data 255.255.255.252, Type Stub (3)
    Topology count: 0, Default metric: 1
  Topology default (ID 0)
    Type: PointToPoint, Node ID: 196.196.196.196
      Metric: 1, Bidirectional
  Aging timer 00:30:22
  Installed 00:29:35 ago, expires in 00:30:22, sent 00:29:33 ago
  Last changed 10w5d 20:28:57 ago, Change count: 3

Brocade:

[email protected]#show ip ospf database link-state router 10.100.0.33
Area ID         Type LS ID           Adv Rtr         Seq(Hex) Age  Cksum  SyncState
0               Rtr  10.100.0.33     10.100.0.33     80001feb 1829 0x6b0c Done
  LSA Header:  options: 0x22, seq-nbr: 0x80001feb, length: 48, flags:0x0300
  link id = 196.196.196.196, link data = 10.100.0.33, type = point-to-point(1)
  tos count = 0, tos0_metric = 1
  link id = 10.100.0.32, link data = 255.255.255.252, type = stub(3)
  tos count = 0, tos0_metric = 1

All of the above pretty much tell us the same thing. The router with the RID of 10.100.0.33 has 2 links in OSPF. 1 is a point-to-point link and the other is a stub link. Pretty simple stuff.

Type 2 – Network LSA:
A network LSA is originated by the DR on the segment. DRs are only required on segment in which there are more than 2 OSPF speakers. OSPF treats ethernet segments as non point-to-point by default, so even if there are only 2 routers on there, there will still be a DR. You can change this behaviour by configuring the links as point-to-point. Type 2’s are local to the area in which they originate. The argument is the IP address of the physical interface on the segment of the DR
Cisco:

CISCO#sh ip ospf database network 10.0.10.6

            OSPF Router with ID (248.248.248.248) (Process ID 1)

                Net Link States (Area 0)

  Routing Bit Set on this LSA
  LS age: 1196
  Options: (No TOS-capability, No DC)
  LS Type: Network Links
  Link State ID: 10.0.10.6 (address of Designated Router)
  Advertising Router: r1.company.com
  LS Seq Number: 8000706A
  Checksum: 0xDCE8
  Length: 32
  Network Mask: /30
        Attached Router: 196.196.196.196
        Attached Router: 248.248.248.248

Juniper:

[email protected]> show ospf database network lsa-id 10.0.10.6 extensive

    OSPF database, Area 0.0.0.0
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Network  10.0.10.6        196.196.196.196   0x8000706a  1374  0x2  0xdce8  32
  mask 255.255.255.252
  attached router 196.196.196.196
  attached router 248.248.248.248
  Topology default (ID 0)
    Type: Transit, Node ID: 248.248.248.248
      Metric: 0, Bidirectional
    Type: Transit, Node ID: 196.196.196.196
      Metric: 0, Bidirectional
  Aging timer 00:37:06
  Installed 00:22:50 ago, expires in 00:37:06, sent 00:22:49 ago
  Last changed 10w5d 18:09:57 ago, Change count: 1

Brocade:

[email protected]#show ip ospf database link-state network 10.0.10.6
Area ID         Type LS ID           Adv Rtr         Seq(Hex) Age  Cksum  SyncState
0               Net  10.0.10.6       196.196.196.196  8000706a 1411 0xdce8 Done
  LSA Header:  options: 0x02, seq-nbr: 0x8000706a, length: 32
  NetworkMask: 255.255.255.252
  attached router: 196.196.196.196
  attached router: 248.248.248.248

All 3 of the above outputs tell us that 10.0.10.6 is originating a type 2 lsa which says on that particular segment there are 2 routers attached.

Type 3 – Network Summary LSA:
Type 3’s are originated by ABRs. The Type3 tells OSPF speakers in 1 area how to reach prefixes in another area, through the advertising ABR. The argument is the network prefix itself.
Cisco:

CISCO#sh ip ospf database summary 1.1.1.0

            OSPF Router with ID (248.248.248.248) (Process ID 1)

                Summary Net Link States (Area 0)

  Routing Bit Set on this LSA
  LS age: 258
  Options: (No TOS-capability, No DC, Upward)
  LS Type: Summary Links(Network)
  Link State ID: 1.1.1.0 (summary Network Number)
  Advertising Router: r2.company.com
  LS Seq Number: 80000001
  Checksum: 0x9D57
  Length: 28
  Network Mask: /31
        TOS: 0  Metric: 1000

Juniper:

[email protected]> show ospf database netsummary lsa-id 1.1.1.0 extensive

    OSPF database, Area 0.0.0.0
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Summary  1.1.1.0          196.196.196.196  0x80000001   314  0x2  0x9d57  28
  mask 255.255.255.254
  Topology default (ID 0) -> Metric: 1000
  Aging timer 00:54:46
  Installed 00:05:09 ago, expires in 00:54:46, sent 00:05:09 ago
  Last changed 00:05:09 ago, Change count: 1

Brocade:

[email protected]#show ip ospf database link-state summary 1.1.1.0
Area ID         Type LS ID           Adv Rtr         Seq(Hex) Age  Cksum  SyncState
0               Summ 1.1.1.0         196.196.196.196 80000001 341  0x9d57 Done
  LSA Header:  options: 0x02, seq-nbr: 0x80000001, length: 28
  NetworkMask: 255.255.255.254
  TOS 0:  metric: 1000

All 3 of the above show me the network address and subnet mask of the network, the ABR who originated the LSA as well as the ABRs cost to the network. Note that a Typ3 LSA can only contain a single network. A new type 3 lsa needs to be generated for each and every network that an ABR is advertising. i.e. not very efficient. A type 3 is flooded to all areas.

Type 4 – ASBR Summary LSA:
Type4’s can be a little bit confusing. When an ASBR advertises an external prefix, the next-hop will be the ASBR’s IP address. OSPF speakers in other areas need to know how to get to this ASBR. A Type4 will be originated by an ABR attatched to the same area an an ASBR, and will have information of how to get to the ASBR. An ABR will also advertise a Type4 from another ABR if the ASBR is 2 areas away and so on. Take a quick look at the image below that I used for the Type7 example. Both R3 and R2 originate Type4’s that R1 and R6 will be able to see:

Cisco:

R6#sh ip ospf database asbr-summary 10.34.34.3

            OSPF Router with ID (10.16.16.6) (Process ID 1)

                Summary ASB Link States (Area 2)

  Routing Bit Set on this LSA
  LS age: 415
  Options: (No TOS-capability, DC, Upward)
  LS Type: Summary Links(AS Boundary Router)
  Link State ID: 10.34.34.3 (AS Boundary Router address)
  Advertising Router: 10.13.13.1
  LS Seq Number: 80000001
  Checksum: 0xAB1
  Length: 28
  Network Mask: /0
        TOS: 0  Metric: 10

Type 5 – External LSA:
Type5 LSA’s are originated by ASBRs. Each LSA contains information about the external prefix. The argument needed is the prefix itself. Like Type3s, ASBRs need to originate a separate LSA for each and every prefix it needs to advertise.
Cisco:

CISCO#sh ip ospf database external 10.0.2.112

            OSPF Router with ID (248.248.248.248) (Process ID 1)

                Type-5 AS External Link States

  Routing Bit Set on this LSA
  LS age: 1382
  Options: (No TOS-capability, No DC)
  LS Type: AS External Link
  Link State ID: 10.0.2.112 (External Network Number )
  Advertising Router: r3.company.com
  LS Seq Number: 80004DCD
  Checksum: 0x6065
  Length: 36
  Network Mask: /29
        Metric Type: 2 (Larger than any link state path)
        TOS: 0
        Metric: 1
        Forward Address: 0.0.0.0
        External Route Tag: 0

Juniper:

[email protected]> show ospf database external lsa-id 10.0.2.112 extensive
    OSPF AS SCOPE link state database
 Type       ID               Adv Rtr           Seq      Age  Opt  Cksum  Len
Extern   10.0.2.112       196.196.196.196  0x80004dcd  1546  0x2  0x6065  36
  mask 255.255.255.248
  Topology default (ID 0)
    Type: 2, Metric: 1, Fwd addr: 0.0.0.0, Tag: 0.0.0.0
  Aging timer 00:34:13
  Installed 00:22:43 ago, expires in 00:34:14, sent 00:22:41 ago
  Last changed 19w1d 19:03:40 ago, Change count: 1

Brocade:

[email protected]#show ip ospf database external-link-state link-state-id 10.0.2.112
Ospf ext link-state by link-state ID 10.0.2.112 are in the following:

Type-5 AS External Link States

Index Age  LS ID           Router          Netmask  Metric   Flag Fwd Address   SyncState
587   1500 10.0.2.112      196.196.196.196 fffffff8 00000001 0000 0.0.0.0        Done
  LSA Header:  age: 1500, options: 0x02, seq-nbr: 0x80004dcd, length: 36
  NetworkMask: 255.255.255.248
  TOS 0:  metric_type: 2, metric: 1
          forwarding_address: 0.0.0.0
          external_route_tag: 0

Type 7 – NSSA External LSA:
Type7’s can also be a bit confusing. A Type7 is originated by an ASBR into it’s local areas. It tell other routers in the area about how to get to external prefixes. Like the Type3 and Type5, a separate LSA is needed for each prefix. The argument is the prefix. When a Type7 LSA reaches an ABR, the ABR will convert that Type7 into a Type5 LSA. It’ll also change the forwarding address. But what happens if the ASBR is also the ABR itself? Does it convert itself? Well, let’s lab it up to see. I can only do this on the Cisco as I have that lab. I’ll add Junos output sometime in the future.

Let’s use the following topology:


Area 1 is an NSSA area. Router 4 is redistributing it’s loopback interface (4.4.4.4/32) into area 1.
Cisco:

R2#sh ip ospf database nssa-external 4.4.4.4

            OSPF Router with ID (10.24.24.2) (Process ID 1)

                Type-7 AS External Link States (Area 1)

  LS age: 726
  Options: (No TOS-capability, Type 7/5 translation, DC)
  LS Type: AS External Link
  Link State ID: 4.4.4.4 (External Network Number )
  Advertising Router: 10.34.34.4
  LS Seq Number: 80000001
  Checksum: 0x29CC
  Length: 36
  Network Mask: /32
        Metric Type: 2 (Larger than any link state path)
        TOS: 0
        Metric: 20
        Forward Address: 10.24.24.4
        External Route Tag: 0

The contents of the LSA show us the prefix and mask. It also tells us where to send the packets to. In this case 10.24.24.4.

what about R1 though?

R1#sh ip ospf database nssa-external 4.4.4.4

            OSPF Router with ID (10.13.13.1) (Process ID 1)

There is no Type7 for it to see. This is because the ABRs converted that Type7 into a Type5. Let’s check this:

R1#sh ip ospf database nssa-external 4.4.4.4

            OSPF Router with ID (10.13.13.1) (Process ID 1)
R1#sh ip ospf database external 4.4.4.4

            OSPF Router with ID (10.13.13.1) (Process ID 1)

                Type-5 AS External Link States

  Routing Bit Set on this LSA
  LS age: 899
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 4.4.4.4 (External Network Number )
  Advertising Router: 10.34.34.3
  LS Seq Number: 80000001
  Checksum: 0xC33D
  Length: 36
  Network Mask: /32
        Metric Type: 2 (Larger than any link state path)
        TOS: 0
        Metric: 20
        Forward Address: 10.24.24.4
        External Route Tag: 0

R1 sees this information as a Type5 LSA. But there is a very important change here. Notice the forward address. This is R4’s address. If you look at the Type5 example in the post above, you’ll see that the forward address is 0.0.0.0 – This tells the router that the next-hop will be the ABR that advertised the LSA. This LSA is coming from R3, but it keeps the next-hop to 10.24.24.4 – You can actually change this behaviour if you somehow require it:

R3(config)#router ospf 1
R3(config-router)#area 1 nssa translate type7 suppress-fa

R1#sh ip ospf database external 4.4.4.4

            OSPF Router with ID (10.13.13.1) (Process ID 1)

                Type-5 AS External Link States

  Routing Bit Set on this LSA
  LS age: 22
  Options: (No TOS-capability, DC)
  LS Type: AS External Link
  Link State ID: 4.4.4.4 (External Network Number )
  Advertising Router: 10.34.34.3
  LS Seq Number: 80000002
  Checksum: 0xC07D
  Length: 36
  Network Mask: /32
        Metric Type: 2 (Larger than any link state path)
        TOS: 0
        Metric: 20
        Forward Address: 0.0.0.0
        External Route Tag: 0

Not only that, but surely both R2 and R3 converting and advertising into the same area is a waste of resource? It certainly is! There is an election that takes place that tells the ABRs which one will actually be doing the translations. Maybe I’ll do a blog post in future detailing this.

Published by

Darren

Network Architect. Dual CCIE and JNCIE-SP.

8 thoughts on “Demystifying the OSPF database”

  1. Wow, great post Darren.

    This is really useful as i am preparing for CCIE written and this helped me better understand OSPF.

    I think you forgot to mention the TNSSA.

    Thanks.

  2. regarding “A Type4 will be originated by an ABR attached to the same area an an ASBR”. I think this statement is not entirely true. Yes, Type 4 is originated by an ABR. However, it is NOT originated by the ABR of the area where the ASBR is located. Assume that there are two areas area 1 and area 2. R1 is the ABR of area 1. An ASBR is also present in area 1. R2 is ABR of area 2. In this scenario, the Type 4 LSA will not be originated by R1. The Type 4 LSA will be originated by R2 and flooded into area 2.

Leave a Reply