gluon-mesh-batman-adv: remove gluon-mesh-batman-adv-14

This commit is contained in:
Matthias Schiffer 2019-09-25 00:13:23 +02:00 committed by Martin Weinelt
parent 7837bc1059
commit 5b97d36c7e
12 changed files with 42 additions and 204 deletions

View File

@ -1,17 +1,17 @@
gluon-ebtables-limit-arp
========================
The *gluon-ebtables-limit-arp* package adds filters to limit the
amount of ARP requests client devices are allowed to send into the
mesh.
The *gluon-ebtables-limit-arp* package adds filters to limit the
amount of ARP requests client devices are allowed to send into the
mesh.
The limits per client device, identified by its MAC address, are
6 packets per minute and 1 per second per node in total.
6 packets per minute and 1 per second per node in total.
A burst of up to 50 ARP requests is allowed until the rate-limiting
takes effect (see ``--limit-burst`` in ``ebtables(8)``).
Furthermore, ARP requests for a target IP already present in the
batman-adv DAT cache are excluded from rate-limiting, in regard
batman-adv DAT cache are excluded from rate-limiting, in regard
to both counting and filtering, as batman-adv will be able
to respond locally without a burden for the mesh. Therefore, this
limiter should not affect popular target IP addresses, like those
@ -21,8 +21,8 @@ However it mitigates the impact on the mesh when a larger range of
its IPv4 subnet is being scanned, which would otherwise result in
a significant amount of ARP chatter, even for unused IP addresses.
This package is selected by default if the installed routing
package is gluon-mesh-batman-adv-14 or gluon-mesh-batman-adv-15.
This package is installed by default if the selected routing
feature is *mesh-batman-adv-15*.
It can be unselected via::
GLUON_SITE_PACKAGES := \

View File

@ -20,49 +20,11 @@ B.A.T.M.A.N. Advanced project homepage:
* https://www.open-mesh.org/projects/batman-adv/wiki/Wiki
Flavours
--------
Gluon currently supports two main build flavours of batman-adv:
gluon-mesh-batman-adv-15
^^^^^^^^^^^^^^^^^^^^^^^^
This is the recommended batman-adv flavour to use.
It follows recent, upstream batman-adv releases and is flexible to new feature additions.
gluon-mesh-batman-adv-14 (`batman-adv-legacy`)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
`gluon-mesh-batman-adv-14`, also known as `batman-adv-legacy` or batman-adv v2013.4
is the last batman-adv release with the batman-adv compatibility version 14, which
was released in October 2013.
With batman-adv v2014.0.0 a compat breakage became necessary for the introduction
of new features. However, one of these features was the addition of TVLV support
(type-version-length-value fields) which from then on allowed adding features
without breaking packet format compatibility. This made it possible to stay with
compatibility version 15 so far.
For new installations `gluon-mesh-batman-adv-14` is **not recommended**. It misses
a lot of bugfixes and is currently only available for existing communities
until they have migrated. This package will soon be deprecated and removed.
Also see:
* https://www.open-mesh.org/projects/batman-adv/wiki/Compatversion
* https://www.open-mesh.org/news/56
* https://github.com/freifunk-gluon/batman-adv-legacy/
B.A.T.M.A.N. Routing Algorithms
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
For the `gluon-mesh-batman-adv-15` package two routing algorithms are selectable
via :ref:`site.conf mesh section <user-site-mesh>`: BATMAN_IV and BATMAN_V.
For the `gluon-mesh-batman-adv-14` package, BATMAN_IV_LEGACY needs to be selected.
Two routing algorithms are selectable via
:ref:`site.conf mesh section <user-site-mesh>`: BATMAN_IV and BATMAN_V.
BATMAN_IV - stable
""""""""""""""""""
@ -92,8 +54,8 @@ mesh protocol, it quickly reaches its limit.
For meshes with about **50 nodes / 100 clients, or more** it is therefore highly
recommended to add the :doc:`gluon-ebtables-filter-multicast`
package. Also, with gluon-mesh-batman-adv-15 or gluon-mesh-batman-adv-14
installed :doc:`gluon-ebtables-limit-arp` is selected by default.
package. Also, with the *mesh-batman-adv-15* feature,
:doc:`gluon-ebtables-limit-arp` is selected by default.
Furthermore, by default IGMP and MLD messages are filtered. See
:ref:`site.conf mesh section <user-site-mesh>` and

