6

I've been learning OSPF adjacency process using packet tracer. The topology is a simple point-to-point network - two routers are connected with ethernet cable(fastEthernet 0/0 on both ends).

Here are the logs of the slave router:

Send DBD to 2.2.2.2 on FastEthernet0/0 seq 0x462ff3e6 opt 0x00 flag 0x7 len 32
Rcv DBD from 2.2.2.2 on FastEthernet0/0 seq 0x634cd9f8 opt 0x00 flag 0x7 len 32  mtu 1500 state EXSTART
NBR Negotiation Done. We are the SLAVE
Send DBD to 2.2.2.2 on FastEthernet0/0 seq 0x634cd9f8 opt 0x00 flag 0x2 len 72
Rcv DBD from 2.2.2.2 on FastEthernet0/0 seq 0x634cd9f9 opt 0x00 flag 0x3 len 72  mtu 1500 state EXCHANGE
Send DBD to 2.2.2.2 on FastEthernet0/0 seq 0x634cd9f9 opt 0x00 flag 0x0 len 32
Rcv DBD from 2.2.2.2 on FastEthernet0/0 seq 0x634cd9fa opt 0x00 flag 0x1 len 32  mtu 1500 state EXCHANGE
Send DBD to 2.2.2.2 on FastEthernet0/0 seq 0x634cd9fa opt 0x00 flag 0x0 len 32
Exchange Done with 2.2.2.2 on FastEthernet0/0
Synchronized with with 2.2.2.2 on FastEthernet0/0, state FULL
%OSPF-5-ADJCHG: Process 1, Nbr 2.2.2.2 on FastEthernet0/0 from LOADING to FULL, Loading Done
OSPF: Send DBD to 2.2.2.2 on FastEthernet0/0 seq 0x634cd9fa opt 0x00 flag 0x0 len 32

Here are the logs of the master router:

Rcv DBD from 1.1.1.1 on FastEthernet0/0 seq 0x462ff3e6 opt 0x00 flag 0x7 len 32  mtu 1500 state INIT
Send DBD to 1.1.1.1 on FastEthernet0/0 seq 0x634cd9f8 opt 0x00 flag 0x7 len 32
First DBD and we are not SLAVE
Rcv DBD from 1.1.1.1 on FastEthernet0/0 seq 0x634cd9f8 opt 0x00 flag 0x2 len 72  mtu 1500 state EXSTART
NBR Negotiation Done. We are the MASTER
Send DBD to 1.1.1.1 on FastEthernet0/0 seq 0x634cd9f9 opt 0x00 flag 0x3 len 72
Rcv DBD from 1.1.1.1 on FastEthernet0/0 seq 0x634cd9f9 opt 0x00 flag 0x0 len 32  mtu 1500 state EXCHANGE
Send DBD to 1.1.1.1 on FastEthernet0/0 seq 0x634cd9fa opt 0x00 flag 0x1 len 32
Rcv DBD from 1.1.1.1 on FastEthernet0/0 seq 0x634cd9fa opt 0x00 flag 0x0 len 32  mtu 1500 state EXCHANGE
Exchange Done with 1.1.1.1 on FastEthernet0/0
Synchronized with with 1.1.1.1 on FastEthernet0/0, state FULL
%OSPF-5-ADJCHG: Process 1, Nbr 1.1.1.1 on FastEthernet0/0 from LOADING to FULL, Loading Done
OSPF: Rcv DBD from 1.1.1.1 on FastEthernet0/0 seq 0x634cd9fa opt 0x00 flag 0x0 len 32  mtu 1500 state FULL

Notice the last packet sent by the slave - the slave is in the 'Full' state when it decided to sent the packet, plus two last packets sent by the slave are completely identical and were sent one right after another, without the master's interference. The question is : What is the purpose of the last database description packet sent by the slave router? The RFC states that "In states Loading and Full the slave must resend its last Database Description packet in response to duplicate Database Description packets received from the master.", but (I might be wrong) the master didn't send any duplicates to the slave.

2
  • 1
    Stop posting PICTURES of TEXT. Just post the text.
    – Ricky
    Apr 15, 2023 at 17:26
  • Oh, sorry. My bad. I will edit the question
    – MyrzabekK
    Apr 16, 2023 at 8:31

1 Answer 1

5

The Master / Slave election in OSPF is how OSPF does "reliable" DBD exchange.

The idea is once the Master and Slave are elected, the "conversation" always goes one packet from the Master, then one packet from the Slave.

enter image description here

This image, taken from this video, shows the process. Notice the first DBD from R1 is grayed out, this is because in first two DBDs (where both routers think they are the master) is purely for the purpose of identifying which one is the "real" master.

The Router-ID comparison is done, and then the newly determined slave confirms they are the slave by sending the first "response from the slave" DBD. And from there, the one-by-one master-then-slave communication continues.

If the Slave has more to send, it will indicate a "more" bit in the DBD indicating so:

enter image description here

This will prompt the Master to send an "empty" DBD, just so the Slave can respond with more LSDB descriptors.

If the Master has More to send, since it's the Master, it can just send the next, and expect the Slave to respond.

In all cases, it is always a 1 by 1 DBD packet exchange between Master and Slave. This is the "reliability" strategy OSPF chose for the DBD exchange.

There are more details in the video, if you're interested (the master/slave section starts around 7:50). Disclaimer, this is a video I created for my YT channel.

2
  • 1
    Thank you for your answer, it really helped me structure my knowledge of the adj process. Your YT channel is awesome! Subscribed! But, if you check the logs, you can see that the slave sent the last dd packet in state "Full" and the last two dd packets sent by the slave are sent one after another without the master reacting to the first of the two
    – MyrzabekK
    Apr 16, 2023 at 8:41
  • Glad you enjoyed the content. =) The effect you are seeing is a bug (feature?) of the Debugs... the last DBD is not a new DBD. Look at the Sequence numbers: 0x634cd9fa, it matches the same as the prior. All the other pairs of DBDs have unique Sequence numbers. For reasons unbeknownst to me, you are seeing another Debug message for the same DBD. Another clue is the prefix OSPF: only exists in the duplicate -- probably another OSPF debug category displaying that one and you happen to have both debug message types turned on.
    – Eddie
    Apr 16, 2023 at 23:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.