Why are OSPF neighbors manually configured on NBMA networks even when you enabled it with the
broadcast keyword in frame map statements?
Example is NBMA point-to-multipoint access.
Frame relay does not support real broadcast, it uses pseudo broadcast, meaning that it replicates incoming multicast/broadcast to all DLCIs that have the broadcast keyword on the frame-relay map statements. DLCIs learned via inverse ARP will always have broadcast enabled.
When you choose the network type you tell OSPF how to behave, is DR/BDR used and is multicast used?
With non-broadcast or point-to-multipoint non-broadcast (Cisco specific) you need to define neighbor statements. The reason being that you have told OSPF that you have no broadcast capability so you want to use unicast for the control plane traffic. OSPF therefore expects that you configure neighbor statements before it starts sending hellos.
I've had a few facepalm moments in the past studying for the CCIE where I did enable non-broadcast and no adjacencies were coming up. Debugs showed no hellos going out which is usually a sign you forgot a neighbor statement or are running passive-interface.
This network type is used on networks that have no broadcast/multicast capability, such as frame-relay, ATM, SMDS, & X.25. The key point is that these layer 2 protocols are unable to send broadcasts/multicasts.
The key thing to remember is that the neighbor command is restricted to the DR & BDR only . The neighbor command allows the router to send hello’s to those specific neighbors. Those messages are sent as unicast messages. The reason the neighbor command is only required on one side between neighbors, is because hello’s are sent if hellos are received. Hello’s are sent every 30 seconds by default, on this network type, or upon receiving an hello packet. So therefore, hello’s will be able to be exchanged between the two neighbors.