View File

@ -45,9 +45,8 @@ Consider these key values:
.. _MSS clamping: https://www.tldp.org/HOWTO/Adv-Routing-HOWTO/lartc.cookbook.mtu-mss.html
- Encapsulation: Account for the overhead created by the configured mesh protocol
encapsulating the payload, which is
- up to 32 Byte (14 Byte Ethernet + 18 Byte batadv) for batman-adv compat v15 (v2014.0 and later)
- up to 28 Byte (14 Byte Ethernet + 14 Byte batadv) for batman-adv compat v14 (v2011.3.0 until and including v2013.4.0)
encapsulating the payload, which is up to 32 Byte (14 Byte Ethernet + 18 Byte
batadv).
- PMTU: What MTU does the path between your gateway and each of its peers support?
@ -106,4 +105,4 @@ Conclusion
Determining the maximum MTU can be a tedious process, especially since the PMTU
of peers could change at any time. The general recommendation for maximized
compatibility is therefore the minimum MTU of 1312 Byte, which works well with
all combinations of IPv4, IPv6, batman-adv compat v14 and v15.
both IPv4 and IPv6.

View File

@ -244,12 +244,8 @@ mesh
The mandatory value *routing_algo* selects the batman-adv protocol variant.
The following values are supported:
- ``BATMAN_IV_LEGACY`` (*mesh-batman-adv-14*)
- ``BATMAN_IV`` (*mesh-batman-adv-15*)
- ``BATMAN_V`` (*mesh-batman-adv-15*)
When both *mesh-batman-adv-14* and *mesh-batman-adv-15* are included, this
setting specifies which one to use.
- ``BATMAN_IV``
- ``BATMAN_V``
The optional value *gw_sel_class* sets the gateway selection class, the
default is ``20`` for B.A.T.M.A.N. IV and ``5000`` kbit/s for B.A.T.M.A.N. V.
@ -598,12 +594,12 @@ prefix: The feature flag corresponding to the package *gluon-mesh-batman-adv-15*
The file ``package/features`` in the Gluon repository (or
``features`` in site feeds) can specify additional rules for deriving package lists
from feature flags, e.g. specifying both *status-page* and either *mesh-batman-adv-14*
or *mesh-batman-adv-15* will automatically select the additional package
from feature flags, e.g. specifying both *status-page* and *mesh-batman-adv-15*
will automatically select the additional package
*gluon-status-page-mesh-batman-adv*. In the future, selecting the flags
*mesh-vpn-fastd* and *respondd* might automatically enable the additional
package *gluon-mesh-vpn-fastd-respondd*, and enabling *status-page* and
*mesh-batman-adv-15* (or *-14*) with ``de`` in *GLUON_LANGS* could
*mesh-batman-adv-15* with ``de`` in *GLUON_LANGS* could
add the package *gluon-status-page-mesh-batman-adv-i18n-de*.
In short, it is not necessary anymore to list all the individual packages that are

View File

@ -23,10 +23,10 @@ packages 'web-advanced' \
packages 'web-advanced & autoupdater' \
'gluon-web-autoupdater'
packages 'status-page & (mesh-batman-adv-14 | mesh-batman-adv-15)' \
packages 'status-page & mesh-batman-adv-15' \
'gluon-status-page-mesh-batman-adv'
packages 'mesh-batman-adv-14 | mesh-batman-adv-15' \
packages 'mesh-batman-adv-15' \
'gluon-ebtables-limit-arp' \
'gluon-radvd'

View File

