Skip to content

Commit f8c26e7

Browse files
committed
gluon-mesh-batman-adv-brmldproxy: add package
Now that we have general support for routable IPv6 multicast address in Gluon master thanks to the newer Linux (bridge) and batman-adv versions it becomes more interesting to also support layer 3 IPv6 multicast routers. So far this was also not possible with the default settings in Gluon due to filtering MLD into the mesh. This now adds support for brmldproxy, a daemon which proxies MLD reports between bridge ports. For the Gluon scenario this package adds brmldproxy proxying configuration for the mesh side bat0 bridge port. The configuration is tuned in a way to enable the usage of layer 3 IPv6 multicast routers for routable IPv6 multicast address ranges. But with a lot smaller MLD overhead compared to the filter_membership_reports=false site.conf option. If a node has no multicast listener for a routable IPv6 multicast address then this node will emit no MLD report into the mesh. Furthermore, if a node has multiple multicast listening hosts for routable IPv6 multicast addresses then the node will act in deputy and respond with combined, aggregated MLD reports on behalf. This package is currently incompatible with a filter_membership_reports=true site.conf option. Signed-off-by: Linus Lüssing <[email protected]>
1 parent 46b90c1 commit f8c26e7

File tree

6 files changed

+95
-3
lines changed

6 files changed

+95
-3
lines changed

docs/index.rst

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ Several Freifunk communities in Germany use Gluon as the foundation of their Fre
6969
package/gluon-hoodselector
7070
package/gluon-logging
7171
package/gluon-mesh-batman-adv
72+
package/gluon-mesh-batman-adv-brmldproxy
7273
package/gluon-mesh-wireless-sae
7374
package/gluon-radv-filterd
7475
package/gluon-scheduled-domain-switch
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
gluon-mesh-batman-adv-brmldproxy
2+
================================
3+
4+
The *gluon-mesh-batman-adv-brmldproxy* package adds configuration
5+
to enable `brmldproxy`_ in Gluon with batman-adv.
6+
7+
The configuration is tuned in a way to enable the usage of
8+
layer 3 IPv6 multicast routers for routable IPv6 multicast
9+
address ranges. But with a lot smaller MLD overhead
10+
compared to the `filter_membership_reports=false`
11+
:ref:`site.conf <user-site-mesh>` option.
12+
13+
If a node has no multicast listener for a routable IPv6
14+
multicast address then this node will emit no MLD report
15+
into the mesh. Furthermore, if a node has multiple multicast
16+
listening hosts for routable IPv6 multicast addresses then the
17+
node will act in deputy and respond with combined, aggregated
18+
MLD reports on behalf.
19+
20+
This package is currently incompatible with a
21+
`filter_membership_reports=false`
22+
:ref:`site.conf <user-site-mesh>` option.
23+
24+
----
25+
26+
Notable layer 3 IPv6 multicast router implementations:
27+
28+
* pim6sd: https://github.com/troglobit/pim6sd
29+
* HowTo at DN42: https://dn42.dev/howto/IPv6-Multicast
30+
* lcroute: https://codeberg.org/librecast/lcroute
31+
32+
.. _brmldproxy: https://github.com/T-X/brmldproxy

docs/package/gluon-mesh-batman-adv.rst

+16-3
Original file line numberDiff line numberDiff line change
@@ -137,14 +137,16 @@ batman-adv. Which even with IGMP/MLD filtered, will have full multicast
137137
membership knowledge through its own propagation through the batman-adv
138138
translation table.
139139

140-
Advantages are:
140+
**Advantages:**
141141

142142
* Reduced overhead through reactive batman-adv multicast TT vs.
143143
periodic IGMP/MLD messages in the mesh
144144
* Increased IGMP/MLD snooping robustness via local, per node
145145
IGMP/MLD queriers
146146
* DDoS vector mitigation
147147

148+
**Limitations:**
149+
148150
**Note:** For nodes running an operating system other than Gluon, but a bridge
149151
interface on top of the batman-adv interface, you will need to set the
150152
multicast router flag there manually:
@@ -159,12 +161,23 @@ assume that there is no multicast router behind this port, meaning
159161
to only forward multicast to this port if an according multicast
160162
listener on this link was detected.
161163

162-
Further limitations: IGMP/MLD snooping switches (e.g. "enterprise switches")
164+
IGMP/MLD snooping switches (e.g. "enterprise switches")
163165
behind the client network of a node (LAN ports) are unsupported. It is
164166
advised to disable IGMP/MLD snooping on those enterprise switches for now
165167
or to at least manually mark the port to the Gluon router as a
166168
"multicast router port".
167169

168-
Alternatively, the filtering of IGMP/MLD reports can be disabled via
170+
Also IPv4/IPv6 multicast routers are unsupported, unless the
171+
:doc:`gluon-mesh-batman-adv-brmldproxy` package is installed.
172+
173+
**Configuration options:**
174+
175+
The filtering of IGMP/MLD reports can be disabled via
169176
the site.conf (which is not recommended in large meshes though).
170177
See :ref:`site.conf mesh section <user-site-mesh>` for details.
178+
179+
Another alternative is to install the :doc:`gluon-mesh-batman-adv-brmldproxy`
180+
package. Which allows proxied MLD reports for listeners of
181+
routable IPv6 multicast addresses, while keeping link-local
182+
IPv6 multicast addresses filtered. This allows using IPv6
183+
multicast routers.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
include $(TOPDIR)/rules.mk
2+
3+
PKG_NAME:=gluon-mesh-batman-adv-brmldproxy
4+
5+
include ../gluon.mk
6+
7+
define Package/gluon-mesh-batman-adv-brmldproxy
8+
TITLE:=Bridge MLD Proxy for Gluon
9+
DEPENDS:=+brmldproxy gluon-mesh-batman-adv
10+
endef
11+
12+
define Package/gluon-mesh-batman-adv-brmldproxy/description
13+
Gluon community wifi mesh firmware framework: Configuration to
14+
enable brmldproxy in Gluon with batman-adv.
15+
16+
The configuration is tuned in a way to enable the usage of
17+
layer 3 IPv6 multicast routers for routable IPv6 multicast
18+
address ranges. But with a lot smaller MLD overhead
19+
compared to the filter_membership_reports=false site.conf option.
20+
21+
If a node has no multicast listener for a routable IPv6
22+
multicast address then this node will emit no MLD report
23+
into the mesh. Furthermore, if a node has multiple multicast
24+
listening hosts for routable IPv6 multicast addresses then the
25+
node will act in deputy and respond with combined, aggregated
26+
MLD reports on behalf.
27+
28+
This package is currently incompatible with a
29+
filter_membership_reports=true site.conf option.
30+
endef
31+
32+
define Package/gluon-mesh-batman-adv-brmldproxy/conffiles
33+
/etc/config/brmldproxy
34+
endef
35+
36+
$(eval $(call BuildPackageGluon,gluon-mesh-batman-adv-brmldproxy))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
need_value(in_site({'mesh', 'filter_membership_reports'}), true, false)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
config brmldproxy 'client'
2+
option disabled '0'
3+
option bridge 'client'
4+
option family 'ipv6'
5+
list proxiedport 'bat0'
6+
list excludedport 'local-port'
7+
list excludefilter 'ff05::2:1001'
8+
list excludefilter 'ff02::/ff0f::'
9+
list excludefilter 'ff00::/ff0e::'

0 commit comments

Comments
 (0)