Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
firmware:babel [08.02.2017 13:54] – [Folgeaufgaben, nachdem ein Testmesh aufgebaut ist] christf | firmware: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:// | + | ======= Freifunk |
- | ==== Dinge die schon gehen ==== | + | Wir haben mit den Integrationsarbeiten |
- | * Custom-Pakete | + | |
- | * gluon-mesh-babel | + | |
- | * gluon-l3roamd | + | |
- | * gluon-mmfd | + | |
- | * mmfd | + | |
- | * gluon-mesh-vpn-fastd | + | |
- | * babeld-git Version (mit rw-Socket) | + | |
- | * dnsmasq wurde deutlich verkleinert, | + | |
- | * Kommunikation: | + | |
- | * Ein Client verbindet sich mit einem Node und es ist Kommunikation zwischen diesen beiden Geräten möglich | + | |
- | * Ein Client verbindet sich mit einem Node 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, | + | |
- | * Routing ins Internet für einen Client funktioniert für IPv6 und IPv4 | + | |
- | * Internetzugang an mesh-only-node funktioniert | + | |
- | * DNS als anycast-service funktioniert (2a06: | + | |
- | * DNS-cache auf node funktioniert (siehe Erweiterung durch die DNS-Tabelle in der site.conf) | + | |
- | * roaming eines clients (nach merge von #938) | + | |
- | * Babel-Nodes erscheinen gemeinsam mit Batman-Nodes auf der Map | + | |
- | * Es gibt eine funktionierende Firewall | + | |
- | * Es gibt eine (Stand 8.2.2017) memleak-freie Statuspage | + | |
+ | Die aktuelle frankfurter babel-Firmware gibt es [[https:// | ||
+ | Die dazugehörige Map ist hier zu finden: [[http:// | ||
- | Die aktuelle Entwicklungsfirmware gibt es [[https://dl.ffm.freifunk.net/ | + | <WRAP center round todo 60%> |
+ | | ||
+ | |||
+ | 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, | ||
+ | * 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) | ||
- | ==== Folgeaufgaben für Testmesh ==== | + | Bitte erfasst Probleme in unserer [[https:// |
- | * mmfd auf nodes, gw01 und hopglass-server leiten nur dann Pakete weiter wenn sie von einer interaktiven shell gestartet werden. | + | |
- | * NTP ins Netz bringen | + | |
+ | ====== Entwicklung ====== | ||
+ | [[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 | ||
- | ===== Folgeaufgaben, | + | ===== Core-Files auswerten |
- | * Refactoring und Entfernung | + | * Die Erzeugung |
- | * ggf. REJECT durch DROP ersetzen in der Firewall und Logging entfernen um die Netzleistung zu verbessern. | + | |
- | * Nach der Reparatur der Paketabhängigkeiten in openwrt/lede die Abhängigkeiten der Pakete neu entwerfen. | + | |
- | * Erstellung eines [[https:// | + | |
- | * Wie geht lokale Service Discovery in einem l3-Netz (Bittorrent Peer Exchange, ad-hoc xmpp)? | + | |
- | * l3roamd: Unterstützung des Lernens von neuen Clients auch auf bridge-interfaces | + | |
- | ==== Workarounds ==== | + | |
- | Die Firmware enthält folgende Workarounds: | + | |
- | * l3roamd stürzt ab, wenn er ohne client interface gestartet wird, workaround: -i lo | + | |
- | * igmp_snooping muss gegenwärtig auf br-client deaktiviert werden, anscheinend ein [[https:// | + | |
+ | ``` | ||
+ | touch / | ||
+ | sysctl -w " | ||
+ | ulimit -c unlimited | ||
+ | ``` | ||
- | ==== Überblick | + | * Den zu beobachtenden Prozess direkt von busybox aus starten, den Absturz provozieren. Das das core-file liegt dann in /tmp. |
- | * ddhcp für ipv4-Unterstützung ist in der Entwicklung [[https://git.toppoint.de/ | + | * Die unstripped binaries liegen auf dem Build-System |
- | * l3roamd ist in der Entwicklung [[https:// | + | * mit dem gdb für den build das binary aus dem build-tree und dem core-file vom router laden: |
- | ==== technische Änderungen ==== | + | ``` |
- | * Abschaffung von local-node | + | cd / |
- | | + | ./ |
+ | ``` | ||
- | ==== IPv6 Adressen ==== | + | |
+ | |||
+ | ====== Infrastruktur ====== | ||
+ | |||
+ | ===== IPv6 Adressen ===== | ||
+ | * 2a06: | ||
* 2a06: | * 2a06: | ||
* 2a06: | * 2a06: | ||
* 2a06: | * 2a06: | ||
* 2a06: | * 2a06: | ||
+ | * 2a06: | ||
* 2a06: | * 2a06: | ||
* 2a06: | * 2a06: | ||
- | * 2a06: | ||
- | ==== Infrastruktur | + | ===== Aufbau von Gateways ===== |
- | serverseitig führen wir auf dem hopglass.babel.ffm.freifunk.net für eth2 (babel-mesh-Interface) als post-up script folgendes | + | 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 72: | Zeile 92: | ||
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 |
- | #redistribute ip 2a06: | + | default max-rtt-penalty 96 |
- | #redistribute ip 2a06: | + | default rtt-min 25 |
- | #redistribute ip 2a06:8187:fb00::/40 eq 128 allow | + | out ip 2a06: |
- | #redistribute | + | redistribute ip 2a06: |
- | #redistribute ip ::/0 metric 256 | + | redistribute ip 2a06: |
- | redistribute metric 256 | + | redistribute ip 2a06: |
+ | redistribute ip 2a06:8187:fbab:3::/64 eq 96 allow | ||
+ | redistribute | ||
+ | redistribute ip ::/0 allow | ||
+ | redistribute | ||
+ | redistribute local deny | ||
+ | redistribute src-prefix 2a06: | ||
EOF | EOF | ||
localnode=$(ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr 2a06: | localnode=$(ipv6calc --action prefixmac2ipv6 --in prefix+mac --out ipv6addr 2a06: | ||
Zeile 93: | Zeile 123: | ||
/ | / | ||
- | #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 105: | Zeile 133: | ||
#/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: | ||
+ | |||
#add route to icvpn - all other freifunk networks | #add route to icvpn - all other freifunk networks | ||
Zeile 112: | Zeile 142: | ||
</ | </ | ||
- | 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. |