To understand the actual reason there is a need for a Designated Router (DR) and a Backup Designated Router (BDR), see my previous post OSPF The DR and BDR
This post focuses on how the DR and BDR are elected. For a detailed technical explanation it’s always a good idea to read the Request For Comments (RFCs) – even if they are written for people who seemingly only speak in hexadecimal. Anyhow, the relevant section of the RFC can be found here: RFC2328 section 9.4
It’s important to point out that a designated router is not required in all network topologies. In Cisco IOS there are four OSPF network types as shown below:
R1(config-if)#ip ospf network ? broadcast Specify OSPF broadcast multi-access network non-broadcast Specify OSPF NBMA network point-to-multipoint Specify OSPF point-to-multipoint network point-to-point Specify OSPF point-to-point network
Any network type with the word point in it doesn’t require a designated router, so the election of a DR/BDR is only appropriate for broadcast multi-access and non-broadcast multi-access networks. This makes sense if you think about it. Why would a point-to-point network require a DR and BDR? A DR is all about being more efficient when it comes to Link State Advertisement (LSA) flooding. There would be no benefit on a point-to-point network, as there are only two end points. Similarly point-to-multipoint networks typically use sub-interfaces for the hub, effectively creating a point-to-point connection to each spoke. Again, there is no advantage in having a DR/BDR in this design.
In order to see the network type, use the show ip ospf interface command. In the example below we can see the network type has been set-up as non-broadcast. As an aside, a non-broadcast network type still requires a DR/BDR because the network is multi-access, however the hello packets are unable to be multicast. Therefore the underlying network will have to resolve this problem (e.g. by mapping broadcast traffic to a specific destination, as in frame-relay) or alternatively ospf neighbor statements will need to be configured, forcing OSPF to use unicast instead.
R1#show ip ospf interface fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
Internet Address 10.1.1.1/24, Area 0, Attached via Interface Enable
Process ID 1, Router ID 0.0.0.1, Network Type NON_BROADCAST, Cost: 1
The Election Process
So, back to the election process. In order to determine a DR and BDR the steps below are followed:
1. First discard any routers that are ineligible to become designated routers, such as routers with the OSPF priority set to 0 (the default is 1).
2. First omit any routers that have declared themselves as a DR in their hello packets. Next assigned the BDR as the router with the highest OSPF priority. In the case of a tie, the one having the highest Router ID is chosen.
3. For all the routers that have declared themselves as a DR in their hello packets, the one with the highest priority is declared the DR. In the case of a tie the router with the highest Router ID is chosen. If no routers have declared themselves as the DR in their hello packets, then the BDR becomes the DR.
4. Repeat steps 2 and 3.
Note: In step 2 the router omits other routers that have declared themselves as DR. This is true even if the OSPF priority of the router is higher than the existing DR. In other words OSPF routers do not normally preempt if a DR has already been elected. An exception to this might be if two layer 2 networks were patched together that already had DRs elected on each segment. This would cause one of the DRs to be preempted, but it’s an unusual scenario.
Note: Any router not declared DR or BDR is assigned the status of DROther (in a ‘client/server’ type relationship with the DR/BDR). It may be the case that only a DR is elected, for example where all the other OSPF speaking routers are assigned a priority of 0.
If we look at the following example network. R1 is the DR, R2 is the BDR, and R3 is DROther.

This is confirmed with the following command:
R1#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 0.0.0.2 50 FULL/BDR 00:01:38 10.1.1.2 FastEthernet0/0 0.0.0.3 25 FULL/DROTHER 00:01:32 10.1.1.3 FastEthernet0/0
If we debug for ospf adjacencies and clear the ospf process, then we see the BDR is then promoted to DR
R1#debug ip ospf adj OSPF adjacency debugging is on R1#clear ip ospf process Reset ALL OSPF processes? [no]: yes R1# *Nov 3 09:15:38.499: OSPF-1 ADJ Fa0/0: 0.0.0.2 address 10.1.1.2 is dead, state DOWN *Nov 3 09:15:38.527: OSPF-1 ADJ Fa0/0: 0.0.0.3 address 10.1.1.3 is dead, state DOWN *Nov 3 09:15:38.599: OSPF-1 ADJ Fa0/0: 0.0.0.1 address 10.1.1.1 is dead, state DOWN *Nov 3 09:15:38.615: OSPF-1 ADJ Fa0/0: Neighbor change event *Nov 3 09:15:38.615: OSPF-1 ADJ Fa0/0: DR/BDR election *Nov 3 09:15:38.619: OSPF-1 ADJ Fa0/0: Elect BDR 0.0.0.0 *Nov 3 09:15:38.619: OSPF-1 ADJ Fa0/0: Elect DR 0.0.0.0 *Nov 3 09:15:38.635: OSPF-1 ADJ Fa0/0: DR: none BDR: none *Nov 3 09:15:38.639: OSPF-1 ADJ Fa0/0: Remember old DR 0.0.0.1 (id) *Nov 3 09:15:38.763: OSPF-1 ADJ Fa0/0: Interface going Up *Nov 3 09:15:38.763: OSPF-1 ADJ Fa0/0: Starting 0.0.0.0 address 10.1.1.2 *Nov 3 09:15:38.763: OSPF-1 ADJ Fa0/0: Starting 0.0.0.0 address 10.1.1.3 <snip> *Nov 3 09:16:16.031: OSPF-1 ADJ Fa0/0: DR/BDR election *Nov 3 09:16:16.031: OSPF-1 ADJ Fa0/0: Elect BDR 0.0.0.1 *Nov 3 09:16:16.031: OSPF-1 ADJ Fa0/0: Elect DR 0.0.0.2 *Nov 3 09:16:16.031: OSPF-1 ADJ Fa0/0: DR: 0.0.0.2 (Id) BDR: 0.0.0.1 (Id) R1#show ip ospf neighbor Neighbor ID Pri State Dead Time Address Interface 0.0.0.2 50 FULL/DR 00:01:54 10.1.1.2 FastEthernet0/0 0.0.0.3 25 FULL/DROTHER 00:01:55 10.1.1.3 FastEthernet0/0