[WLANware] [ANNOUNCE] fastd v13

Matthias Schiffer mschiffer at universe-factory.net
Fri Jun 27 21:52:54 CEST 2014


Hiermit release ich fastd v13 :D

Das neue Release bietet neben einiger kleiner, aber feiner Bugfixes eine
Menge Optimierungen, insbesondere für Instanzen mit sehr vielen Peers
(a.k.a. Backbone-Server/Supernodes/Gateways...).

Bugfixes:

* Pakete für unbekannte MAC-Adressen wurden verworfen, statt geflooded
zu werden. Ist irrelevant für die Verwendung mit batman-adv (und
wahrscheinlich anderen Mesh-Protokollen), aber dürfte Verbindungen nach
dem Aufbau in einigen Situationen schneller funktionieren lassen, wenn
fastd im TAP-Modus für "normale" VPN-Tunnel eingesetzt wird

* Einige Race Conditions, die zu undefiniertem Verhalten geführt haben
könnten, wurden behoben

* systemd-Instanz-Namen werden jetzt korrekt behandelt, sodass jetzt
Instanzen mit Umlauten (und eigentlich beliebiegen UTF8-Zeichen) im
Namen funktionieren. Wichtig: Instanznamen mit - im Namen müssen
geändert werden, da systemd - zu / unescaped. Beispiel:

- fastd at mesh-vpn.service würde die Config
/etc/fastd/mesh/vpn/fastd.conf einlesen. Ist
/etc/fastd/mesh-vpn/fastd.conf gemeint, muss die Instanz
fastd at mesh\x2dvpn.service genannt werden. In der Shell muss das dann in
' gesetzt werden, damit der Backslash korrekt behandelt wird, also z.B.
systemctl start 'fastd at mesh\x2dvpn.service'


Hinzugefügte & entfernte Features:

* 'secure handshakes' ist jetzt standardmäßig aktiviert, sollen
Handshakes mit fastd-Versionen vor v11 möglich sein, muss 'secure
handshakes' explizit deaktiviert werden

* Es gibt die Option 'log to "filename"' nicht mehr, da dies die Aufgabe
von syslog ist. Logging nach stderr und syslog werden weiterhin unterstützt

* fastd hängt für seinen systemd-Support nicht mehr von
libsystemd/libsystemd-daemon ab und kann somit wieder ohne Probleme
auf älteren Systemen wie Ubuntu 12.04 installiert werden.

* fastd benutzt unter Linux jetzt IP_FREEBIND, was es ermöglicht, an
IP-Adressen zu binden, bevor diese konfiguriert sind. Dies kann genutzt
werden, um zirkuläre Abhängigkeiten loszuwerden: fastd kann jetzt schon
vor er eigentlichen Netzwerk-Konfiguration gestartet werden, was z.B.
sinnvoll ist, wenn die Netzwerk-Konfiguration vom fastd-Interface
abhängt; auch auf Systemen mit sehr dynamischer Netzwerk-Config kann
fastd jetzt einfacher konfiguriert werden

* Neuer Befehl: 'on connect' wird immer dann ausgeführt, wenn ein
Handshake gesendet wird, um eine neue Verbindung aufzubauen

* Asynchrone Befehle: Befehle können jetzt im Hintergrund, ohne fastd
anzuhalten, ausgeführt werden. Dies wird jetzt standardmäßig bei on
connect, verify, establish und disestablish gemacht; on pre-up, up, down
und post-down werden weiterhin synchron ausgeführt.
Der Default kann mit den Schlüsselwörtern sync und async verändert
werden, also z.B.: on establish sync "echo 'Established!'";

* fastd versucht nun standardmäßig, mit libsodium statt NaCl zu bauen.
Soll weiterhin NaCl verwendet werden, kann der CMake-Switch
ENABLE_LIBSODIUM deaktiviert werden.


Weitere Verbesserungen:

* Einige Log-Meldungen der Levels info, verbose und debug wurden neu
einsortiert, damit sich ein stimmigeres Gesamtbild auf den Levels info
und verbose ergibt

* Verschiedene Code-Optimierungen, die fastd wieder um einige KB kleiner
machen. Unter anderem kann fastd jetzt mit Link Time Optimization gebaut
werden (CMake-Switch ENABLE_LTO, deaktiviert per default, sollte mit
aktuellen Versionen von GCC und clang funktionieren), was noch ein paar
KB einspart.

* Viele Optimierungen bei der Verwaltung der Peer-Listen. Bisher gab es
sehr viele Operationen, die bei einer langen Liste von konfigurierten
Peers sehr langsam wurden, so unter anderem 2 Funktionen, die bei jedem
empfangenen Paket aufgerufen wurden und in O(n) liefen. Dies wurde
völlig überarbeitet, sodass jetzt alle Funktionen, die sehr häufig
laufen, in O(1) laufen und die meisten anderen in O(log n); unter Linux
wird jetzt außerdem epoll statt poll verwendet. Auf einem Server, der
400 Peers konfiguriert hatte, hat das die Userspace-Zeit, die fastd pro
Paket beschäftigt war, um 50-90% reduziert (in `perf top` kann man
sehen, dass jetzt die meiste Zeit mit Crypto und Behandlung im Kernel
verbracht wird, so wie es sein soll)

* Dokumentation! Es gibt jetzt eine Manpage fastd(1), und der gesamte
Code wurde mit Doxygen-Kommentaren versehen (insgesamt über 1200
Kommentare - was auch erklärt, warum der Source-Tarball plötzlich so
viel größer ist :P )

Source-Tarball und aktualisierte Dokumentation sind bereits unter [1]
und [2] verfügbar, Pakete für die üblichen Linux-Distributionen werde
ich in den nächsten Tagen bereitstellen.

Grüße,
Matthias / NeoRaider


[1]
https://projects.universe-factory.net/attachments/download/74/fastd-13.tar.xz
[2] https://projects.universe-factory.net/projects/fastd/wiki/User_manual


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 884 bytes
Desc: OpenPGP digital signature
URL: <http://lists.freifunk.net/pipermail/wlanware-freifunk.net/attachments/20140627/58460e68/attachment.pgp>


More information about the WLANware mailing list