Hallo Linus,
I must think about the need of rebroadcast. I agree that message may be lost. The tcp/ip stack has the charge of resolving such problems. For udp the partner may accept packet loss, for example streaming of video or sound, or have an own protocol for resolving this.
The layer 2 broadcast message are normally important and sending occur as event. The frame may be lost. If the lost is on the originator, nobody will become a message. The packet lost may occur far from the originator an one or more participant may not get the frame. If all systems are in the wifi mesh network (each has neighbor with different connection to the internet), forwarding shall allow that the frame arrive via the wifi mesh devices. For system which has no neighbor, the possibility of packet lost is much greater and only broadcasting more time may resolve the problem. Sending a broadcast back can only considered as an acknowledgement. If there are not more "acknowledgement" as known systems (gw + node) some participant should not have got the frame and the originator has to send the broadcast again.
If I have a look to the clients connected via wifi on a node broadcasts originated by the client must not reach the node, but I have not notified problems due to lost of ARP and so on. The only think I can see is a lot of arp an rs mainly from smartphones.
There are probably a lot of thinks I have not understood regardinh the mesh network.
Regards,
Jean-Jacques
Am 06.11.2016 um 18:50 schrieb Linus Lüssing:
On Sat, Nov 05, 2016 at 11:25:38PM +0100, Sven Eckelmann wrote:
This can be wrong (as explained in my last mail). Gluon only sets the no_rebroadcast on the Freifunk router because it doesn't have to handle distribution of broadcast to multiple fastd endpoints. It would be completely wrong when set on the fastd server (handling multiple clients). See my other mail for details.
Just as a small addition, I think I've said it in the ticket, too: Jean-Jacques, in one point, you're absolutely right:
When there is just one neighbor on an interface, then rebroadcasts can easily be avoided. Which is the case in your scenario on the VPN client(!) side.
Gluon has this extra patch for batman-adv, this no_rebroadcast knob. But an automatic detection which should cover this specific VPN client case, was merged into upstream batman-adv just a few days ago \o/ :).
For any case with more than one neighbor on an interface it is very hard to detect whether upon receiving a broadcast all other neighbors have received this broadcast too.
If we can't say for sure, then we unfortunately need to stay safe and rebroadcast to avoid horrible packet loss / broken connections / armageddon.