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 [22.03.2018 22:42] 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 =======
  
-Die aktuelle 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-stblea/|hier (stable)]].+Wir haben mit den Integrationsarbeiten für den [[https://nilsschneider.net/2016/04/10/babel-in-gluon.html|Gluon Babel Masterplan]] begonnen.
  
 +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 ======  ====== Status ======
    
-Man kann sich verbinden, roamendas Netz nutzen. Man hat 25% mehr Durchsatz als mit Batman unter gleichen Funkbedingungen.+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:
-    * Ein Client kann sich mit einem Node verbinden und es ist Kommunikation zwischen diesen beiden Geräten möglich +    * Ein Client kann sich mit einem Node verbinden und es ist Kommunikation zwischen diesen beiden Geräten möglich. 
-    * Ein Client kann sich mit einem Node verbinden und erreicht über das Mesh einen anderen Node +    * 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 +    * Zwei Clients an unterschiedlichen Mesh-Nodes können miteinander kommunizieren. 
-    * zwei Clients verbinden sich mit einem Node und können kommunizieren. (jeweils switch-port, beide per wifi und wechselseitig kabel/wifi) +    * Zwei Clients verbinden sich mit einem Node und können kommunizieren. (Jeweils switch-port, beide per wifi und wechselseitig kabel/wifi) 
-    * Routing ins Internet für einen Client funktioniert für IPv6 und IPv4 +    * Routing ins Internet für einen Client funktioniert für **IPv6** und **IPv4**. 
-    * Internetzugang an mesh-only-node funktioniert +    * Internetzugang an mesh-only-node funktioniert. 
-    * Babel-Nodes erscheinen neben Batman-Nodes auf der Babel-Map  +    * Babel-Nodes erscheinen neben Batman-Nodes auf der Babel-Map. 
-    * DNS funktioniert mit dem durch das Babel-PRojekt in gluon eingeführten DNS-Cache. +    * DNS funktioniert mit dem durch das Babel-Projekt in gluon eingeführten DNS-Cache. 
-    * Roaming eines clients geht +    * Roaming eines Clients geht. 
-    * Es gibt eine funktionierende Firewall+    * Es gibt eine funktionierende Firewall.
     * Auf einem Socket sind verschieden l3roamd-Operationen möglich.     * Auf einem Socket sind verschieden l3roamd-Operationen möglich.
-    * folgenden Pakete wurden angepasst, sodass die benötigten Komponenten in der Firmware eingebaut ist und per ifup auch gestartet werden können. +    * Folgenden Pakete wurden angepasst, sodass die benötigten Komponenten in der Firmware eingebaut ist und per ifup auch gestartet werden können. 
         * gluon-mesh-babel         * gluon-mesh-babel
         * gluon-l3roamd         * gluon-l3roamd
Zeile 26: Zeile 30:
         * babeld >1.8 (master von März 2018)         * babeld >1.8 (master von März 2018)
  
-Bitte erfasst Probleme in der [[https://github.com/freifunk-ffm/ToDo-Liste/issues?q=is:issue+is:open+label:Babel|Todo-Liste]].+Bitte erfasst Probleme in unserer [[https://github.com/freifunk-ffm/ToDo-Liste/issues?q=is:issue+is:open+label:Babel|Todo-Liste]].
  
-===== Designthemen =====+====== Entwicklung ======
 [[wiki:designthemen_gluon]] [[wiki:designthemen_gluon]]
 +[[wiki:babel_android]]
 +====== Changelog ======
 +[[wiki:babel-changelog]]
 +====== 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 - /var/run/l3roamd.sock
 +  * ip -6 r s
  
-====== CHANGELOG ====== +===== Core-Files auswerten =====
- +
-===== v0.0.1.68 ===== +
- +
-    [X] l3roamd: only put active IP addresses in info packet +
-    [X] l3roamd: improve roaming for cable clients - use NEWLINK messages originating from fdb to learn new clients. +
-    [X] l3roamd: allow change of client interface, do not always exit on epoll error, re-initialize arp, icmp6 routemgr +
-    [X] l3roamd  info of inactive clients now leads to enrichment of addresses +
-    [X] l3roamd: fix info message parsing +
-    [X] l3roamd: use /48 clat range in -4 init parameter using a /96 length +
-    [X] l3roamd: intercom: fill sender-field in all outgoing packets +
-    [X] l3roamd: add debug output for intercom packet handling +
-    [X] l3roamd: remove endless loop when flushing packets +
-    [X] gluon-mesh-babel: Fix respondd crash when parsing json-response from l3roamd +
-    [X] introduce xlat464-clat, remove of jool +
-    [X] babeld upgrade to master to get event-triggered route-updates working +
-    [X] gluon-mesh-babel: ix crash of upgrade-script ./300-gluon-mesh-babel-mkconfig:12: attempt to call global 'client_prefix6' (a nil value) +
-  +
- +
-===== v0.0.1.65 ===== +
- +
-    [X] l3roamd: send claim if the client was known in the past but is inactive now (it might have roamed away and back again). +
-    [X] l3roamd: rework socket structure to allow multiple instances of l3roamd on one host while allowing to communicate via multicast and unicast on all relevant addresses:  +
-        [X] bind m sockets (one for each mesh interface) to mcast address to receive multicast packets +
-        [X] bind 1 socket to node-IP for sending claims and receiving info in response +
-        [X] bind n sockets fec0-socket /close when claiming / removing client => add to client structure  +
-    [X] l3roamd: intercom - bind to node-ip +
-    [X] l3roamd: roaming - keep old clients for 5 minutes after dropping them in an "old" queue. +
-    [X] babeld: adjust confit to include redistribution of CLATs and PLATs +
-    [X] gluon-mesh-babel: plat-prefix in site.conf konfigurieren +
-    [X] gluon-mesh-babel: clat-prefix in site.conf konfigurieren +
-    [X] gluon-l3roamd: set -n parameter to make l3roamd know about the clat-interface +
-    [X] gluon-l3roamd: set cli-options for clat (clat_prefix, clat-interface) in initscript +
-    [X] l3roamd: fix nl80211 client discovery +
-    [X] l3roamd: introduce switches to disable discovery via ndp/fdb/nl80211 +
-    [X] respondd: catch errors in corner cases for retrieving mac addresses +
-    [X] l3roamd: roaming: if the client is not available any more, forget ipv4 address along with ipv6 +
-    [X] l3roamd: Allow setting the ula-node-client-prefix +
-    [X] l3roamd: purge packets from own task scheduled when packet is received instead from NS-task +
-    [X] l3roamd: ipmgr: when dropping old packets, send icmp destination unreachable +
-    [X] l3roamd: FIX purge packets when debug is disabled +
-    [X] l3roamd: update usage() include all socket functions in help text +
-    [X] make autoupdater work on snapshot and next branches +
-    [X] l3roamd: do not crash when purging old packets +
-===== 1.8.0 Snapshot 63 ===== +
-    [X] l3roamd: rework seek logic triggers +
-    [x] l3roamd: when sending NS, use clients ll-address as destination if it is known already - RFC2461 +
-    [X] l3roamd: fix output when sending NS +
-    [X] l3roamd: beim entfernen von ip adressen eines clients, eine prüfugn der anderen ip adressen anstoßen => mit echo requests damit der kernel das gleich alles mitkriegt. +
-    [X] l3roamd: help with roaming - do not remove the client unless it's last IP-Address was deactivated >5 Minutes ago when bridge/nl80211 report the client as gone. +
-    [X] l3roamd: allow to add / remove addresses for clients using the socket. +
-    [X] respondd: implement json parsing for unlimited size of return value of l3roamd  (10 lines)                                                                                         +
-    [X] l3roamd: always use multicast claims instead of unicast. +
-    [X] l3roamd: NS/NA-Zyklus bei NUD:FAILED und NEWNEIGH entfernen - bei Empfang von NA wird clientmgr_add_address aufgerufen - set NUD_REACHABLE inside clientmgr_add_Address() +
-    [X] l3roamd: use nl-messages with state NUD_NOARP to deactivate client IP. +
-    [X] gluon-mesh-respondd: fix page fault +
-    [X] l3roamd: allow re-detection of client's IP addresses +
-    [X] l3roamd: fix segfault on clientmgr_is_known_address() +
-===== 1.8.0 Snapshot 62 ===== +
-    [x] l3roamd: when deleting clients, remove all their addresses by iterating backwards in the address-vector +
-    [X] mmfd: allow to run multiple instances in parallel +
-    [X] l3roamd: allow to run multiple instances in parallel +
-    [X] l3roamd: introduce get_prefixes-command on socket +
-    [X] adjust upgrade-scripts to domain config +
-    [X] l3roamd: do not remove client too early see log +
-===== 1.8.0 Snapshot 60 ===== +
-    [X] l3roamd: avoid double-free of client->addresses on client removal +
-    [X] l3roamd: "IPV4"-Zusatzroute für nat64 für jeden client hinzufügen +
-    [X] l3roamd: IP & Client-löschen ermöglichen +
-    [X] l3roamd: IPv4-Adresserkennung ermöglichen +
-    [X] l3roamd: bei DELNEIGH wird nicht die ll-adresse des clients gelösct, weil diese nciht im client-Adress-Array ist. => mit dem client auch essen ll-adresse mitführen. +
-    [X] prefixd: auf socket von l3roamd schreiben und damit roaming in zusätzlichen prefixes ermöglichen +
-    [X] libbabelhelper: remove condition with endless "Could not read data from buffer. This should not happen." +
-===== 1.8.0 Snapshot 58 ===== +
-    [X] respondd: BUGFIX: some neighbour interfaces are not shown. +
-    [X] respondd: statt mac-Adressen ll-Adressen einbauen +
-    [X] l3roamd: FIX: page fault +
- +
-===== 1.8.0 Snapshot 54 ===== +
-    [x] gluon-web-network Paket ist an Bord, Mesh on LAN ist konfigurierbar +
-    [x] l3roamd Absturz behoben +
-    [x] jool ist an bord für nicht-tiny target zum direkten ausleiten +
-    [X] l3roamd: die special IP darf erst nach allen claim retries gesetzt werden damit claim/info und damit roaming geht. +
-    [x] gc_thresh1 = 2 setzen und gc_thresh=3 +
-    [X] l3roamd: Entfernen von neighbours per netlink realieseren +
-    [X] l3roamd: client entfernen, wenn dessen letzte IP entfernt wird. +
-    [X] Fix debug output: seeking on intercom for client 2a06:8187:fbab:2::1sent intercom packet to a00:1593:0:0:ff02:: on iface lo rc: -1 +
-    [X] l3roamd: do not re-add clients when they are already active +
-    [X] x86-glibc buildjob: artifect nur für lede-x86-64-combined-squashfs.img speichern, auf make oldcnofig umsteigen für den zweiten defconfig +
-    [X] use-site-conf autoupdater branch patchen +
-    [x] firewall: allow dhcp on local_node interface +
-    [X] l3roamd: beim entfernen eines clients (roaming, drop, exit), die special-IPs vom client-Interface entfernen +
-    [X] l3roamd: neighbour entfernen bei client disconnect +
- +
-===== 1.8.0 Snapshot 52 ===== +
-    [X] l3roamd: Umgang mit Speicher bereinigen +
-    [X] l3roamd: get_clients should also display all clients, their macs and ip addresses +
-    [X] wann gehen wir in den tentative-STatus => REview durchführen (wenn wir per info-message neue IPs erhalten und wenn wir einen mac-change haben und inaktive-Adressen für den client +
-    [X] modules mit hochladen bei snapshots +
-    [X] dnsmasq konfigurieren, IPv4 für Clients +
-    [X] l3roamd: review clientmgr +
-    [X] server umstellen für firmwareuploads https://wiki.ffm.freifunk.net/infrastruktur:servers:download +
-    [X] l3roamd: add version-switch +
-    [X] statuspage batman: ?PROTO? (undefined) +
-    [X] respondd-Strukturen: Link-Quality und eingestellter Durchsatz aufnehmen. siehe iwinfo mesh0 assoclist +
-===== 1.8.0 Snapshot 41 ===== +
-    [X] FIX: [  257.537508] neighbours-babe[2318]: segfault at 0 ip 0000000000401302 sp 00007ffe76b852d0 error 6 in neighbours-babel[400000+2000] +
-    [X] babel-neighbour-struktur anpassen an Batman-Format: +
-    [X] statuspage rebase auf master, bauen +
-    [X] buildjob für christf_next branch machen und diese firmware auf ffm-server hochladen +
-    [X] DNS mit next-node feature reparieren +
-    [X] push christf_respondd-time & raise PR +
-    [X] statuspage heilen: wieder batadv-stream fehler (hoffentlich mit Thomas gemeinsam) +
-    [X] update-interval für mesh-vpn verbindung in den Minutenbereich erhöhen. +
-    [X] prefixd: roaming in zusätzlichen prefixes erlauben durch Bekanntgabe des zusätzlichen prefix an den l3roamd +
-    [X] gluon-mesh-babel script anpassen: loopback.ip6addr muss gesetzt werden +
-    [X] cnames in name überführen, delete_all weg nehmen, einzeln löschen (section namen hochzählen und dann explizit die gluon-dingens löschen. +
-    [X] NS: NONCE einbauen nach https://tools.ietf.org/html/rfc3971 +
-    [X] mmfd: neues debian-package bauen und hochladen +
-    [X] automatisch mmfd0 interface hoch bringen, analog zu l3roamd +
-===== 1.8.0 SNAPSHOT32 ===== +
-    [X] gw02 aufbauen +
-    [X] l3roamd: beobachten, wie clients inaktiv werden +
-    [X] l3roamd arbeitet nicht richtig, wenn ein -4 IP-MAP-Netz nicht angegeben ist. Wird der speicherbereich initialisiert, gehts. -4 wird also angegeben. => fixen +
-    [X] l3roamd: wen multicast claims und unicast claims geshickt werden: ip adresse mit im log ausgeben für den der claim gilt +
-    [X] ipmgr - Sicherstellen, dass die queue von alten Paketen bereinigt wird. FIX memleak +
-    [X] rebase n_babel-work +
-        [X] package/gluon-core/luasrc/lib/gluon/upgrade/140-firewall-rules reject_input_on_wan nachrüsten aus https://github.com/freifunk-ffm/gluon/blame/d9f6c0aa6bb662dd59850676e49190a4 +
-        [X] Firewallregeln auf Duplikate prüfen +
-        [X] Kontrolle der Commits durchführen - einzeln durchgehen. +
-    [X] gedroppte Clients erst nach 10 minuten löschen oder wenn ein claim kommt. +
-    [X] interface-IDs in routemgr nutzen +
-    [X] aliase für kurze DNS für nextnode nn.ffffm.net nn +
-    [X] Retry für Claims bauen +
-        [X] claim-Datenstruktur bauen: send-counter, claim selbst +
-        [X] Anpassung an send_claim: Eintrag nach dem claim in die claim-retry-liste legen. +
-        [X] Anpassung handle_info: prüfen ob im claim-retry-vector ein eintrag für den client ist, wenn ja, entfernen. +
-        [X] claim-retry-task bauen, die so lange retries sekündlich schickt und den retry-counter inkrementiert, wie  +
-                a) ein Eintrag in der claim-retry-liste ist und  +
-                b) der counter nicht 3 überschritten hat. +
-            Wenn er 3 überschreitet, Eintrag aus der retry-liste löschen. +
- +
-====== Folgeaufgaben, nachdem ein Testmesh aufgebaut ist ====== +
-  * Erprobung des  [[https://github.com/tcatm/l3roamd/issues/2|prefixd]] +
-  * Wie geht lokale Service Discovery in einem l3-Netz (Bittorrent Peer Exchange, ad-hoc xmpp)? +
- +
-==== Ü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]] +
- +
-==== Core-Files auswerten ====+
   * Die Erzeugung von core-Files auf dem openwrt-Gerät aktivieren:   * Die Erzeugung von core-Files auf dem openwrt-Gerät aktivieren:
  
Zeile 190: Zeile 56:
 ``` ```
  
-  * Den zu beobachtenden Prozess direkt von busybox aus starten, den Absturz provizieren. Das  das core-file liegt dann in /tmp.+  * 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/target-*/root-*   * Die  unstripped binaries liegen auf dem Build-System in staging_dir/target-*/root-*
-  * mit dem gdb für den build binary und core debuggen  +  * mit dem gdb für den build das binary aus dem build-tree und dem core-file vom router laden:
  
 ``` ```
- cd /var/lib/jenkins/workspace/gluon_christf_next_musl/lede +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+./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
 ``` ```
-==== technische Änderungen ==== 
-  * Nutzung von ff05 statt ff02 für respondd, Anpassung für hopglass. 
  
-==== IPv6 Adressen ====+ 
 + 
 +====== 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
Zeile 210: Zeile 78:
     * 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 == + 
-serverseitig führen wir auf dem hopglass.babel.ffm.freifunk.net für eth2 (babel-mesh-Interface) als post-up script folgendes aus:+===== Aufbau von Gateways ===== 
 +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 251: 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 263: 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 /sbin/ip -6 r a 2a06:8187:fbab:2::/64 dev l3roam0 t 10
Zeile 272: 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