Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| firmware:babel [14.02.2017 20:33] – [Dinge die schon gehen] christf | firmware:babel [10.06.2021 12:27] (aktuell) – igor | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| - | . Wir haben mit den Integrationsarbeiten für den [[https:// | + | ======= Freifunk  | 
| + | <WRAP center round important 60%> | ||
| + | Diese Seite ist veraltet da FFFFM aktuell keine Babel Infrastruktur betreibt. | ||
| + | </ | ||
| - | ==== Dinge die schon gehen ==== | ||
| - |   * Custom-Pakete für die folgenden Pakete, sodass die benötigten Komponenten in der Firmware eingebaut ist und per ifup auch gestartet werden können.  | ||
| - | * gluon-mesh-babel | ||
| - | * gluon-l3roamd | ||
| - | * gluon-mmfd | ||
| - | * mmfd | ||
| - | * gluon-mesh-vpn-fastd | ||
| - | * babeld 1.8 | ||
| - |     * dnsmasq wurde deutlich verkleinert, | ||
| - |   * Kommunikation: | ||
| - | * Ein Client verbindet sich mit einem Node und es ist Kommunikation zwischen diesen beiden Geräten möglich | ||
| - | * Ein Client verbindet sich mit einem Node und erreicht über das Mesh einen anderen Node | ||
| - | * zwei Clients an unterschiedlichen Mesh-Nodes können miteinander kommunizieren | ||
| - |     * zwei Clients verbinden sich mit einem Node und können kommunizieren. (jeweils switch-port, | ||
| - | * Routing ins Internet für einen Client funktioniert für IPv6 und IPv4 | ||
| - | * Internetzugang an mesh-only-node funktioniert | ||
| - |   * DNS als anycast-service funktioniert (2a06: | ||
| - | * DNS-cache auf node funktioniert (siehe Erweiterung durch die DNS-Tabelle in der site.conf) | ||
| - | * roaming eines clients (nach merge von #938) | ||
| - | * Babel-Nodes erscheinen gemeinsam mit Batman-Nodes auf der Map | ||
| - | * Es gibt eine funktionierende Firewall | ||
| - | * Es gibt eine (Stand 8.2.2017) memleak-freie Statuspage | ||
| - | * mmfd wird mit 2 Patches betrieben, die als PR upstream eingestellt sind. | ||
| + | Wir haben mit den Integrationsarbeiten für den [[https:// | ||
| - | Die aktuelle  | + | Die aktuelle  | 
| + | Die dazugehörige Map ist hier zu finden: [[http:// | ||
| + | <WRAP center round todo 60%> Die Informationen in dem obigen Teilabschnitt sind wahrscheinlich nicht mehr aktuell.\\  | ||
| + |   | ||
| + | |||
| + | Man kann sich verbinden, roamen und das Netz nutzen. Man hat 25% mehr Durchsatz als mit Batman unter gleichen Funkbedingungen. | ||
| - | ==== Folgeaufgaben für Testmesh ==== | + | Im Detail heißt das: | 
| - | Alle bekannten Bugs sind behoben => Bitte testen (14.2.2017 Version 0.0.1.0) | + | * Ein Client kann sich mit einem Node verbinden und es ist Kommunikation zwischen diesen beiden Geräten möglich. | 
| - | ===== Folgeaufgaben, | + | * Ein Client kann sich mit einem Node verbinden und erreicht über das Mesh einen anderen Node. | 
| - |    | + | * Zwei Clients an unterschiedlichen Mesh-Nodes können miteinander kommunizieren. | 
| - | * ggf. REJECT durch DROP ersetzen in der Firewall und Logging entfernen um die Netzleistung zu verbessern. | + |     * Zwei Clients verbinden sich mit einem Node und können kommunizieren. (Jeweils switch-port, beide per wifi und wechselseitig kabel/ | 
| - |   * Nach der Reparatur der Paketabhängigkeiten  | + |     * Routing ins Internet für einen Client funktioniert für **IPv6**  | 
| - |   * Erstellung  | + | * Internetzugang an mesh-only-node funktioniert. | 
| - | * Wie geht lokale Service Discovery in einem l3-Netz (Bittorrent Peer Exchange, ad-hoc xmpp)? | + | * Babel-Nodes erscheinen neben Batman-Nodes auf der Babel-Map. | 
| - | * l3roamd: Unterstützung des Lernens von neuen Clients auch auf bridge-interfaces | + |     * DNS funktioniert mit dem durch das Babel-Projekt  | 
| - | ==== Workarounds ==== | + |     * Roaming  | 
| - | Die Firmware  | + | * Es gibt eine funktionierende Firewall. | 
| - |   * l3roamd stürzt ab, wenn er ohne client interface gestartet wird, workaround:  | + |     * Auf einem Socket sind verschieden  | 
| - | * babeld muss mit interface gestartet werden, workaround: lo | + |     * Folgenden Pakete wurden angepasst, sodass die benötigten Komponenten in der Firmware  | 
| - | ==== Überblick  | + | * gluon-mesh-babel | 
| - |   * ddhcp für ipv4-Unterstützung ist in der Entwicklung [[https:// | + | * gluon-l3roamd | 
| - |   * l3roamd ist in der Entwicklung [[https:// | + | * mmfd | 
| + | * gluon-mesh-vpn-fastd | ||
| + | * babeld >1.8 (master von März 2018) | ||
| - | ==== technische Änderungen ==== | + | Bitte erfasst Probleme in unserer [[https:// | 
| - | * Nutzung von ff05 statt ff02 für respondd, Anpassung für hopglass. | + | |
| - | ==== IPv6 Adressen ==== | + | ====== Entwicklung ====== | 
| + | [[wiki: | ||
| + | [[wiki: | ||
| + | ====== Changelog ====== | ||
| + | [[wiki: | ||
| + | ====== Debugging ====== | ||
| + | ===== Auf dem Gerät ===== | ||
| + | Das Babel-Netz ist ein Testnetz. Niemand weiß wie man Layer 3-Netze mit Roaming aufbaut - wir sind die ersten. | ||
| + | Es kann also durchaus passieren, dass etwas nicht glatt läuft. In so einem Fall ist man mit generellen Debugging-Hinweisen gut beraten.  | ||
| + | Wichtig ist meist die Ausgabe von: | ||
| + | * logread | ||
| + | * nodeinfo | ||
| + |   * echo get_clients | socat - / | ||
| + | * ip -6 r s | ||
| + | |||
| + | ===== Core-Files auswerten ===== | ||
| + |   * Die Erzeugung von core-Files auf dem openwrt-Gerät aktivieren: | ||
| + | |||
| + | ``` | ||
| + | touch / | ||
| + | sysctl -w " | ||
| + | ulimit -c unlimited | ||
| + | ``` | ||
| + | |||
| + | * Den zu beobachtenden Prozess direkt von busybox aus starten, den Absturz provozieren. Das das core-file liegt dann in /tmp. | ||
| + |   * Die  unstripped binaries liegen auf dem Build-System in staging_dir/ | ||
| + | * mit dem gdb für den build das binary aus dem build-tree und dem core-file vom router laden: | ||
| + | |||
| + | ``` | ||
| + | cd / | ||
| + | ./ | ||
| + | ``` | ||
| + | |||
| + | |||
| + | |||
| + | ====== Infrastruktur ====== | ||
| + | |||
| + | ===== IPv6 Adressen ===== | ||
| + |   * 2a06: | ||
|   * 2a06: |   * 2a06: | ||
|   * 2a06: |   * 2a06: | ||
|   * 2a06: |   * 2a06: | ||
|     * 2a06: |     * 2a06: | ||
| + |       * 2a06: | ||
|     * 2a06: |     * 2a06: | ||
|     * 2a06: |     * 2a06: | ||
| - |   * 2a06: | ||
| - | ==== Infrastruktur  | + | ===== Aufbau von Gateways ===== | 
| - | serverseitig führen wir auf dem hopglass.babel.ffm.freifunk.net für eth2 (babel-mesh-Interface) als post-up script folgendes  | + | Die Komponenten des Netzes sind [[http:// | 
| + | |||
| + | Das Setup der Gateways ist  [[infrastruktur: | ||
| + | |||
| + | Serverseitig (anbei die hopglass-Integration ins Netz) kann man loslegen, wenn man als post-up script folgendes  | ||
| < | < | ||
| #!/bin/bash | #!/bin/bash | ||
| Zeile 67: | Zeile 96: | ||
| cat >/ | cat >/ | ||
| ipv6-subtrees true | ipv6-subtrees true | ||
| + | reflect-kernel-metric true | ||
| export-table 10 | export-table 10 | ||
| import-table 11 | import-table 11 | ||
| import-table 12 | import-table 12 | ||
| + | local-port-readwrite 33123 | ||
| + | interface ens6 type wired rxcost 10 update-interval 60 | ||
| + | interface babel-vpn-1374 type tunnel link-quality true update-interval 300 | ||
| - | interface eth2 | ||
| default enable-timestamps true | default enable-timestamps true | ||
| default max-rtt-penalty 96 | default max-rtt-penalty 96 | ||
| - | #redistribute ip 2a06: | + | default rtt-min 25 | 
| - | #redistribute ip 2a06: | + | out ip 2a06: | 
| - | #redistribute ip 2a06:8187:fb00::/40 eq 128 allow | + | redistribute ip 2a06: | 
| - | #redistribute  | + | redistribute ip 2a06: | 
| - | #redistribute ip ::/0 metric 256 | + | redistribute ip 2a06: | 
| - | redistribute metric 256 | + | redistribute ip 2a06:8187:fbab:3::/64 eq 96 allow | 
| + | redistribute  | ||
| + | redistribute ip ::/0 allow | ||
| + | redistribute  | ||
| + | redistribute local deny | ||
| + | redistribute src-prefix 2a06: | ||
| EOF | EOF | ||
| localnode=$(ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr 2a06: | localnode=$(ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr 2a06: | ||
| Zeile 90: | Zeile 127: | ||
| / | / | ||
| - | #TODO: there is no client interface but l3roamd crashes when started without -i | ||
| - | #TODO: once l3roamd supports sockets it should be started from init-script, | ||
| sleep 1 | sleep 1 | ||
| - | / | + | / | 
| disown | disown | ||
| / | / | ||
| Zeile 102: | Zeile 137: | ||
| #/sbin/ip a add 2a06: | #/sbin/ip a add 2a06: | ||
| /sbin/ip a add 2a06: | /sbin/ip a add 2a06: | ||
| - | /sbin/ip r add ff05:: | + | /sbin/ip r add ff05:: | 
| /sbin/ip link set dev mmfd0 up | /sbin/ip link set dev mmfd0 up | ||
| + | /sbin/ip -6 r a 2a06: | ||
| + | |||
| #add route to icvpn - all other freifunk networks | #add route to icvpn - all other freifunk networks | ||
| Zeile 109: | Zeile 146: | ||
| </ | </ | ||
| - | Auf dem Gateway läuft fastd udn bringt die mmfd/ | + | Auf dem Gateway läuft fastd und bringt die mmfd/ | 
| + | |||
| + | Salt-states für Gateways haben wir auch - leider aktuell noch nicht öffentlich. | ||