From c0e7b96d1da36c17810fae82d53cdebe39d65d3b Mon Sep 17 00:00:00 2001 From: lemoer <git@irrelefant.net> Date: Thu, 14 Jun 2018 00:01:56 +0200 Subject: [PATCH] docs: add documentation about multidomain support (#1365) --- docs/features/multidomain.rst | 272 ++++++++++++++++++ docs/features/multidomain_configmode.gif | Bin 0 -> 58507 bytes docs/index.rst | 1 + .../domains/alpha_centauri.conf | 61 ++++ docs/multidomain-site-example/i18n | 1 + docs/multidomain-site-example/modules | 1 + docs/multidomain-site-example/site.conf | 52 ++++ docs/multidomain-site-example/site.mk | 60 ++++ 8 files changed, 448 insertions(+) create mode 100644 docs/features/multidomain.rst create mode 100644 docs/features/multidomain_configmode.gif create mode 100644 docs/multidomain-site-example/domains/alpha_centauri.conf create mode 120000 docs/multidomain-site-example/i18n create mode 120000 docs/multidomain-site-example/modules create mode 100644 docs/multidomain-site-example/site.conf create mode 100644 docs/multidomain-site-example/site.mk diff --git a/docs/features/multidomain.rst b/docs/features/multidomain.rst new file mode 100644 index 000000000..7fa55a3f2 --- /dev/null +++ b/docs/features/multidomain.rst @@ -0,0 +1,272 @@ +Multidomain Support +=================== + +Preamble +-------- + +There comes a time when a mesh network grows past sensible boundaries. +As broadcast traffic grows, mesh networks experience scaling issues and +using them becomes very unpleasant. An approach to solve this follows +the well-known “divide and conquer†paradigm and splits a large network +into multiple smaller networks. These smaller networks start with a +dedicated layer 2 network each, which are interconnected via their +gateways by layer 3 routing. Gluon is already field-tested handling a +single domain and the multidomain feature allows for the reconfiguration +of key parameters that decide which domain a node participates in, +without the need of a distinct set of firmware images for each mesh domain. + +Overview +-------- + +Multidomain support allows to build a single firmware with multiple, +switchable domain configurations. The nomenclature is as follows: + +- ``site``: an aggregate over multiple domains +- ``domain``: mesh network with connectivity parameters that prevent + accidental bridging with other domains +- ``domain code``: unique domain identifier +- ``domain name``: pretty name for a domain code + +By default Gluon builds firmware with a single domain embedded into +``site.conf``. To use multiple domains, enable it in ``site.mk``: + +:: + + GLUON_MULTIDOMAIN=1 + +In the site repository, create the ``domains/`` directory, which will +hold your domain configurations. Each domain configuration file is named +after its primary ``domain_code``, additional domain codes and names are +supported. + +:: + + site/ + |-- site.conf + |-- site.mk + |-- i18n/ + |-- domains/ + |-- alpha_centauri.conf + |-- beta_centauri.conf + |-- gamma_centauri.conf + +The domain configuration ``alpha_centauri.conf`` could look like this. + +:: + + { + domain_names = { + alpha_centauri = 'Alpha Centauri' + }, + + -- more domain specific config follows below + } + +In this example “Alpha Centauri†is the user-visible ``domain_name`` for the +domain_code ``alpha_centauri``. Also note that the domain code +``alpha_centauri`` matches the filename ``alpha_centauri.conf``. + +Additional domain codes/names can be added to ``domain_names``, which +are treated as aliases for the their domain configuration. Aliases can +be used to offer more fine-grained and well-recognizable domain choices +to users. Having multiple aliases on a single domain is a helpful +precursor to splitting the domain into even smaller blocks. + +Furthermore you have to specify the ``default_domain`` in the ``site.conf``. +This domain is applied in following cases: + +- When the config mode is skipped. +- When a domain is removed in a new firmware release, the default_domain + will be chosen then. +- When a user selects a wrong domain code via uci. + +Please note, that this value is saved to uci, so changing the `default_domain` +value in the `site.conf` in a new firmware release only affects the actual +domain of a router, if and only if one of the above conditions matches. + + +Switching the domain +-------------------- + +**via commandline**: + +:: + + uci set gluon.core.domain="newdomaincode" + gluon-reconfigure + reboot + +**via config mode:** + +To allow switching the domain via config mode, ``config-mode-domain-select`` +has to be added to GLUON_FEATURES in the site.mk. + +|image0| + +Allowed site variables +---------------------- + +Internally the site variables are merged from the ``site.conf`` and the +selected ``domain.conf``, so the most variables are also allowed in +``site.conf`` and in ``domain.conf``. But there are some exceptions, +which do not make sense in a domain or site specific way. The following +sections give an overview over variables that are only usable in either +site or domain context. + +site.conf only variables +^^^^^^^^^^^^^^^^^^^^^^^^ + +- Used in as initial default values, when the firmware was just flashed + and/or the config mode is skipped, so they do not make sense in a + domain specific way: + + - authorized_keys + - default_domain + - poe_passthrough + - mesh_on_wan + - mesh_on_lan + - single_as_lan + - setup_mode.skip + - autoupdater.branch + - mesh_vpn.enabled + - mesh_vpn.pubkey_privacy + - mesh_vpn.bandwidth_limit + - mesh_vpn.bandwidth_limit.enabled + - mesh_vpn.bandwidth_limit.ingress + - mesh_vpn.bandwidth_limit.egress + +- Variables that influence the appearance of the config mode, + domain-independent because they are relevant before a domain was selected. + + - config_mode.geo_location.show_altitude + - config_mode.hostname.optional + - config_mode.remote_login + - config_mode.remote_login.show_password_form + - config_mode.remote_login.min_password_length + - hostname_prefix + - mesh_vpn.fastd.configurable + - roles.default + - roles.list + +- Specific to a firmware build itself: + + - site_code + - site_name + - autoupdater.branches.*.name + - autoupdater.branches.*.good_signatures + - autoupdater.branches.*.pubkeys + +- We simply do not see any reason, why these variables could be helpful + in a domain specific way: + + - mesh_vpn.fastd.syslog_level + - wifi*.ibss.supported_basic_rates + - wifi*.mesh.supported_basic_rates + - timezone + - regdom + +domain.conf only variables +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +- Obviously: + + - domain_names + + - a table of domain codes to domain names + ``domain_names = { foo = 'Foo Domain', bar = 'Bar Domain', baz = 'Baz Domain' }`` + + - hide_domain + + - prevents a domain name(s) from appearing in config mode, either + boolean or array of domain codes + + - ``true``, ``false`` + - ``{ 'foo', 'bar' }`` + +- Because each domain is considered as an own layer 2 network, these + values should be different in each domain: + + - next_node.ip4 + - next_node.ip6 + - next_node.name + - prefix6 + - prefix4 + - extra_prefixes6 + +- To prevent accidential bridging of different domains, all meshing + technologies should be seperated: + + - domain_seed (wired mesh) + + - must be a random value used to derive the vxlan id for wired meshing + + - wifi*.ibss.ssid + - wifi*.ibss.bssid + - wifi*.mesh.id + - mesh_vpn.fastd.groups.*.peers.remotes + - mesh_vpn.fastd.groups.*.peers.key + - mesh_vpn.tunneldigger.brokers + +- Clients consider WiFi networks sharing the same ESSID as if they were + the same L2 network and try to reconfirm and reuse previous + addressing. If multiple neighbouring domains shared the same ESSID, + the roaming experience of clients would degrade. + + - wifi*.ap.ssid + +- Some values should be only set in legacy domains and not in new domains. + - mesh.vxlan + + - By default, this value is `true`. It should be only set to `false` + for one legacy domain, since vxlan prevents accidental wired + merges of domains. For old domains this value is still available + to keep compatibility between all nodes in one domain. + + - next_node.mac + + - For new domains, the default value should be used, since there is + no need for a special mac (or domain specific mac). For old domains + this value is still available to keep compatibility between all + nodes in one domain. + +Example config +-------------- + +site.mk +^^^^^^^ + +.. literalinclude:: ../multidomain-site-example/site.mk + :language: makefile + +site.conf +^^^^^^^^^ + +.. literalinclude:: ../multidomain-site-example/site.conf + :language: lua + +domains/alpha_centauri.conf +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. literalinclude:: ../multidomain-site-example/domains/alpha_centauri.conf + :language: lua + +i18n/en.po +^^^^^^^^^^ + +.. literalinclude:: ../multidomain-site-example/i18n/en.po + :language: po + +i18n/de.po +^^^^^^^^^^ + +.. literalinclude:: ../multidomain-site-example/i18n/de.po + :language: po + +modules +^^^^^^^ + +.. literalinclude:: ../multidomain-site-example/modules + :language: makefile + + +.. |image0| image:: multidomain_configmode.gif diff --git a/docs/features/multidomain_configmode.gif b/docs/features/multidomain_configmode.gif new file mode 100644 index 0000000000000000000000000000000000000000..494840f59f418ac1c104c53c4e0dc3edc9fb65f7 GIT binary patch literal 58507 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%0D5~` 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 Ws-~){t}3gxs;j;#tSU`F0028K>pVmN literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index 03839d3d2..7c6d06eb9 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -25,6 +25,7 @@ Several Freifunk communities in Germany use Gluon as the foundation of their Fre features/wired-mesh features/dns-forwarder features/monitoring + features/multidomain features/authorized-keys features/roles features/vpn diff --git a/docs/multidomain-site-example/domains/alpha_centauri.conf b/docs/multidomain-site-example/domains/alpha_centauri.conf new file mode 100644 index 000000000..27558253e --- /dev/null +++ b/docs/multidomain-site-example/domains/alpha_centauri.conf @@ -0,0 +1,61 @@ +{ + -- multiple codes/names can be defined, the first one is the primary name + -- additional aliases can be defined + domain_names = { + alpha_centauri = 'Alpha Centauri', + rigil_kentaurus = 'Rigil Kentaurus', + proxima_centauri = 'Proxima Centauri', + }, + + -- 32 byte random data in hexadecimal encoding + -- Can be generated using: echo $(hexdump -v -n 32 -e '1/1 "%02x"' </dev/urandom) + domain_seed = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + + -- unique network prefixes per domain + prefix4 = '10.xxx.0.0/20', + prefix6 = 'fdxx:xxxx:xxxx:xxxx::/64', + + next_node = { + ip4 = '10.xxx.yyy.zzz', + ip6 = 'fdxx:xxxx:xxxx:xxxx::xxxx', + }, + + wifi24= { + ap = { + ssid = "alpha-centauri.example.org", + channel = 1, + }, + mesh = { + id = 'ueH3uXjdp', -- usually you don't want users to connect to this mesh-SSID, so use a cryptic id that no one will accidentally mistake for the client WiFi + }, + }, + + wifi5= { + ap = { + ssid = "alpha-centauri.example.org", + channel = 44, + }, + mesh = { + id = 'ueH3uXjdp', + }, + }, + + mesh_vpn = { + fastd = { + groups = { + backbone = { + peers = { + peer1 = { + key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + remotes = {'"peer1.example.org" port xxxxx'}, + }, + peer2 = { + key = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', + remotes = {'"peer2.example.org" port xxxxx'}, + }, + }, + }, + }, + }, + }, +} diff --git a/docs/multidomain-site-example/i18n b/docs/multidomain-site-example/i18n new file mode 120000 index 000000000..db297ce10 --- /dev/null +++ b/docs/multidomain-site-example/i18n @@ -0,0 +1 @@ +../site-example/i18n/ \ No newline at end of file diff --git a/docs/multidomain-site-example/modules b/docs/multidomain-site-example/modules new file mode 120000 index 000000000..92ec2fa53 --- /dev/null +++ b/docs/multidomain-site-example/modules @@ -0,0 +1 @@ +../site-example/modules \ No newline at end of file diff --git a/docs/multidomain-site-example/site.conf b/docs/multidomain-site-example/site.conf new file mode 100644 index 000000000..25eaeb695 --- /dev/null +++ b/docs/multidomain-site-example/site.conf @@ -0,0 +1,52 @@ +{ + site_name = 'Centauri Mesh', + site_code = 'centauri', + default_domain = 'alpha_centauri', + + timezone = 'CET-1CEST,M3.5.0,M10.5.0/3', + ntp_server = {'ntp1.example.org', 'ntp2.example.org'}, + regdom = 'DE', + + wifi24 = { + mesh = { + mcast_rate = 12000, + }, + }, + + wifi5 = { + mesh = { + mcast_rate = 12000, + }, + }, + + mesh_vpn = { + mtu = 1312, + + fastd = { + methods = {'salsa2012+umac'}, + }, + + bandwidth_limit = { + enabled = false, + egress = 200, -- kbit/s + ingress = 3000, -- kbit/s + }, + }, + + autoupdater = { + branch = 'stable', + + branches = { + stable = { + name = 'stable', + mirrors = {'http://update.example.org/stable/sysupgrade'}, + good_signatures = 2, + pubkeys = { + 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', -- Alice + 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', -- Bob + 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', -- Mary + }, + }, + }, + }, +} diff --git a/docs/multidomain-site-example/site.mk b/docs/multidomain-site-example/site.mk new file mode 100644 index 000000000..1e16ca1a4 --- /dev/null +++ b/docs/multidomain-site-example/site.mk @@ -0,0 +1,60 @@ +## gluon site.mk makefile example + +## GLUON_FEATURES +# Specify Gluon features/packages to enable; +# Gluon will automatically enable a set of packages +# depending on the combination of features listed + +GLUON_FEATURES := \ + autoupdater \ + ebtables-filter-multicast \ + ebtables-filter-ra-dhcp \ + mesh-batman-adv-15 \ + mesh-vpn-fastd \ + radvd \ + respondd \ + status-page \ + web-advanced \ + web-wizard + +## GLUON_MULTIDOMAIN +# Build gluon with multidomain support. + +GLUON_MULTIDOMAIN=1 + +## GLUON_SITE_PACKAGES +# Specify additional Gluon/LEDE packages to include here; +# A minus sign may be prepended to remove a packages from the +# selection that would be enabled by default or due to the +# chosen feature flags + + +GLUON_SITE_PACKAGES := haveged iwinfo + +## DEFAULT_GLUON_RELEASE +# version string to use for images +# gluon relies on +# opkg compare-versions "$1" '>>' "$2" +# to decide if a version is newer or not. + +DEFAULT_GLUON_RELEASE := 0.6+exp$(shell date '+%Y%m%d') + +# Variables set with ?= can be overwritten from the command line + +## GLUON_RELEASE +# call make with custom GLUON_RELEASE flag, to use your own release version scheme. +# e.g.: +# $ make images GLUON_RELEASE=23.42+5 +# would generate images named like this: +# gluon-ff%site_code%-23.42+5-%router_model%.bin + +GLUON_RELEASE ?= $(DEFAULT_GLUON_RELEASE) + +# Default priority for updates. +GLUON_PRIORITY ?= 0 + +# Region code required for some images; supported values: us eu +GLUON_REGION ?= eu + +# Languages to include +GLUON_LANGS ?= en de -- GitLab