Freifunk mit babel
Diese Seite ist veraltet da FFFFM aktuell keine Babel Infrastruktur betreibt.
Wir haben mit den Integrationsarbeiten für den Gluon Babel Masterplan begonnen.
Die aktuelle frankfurter babel-Firmware gibt es hier (development), hier (test) und hier (stable). Die dazugehörige Map ist hier zu finden: Babel Map - Freifunk Frankfurt a.M.
Die Informationen in dem obigen Teilabschnitt sind wahrscheinlich nicht mehr aktuell.
Hilf mit und bringe diese Seite auf einen aktuellen Stand.
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:
- 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 Babel-Map.
- DNS funktioniert mit dem durch das Babel-Projekt in gluon eingeführten DNS-Cache.
- Roaming eines Clients geht.
- Es gibt eine funktionierende Firewall.
- 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.
- gluon-mesh-babel
- gluon-l3roamd
- mmfd
- gluon-mesh-vpn-fastd
- babeld >1.8 (master von März 2018)
Bitte erfasst Probleme in unserer Todo-Liste.
Entwicklung
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
Core-Files auswerten
- Die Erzeugung von core-Files auf dem openwrt-Gerät aktivieren:
``` touch /.init_enable_core sysctl -w "kernel.core_pattern=/tmp/%e.%p.%s.%t.core" ulimit -c unlimited ```
- 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-*
- 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 ./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: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
Aufbau von Gateways
Die Komponenten des Netzes sind hier beschrieben.
Das Setup der Gateways ist hier zu finden.
Serverseitig (anbei die hopglass-Integration ins Netz) kann man loslegen, wenn man als post-up script folgendes ausführt:
#!/bin/bash IFACE=eth2 exec >/tmp/ff-log 2>&1 cat >/tmp/babeld.conf<<EOF ipv6-subtrees true reflect-kernel-metric true export-table 10 import-table 11 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 default enable-timestamps true default max-rtt-penalty 96 default rtt-min 25 out ip 2a06:8187:fbab:2::1/128 deny redistribute ip 2a06:8187:fbab:2::1/128 deny redistribute ip 2a06:8187:fbab:2::/64 eq 128 allow redistribute ip 2a06:8187:fbab:1::/64 eq 128 allow 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 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 sleep 1 /usr/local/bin/l3roamd -p 2a06:8187:fbab:2::/64 -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 # (reicht auf dem Server wo yanic läuft, muss nicht auf gateways sein) /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 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.