Route My World!

A CCNA/CCNP Blog

Examining the OSPF Neighbor Exchange Process

Posted by Aragoen Celtdra on February 19th, 2009

Using the Hello protocol, there is a series of exchanges that routers go through in order to establish relationship when OSPF is initilized. I’d like to go through some of this steps using examples from a lab environment, and watching some debug output in the process.

To start, here’s the setup for the exercise:

Figure 1: A simple topology
ospfexchprotoc

Dynamips .net Config:

# OSPF Neighbor Exchange Lab Topology
autostart = False
ghostios = true
sparsemem = true
[localhost]

   [[7200]]
        image = \Program Files\Dynamips\images\C7200-JK.BIN
        # On Linux / Unix use forward slashes:
        # image = /opt/7200-images/c7200-jk9o3s-mz.124-7a.image
        npe = npe-400
        ram = 96
        ghostios = True
   
    [[ROUTER A]]
        Fa0/0 = B Fa0/0
        model = 7200
        console = 2001

    [[router B]]
        model = 7200
        console = 2002

Down State

Figure 2: Router A – interface added to OSPF
ospfdownstate2

  • When the router is enabled on the LAN, it starts in the Down state and starts sending out hello packets to multicast address 224.0.0.5.
  • When in Down state, it doesn’t mean that the interface or router itself is down. It’s just that it hasn’t received any Hellos from any neighbors.
  • When an interface is enabled on OSPF, it starts sending out Hello packets to multicast 224.0.0.5 as seen in the figure above.
  • Notice also that after sendnig Hello packets 4 times (40 seconds) and not finding an OSPF neighbor, it takes it upon itself to elect itself as a Designated Router (DR) for that LAN segment.

Init State

  • The init state indicates that a router sees HELLO packets from the neighbor, but two-way communication has not been established. A Cisco router includes the Router IDs of all neighbors in the init (or higher) state in the Neighbor field of its HELLO packets. For two-way communication to be established with a neighbor, a router also must see its own Router ID in the Neighbor field of the neighbor’s HELLO packets.

Figure 3: Router B turns on OSPF on Fa0/0
b-up

Figure 4: Router A Goes to Init State
a-init

  • At 4:43:11 PM, Router B’s Fa0/0 is enabled for OSPF. Almost immediately it starts sending out Hello packets.
  • Within a few tenths of a second (at 4:43:17) Router A receives a packet from Router B with its database summary.
  • Router A also transitions to the Init state, indicating that although it has received something from Router B, nowhere in those packets is Router A’s Router-ID.
    • Remember, in order for the relationship two transition to the next level (two-way state), the receiver must receive a Hello from the other neighbor which contains its (Router A’s) own Router ID.
  • However, aside from needing to receive its own Router-ID in the neighbor field of the neighbors Hello packet, receiving a DBD from the neighbor also puts the state into a two-way state.
    • Looking at the output in figure 4, it confirms that Router A did receive a DBD from Router B.

Two-way State

  • In order to attain the 2-way state, a bi-directional communication has to be established between two routers.
    • That means that each router has seen the other’s hello packet.
  • When the router receiving the hello packet sees its own Router ID in the received Hello packet’s neighbor field.

Figure 5: Router A in Two-way State
a-2way

Figure 6: Router B in Two-way State
b-2way

  • I mentioned earlier that receiving a DBD from the neighbor puts the state in a 2Way.
  • In this particular example, Router B sent Router A a DBD as soon as it came up (see figure 4) and within milliseconds, Router A went from Init state to a 2way state.

DR Election

  • At the end of this state, DR and BDR elections also occur:

Figure 7: Router A – DR Election
a-drelection

Figure 8: Router B – DR Election
b-drelection

  • Recall that the router with the highest OSPF priority on a segment will become the DR for that segment.
    • In this case, the OSPF priority is not modified therefore they remain tied at default value of 1.
  • In case of a tie, the following Router-ID criteria is followed in order of highest priority (#1 being the best):
    1. Statically configured Router-ID using router-id command.
    2. Highest loopback interface.
    3. Highest active interface.
  • In the figures above, none of the provisions just mentioned are actually used. In fact, notice that Router A is the DR despite having a lower IP address.
    • To determine why, look back at when the neighbor exchange started. On the very first figure (figure 2) Router A has established itself as the DR when there were no neighbors up at the time. A DR will not give up its status even if a new interface with a higher priority in its Hello packet comes up. So even though Router B with better priority comes up, it will not preempt the already established DR.
    • You can change this by reloading the router or if the OSPF routing process restarts.

Exstart State

  • If the routers involved in the neighbor process are connected on a point-to-point link, the routers become Full after exchanging Hellos.
  • On Ethernet links, after the DR and BDR election has been established, a master-slave relationship is formed.
    • The router with the higher router-id becomes the master and initiates the exchange.

Figure 9: Router B – Exstart
b-exstart

Figure 10: Router A – Slave
a-slave

  • Notice that even though Router A is the DR, it doesn’t necesarrily become the master. Remember that the DR/BDR election can take place using a higher priority configured on the router. Or in this case, because Router A was elected a DR first, despite having a lower router ID.
  • Router B becomes master because it has a higher router-id regardless of who the DR is.

Exchange State

Figure 11: Router A  – Exchange
a-exchange1

Figure 12: Router B – Exchange
b-exchange1

  • Notice in the figures above that  OSPF routers exchange database descriptor (DBD) packets as they tranisition to the Exchange state.
    • DBDs contain link-state advertisement (LSA) headers that describe the contents of the LSDB.
  • Each DBD packet has a sequence number which can be incremented only by master. These
  • Notice also that the routers send link-state request (LS REQ) packets. Once received the router sends link-state update packets (which contain the entire LSA) to fulfill the requested information.
  • The contents of the DBD received are compared to the information contained in the routers link-state database to check if new or more current link-state information is available with the neighbor.

Loading State

  • This is when the actual exchange of link state information happens.
  • Link State requests are sent based on information provided by the DBDs -  information such as outdated or missing LSAs. The neighbor then sends the requested information back contained in Link State updates (LSUs).
    • All LSUs need to be acknowledged.

Figure 13: Router A: Loading-Full State
a-loading-full

Figure 14: Router B: Loading-Full State
b-loading-full

Full State

  • Routers achieve Full neighbor adjacency at this state. Network and router LSAs are exchanged and router databases are fully synchronized.

3 Responses to “Examining the OSPF Neighbor Exchange Process”

  1. Jan BrooksNo Gravatar Says:

    Hey I wanted to say that this article is awesome! Very interesting to see exactly what is going on when two routers are forming a relationship.  You should do some more on different area types with OSPF and what happens when routes go down.

  2. suffahNo Gravatar Says:

    Great post as always Aragoen.  Perfect timing as usual.  You scare me.  :)

  3. Aragoen CeltdraNo Gravatar Says:

    @Suffah: LOL! I hope I scare you in a good way. =D

    @Jan:Thanks Jan! I’ll keep that in mind. Unfortunately, I probably won’t have a lot of time to do this kind of writeups in the following weeks because of test preparation. This article was already pre-written from a while back. I just had to “re-lab” it so I can give examples for the theory.

    However, I plan to do more of this type of write-ups after I take the exam – so stay tuned for that. ;)   And if you look through some of my archives, you’ll find other posts similar to this one.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

Route My World! is Digg proof thanks to caching by WP Super Cache