<
Einführung
Immer wieder mal taucht die Frage auf, warum der Freifunk so langsam ist. Prinzipiell ist er das nicht, man kann an einem 100er DSL-Anschluß durchaus auf Downloadraten von 80 Mbps und Uploads von 20 Mbps und mehr kommen. Wenn es aber klemmt, kann das viele verschiedene Ursachen haben. In Richtung Internet laufen die Daten über etliche Stationen, z.B.:
Endgerät (PC/Smartphone/Tablet) | v Freifunk-WLAN | v Freifunk-Knoten (Router) | v Freifunk-Mesh | v Freifunk-Knoten (Router) | v Tunnel (VPN) zum Gateway über... | v Heimnetzwerk | v DSL-Router | v Provider | v Internet | v Gateway FFGGRZ | v Tunnel zum FF Rheinland übers Internet | v Gateway FF Rheinland | v Internet | v Ziel im Internet (z.B. Speedtest-Server)
Aus dem Internet durchlaufen die Daten den umgekehrten Weg, dabei kann auch noch ein weiteres Gateway involviert sein. An jeder einzelnen Stelle kann nun ein Engpaß auftreten, der dazu führt, daß eine der üblichen Speedtest-Seiten im Internet eine geringe Übertragungsrate anzeigt. Beispiele:
- Endgerät zu schwach oder durch eine andere laufende Anwendung ausgelastet.
- WLAN zwischen Endgerät und Freifunk-Router. Im meist verwendeten 2,4GHz-Bereich sind im Idealfall höchstens 20 Mbits/s möglich. Meist nutzen noch andere Accesspoints den gleichen Kanal, dann ist es wesentlich weniger. Zum Test kann man sich einmal direkt über den LAN-Port des Routers mit dem Freifunknetz verbinden.
- Freifunkrouter zu schwach und/oder durch andere Endgeräte ausgelastet. Ein WR841 mit dem per Default genutzten Fastd-VPN zum Gateway schafft z.B. nicht wesentlich mehr wie 10 Mbits/sec.
- Schwache Mesh-Verbindung zwischen Freifunkroutern.
- Fehlerhafte Anbindung des Freifunkrouters (fehlerhaftes Kabel, falsche Einstellungen am Switch...)
- Gateway überlastet (weil z.B. ein anderes gerade gewartet wird oder viele Nutzer hohen Traffic erzeugen). Die Daten aller angeschlossenen Knoten müssen über den Netzwerkanschluß ins Gateway gelangen, über den gleichen Anschluß dieses wieder in Richtig Internet verlassen. In der anderen Richtung (vom Internet zum Knoten) müssen die Daten auch nochmal durch diesen einen Netzwerkanschluß. Der Anschluß schafft max. 1 Gbits/sec, bei Gateway3 derzeit nur 100Mbits/sec.
- Backbone beim Freifunk Rheinland ausgelastet
- Ziel im Internet durch viele Nutzer ausgelastet
Bereits wenn einer dieser Punkte zutrifft, wirds langsam. Auf Grund dieser Vielschichtigkeit ist es den Administratoren unserer Community unmöglich, auf Fragen nach der Ursache für einen langsamen Download schnell eine eindeutige Antwort zu geben. Deswegen sollte zuerst die eigene Technik geprüft werden. Ein paar Tips dazu gibt es im folgenden.
Prüfen der WLAN-Umgebung
Dazu eignet sich eine der verschiedenen Apps, z.B. der WiFiAnalyzer für Android. Damit kann man schnell erkennen, ob der Empfang ausreicht und wieviele andere Accesspoints den Kanal mitnutzen. Einen groben Anhaltspunkt für die Belegung der für Freifunk genutzten WLAN-Kanäle gibt auch die Airtime-Grafik auf unserer Karte (nach Auswahl des gewünschten Knotens).
Prüfen des eigenen Internet-Anschlusses
Freifunk kann nie schneller wie der Internet-Anschluß sein, über welchen sich der Freifunk-Router mit dem Gateway verbindet. Deswegen wird mit einem direkt am Heimnetzwerk angeschlossenen Gerät und einer der üblichen Speedcheck-Seiten die erreichbare Geschwindigkeit geprüft.
Prüfen der Übertragungsrate zwischen Endgerät und Gateway
Zur Ermittlung der Übertragungsrate ist auf allen Gateways iperf3 installiert und läuft dort als Server auf der Freifunk-internen IPv4-Adresse und dem Standard-Port 5201. Zu dessen Nutzung muß man selbst auch iperf3 installieren. Das gibt es für alle üblichen Betriebssysteme.
Zu Messung muß man sich natürlich mit dem Freifunknetz verbinden, öffnet eine Konsole und gibt dort folg. ein:
iperf3 -4 -c gw1.ffggrzDadurch sendet man Daten in Richtung Gateway1, für die anderen Gateways kann man entsprechend gw2 oder gw3 verwenden. Sinnvoll ist es, das Gateway anzugeben, mit welchem der eigene Knoten verbunden ist (s. Freifunk-Karte). Die Ausgabe sollte dann die im folgenden Beispiel aussehen:
Connecting to host gw1.ffggrz, port 5201 [ 5] local 10.181.1.1 port 47570 connected to 10.181.0.11 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 3.01 MBytes 25.3 Mbits/sec 46 167 KBytes [ 5] 1.00-2.00 sec 3.04 MBytes 25.5 Mbits/sec 0 194 KBytes [ 5] 2.00-3.00 sec 3.48 MBytes 29.2 Mbits/sec 0 209 KBytes [ 5] 3.00-4.00 sec 3.04 MBytes 25.5 Mbits/sec 15 153 KBytes [ 5] 4.00-5.00 sec 3.04 MBytes 25.5 Mbits/sec 0 171 KBytes [ 5] 5.00-6.00 sec 3.04 MBytes 25.5 Mbits/sec 0 180 KBytes [ 5] 6.00-7.00 sec 2.61 MBytes 21.9 Mbits/sec 4 139 KBytes [ 5] 7.00-8.00 sec 2.61 MBytes 21.9 Mbits/sec 0 165 KBytes [ 5] 8.00-9.00 sec 3.04 MBytes 25.5 Mbits/sec 0 180 KBytes [ 5] 9.00-10.00 sec 3.04 MBytes 25.5 Mbits/sec 0 185 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 30.0 MBytes 25.2 Mbits/sec 65 sender [ 5] 0.00-10.00 sec 29.4 MBytes 24.6 Mbits/sec receiver
Entscheidend ist die Spalte "Bitrate" und die letzten beiden Zeilen mit der Zusammenfassung. Die vorletzte Zeile ist das, was der Sender (das eigene Gerät), die letzte was der Empfänger (das Gateway) "gesehen" hat. Das unterscheidet sich etwas, weil immer mal ein paar Datenpakete verlorengehen (im Beispiel 65, s. Spalte "Retr"). Wenn es nicht zuviele sind, ist das normal. Im Beispiel, an einem 100er DSL-Anschluß, sind die 25 Mbits/sec in Upload-Richtung ein guter Wert.
Um die meist interessantere Downloadrate zu messen, wird der Parameter "-R" eingefügt:
iperf3 -R -4 -c gw1.ffggrzDamit sendet Gateway1 Daten zum eigenen Endgerät, die Ausgabe entspricht dann folg. Beispiel:
Connecting to host gw1.ffggrz, port 5201 Reverse mode, remote host gw1.ffggrz is sending [ 5] local 10.181.1.1 port 47684 connected to 10.181.0.11 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 6.77 MBytes 56.8 Mbits/sec [ 5] 1.00-2.00 sec 9.26 MBytes 77.7 Mbits/sec [ 5] 2.00-3.00 sec 8.03 MBytes 67.3 Mbits/sec [ 5] 3.00-4.00 sec 6.79 MBytes 56.9 Mbits/sec [ 5] 4.00-5.00 sec 6.30 MBytes 52.9 Mbits/sec [ 5] 5.00-6.00 sec 7.02 MBytes 58.9 Mbits/sec [ 5] 6.00-7.00 sec 6.90 MBytes 57.8 Mbits/sec [ 5] 7.00-8.00 sec 7.22 MBytes 60.6 Mbits/sec [ 5] 8.00-9.00 sec 6.91 MBytes 57.9 Mbits/sec [ 5] 9.00-10.00 sec 7.08 MBytes 59.4 Mbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 74.7 MBytes 62.7 Mbits/sec 365 sender [ 5] 0.00-10.00 sec 72.3 MBytes 60.6 Mbits/sec receiver
Hier werden also 60 Mbits/sec erreicht. Da zum Testzeitpunkt noch 7 andere Clients mit dem Accesspoint verbunden waren, ist auch das kein schlechter Wert an einem 100er DSL-Anschluß.
Wem die Installation und Nutzung von iperf3 zu kompliziert ist, kann auch unseren internen Speedtest unter test.ffggrz nutzen. Hier kann es aber schon wieder Verfälschungen geben, da die Daten vom Gateway erst noch zum separaten Testserver geleitet werden müssen.
Beim Durchführen dieses und weiterer Tests sollte beachtet werden, daß damit die beteiligten Komponenten (Client, Router, Gateways, Internet-Anschluß) teilweise bis zur Maximal-Grenze ausgelastet werden. Bei anderen Nutzern dieser Komponenten wird das also mindestens zu Geschwindigkeitseinbußen führen. Man sollte also auch nicht zuviel und zulange testen.
Prüfen der Übertragungsrate zwischen einzelnen Freifunk-Komponenten
Das fürs Routing im Freifunk-Netz verwendete B.A.T.M.A.N. hat einen eingebauten Speedtest. Damit kann man die Datenrate zwischen einzelnen Routern und zum Gateway ermitteln. Dazu muß man sich per SSH mit seinem Freifunk-Router verbinden. Um den Durchsatz Richtung Gateway zu messen, muß man zuerst die Adresse vom Gateway ermitteln (hier werden keine IP- sondern Mac-Adressen verwendet). Das geschieht mit folgendem Kommando:
batctl gwlDadurch werden alle Gateways angezeigt, beispielsweise so:
[B.A.T.M.A.N. adv 2017.2, MainIF/MAC: primary0/3a:0c:5c:83:26:33 (bat0/f0:9f:c2:de:d0:58 BATMAN_IV)] Router ( TQ) Next Hop [outgoingIf] Bandwidth de:ad:be:60:05:00 (195) 9a:2a:d6:d6:ff:27 [ mesh-vpn]: 96.0/96.0 MBit de:ad:be:ef:03:04 (195) 9a:2a:d6:d6:ff:27 [ mesh-vpn]: 96.0/96.0 MBit * de:ad:be:ef:01:01 (255) 9a:2a:d6:d6:ff:27 [ mesh-vpn]: 96.0/96.0 MBit de:ad:be:ef:02:03 (195) 9a:2a:d6:d6:ff:27 [ mesh-vpn]: 96.0/96.0 MBit
Das verwendete Gateway ist das mit dem "*", gleich dahinter steht dessen Adresse, hier also die de:ad:be:ef:01:01. Um den Durchsatz dahin zu messen, gibt man nun folg. ein:
batctl tp de:ad:be:ef:01:01Die Ausgabe sieht wie folgt aus:
Test duration 10100ms. Sent 17471412 Bytes. Throughput: 1.65 MB/s (13.84 Mbps)
Hier wurden bei der vorgegebenen Testdauer von 10 Sekunden 17471412 Bytes übertragen, was 13.84 Mbps (also Megabits pro Sekunde) entspricht. Die Werte schwanken teilweise stark, man sollte den Test also ein paarmal wiederholen.
Bewertung der Ergebnisse
"Wer mißt, mißt Mist." Diese Weisheit sollte man immer beherzigen.Wenn z.B. 2 Nutzer an einem Freifunk-Knoten gleichzeitig einen Speedtest durchführen, muß man sich nicht wundern, daß nicht die maximal mögliche Datenrate erzielt wird. Beim Test sollten also möglichst keine anderen Nutzer mit dem Knoten verbunden sein. Auch wenn ein anderes Familienmitglied gerade einen Film streamt, wird der am selben Netz angeschlossene Freifunk-Router nicht die volle Bandbreite nutzen können. Auch die Tests zu oder über unsere Gateways können zu unterschiedlichen Ergebnissen führen, je nachden, wieviel Traffic andere Nutzer dort gerade erzeugen. Da kann es sinnvoll sein, die Tests z.B. zu einer anderen Tageszeit zu wiederholen.
Auch andere Dinge können das Meßergebnis beeinflussen. Eine goldene Regel besagt z.B., daß man dür Prüfung eines Gerätes niemals dieses selbst zum Messen nutzen sollte. Das wäre zum Beispiel bei der Prüfung der Übertragungsrate zwischen einzelnen Freifunk-Komponenten mittels "batctl tp" (s.o.) der Fall. Gerade auf leistungsschwachen Knoten kann das Erzeugen des Test-Traffics soviel Prozessorlast erzeugen, daß diese für die eigentliche Übertragung fehlt. Dann sieht es so aus, als würde wesentlich weniger Bandbreite zur Verfügung stehen, was im realen Betrieb gar nicht der Fall ist.
Man sollte also immer überlegen, wie die Meßergebnisse zustandegekommen sind.
Fehlermeldungen
Unsere Administratoren sind natürlich interessiert daran, bei möglichen Fehlern über das Forum oder das Ticketsystem informiert zu werden. Um dabei aber zu vermeiden, Fehler zu melden, deren Ursache im Netz des Nutzers, dessen Internet-Anbindung oder beim Endgerät zu suchen sind, sollten nach Möglichkeit die oben beschriebenen Tests ausgeführt und deren Ergebnis in die Fehlermeldung aufgenommen werden. Natürlich wird auch bei diesen Problemen geholfen, es ist aber sehr nützlich, wenn im Freifunknetz nicht erst nach garnicht vorhandenen Fehlern gesucht werden muß.
Folgende Angaben sind bei Geschwindigkeitsproblemem hilfreich:
- Name des betroffenen Knotens und dessen Typ
- Wie ist der Knoten mit dem Gateway verbunden (direkt übers per Internet/VPN oder Mesh zu anderem Knoten)
- Wenn bekannt: welches VPN wird verwendet (Fastd oder Tunneldigger)
- genutzter WLAN-Bereich (2,4 oder 5 GHz), falls nicht per LAN mit Knoten verbunden
- genutztes Gateway (s. Karte oder "batctl gwl")
- iperf3-Werte zum Gateway
- Speedtest-Ergebnisse aus dem Heimnetz (wo der Freifunk-Router angeschlossen ist)
Wurden am Freifunk-Router bereits intern (z.B. per SSH) Parameter geändert, sollten diese Änderungen vor einer evtl. Fehlermeldung wieder rückgängig gemacht an nochmal getestet werden. Die meisten Änderungen, die über das hinausgehen, was per Browser im Config-Mode geändert werden kann, bewirken eher das Gegenteil.
Abschließend sollte auch die eigene Erwartungshaltung überprüft werden. Ziel des Freifunks ist es definitiv nicht, z.B. für Videostreaming oder Downloads eine hohe Bandbreite zur Verfügung zu stellen. Es geht eher darum, an möglichst vielen Stellen überhaupt ein frei nutzbares Netz zuhaben. Da geht es eher um Mailempfang, Chatten, Abruf von Webseiten u.v.a.m. Dafür sollte i.A. auch ein Durchsatz von z.B. 10 Mbits/sec genügen.