Consider a hub-and-spoke frame-relay network consisting of three routers, R1, R2, R3. R1 is the hub and has the address 172.16.123.1/24. R2 and R3 are spokes, and have addresses 172.16.123.2/24 and 172.16.123.3/24 respectively. There are only two DLCIs in the topology, so it is a classic hub-and-spoke. And like most classic CCIE practice labs, you have to no frame-relay inverse-arp on every router.
So, conventionally, you add frame-relay maps like this:
frame-relay map ip 172.16.123.2 102 broadcast
frame-relay map ip 172.16.123.3 103 broadcast
frame-relay map ip 172.16.123.1 201 broadcast
frame-relay map ip 172.16.123.1 301 broadcast
Now, the scenario says that you must be able to ping from spoke to spoke. So, traditionally, you add two more maps on the spokes, each to contact the other spoke via the hub DLCI:
frame-relay map ip 172.16.123.3 201 broadcast
frame-relay map ip 172.16.123.3 301 broadcast
My question is, why do we put the broadcast keyword on these lines? The fact is that broadcasts are already sent on DLCI 201 and 301 in respect of the spoke-to-hub mappings, so why repeat them on the spoke-to-spoke mappings?
I wondered whether this meant that we sent two copies of each broadcast to the hub. So, on the hub, I configured ip igmp join-group 220.127.116.11, (but no multicast routing anywhere), and pinged 18.104.22.168 from one of the spokes. Sure enough, if the spoke-to-spoke maps had the broadcast keyword, the spoke got two responses, both from 172.16.123.1. If the spoke-to-spoke mappings did not have the broadcast keyword, the spoke only got one response.
So this suggests to me that not only is the broadcast keyword unnecessary on the spoke-to-spoke mappings, but it is actually harmful because it doubles the broadcast traffic.
So, why is it that everyone does it? I checked Gorito's CCIE Practice labs, Solie's CCIE Practical studies, the old CCIE Case Studies book, the Frame Relay solutions guide, and a few of the NMC DoIT labs, and they all have broadcast on the spoke-to-spoke mappings. (The NMC DoITs do it sometimes, which is what started me asking "why?")
Just to complete the picture, the CCIE practice scenarios usually say that each router should be able to ping itself, so you usually add a map entry for your own address via a neighbor's DLCI. Happily, I have hardly ever seen the broadcast keyword on that entry, so at least we all seem to agree on that. But it does pose an interesting observation where IPv6 is concerned. But I shall talk about that in another posting.
So, experts, any thoughts on this? What am I missing?
The broadcast keyword is needed for the routing protocols and if you decide to run multicast (PIM) on those interfaces.
However, I agree with you. You don't need to enter a broadcast keyword for spoke-to-spoke. I never did during my CCIE preparation days. Certain workbooks have it all the way (Spoke-to-Spoke), while other workbooks only use the Spoke-to-Hub.
If the requirement says, "don't send duplicate broadcasts", well you know the answer to that.