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
firmware:babel [22.03.2018 23:13] – [Freifunk mit babel] jasonfirmware:babel [10.06.2021 12:27] (aktuell) igor
Zeile 1: Zeile 1:
 ======= Freifunk mit babel ======= ======= Freifunk mit babel =======
 +<WRAP center round important 60%>
 +Diese Seite ist veraltet da FFFFM aktuell keine Babel Infrastruktur betreibt.
 +</WRAP>
 +
  
 Wir haben mit den Integrationsarbeiten für den [[https://nilsschneider.net/2016/04/10/babel-in-gluon.html|Gluon Babel Masterplan]] begonnen. 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 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.]]
  
-Die dazugehörige Map ist hier zu finden: [[http://gw01.babel.ffm.freifunk.net:8080/#/en/map|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 29: Zeile 34:
         * 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]].
  
 ====== Entwicklung ====== ====== Entwicklung ======
 [[wiki:designthemen_gluon]] [[wiki:designthemen_gluon]]
- +[[wiki:babel_android]] 
-====== CHANGELOG ====== +====== Changelog ====== 
- +[[wiki:babel-changelog]]
-===== v0.0.1.68 ===== +
- +
-    [X] l3roamd: only put active IP addresses in info packet +
-    [X] l3roamdimprove roaming for cable clients - use NEWLINK messages originating from fdb to learn new clients. +
-    [Xl3roamd: allow change of client interface, do not always exit on epoll error, re-initialize arp, icmp6 routemgr +
-    [Xl3roamd  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: +
-    [Xstatuspage rebase auf master, bauen +
-    [Xbuildjob 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. +
 ====== Debugging ====== ====== Debugging ======
 ===== Auf dem Gerät ===== ===== Auf dem Gerät =====
 Das Babel-Netz ist ein Testnetz. Niemand weiß wie man Layer 3-Netze mit Roaming aufbaut - wir sind die ersten. 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 beratenWichtig ist meistdie Ausgabe von:+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   * logread
   * nodeinfo   * nodeinfo
Zeile 194: Zeile 60:
 ``` ```
  
-  * 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 das binary aus dem build-tree und dem core-file vom router laden:   * mit dem gdb für den build das binary aus dem build-tree und dem core-file vom router laden:
Zeile 221: Zeile 87:
 Die Komponenten des Netzes sind [[http://l3-freifunk.readthedocs.io/de/latest/components.html#besondere-adressen-netze|hier]] beschrieben. Die Komponenten des Netzes sind [[http://l3-freifunk.readthedocs.io/de/latest/components.html#besondere-adressen-netze|hier]] beschrieben.
  
-Serverseitig kann man loslegen, wenn man als post-up script folgendes ausführt:+Das Setup der Gateways ist  [[infrastruktur:gateway:babel-gateway|hier]] zu finden. 
 + 
 +Serverseitig (anbei die hopglass-Integration ins Netz) kann man loslegen, wenn man als post-up script folgendes ausführt:
 <code> <code>
 #!/bin/bash #!/bin/bash
  • firmware/babel.1521760396.txt.gz
  • Zuletzt geändert: 22.03.2018 23:13
  • von jason