firmware:babel

Dies ist eine alte Version des Dokuments!


. Wir haben mit den Integrationsarbeiten für den Gluon Babel Masterplan begonnen.

ES GEHT!

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 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, beide per wifi und wechselseitig kabel/wifi)
  • Routing ins Internet für einen Client funktioniert für IPv6 und IPv4
  • Internetzugang an mesh-only-node funktioniert
  • Babel-Nodes erscheinen neben Batman-Nodes auf der Map
  • DNS als anycast-service funktioniert (2a06:8187:fb00:53::53)
  • DNS-cache auf node funktioniert (siehe Erweiterung durch die DNS-Tabelle in der site.conf)
  • Roaming eines clients geht
  • Es gibt eine funktionierende Firewall
  • Der Client-Count wird vom l3roamd per socket gemeldet.
  • 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-l3roamd
    • mmfd
    • gluon-mesh-vpn-fastd
    • babeld 1.8

Die aktuelle Entwicklungsfirmware gibt es hier

designthemen_gluon

CHANGELOG

============================ 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: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.

* 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)

       Bekanntes PRoblem: respondd segfault ist in Analyse

* 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, * 27.6.2017, Version 0.0.1.7 – Workaround eingebaut, der macht, dass DNS-Queries immer Freifunk-intern geroutet werden. * 1.10.2017 Version 0.0.1.8 – l3roamd fixes (memleaks, client detection, state-machine) respondd-fixes (client-count) * seit Oktober/November – häufig neue Snapshots mit jeweils angepassten l3roamd um client-Erkennung zu verbessern und die Stabilität von bestehenden Verbindungen zu erhöhen. Statuspage ist wieder vollständig.

  • Erprobung des prefixd
  • Wie geht lokale Service Discovery in einem l3-Netz (Bittorrent Peer Exchange, ad-hoc xmpp)?
  • Die unstripped binaries liegen auf dem Build-System in staging_dir/target-*/root-*
  • mit dem gdb für den build binary und core debuggen:

``` 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 ```

  • Nutzung von ff05 statt ff02 für respondd, Anpassung für hopglass.
  • 2a06:8187:fb00:53::53 DNS
  • 2a06:8187:fb00:123::123 ntp
  • 2a06:8187:fbab::/48
    • 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:fb00:1::/96 Netz für nat64
  • 2a06:8187:fbab:2::1 next-node Adresse (löst auch im Netz als nextnode auf)

serverseitig führen wir auf dem hopglass.babel.ffm.freifunk.net für eth2 (babel-mesh-Interface) als post-up script folgendes aus:

#!/bin/bash
IFACE=eth2
exec >/tmp/ff-log 2>&1
cat >/tmp/babeld.conf<<EOF
ipv6-subtrees true
export-table 10
import-table 11
import-table 12

interface eth2
default enable-timestamps true
default max-rtt-penalty 96
#redistribute ip 2a06:8187:fbab:2::/64 eq 128  allow
#redistribute ip 2a06:8187:fbab:1::/64 eq 128  allow
#redistribute ip 2a06:8187:fb00::/40 eq 128 allow
#redistribute local  deny
#redistribute ip ::/0  metric 256 
redistribute src-prefix 2a06:8187:fbab:2::/64 if eth1 metric 256
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}'))
/sbin/ip -6 a add $localnode dev lo

# infrastruktur und client-netz über babel-table routen.
/sbin/ip -6 ru add prio 10 to 2a06:8187:fbab:2::/64 lookup 10
/sbin/ip -6 ru add prio 10 to 2a06:8187:fbab:1::/64 lookup 10

/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

/usr/local/bin/l3roamd -p 2a06:8187:fbab:2::/64 -i lo  -m $IFACE -t 11 -a 2a06:8187:fbff:2::2 &
disown
/usr/local/bin/mmfd -v &
disown
sleep 2
/sbin/ip a add fe80::ff:3fff:fe10:7d02/64 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 r add ff05::2:1001/128 dev mmfd0 table local
/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
/sbin/ip route flush cache

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.

  • firmware/babel.1516558235.txt.gz
  • Zuletzt geändert: 21.01.2018 18:10
  • von christf