@ -5,9 +5,11 @@ PKG_VERSION:=1
include ../gluon.mk
define Package/gluon-mesh-batman-adv-common
TITLE:=Gluon scripts for batman-adv and batman-adv-legacy
DEPENDS:= \
define Package/gluon-mesh-batman-adv-15
PROVIDES:=gluon-mesh-batman-adv
TITLE:=Support for batman-adv meshing (compat level 15)
DEPENDS+= \
+kmod-batman-adv \
+gluon-core \
+libgluonutil \
+gluon-client-bridge \
@ -23,36 +25,4 @@ define Package/gluon-mesh-batman-adv-common
+@GLUON_SPECIALIZE_KERNEL:KERNEL_LIBCRC32C
endef
define Package/gluon-mesh-batman-adv-14
PROVIDES:=gluon-mesh-batman-adv
TITLE:=Support for batman-adv meshing (compat level 14)
DEPENDS+= \
+gluon-mesh-batman-adv-common \
+kmod-batman-adv-legacy
endef
define Package/gluon-mesh-batman-adv-15
PROVIDES:=gluon-mesh-batman-adv
TITLE:=Support for batman-adv meshing (compat level 15)
DEPENDS+= \
+gluon-mesh-batman-adv-common \
+kmod-batman-adv
endef
define Package/gluon-mesh-batman-adv-common/install
$(Gluon/Build/Install)
endef
define Package/gluon-mesh-batman-adv-14/install
$(INSTALL_DIR) $(1)/lib/gluon/mesh-batman-adv
touch $(1)/lib/gluon/mesh-batman-adv/compat-14
endef
#
define Package/gluon-mesh-batman-adv-15/install
$(INSTALL_DIR) $(1)/lib/gluon/mesh-batman-adv
touch $(1)/lib/gluon/mesh-batman-adv/compat-15
endef
$(eval $(call BuildPackageGluon,gluon-mesh-batman-adv-common))
$(eval $(call BuildPackageGluon,gluon-mesh-batman-adv-14))
$(eval $(call BuildPackageGluon,gluon-mesh-batman-adv-15))

View File

@ -2,18 +2,4 @@
need_boolean(in_domain({'mesh', 'vxlan'}), not this_domain())
need_number({'mesh', 'batman_adv', 'gw_sel_class'}, false)
local allowed_algos = {}
local has_compat_14 = (os.execute('exec ls "$IPKG_INSTROOT"/lib/gluon/mesh-batman-adv/compat-14 >/dev/null 2>&1') == 0)
local has_compat_15 = (os.execute('exec ls "$IPKG_INSTROOT"/lib/gluon/mesh-batman-adv/compat-15 >/dev/null 2>&1') == 0)
if has_compat_14 then
table.insert(allowed_algos, 'BATMAN_IV_LEGACY')
end
if has_compat_15 then
table.insert(allowed_algos, 'BATMAN_IV')
table.insert(allowed_algos, 'BATMAN_V')
end
need_one_of({'mesh', 'batman_adv', 'routing_algo'}, allowed_algos)
need_one_of({'mesh', 'batman_adv', 'routing_algo'}, {'BATMAN_IV', 'BATMAN_V'})

View File

