Let R1 and R2 be two (wireless) routers. Both R1 and R2 have one wired interface eth0 and one wireless interface wlan0. On each router, both interfaces are bridged on br0. So:
- R1.br0 = R1.eth0 + R1.wlan0
- R2.br0 = R2.eth0 + R2.wlan0
Let C1 and C2 be wireless clients connected to R1 and R2 respectively.
What will happen exactly when C1 sends a broadcast ethernet frame B, that's supposed to be received by C2 (say, an ARP request for C2's IP address)?
Upon receipt of B by R1, will it send the frame through R1.br0 (therefore sending it to both R1.eth0 and R1.wlan0) or will send the frame only through R1.eth0 (since it knows that the frame came through R1.wlan0)?
In any case, R2 will eventually receive B. Upon receipt of B by R2, a question mostly equivalent to the first one: will R2 send the frame through R2.br0 (...) or through R2.wlan0 (...)? I'm not sure the answer to both questions has necessarily to be the same, since the source interface is not really the same thing, one is wire, the other is wireless, that's why I ask both.
If the answer to question 2 is "R2 will send the frame through both R2.wlan0 and R2.eth0", won't there be some kind of loop (by applying the same reasoning of my question (2) to R1 when it receives B again, this time from R1.eth0)? How does ethernet deals with this? The most simple solution I see is to make bridges so that they send the broadcast frames to all the interfaces but from the one which it originated.
I don't know how wireless networks work, so, if it is true that a bridge won't send a packet to the interface from which it originated, how can we be sure that the other wireless clients will receive the broadcast frame? Do wireless clients on a wireless (802.11b/g/n, whatever) network communicate directly to each other?
Actually, is all of this defined anywhere, or is it implementation specific? If it is defined, where can I get the standards?