firmware:babel

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
firmware:babel [01.04.2017 22:49] – [Überblick - weitere Entwicklungen] christffirmware:babel [30.08.2019 00:39] – [Freifunk mit babel] Aktualisierungs-Aufruf jason
Zeile 1: Zeile 1:
-. Wir haben mit den Integrationsarbeiten für den [[https://nilsschneider.net/2016/04/10/babel-in-gluon.html|Gluon Babel Masterplan]] begonnen.+======= Freifunk mit babel =======
  
-==== Dinge die schon gehen ==== +Wir haben mit den Integrationsarbeiten für den [[https://nilsschneider.net/2016/04/10/babel-in-gluon.html|Gluon Babel Masterplan]] begonnen. 
-ES GEHT!+ 
 +Die aktuelle frankfurter babel-Firmware gibt es [[https://dl.ffm.freifunk.net/firmware/babel-dev/|hier (development)]], [[https://dl.ffm.freifunk.net/firmware/babel-test/|hier (test)]] und [[https://dl.ffm.freifunk.net/firmware/babel-stable/|hier (stable)]].   
 +Die dazugehörige Map ist hier zu finden: [[http://gw01.babel.ffm.freifunk.net:8080/#/en/graph|Babel Map - Freifunk Frankfurt a.M.]] 
 + 
 +<WRAP center round todo 60%> Die Informationen in dem obigen Teilabschnitt sind wahrscheinlich nicht mehr aktuell.\\  Hilf mit und bringe diese Seite auf einen aktuellen Stand.</WRAP> 
 + ====== Status ====== 
 +  
 +Man kann sich verbinden, roamen und das Netz nutzen. Man hat 25% mehr Durchsatz als mit Batman unter gleichen Funkbedingungen.
  
 Im Detail heißt das: Im Detail heißt das:
-  * 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.  +    * Ein Client kann sich mit einem Node verbinden und es ist Kommunikation zwischen diesen beiden Geräten möglich. 
-    * gluon-mesh-babel +    * Ein Client kann sich mit einem Node verbinden und erreicht über das Mesh einen anderen Node. 
-    * gluon-l3roamd +    * Zwei Clients an unterschiedlichen Mesh-Nodes können miteinander kommunizieren. 
-    * gluon-mmfd +    * Zwei Clients verbinden sich mit einem Node und können kommunizieren. (Jeweils switch-port, beide per wifi und wechselseitig kabel/wifi) 
-    * mmfd +    * Routing ins Internet für einen Client funktioniert für **IPv6** und **IPv4**. 
-    * gluon-mesh-vpn-fastd +    * Internetzugang an mesh-only-node funktioniert. 
-    * babeld 1.8 +    Babel-Nodes erscheinen neben Batman-Nodes auf der Babel-Map. 
-    * dnsmasq wurde deutlich verkleinert, DHCP entfernt. +    * DNS funktioniert mit dem durch das Babel-Projekt in gluon eingeführten DNS-Cache
-  * Kommunikation: +    Roaming eines Clients geht. 
-    * Ein Client verbindet sich mit einem Node und es ist Kommunikation zwischen diesen beiden Geräten möglich +    * Es gibt eine funktionierende Firewall. 
-    * Ein Client verbindet sich mit einem Node und erreicht über das Mesh einen anderen Node +    Auf einem Socket sind verschieden l3roamd-Operationen möglich
-    * zwei Clients an unterschiedlichen Mesh-Nodes können miteinander kommunizieren +    Folgenden Pakete wurden angepasstsodass die benötigten Komponenten in der Firmware eingebaut ist und per ifup auch gestartet werden können.  
-    * zwei Clients verbinden sich mit einem Node und können kommunizieren. (jeweils switch-port, beide per wifi und wechselseitig kabel/wifi) +        gluon-mesh-babel 
-    * Routing ins Internet für einen Client funktioniert für IPv6 und IPv4 +        * gluon-l3roamd 
-    * Internetzugang an mesh-only-node funktioniert +        * mmfd 
-  DNS als anycast-service funktioniert (2a06:8187:fb00:53::53) +        * gluon-mesh-vpn-fastd 
-  * DNS-cache auf node funktioniert (siehe Erweiterung durch die DNS-Tabelle in der site.conf) +        * babeld >1.8 (master von März 2018)
-  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+
-  Der Client-Count wird vom l3roamd per socket gemeldet.+
  
 +Bitte erfasst Probleme in unserer [[https://github.com/freifunk-ffm/ToDo-Liste/issues?q=is:issue+is:open+label:Babel|Todo-Liste]].
  
-Die aktuelle Entwicklungsfirmware gibt es [[https://dl.ffm.freifunk.net/firmware/babel-dev/|hier]]+====== Entwicklung ====== 
 +[[wiki:designthemen_gluon]] 
 +[[wiki:babel_android]] 
 +====== Changelog ====== 
 +[[wiki:babel-changelog]] 
 +====== Debugging ====== 
 +===== Auf dem Gerät ===== 
 +Das Babel-Netz ist ein TestnetzNiemand weiß wie man Layer 3-Netze mit Roaming aufbaut - wir sind die ersten. 
 +Es kann also durchaus passieren, dass etwas nicht glatt läuftIn so einem Fall ist man mit generellen Debugging-Hinweisen gut beraten.   
 +Wichtig ist meist die Ausgabe von: 
 +  * logread 
 +  * nodeinfo 
 +  * echo get_clients | socat - /var/run/l3roamd.sock 
 +  * ip -6 r s
  
 +===== Core-Files auswerten =====
 +  * Die Erzeugung von core-Files auf dem openwrt-Gerät aktivieren:
  
- * 14.2.2017, Version 0.0.1.0 -- Alle bekannten Bugs sind behoben => Bitte testet mit uns +``` 
- * 17.2.2017, Version 0.0.1.1 -Der Neustart aus dem Konfigurationsmoduls kam sehr zeitverzögert. Nach dem erneuten Einbau von haveged sollte das behoben sein. => Bitte testet mit uns +touch /.init_enable_core 
-===== Folgeaufgaben, nachdem ein Testmesh aufgebaut ist ===== +sysctl -w "kernel.core_pattern=/tmp/%e.%p.%s.%t.core" 
-  * Refactoring und Entfernung von dupliziertem Code in den babel-Modulen und Programmen rund um respondd in gluon-status-page-api und gluon-mesh-babel (wäre für die batman-Welt auch mal nett) +ulimit -c unlimited 
-  * ggf. REJECT durch DROP ersetzen in der Firewall und Logging entfernen um die Netzleistung zu verbessern. +```
-  * Erstellung eines [[https://github.com/tcatm/l3roamd/issues/2|prefixd]] +
-  * Wie geht lokale Service Discovery in einem l3-Netz (Bittorrent Peer Exchange, ad-hoc xmpp)? +
-  * l3roamd: Unterstützung des Lernens von neuen Clients auch auf bridge-interfaces +
-===== Workarounds ===== +
-Die Firmware enthält folgende Workarounds: +
-  * l3roamd stürzt ab, wenn er ohne client interface gestartet wird, workaround: -i lo +
-  * l3roamd arbeitet nicht richtig, wenn ein -4 IP-MAP-Netz nicht angegeben istWird der speicherbereich initialisiert, gehts-4 wird also angegeben+
-  * babeld muss mit interface gestartet werden, workaround: lo +
-==== Überblick weitere Entwicklungen ==== +
-  * ddhcp für ipv4-Unterstützung ist in der Entwicklung [[https://git.toppoint.de/sargon/ddhcpd/]] +
-  * l3roamd ist in der Entwicklung [[https://github.com/freifunk-gluon/l3roamd]]+
  
-==== technische Änderungen ==== +  Den zu beobachtenden Prozess direkt von busybox aus startenden Absturz provozierenDas  das core-file liegt dann in /tmp. 
-  Nutzung von ff05 statt ff02 für responddAnpassung für hopglass.+  * Die  unstripped binaries liegen auf dem Build-System in staging_dir/target-*/root-* 
 +  * mit dem gdb für den build das binary aus dem build-tree und dem core-file vom router laden:
  
-==== IPv6 Adressen ====+``` 
 +cd /var/lib/jenkins/workspace/gluon_christf_next_musl/lede 
 +./build_dir/toolchain-mips_24kc_gcc-5.4.0_musl-1.1.16/gdb-8.0.1/gdb/gdb ./staging_dir/target-mips_24kc_musl-1.1.16/root-ar71xx/usr/sbin/l3roamd  /tmp/l3roamd.1516492435.7730.11.core 
 +``` 
 + 
 + 
 + 
 +====== Infrastruktur ====== 
 + 
 +===== IPv6 Adressen ====
 +  * 2a06:8187:fbab:2::1 next-node Adresse (löst auch im Netz als nextnode auf)
   * 2a06:8187:fb00:53::53 DNS   * 2a06:8187:fb00:53::53 DNS
   * 2a06:8187:fb00:123::123 ntp   * 2a06:8187:fb00:123::123 ntp
   * 2a06:8187:fbab::/48   * 2a06:8187:fbab::/48
     * 2a06:8187:fbab:1::/64 Node Netz     * 2a06:8187:fbab:1::/64 Node Netz
 +      * 2a06:8187:fbab:1::9000:xxxx Infrastrukturbereich im Node Netz
     * 2a06:8187:fbab:2::/64 Client Netz     * 2a06:8187:fbab:2::/64 Client Netz
     * 2a06:8187:fb00:1::/96 Netz für nat64     * 2a06:8187:fb00:1::/96 Netz für nat64
-  * 2a06:8187:fbab:2::1 next-node Adresse (löst auch im Netz als nextnode auf) 
  
  
-==== 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 aus:+Die Komponenten des Netzes sind [[http://l3-freifunk.readthedocs.io/de/latest/components.html#besondere-adressen-netze|hier]] beschrieben. 
 + 
 +Das Setup der Gateways ist  [[infrastruktur:gateway:babel-gateway|hier]] zu finden. 
 + 
 +Serverseitig (anbei die hopglass-Integration ins Netzkann man loslegen, wenn man als post-up script folgendes ausführt:
 <code> <code>
 #!/bin/bash #!/bin/bash
Zeile 71: Zeile 92:
 cat >/tmp/babeld.conf<<EOF cat >/tmp/babeld.conf<<EOF
 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:8187:fbab:2::/64 eq 128  allow +default rtt-min 25 
-#redistribute ip 2a06:8187:fbab:1::/64 eq 128  allow +out ip 2a06:8187:fbab:2::1/128 deny 
-#redistribute ip 2a06:8187:fb00::/40 eq 128 allow +redistribute ip 2a06:8187:fbab:2::1/128 deny 
-#redistribute local  deny +redistribute ip 2a06:8187:fbab:2::/64 eq 128  allow 
-#redistribute ip ::/0 metric 256  +redistribute ip 2a06:8187:fbab:1::/64 eq 128  allow 
-redistribute metric 256+redistribute ip 2a06:8187:fbab:3::/64 eq 96 allow 
 +redistribute src-prefix 2a06:8187:fb00::/40 ip 2000::/3 allow 
 +redistribute ip ::/0 allow 
 +redistribute ip 2000::/3 allow 
 +redistribute local deny 
 +redistribute src-prefix 2a06:8187:fbab:2::/64 if eth1 metric 256
 EOF EOF
 localnode=$(ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr 2a06:8187:fbab:1:: $( ip a s dev eth0|grep link/ether|awk '{print $2}')) localnode=$(ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr 2a06:8187:fbab:1:: $( ip a s dev eth0|grep link/ether|awk '{print $2}'))
Zeile 94: Zeile 123:
 /usr/local/bin/babeld -D -s -I /var/run/babeld.pid  -G 33123 -c /tmp/babeld.conf /usr/local/bin/babeld -D -s -I /var/run/babeld.pid  -G 33123 -c /tmp/babeld.conf
  
-#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, in here only mesh-interface should be added 
 sleep 1 sleep 1
  
-/usr/local/bin/l3roamd -p 2a06:8187:fbab:2::/64 -i lo  -m $IFACE -t 11 -a 2a06:8187:fbff:2::2 &+/usr/local/bin/l3roamd -p 2a06:8187:fbab:2::/64 -m $IFACE -t 11 -a 2a06:8187:fbff:2::2 &
 disown disown
 /usr/local/bin/mmfd -v & /usr/local/bin/mmfd -v &
Zeile 106: Zeile 133:
 #/sbin/ip a add 2a06:8187:fb00:2::4/128 dev mmfd0 #/sbin/ip a add 2a06:8187:fb00:2::4/128 dev mmfd0
 /sbin/ip a add 2a06:8187:fbab:1:383b:9ff:fed5:9f53/128 dev mmfd0 /sbin/ip a add 2a06:8187:fbab:1:383b:9ff:fed5:9f53/128 dev mmfd0
-/sbin/ip r add ff05::2:1001/128 dev mmfd0 table local+/sbin/ip r add ff05::2:1001/128 dev mmfd0 table local # (reicht auf dem Server wo yanic läuft, muss nicht auf gateways sein)
 /sbin/ip link set dev mmfd0 up /sbin/ip link set dev mmfd0 up
 +/sbin/ip -6 r a 2a06:8187:fbab:2::/64 dev l3roam0 t 10
 +
  
 #add route to icvpn - all other freifunk networks #add route to icvpn - all other freifunk networks
Zeile 113: Zeile 142:
 </code> </code>
  
-Auf dem Gateway läuft fastd udn bringt die mmfd/l3roamd mit dem gleichen script (einzige AUsnahme: ff05-route wird nicht gesetzt) hoch. bird6 schreibt auf dem gateway seine default-route in Routing Tabelle 10.+Auf dem Gateway läuft fastd und bringt die mmfd/l3roamd mit dem obigen script (einzige AUsnahme: ff05-route wird nicht gesetzt) hoch. bird6 schreibt auf dem gateway seine default-route in Routing Tabelle 10
 + 
 +Salt-states für Gateways haben wir auch - leider aktuell noch nicht öffentlich.
  • firmware/babel.txt
  • Zuletzt geändert: 10.06.2021 12:27
  • von igor