gluon-hoodselector docs: add package documentation
Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> gluon-hoodselector docs: replace 'Router have' with 'Router has' gluon-hoodselector: docs: fix spelling/grammar docs: gluon-hoodselector.rst, chnage 'VPN-mode' to VPN mode and 'trigon polygon' to triangle Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs/package/gluon-hoodselector: update .dia and .svg to current code behave Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs/package/gluon-hoodselector: replace hood with domain update doc to current code behave Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs hoodselector: fix spelling Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs/package/gluon-hoodselector: fix spelling second round Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs:gluon-hoodselector.rst: fix spelling Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs gluon-hoodselector.rst: fix line length Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs gluon-hoodselector: rename doc imports to be assoziated with the hoodselector docs gluon-hoodselector: fix image name and rst inmport Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs gluon-hoodselector: information without es (uncountable) Signed-off-by: Jan-Tarek Butt <tarek@ring0.de> docs/package: gluon-hoodselector.rst fix grammer issues Signed-off-by: Jan-Tarek Butt <tarek@ring0.de>
This commit is contained in:
parent
90baebc2b7
commit
f9a47f027b
@ -62,6 +62,7 @@ Several Freifunk communities in Germany use Gluon as the foundation of their Fre
|
|||||||
package/gluon-ebtables-filter-ra-dhcp
|
package/gluon-ebtables-filter-ra-dhcp
|
||||||
package/gluon-ebtables-limit-arp
|
package/gluon-ebtables-limit-arp
|
||||||
package/gluon-ebtables-source-filter
|
package/gluon-ebtables-source-filter
|
||||||
|
package/gluon-hoodselector
|
||||||
package/gluon-radv-filterd
|
package/gluon-radv-filterd
|
||||||
package/gluon-scheduled-domain-switch
|
package/gluon-scheduled-domain-switch
|
||||||
package/gluon-web-admin
|
package/gluon-web-admin
|
||||||
|
BIN
docs/package/gluon-hoodselector-domainmap.jpeg
Normal file
BIN
docs/package/gluon-hoodselector-domainmap.jpeg
Normal file
Binary file not shown.
After Width: | Height: | Size: 291 KiB |
16
docs/package/gluon-hoodselector-rectangle-example.svg
Normal file
16
docs/package/gluon-hoodselector-rectangle-example.svg
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
|
||||||
|
<svg width="13cm" height="9cm" viewBox="348 138 253 169" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<g>
|
||||||
|
<rect style="fill: #ffffff" x="389" y="164" width="158" height="115"/>
|
||||||
|
<rect style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x="389" y="164" width="158" height="115"/>
|
||||||
|
</g>
|
||||||
|
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="348" y="150">
|
||||||
|
<tspan x="348" y="150">53.22,</tspan>
|
||||||
|
<tspan x="348" y="166">8.09 #</tspan>
|
||||||
|
</text>
|
||||||
|
<text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="545" y="288">
|
||||||
|
<tspan x="545" y="288"># 53.36,</tspan>
|
||||||
|
<tspan x="545" y="304"> 8.32</tspan>
|
||||||
|
</text>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 996 B |
1080
docs/package/gluon-hoodselector.dia
Normal file
1080
docs/package/gluon-hoodselector.dia
Normal file
File diff suppressed because it is too large
Load Diff
130
docs/package/gluon-hoodselector.rst
Normal file
130
docs/package/gluon-hoodselector.rst
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
gluon-hoodselector
|
||||||
|
==================
|
||||||
|
|
||||||
|
This package provides an automated way to continuously select the correct
|
||||||
|
domain based on the geolocation of a node. The purpose of Hoodselector is to
|
||||||
|
automatically detect in which domain the node is located based on its
|
||||||
|
geolocation settings. Therefore domains are required to have bounding boxes,
|
||||||
|
defined as polygons or rectangles. Based on this information Hoodselector will
|
||||||
|
select a domain from the list of known domains and migrate towards it without
|
||||||
|
requiring a reboot. This package therefore provides a scalable and
|
||||||
|
decentralized approach to automatic domain selection.
|
||||||
|
|
||||||
|
Background information
|
||||||
|
----------------------
|
||||||
|
|
||||||
|
The main problem of the Nordwest Freifunk community was the quickly rising
|
||||||
|
number of nodes in the network. This indirectly affected the stability of the
|
||||||
|
network, because the noise inside the network, e.g. management traffic from
|
||||||
|
the batman-adv protocol, was rising, too. Inside the community there were some
|
||||||
|
ideas like building separate firmwares for each region. This solution would
|
||||||
|
cause issues with splitting regions again and nodes scattered among regions
|
||||||
|
which belong to a different region. Therefore we decided to develop a
|
||||||
|
dynamic and decentralized management of regions called domains.
|
||||||
|
The Hoodselector's task is to choose the "right" domains in an intelligent way
|
||||||
|
and to hold the network together and accessible.
|
||||||
|
|
||||||
|
A domain is defined by geostationary fixed shapes by using longitude & latitude
|
||||||
|
in combination with the domain configuration system. Below you can see a visual
|
||||||
|
example of a regional domain:
|
||||||
|
|
||||||
|
.. image:: gluon-hoodselector-domainmap.jpeg
|
||||||
|
|
||||||
|
Behaviour
|
||||||
|
------------------
|
||||||
|
|
||||||
|
The following is an abstract state diagramm which gives an overview
|
||||||
|
of the process:
|
||||||
|
|
||||||
|
.. image:: gluon-hoodselector.svg
|
||||||
|
|
||||||
|
The sequence of this diagram reflects the priority of its running modes.
|
||||||
|
Each mode will be explained separately below.
|
||||||
|
|
||||||
|
geolocation mode
|
||||||
|
^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This mode will only be entered when a node has location coordinates set.
|
||||||
|
Nodes with a position will set their domain based on it.
|
||||||
|
The node will skip to the next mode when the node (a) has no position or
|
||||||
|
(b) its position is not within any of the defined bounding boxes.
|
||||||
|
|
||||||
|
default domain mode
|
||||||
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
This mode will be entered if no other mode before fits.
|
||||||
|
It provides a fallback to the default domain.
|
||||||
|
|
||||||
|
Domain shapes
|
||||||
|
-------------
|
||||||
|
|
||||||
|
There are two types of domains: the unique dehault one without a defined shape
|
||||||
|
and others which contain shapes.
|
||||||
|
|
||||||
|
* **default domain**
|
||||||
|
|
||||||
|
The default domain doesn’t hold any shapes and represents the inverted area of
|
||||||
|
all other shapes held by other domains with geo coordinates. It will only be
|
||||||
|
entered if a node could not be matched to a geo domain. A suggested approach is
|
||||||
|
to define the "old" network as default domain and gradually migrate nodes from
|
||||||
|
there to geo domains.
|
||||||
|
|
||||||
|
* **geo domains**
|
||||||
|
|
||||||
|
A geo domain contains shapes, which are described by three dimensional arrays
|
||||||
|
and represents the geographical size of the domain. There are two possible
|
||||||
|
definitions of these shapes. The first one is using rectangles so that only
|
||||||
|
two coordinates per box are needed to define it (see below for an
|
||||||
|
example). The second one uses polygons which can have multiple edges.
|
||||||
|
Each domain can hold multiple shapes.
|
||||||
|
|
||||||
|
.. image:: gluon-hoodselector-rectangle-example.svg
|
||||||
|
|
||||||
|
site.conf
|
||||||
|
---------
|
||||||
|
|
||||||
|
The designer of the shapes must always ensure that no overlapping polygons
|
||||||
|
between domains will be created or else the order in the domain list will
|
||||||
|
become relevant. If for example domain A and B overlap, Hoodselector
|
||||||
|
would, for that overlapping area, only ever reach domain A, but never domain B.
|
||||||
|
Here is an example of a rectangular definition of a shape:
|
||||||
|
Example::
|
||||||
|
|
||||||
|
hoodselector = {
|
||||||
|
shapes = {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
lat = 53.128,
|
||||||
|
lon = 8.187
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lat = 53.163,
|
||||||
|
lon = 8.216
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
Here is an example of a shape defined by a triangle:
|
||||||
|
Example::
|
||||||
|
|
||||||
|
hoodselector = {
|
||||||
|
shapes = {
|
||||||
|
{
|
||||||
|
{
|
||||||
|
lat = 53.128,
|
||||||
|
lon = 8.187
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lat = 53.163,
|
||||||
|
lon = 8.216
|
||||||
|
},
|
||||||
|
{
|
||||||
|
lat = 53.196,
|
||||||
|
lon = 8.194
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
This package is incompatible with :doc:`gluon-config-mode-domain-select`.
|
142
docs/package/gluon-hoodselector.svg
Normal file
142
docs/package/gluon-hoodselector.svg
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
|
||||||
|
<svg width="44cm" height="21cm" viewBox="36 65 864 412" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<g>
|
||||||
|
<line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="102.36" y1="128.823" x2="185.552" y2="129.326"/>
|
||||||
|
<polygon style="fill: #000000" points="185.521,134.325 195.551,129.386 185.582,124.326 "/>
|
||||||
|
<polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="185.521,134.325 195.551,129.386 185.582,124.326 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<ellipse style="fill: #ffffff" cx="257.52" cy="129.76" rx="60.966" ry="46.2698"/>
|
||||||
|
<ellipse style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" cx="257.52" cy="129.76" rx="60.966" ry="46.2698"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="257.52" y="133.66">
|
||||||
|
<tspan x="257.52" y="133.66">Load domains</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="318.984" y1="129.76" x2="345.941" y2="129.76"/>
|
||||||
|
<polygon style="fill: #000000" points="345.941,134.76 355.941,129.76 345.941,124.76 "/>
|
||||||
|
<polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="345.941,134.76 355.941,129.76 345.941,124.76 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect style="fill: #00ff00" x="106" y="65.1" width="77.75" height="14.95"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="106" y="77">
|
||||||
|
<tspan x="106" y="77">initialization</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect style="fill: #00ff00" x="360.45" y="65.1" width="115.1" height="14.95"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="418" y="77">
|
||||||
|
<tspan x="418" y="77">geolocation mode</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<ellipse style="fill: #ffffff" cx="420.521" cy="129.76" rx="63.5828" ry="36.4784"/>
|
||||||
|
<ellipse style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" cx="420.521" cy="129.76" rx="63.5828" ry="36.4784"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="420.521" y="133.66">
|
||||||
|
<tspan x="420.521" y="133.66">geo pos. exist</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="484.092" y1="129.344" x2="596.635" y2="128.607"/>
|
||||||
|
<polygon style="fill: #000000" points="596.668,133.607 606.635,128.541 596.602,123.607 "/>
|
||||||
|
<polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="596.668,133.607 606.635,128.541 596.602,123.607 "/>
|
||||||
|
</g>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="521" y="122">
|
||||||
|
<tspan x="521" y="122">false</tspan>
|
||||||
|
</text>
|
||||||
|
<g>
|
||||||
|
<ellipse style="fill: #ffffff" cx="419.999" cy="263.001" rx="64.5067" ry="32.2534"/>
|
||||||
|
<ellipse style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" cx="419.999" cy="263.001" rx="64.5067" ry="32.2534"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="419.999" y="266.901">
|
||||||
|
<tspan x="419.999" y="266.901">get geoDomain</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="420.376" y1="166.73" x2="420.169" y2="219.76"/>
|
||||||
|
<polygon style="fill: #000000" points="415.169,219.74 420.129,229.76 425.168,219.779 "/>
|
||||||
|
<polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="415.169,219.74 420.129,229.76 425.168,219.779 "/>
|
||||||
|
</g>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="428" y="195">
|
||||||
|
<tspan x="428" y="195">true</tspan>
|
||||||
|
</text>
|
||||||
|
<g>
|
||||||
|
<line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="420" y1="295.735" x2="420" y2="321.575"/>
|
||||||
|
<polygon style="fill: #000000" points="415,321.575 420,331.575 425,321.575 "/>
|
||||||
|
<polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="415,321.575 420,331.575 425,321.575 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="465.257" y1="239.593" x2="620.21" y2="159.449"/>
|
||||||
|
<polygon style="fill: #000000" points="622.507,163.89 629.092,154.855 617.913,155.008 "/>
|
||||||
|
<polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="622.507,163.89 629.092,154.855 617.913,155.008 "/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<ellipse style="fill: #ffffff" cx="420.001" cy="364.499" rx="63.8471" ry="31.9236"/>
|
||||||
|
<ellipse style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" cx="420.001" cy="364.499" rx="63.8471" ry="31.9236"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="420.001" y="368.399">
|
||||||
|
<tspan x="420.001" y="368.399">set geoDomain</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="516" y="195.25">
|
||||||
|
<tspan x="516" y="195.25">false</tspan>
|
||||||
|
</text>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="430" y="313.25">
|
||||||
|
<tspan x="430" y="313.25">true</tspan>
|
||||||
|
</text>
|
||||||
|
<g>
|
||||||
|
<ellipse style="fill: #ffffff" cx="420.001" cy="453.499" rx="44.2427" ry="22.1213"/>
|
||||||
|
<ellipse style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" cx="420.001" cy="453.499" rx="44.2427" ry="22.1213"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="420.001" y="457.399">
|
||||||
|
<tspan x="420.001" y="457.399">Exit</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<line style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" x1="420.001" y1="396.929" x2="420.001" y2="420.38"/>
|
||||||
|
<polygon style="fill: #000000" points="415.001,420.38 420.001,430.38 425.001,420.38 "/>
|
||||||
|
<polygon style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="415.001,420.38 420.001,430.38 425.001,420.38 "/>
|
||||||
|
</g>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="912.352" y="129.946">
|
||||||
|
<tspan x="912.352" y="129.946"></tspan>
|
||||||
|
</text>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="912.352" y="129.946">
|
||||||
|
<tspan x="912.352" y="129.946"></tspan>
|
||||||
|
</text>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="96.5" y="236.5">
|
||||||
|
<tspan x="96.5" y="236.5"></tspan>
|
||||||
|
</text>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:start;font-family:sans-serif;font-style:normal;font-weight:normal" x="95.5" y="251.5">
|
||||||
|
<tspan x="95.5" y="251.5"></tspan>
|
||||||
|
</text>
|
||||||
|
<g>
|
||||||
|
<ellipse style="fill: #ffffff" cx="69.241" cy="128.624" rx="32.641" ry="23.7236"/>
|
||||||
|
<ellipse style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" cx="69.241" cy="128.624" rx="32.641" ry="23.7236"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="69.241" y="132.524">
|
||||||
|
<tspan x="69.241" y="132.524">Start</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<rect style="fill: #00ff00" x="610.675" y="65.4" width="137.45" height="14.95"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="679.4" y="77.3">
|
||||||
|
<tspan x="679.4" y="77.3">default domain mode</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<ellipse style="fill: #ffffff" cx="680.909" cy="128.055" rx="73.3093" ry="36.6546"/>
|
||||||
|
<ellipse style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" cx="680.909" cy="128.055" rx="73.3093" ry="36.6546"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="680.909" y="131.955">
|
||||||
|
<tspan x="680.909" y="131.955">set defaultDomain</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<ellipse style="fill: #ffffff" cx="855.001" cy="126" rx="44.2427" ry="22.1213"/>
|
||||||
|
<ellipse style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" cx="855.001" cy="126" rx="44.2427" ry="22.1213"/>
|
||||||
|
<text font-size="12.8" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="855.001" y="129.9">
|
||||||
|
<tspan x="855.001" y="129.9">Exit</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<line style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #000000" x1="754.705" y1="127.184" x2="800.277" y2="126.646"/>
|
||||||
|
<polygon style="fill: #000000" points="800.336,131.645 810.276,126.528 800.218,121.646 "/>
|
||||||
|
<polygon style="fill: none; fill-opacity:0; stroke-width: 0.02; stroke: #000000" points="800.336,131.645 810.276,126.528 800.218,121.646 "/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 9.2 KiB |
Loading…
Reference in New Issue
Block a user