I'm trying to reconcile what I've read about the OSPF Master/Slave process, with what the RFC says, with what I'm seeing on the wire.
Everything I've read implies the Master starts the LSA exchange by sending the first DBD/LSR. But I have a series of captures that show otherwise.
When I looked up the RFC, Master/Slave was defined like this:
OSPF RFC 2328, Section 10:
Master/Slave
When the two neighbors are exchanging databases, they form a master/slave relationship. The master sends the first Database Description Packet, and is the only part that is allowed to retransmit. The slave can only respond to the master’s Database Description Packets. The master/slave relationship is negotiated in state ExStart.
But I have a few packet captures that don't seem to line up with this behavior. Here is some images of just one of them:
These are packets captured during the adjacency between R1 (10.0.12.1, Router-ID 1.1.1.1) and R2 (10.0.12.2, Router-ID 2.2.2.2):
Packet 30 and 32 are both peers sending DBD packets, for the sake of electing Master Slave. At this point, they both think they are the master (notice both send the the DPD with Master bit set to 1):
Router 2 has the higher Router-ID, and therefore becomes Master.
R1 acknowledges this in another DBD in Packet 33:
Notice DD Sequence # matches packet 30, and Master bit is set to 0 -- indicating R1 no longer thinks it is the Master.
Notice, however, this DBD includes an LSA that R1 has in it's Link State DB.
Also notice packet #35, the first Link-State Request (LSR) is sent from R1 (the slave):
And Packet #37 is the first Link-State Update, send by R2 (the Master):
From the packets above, we see the slave sent the first DBD with an LSA, and the slave sent the first LSR, and the master send the first LSU. I have 3 other captures (with different routers and different network types) that show similar behavior.
What does the OSPF RFC mean when it says The master sends the first Database Description Packet?
What does the Master really do within the Master/Slave relationship? As far as I can tell it merely determines the DD Sequence number used for the adjacency.
This question is not answered by the linked question. I'm not asking why a master/slave election is required. I'm asking why the master/slave behavior doesn't confirm to what is stated in the RFC, or nearly every other book/blog I've read. (that the master sends the first DBD/LSR).