@ -43,13 +43,7 @@ proto_gluon_bat0_setup() {
ip link set primary0 address "$primary0_mac" mtu 1532 up
local routing_algo="$(lua -e 'print(require("gluon.site").mesh.batman_adv.routing_algo())')"
if [ "$routing_algo" = 'BATMAN_IV_LEGACY' ]; then
modprobe batman-adv-legacy
else
modprobe batman-adv
(echo "$routing_algo" >/sys/module/batman_adv/parameters/routing_algo) 2>/dev/null
fi
(echo "$routing_algo" >/sys/module/batman_adv/parameters/routing_algo) 2>/dev/null
echo bat0 > /sys/class/net/primary0/batman_adv/mesh_iface
@ -64,8 +58,6 @@ proto_gluon_bat0_teardown() {
ip link del bat0
ip link del primary0
rmmod batman-adv
}
add_protocol gluon_bat0

View File

@ -7,32 +7,22 @@ local util = require 'gluon.util'
local uci = require('simple-uci').cursor()
local gw_mode = uci:get('batman-adv', 'bat0', 'gw_mode') or uci:get('batman-adv-legacy', 'bat0', 'gw_mode') or 'client'
local gw_mode = uci:get('batman-adv', 'bat0', 'gw_mode') or 'client'
local gw_sel_class = site.mesh.batman_adv.gw_sel_class()
local routing_algo = site.mesh.batman_adv.routing_algo()
uci:delete('batman-adv-legacy', 'bat0')
uci:delete('batman-adv', 'bat0')
if routing_algo == 'BATMAN_IV_LEGACY' then
uci:section('batman-adv-legacy', 'mesh', 'bat0', {
orig_interval = 5000,
gw_mode = gw_mode,
gw_sel_class = gw_sel_class,
hop_penalty = 15,
})
else
uci:section('batman-adv', 'mesh', 'bat0', {
orig_interval = 5000,
gw_mode = gw_mode,
gw_sel_class = gw_sel_class,
hop_penalty = 15,
routing_algo = routing_algo,
multicast_mode = false,
})
end
uci:save('batman-adv-legacy')
uci:delete('batman-adv', 'bat0')
uci:section('batman-adv', 'mesh', 'bat0', {
orig_interval = 5000,
gw_mode = gw_mode,
gw_sel_class = gw_sel_class,
hop_penalty = 15,
routing_algo = routing_algo,
multicast_mode = false,
})
uci:save('batman-adv')
uci:delete('network', 'gluon_bat0')

View File

@ -232,24 +232,9 @@ static struct json_object * get_mesh(void) {
return ret;
}
static struct json_object * get_batman_adv_compat(const char *version) {
int compat = 15;
if (!version)
return NULL;
if (strcmp(version, "2013.4.0") == 0)
compat = 14;
return json_object_new_int(compat);
}
static struct json_object * respondd_provider_nodeinfo(void) {
struct json_object *ret = json_object_new_object();
char *version = gluonutil_read_line("/sys/module/batman_adv/version");
struct json_object *compat = get_batman_adv_compat(version);
struct json_object *network = json_object_new_object();
json_object_object_add(network, "addresses", get_addresses());
json_object_object_add(network, "mesh", get_mesh());
@ -257,8 +242,9 @@ static struct json_object * respondd_provider_nodeinfo(void) {
struct json_object *software = json_object_new_object();
struct json_object *software_batman_adv = json_object_new_object();
json_object_object_add(software_batman_adv, "version", gluonutil_wrap_and_free_string(version));
json_object_object_add(software_batman_adv, "compat", compat);
json_object_object_add(software_batman_adv, "version",
gluonutil_wrap_and_free_string(gluonutil_read_line("/sys/module/batman_adv/version")));
json_object_object_add(software_batman_adv, "compat", json_object_new_int(15));
json_object_object_add(software, "batman-adv", software_batman_adv);
json_object_object_add(ret, "software", software);

View File

@ -1,22 +0,0 @@
From: Linus Lüssing <linus.luessing@c0d3.blue>
Date: Mon, 18 Feb 2019 18:28:03 +0100
Subject: batctl: remove kmod-batman-adv dependency
This always pulls in the batman-adv compat 15 kernel module. However,
batctl works just as well with batman-adv-legacy (compat 14).
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
diff --git a/batctl/Makefile b/batctl/Makefile
index 4e67512844d07607852a5447a336dc9f93f5990a..df96ca7325ba3f84bd682da6df32fa4489474113 100644
--- a/batctl/Makefile
+++ b/batctl/Makefile
@@ -23,7 +23,7 @@ define Package/batctl
URL:=https://www.open-mesh.org/
SECTION:=net
CATEGORY:=Network
- DEPENDS:=+kmod-batman-adv +libnl-tiny +libc +librt
+ DEPENDS:=+libnl-tiny +libc +librt
TITLE:=B.A.T.M.A.N. Advanced user space configuration tool batctl
MAINTAINER:=Simon Wunderlich <sw@simonwunderlich.de>
endef

View File

@ -1,21 +0,0 @@
From: Linus Lüssing <linus.luessing@c0d3.blue>
Date: Sun, 16 Jun 2019 00:01:36 +0200
Subject: batman-adv: remove module autoload
Instead of unconditionally loading this module on boot the gluon_bat0
netifd protocol script will later take care of loading either the batman-adv
or batman-adv-legacy module, depending on the configured routing
algorithm in UCI.
diff --git a/batman-adv/Makefile b/batman-adv/Makefile
index ae434909c90f61efdf0d80b56352c983cfef25b0..e58f862b0e5fac7ac12d6ba5a09241d23148a252 100644
--- a/batman-adv/Makefile
+++ b/batman-adv/Makefile
@@ -30,7 +30,6 @@ define KernelPackage/batman-adv
DEPENDS:=+KMOD_BATMAN_ADV_BLA:kmod-lib-crc16 +kmod-crypto-crc32c +kmod-lib-crc32c +kmod-cfg80211
TITLE:=B.A.T.M.A.N. Adv
FILES:=$(PKG_BUILD_DIR)/net/batman-adv/batman-adv.$(LINUX_KMOD_SUFFIX)
- AUTOLOAD:=$(call AutoProbe,batman-adv)
endef
define KernelPackage/batman-adv/description