Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
firmware:babel [22.01.2018 08:50] – [Core-Files auswerten] 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 ==== | + | |
- | ES GEHT! | + | Wir haben mit den Integrationsarbeiten für den [[https:// |
+ | |||
+ | Die aktuelle frankfurter babel-Firmware gibt es [[https:// | ||
+ | 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. | ||
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 | + | * Zwei Clients verbinden sich mit einem Node und können kommunizieren. (Jeweils |
- | * 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. |
- | * <del>Babel-Nodes erscheinen neben Batman-Nodes auf der Map</ | + | * Babel-Nodes erscheinen neben Batman-Nodes auf der Babel-Map. |
- | * <del>DNS als anycast-service | + | * DNS funktioniert |
- | * DNS-cache auf node funktioniert (siehe Erweiterung durch die DNS-Tabelle in der site.conf) | + | * Roaming eines Clients |
- | * Roaming eines clients | + | * Es gibt eine funktionierende Firewall. |
- | * Es gibt eine funktionierende Firewall | + | * Auf einem Socket sind verschieden |
- | * Der Client-Count wird vom l3roamd | + | * Folgenden |
- | * folgenden | + | |
* gluon-mesh-babel | * gluon-mesh-babel | ||
* gluon-l3roamd | * gluon-l3roamd | ||
* mmfd | * mmfd | ||
* gluon-mesh-vpn-fastd | * gluon-mesh-vpn-fastd | ||
- | * babeld 1.8 | + | * babeld |
+ | Bitte erfasst Probleme in unserer [[https:// | ||
- | + | ====== Entwicklung ====== | |
- | Die aktuelle Entwicklungsfirmware gibt es [[https:// | + | |
- | + | ||
- | + | ||
- | ==== Designthemen | + | |
[[wiki: | [[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 | ||
- | CHANGELOG | + | ===== Core-Files auswerten |
- | ========= | + | |
- | ============================ 1.8.0 Snapshot 53 | + | |
- | [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: | + | |
- | [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, | + | |
- | [X] l3roamd: review clientmgr | + | |
- | [X] server umstellen für firmwareuploads https:// | + | |
- | [X] l3roamd: add version-switch | + | |
- | [X] statuspage batman: ?PROTO? (undefined) | + | |
- | [X] respondd-Strukturen: | + | |
- | ========================= 1.8.0 Snapshot 41 | + | |
- | [X] FIX: [ 257.537508] neighbours-babe[2318]: | + | |
- | [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, | + | |
- | [X] NS: NONCE einbauen nach https:// | + | |
- | [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, | + | |
- | [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, | + | |
- | [X] rebase n_babel-work | + | |
- | [X] package/ | + | |
- | [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, | + | |
- | [X] Anpassung an send_claim: Eintrag nach dem claim in die claim-retry-liste legen. | + | |
- | [X] Anpassung handle_info: | + | |
- | [X] claim-retry-task bauen, die so lange retries sekündlich schickt und den retry-counter inkrementiert, | + | |
- | a) ein Eintrag in der claim-retry-liste ist und | + | |
- | b) der counter nicht 3 überschritten hat. | + | |
- | Wenn er 3 überschreitet, | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | * 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 | + | |
- | * 24.4.2017, Version 0.0.1.3 -- Statuspage fixes (keine NExtnode-IP mehr damit werden die Daten vom richtigen Node angezeigt, Ermittlung der Clientanzahl über Statussocket vom l3roamd, Firewall-Anpassung für Ports von fastd) | + | |
- | | + | |
- | * 27.4.2017, Version 0.0.1.4 -- respondd-segfault behoben, gateway_nexthop in statistiken aufgenommen. | + | |
- | * 4.5.2017, Version 0.0.1.5 -- respondd memleaks entfernt | + | |
- | Die Statuspage enthält nach wie vor die Graphen noch nicht, da ist noch eine Frage zum Vorgehen offen. | + | |
- | * 18.6.2017, Version 0.0.1.6 -- erste Version des prefixd inklusive web-frontend ist enthalten, daneben babeld-config fixes, Einführung von source-specific routing, Rebase auf gluon master, Firewall fixes für forward-traffic im mesh und zum dynamischen hinzufügen von Interfaces zur mesh-zone, | + | |
- | | + | |
- | | + | |
- | * seit Oktober/ | + | |
- | ===== Folgeaufgaben, | + | |
- | * Erprobung des [[https:// | + | |
- | * 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:// | + | |
- | * l3roamd ist in der Entwicklung [[https:// | + | |
- | + | ||
- | ==== 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 131: | Zeile 60: | ||
``` | ``` | ||
- | * Den zu beobachtenden Prozess direkt von busybox aus starten, den Absturz | + | * Den zu beobachtenden Prozess direkt von busybox aus starten, den Absturz |
* Die unstripped binaries liegen auf dem Build-System in staging_dir/ | * Die unstripped binaries liegen auf dem Build-System in staging_dir/ | ||
- | * mit dem gdb für den build binary und core debuggen: | + | * mit dem gdb für den build das binary |
``` | ``` | ||
- | cd / | + | cd / |
- | | + | ./ |
``` | ``` | ||
- | ==== technische Änderungen ==== | ||
- | * Nutzung von ff05 statt ff02 für respondd, Anpassung für hopglass. | ||
- | ==== IPv6 Adressen ==== | + | |
+ | |||
+ | ====== Infrastruktur ====== | ||
+ | |||
+ | ===== IPv6 Adressen ===== | ||
+ | * 2a06: | ||
* 2a06: | * 2a06: | ||
* 2a06: | * 2a06: | ||
Zeile 151: | Zeile 82: | ||
* 2a06: | * 2a06: | ||
* 2a06: | * 2a06: | ||
- | * 2a06: | ||
- | ==== Infrastruktur | + | |
- | serverseitig führen wir auf dem hopglass.babel.ffm.freifunk.net für eth2 (babel-mesh-Interface) als post-up script folgendes | + | ===== Aufbau von Gateways ===== |
+ | 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 161: | 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 | + | redistribute ip 2a06: |
+ | redistribute ip 2a06:8187:fbab:3::/64 eq 96 allow | ||
+ | redistribute | ||
+ | redistribute ip ::/0 allow | ||
+ | redistribute ip 2000::/3 allow | ||
+ | redistribute local deny | ||
redistribute src-prefix 2a06: | redistribute src-prefix 2a06: | ||
EOF | EOF | ||
Zeile 184: | 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 196: | 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: | /sbin/ip -6 r a 2a06: | ||
Zeile 205: | 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. |