Mrate

Aus Freifunk Leipzig
Wechseln zu: Navigation, Suche

mrate / Multicastrate

Dieser Artikel bezieht sich auf OLSR 0.5.5 und BatMan-eXp 0.3 und alle Vorgängerversionen.

Vorbetrachtungen: Um Daten von einem Knoten zu einem anderen zu übertragen, sind prinzipiell zwei Schritte notwendig: 1. Ein Routingprotokoll muss Informationen über die Verbindungsqualität zu seinen Nachbarn sammeln und die Verbindungen anhand der Qualität bewerten. 2. Anschließend wird es eine Route, basierend auf der Verbindungsqualität errechnen. 3. Im letzten Schritt erfolgt der Transport der Daten entlang der berechneten Route.

Wie wird die Verbindungsqualität berechnet? (1)

Die Knoten unterhalten sich stetig, indem sie periodisch, nummerierte Pakete an alle (Multicast) versenden. Diese Pakete werden mit einer bestimmten Modulation, die durch die mrate festgelegt wird, versendet. Die Gegenstation zählt die empfangenen Pakete und kann anhand der Nummerierung erkennen, welche Pakete nicht angekommen sind. So wartet sie beispielsweise bis sie das Paket mit der Nr. 100 oder höher erhalten hat und notiert sich die Anzahl der tatsächlich empfangenen Pakete. Daraus errechnet sich die Linkquallität (LQ):

                Anzahl der tatsächlich empfangenen Pakete
LQ = -------------------------------------------------------------------
         Anzahl der von der Gegenstation ausgesendeten Pakete

Also

           empfangenen
LQ = -------------------  Pakete
           abgesendete 

Optimalerweise kommen alle Pakete an, womit sich LQ = 100/100 = 1 ergibt.

Das gleiche macht die Gegenstation. Nun tauschen die Stationen ihre LQ-Werte aus. Desalb weiß die jeweils andere Station, wieviele der abgesendeten Pakete die Gegenstation erreichen. Diesen Wert notieren sich die Knoten als Nachbarlinkqualität NLQ. LQ und NLQ müssen dabei nicht gleich sein, da eine Station die andere besser empfangen kann als umgekehrt. Bei zwei Stationen A und B gilt aber:

LQ (A) = NLQ (B) und LQ (B) = NLQ (A)

Aus diesen beiden, unidirektionalqültigen Werten wird nun ein bidirektionalgültiger Wert, der ETX-Wert berechnet:

                  1                       1                            1
ETX= ------------------------ = ------------------------ =  ------------------------
           LQ (A) * NLQ (B)        LQ (B) * NLQ (A)                 LQ * NLQ

Wie man sieht, wird die Verbindung in beide Richtungen gleich bewertet, auch wenn beispielsweise Knoten A Pakete von B besser empfangenen kann als B von A. Deshalb sind die ETX-Werte auf beiden Knoten A und B gleich. Die symmetrische Bewertung der Verbindungen ist bei OLSR deshalb eine große Schwäche. Doch was hat das mit der mrate zutun?

(Was ist die mrate?)

Die mrate gibt an mit welcher Geschwindigkeit bzw. richtigerweise, mit welcher Modulation die Multicastpakete übertragen werden.

Eine höhere mrate verursacht eine höherwertige Modulation (es werden mehr Bit/Symbol übertragen), was beim Empfänger in den meisten Fällen aber bessere Empfangsbedinungen voraussetzt um die Pakte noch zu verstehen, da höherwertige Modulationen oftmals höhere Signalpegel erfordern.

Nutze ich eine sehr niedrige mrate, wird eine sehr einfache (wenige Bit/Symbol = langsame), aber dafür robuste Modulation verwendet, bei der sichergestellt ist, dass die Gegenstation möglichst viele Pakete empfängt. Das hat zur Folge, dass Gegenstationen Verbindungen gut bis sehr gut bewerten, da sie sehr viele Pakete der Nachbarn empfangen können. Da auf Grund der robusten Modulation alle Stationen, egal, wie gut oder schlecht deren Empfangsbedinungen sind, ähnlich viele Pakete der Nachbarstationen empfangenen, werden die Verbindungen ähnlich gut bewertet, obwohl sie es in Wahrheit nicht sind. Leider weiß das Routingprotokoll dies nicht zu unterscheiden, da es sich auf die ETX-Werte verlässt.

Hier wir es nun interessant, denn das Routingprotokoll weiß nichts von mrates, es weiß nur wie viele Multicastpakete angekommen sind und wie viele nicht angekommen sind. Wenn nun also ein Router mit einer mrate von 1 MBit/s Pakete versendet und ein anderer mit 6 MBit/s, so werden von dem, der sie mit 1 MBit/s versendet wesentlich mehr ankommen als von dem, der sie mit 6 MBit/s versendet. Also wird das Routingprotokoll die Strecke, zu dem Router , der die mrate auf 6 hat, schlechter bewerten, als die Strecke zu dem Router der die mrate auf 1 MBit/s hat. Und die Strecke zum Router mit der mrate von 1MBit/s dann ggf. auch für das „bessere“ Routing halten.

Wir haben nun also eine ungleiche/falsche Bewertung von Strecken/Links. Das sollte natürlich nicht sein, da das Routingprotokoll so seinen Job nicht richtig machen kann.

2. Wie werden die Daten denn nun übertragen?

Nachdem das Routingprotokoll die Route anhand der mit einer bestimmten mrate versendeten und empfangenen Pakete berrechnet hat, versendet es die Nutzdatenpakete mit einer rate (nicht der mrate!). Ist die rate=0 (was üblich und sinnvoll ist), einigen sich die Kommunikationspartner jeweils auf die beste Modulation, um möglichst viele Bits in möglichst kurzer Zeit übertragen zu können (gute Modulation = viele Bits/Symbol).

Da die Verbindung laut Routingprotokoll gut sein soll, es in Wahrheit aber nicht sein muss, kann es passieren, dass es bei der eigentlichen Datenübertragung dazu kommt, dass sich die Kommunikationspartner nur schlecht verstehen und eine robuste, aber weniger schnelle Modulation verwenden. Anhand der ETX-Werte meint man, die Verbindung wäre gut, doch in Wahrheit ist sie es nicht, weshalb die Übertragung länger dauert und das Medium Luft länger belegt.


Wäre die mrate höher gesetzt, würden bei tatsächlich schlechten Verbindungen auch weniger Multicastpakete bei der Nebenstelle ankommen und ggf. eine andere Route benutzt. Man veranschauliche sich dazu folgendes Beispiel, wobei gilt:

Aus einer Gruppe Hochspringer möchte man für einen Wettkapf die besten auswählen, ohne dabei alle, aber auch keinen in die Bestenliste aufzunehmen.

Höhe der Latte im Training = mrate Höhe der Latte im Wettkampf = eigentliche Übertragungsgeschwindigkeit

Es geben sich also folgende drei Fälle:

1. Hänge ich die Latte im Training sehr niedrig (z. B. mrate=1), werden alle Sportler im Training über die Latte springen. Kommt dann im Wettkampf eine höhere Latte (=rate, eigentliche Datenübertragung), wird ein Großteil an der Höhe scheitern. Ich habe vorher nicht richtig aussortiert und einen falschen Maßstab gesetzt.

2. Hänge ich die Latte in eine anspruchsvolle Höhe, werden nur die Besten diese Hürde im Training (mrate) meistern. Dafür werden aber fast alle, die im Training über die Latte kamen, im Wettkampf (eigentliche Datenübertragung) dann die gesetzte Höhe erreichen.

3. Hänge ich die Latte im Training (mrate) übertrieben hoch, wird keiner meiner Sportler drüberkommen und sich für den Wettkampf qualifizieren. Es darf also überhaupt erst niemand antretten. Womit der Wettkampf wohl als verloren gelten dürfte.

Optimal ist der Fall 2: Man versucht, so die Latte in eine realistische Höhe zu hängen, um im Wettkampf eine möglichst hohe Siegerrate (Übertrgungsrate) zu erhalten.


Wen betrifft die mrate?

Im Falle von Freifunk betrifft dies vor allem die beiden Routingprotokolle OLSR und B.A.T.M.A.N. Da jeder Router (jede Node) ständig Multicastpakete mit Routinginformationen der beiden Protokolle verendet.


Aber welcher Wert ist denn nun gut, der beste, zu empfehlen?

Hier gibt es immer wieder großen Streit, etliche Diskussionen wurden zu diesem Thema geführt und 100der Meinungen ausgetauscht.

An dieser Stelle müsste erst einmal geklärt werden, was erreicht werden soll und was für Voraussetzungen gegeben sind? Wollen wir möglichst viele, wenn auch langsame Verbindungen zu weit entfernten Routern aufbauen, oder soll ein schnelles Netz mit vielen möglichst schnellen Links entstehen? Hinzu kommt der punkt, dass es sich beim Freifunk- Netz um ein teilweise sehr stark vermachtes Netz handelt, bei dem es tatsächlich mehrere Wege zu einem bestimmten Zeil geben kann und auch gibt.

Ab hier müssen Beispiele herangezogen werden um die Thematik weiter zu veranschaulichen.

Bsp. 1

Daten sollen von A nach B gelangen und haben dabei mehrere Wege zur Verfügung.

A --- 1 --- 2 --- 3 --- B
  \                    /
   \-- 4 --- 5 -- 6 --/

Auf Nodes A, 1, 2, 3, B ist eine mrate von 1MBit/s eingestellt, alle LQ, NLQ und ETX Werte sind „grün“, es gehen kaum Multicastpakete verloren. Wir wissen hier also, dass die Kommunikation mit 1 MBit/s auch für die Daten seht flüssig laufen wird. Wir wissen aber nicht, ob die Datenübertragung mit einer höheren Geschwindigkeit genau so gut läuft, da wir zwischen den Nodes Bäume, verschiedene Entfernungen und Gebäude haben.

Auf den Nodes 4, 5, 6 haben wir ebenfalls eine mrate von 1 MBit/s eingestellt, dort sind die LQ, NLQ und ETX Werte leicht schlechter. Nun wird unser Routingprotokoll also den weg über 1, 2, 3 wählen, da der weg dort besser ist. Womit das Protokoll nun für die Übertragung der Daten mit 1 MBit/s auf jeden Fall recht hat. Es weiß aber nicht ob die Verbindung auf einer höheren Geschwindigkeit auch besser ist als auf dem Weg über 4, 5, 6.

Bei diesem Beispiel haben wir zwar die höchste Kompatibilität zu allen Nodes und auch bei schlechten Wetter kaum Abbrüche von Verbindungen, da wir mit der geringsten Modulation des Standards 802.11 (DBPSK/DQPSK+DSSS) arbeiten, allerdings auch nur eine garantierte Datenübertragung von etwas weniger 1 MBit/s, da ja auch hier immer noch Pakete verloren gehen.

Bsp. 2

A --- 1 --- 2 --- 3 --- B
 \                     /
   \-- 4 --- 5 --- 6 /

Wir verändern die mrate Einstellung auf allen Nodes auf 6 MBit/s. Alle LQ, NLQ und ETX Werte werden schlechter, da es für alle Router schwieliger ist die Daten zu demodulieren. Nun kann es sein dass die Verbindung über 1, 2, 3 immernoch besser ist, als die Verbindung über 4, 5, 6 aber es kann sich nun auch herausstellen, dass die Verbindung über 4, 5, 6 besser ist.

Was haben wir erreicht?

1. Wir kennen nun die beste Route von A nach B für eine Geschwindigkeit von 6 MBit/s, was im Übrigen die niedrigste Geschwindigkeit im Standard 802.11g ist und nun schon mit einer anderen neueren Frequenzmodulation arbeitet (OFDM). Unser Netz ist also bei minimaler Geschwindigkeit, schneller, als das andere Netz bei minimaler Geschwindigkeit.

2. Allerdings kann es nun natürlich vorkommen, dass wir weit entfernte Standorte komplett abschneiden, oder bei selchten Wetter abgeschnitten werden, weil nicht mehr genügend Multicastpakete demoduliert werden können und das Routingprotokoll, diesen Link dann als unbrauchbar, komplett löscht.

3. Wir würden diese Mitfunker quasi zwingen, bessere Antennen oder höhere Standorte zu nutzen, um die eingestellte Mindestgeschwindigkeit von 6 MBit/s zu erreichen.

Bsp. 3

A --- 1 --- 2 --- 3 --- B
 \                    /
   \-- 4 --- 5 - 6 - /

Dies nur zur Vollständigkeit und eventuellen Erläuterung, wieso man eventuell verschiedene mrates vermeiden oder nutzen kann.

A und B werden auf eine mrate von 1 MBit/s eingestellt, 4, 5, 6 ebenfalls. Die 1, 2, 3 werden auf 6MBit/s eingestellt. Nun wird unser Routeingprotokoll den Weg über die 4, 5, 6 wählen, weil hier die besseren LQ, NLQ, EXT Werte zu finden sind. Obwohl es ja beim Ersten Beispiel diesen Weg nicht gewählt hatte, weil bei gleichem Wert auf 1MBit/s die Verbindung über 1, 2, 3 besser war. Wie sehen hier also eine, eher schlechte Gesamtsituation, da der eventuell bessere Weg nun nicht genutzt wird, dafür aber der eventuell schlechtere Weg, eventuell sogar überlastet werden könnte, da ihn das Routingprotokoll als sehr gut kennt und auch so nutzen wird. Vor allem dann wenn viele Querverbindungen reinspielen, was in einem solch großem mash, wie Freifunk sehr häufig der Fall ist.

Ein sehr guter hoher Standort mit so vielen Verbindungen, dass er sie schon fast nicht mehr verwalten kann, könnte die mrate auch als mittel nutzen um nur noch wirklich gute Links mit hoher Geschwindigkeit anzunehmen.


Nun wissen wir also, was also passiert, wenn wir an der mrate rumschrauben und welche Folgen die Veränderung dieses Wertes hat.


Schlussfolgerung 1: Da Pakete, die mit einer gesetzten mrate bzw.. Modulation ankommen, bei der eigentlichen Datenübertragung sehr wahrscheinlich (mit der gleichen oder besseren Modulation) auch ankommen werden, garantiert die mrate gewissermaßen eine Mindesgüte an Qualtität. Wenn Verbindungen bei einer hohen mrate weiterhin bestehen, ist es sehr wahrscheinlich, dass diese gute Modulation auch für die eigentliche Übertragung benutzt wird. → Die mrate garantiert gewissermaßen eine Mindestübertragungsrate und wirkt wie ein Filter, der schlechte Verbindungen, die nicht den Mindestanforderungen genügen, herausfiltert.

Schlussfolgerung 2: Eine mrate > 1 erlaubt (überhaupt) eine und dann noch bessere Bewertung der Verbindungen, da nicht alle Verbindungen automatisch „gut“ sind bzw. als solche dargestellt werden. Schlussfolgerung 3: Die mrate muss auf allen Router einheitlich sein, weil sonst bei gleich guten/schlechten Verbindung unterschiedlich viele Multicastpakete ankommen und die Bewertung der Verbindungsqualität verfälschen. Die Routenberechnung wird dann völlig flasch. Dummerweise gewinnt hier immer die niedrigere mrate.

Schlussfolgerung 4: Je höherwertiger die bei einer Übertragung verwendete Modulation ist, desto mehr Bits passen auf ein Symbol und umso kürzer ist die benötigte Übertragungsdauer. Da stets nur ein Knoten senden kann, während die anderen warten müssen, ist es von großem Vorteil, eine Übertragung möglichst kurz zu halten. Also lieber weniger gute Verbindungen, die das Medium Luft kürzer beanspruchen, als viele schlechte Verbindungen, die das Medium ewig blockieren.


Die Kunst besteht nur darin, die mrate so einzustellen, dass es möglichst viele gute Routen gibt, die auch als solche bewertet und erkannt werden, ohne dabei zu viele Verbindungen abzuschneiden.

Bei Netzteilen die aus nur wenigen, weit entfernten Nodes mit wenigen Ausweichrouten bestehen, wäre es natürlich schlecht, durch das erzwingen einer gewissen Netzqualität und Geschwindigkeit, die letzten, zwar schlechten Routen zu kappen.

Nun wird auch klar, wieso es bei diesem Thema, so viel Streit gab, gibt und wahrscheinlich immer geben wird. Wo sind die Grenzen, was will man erreichen, wann macht es sinn eine höhere mrate einzustellen, und wie hoch kann man gehen?

Und zu guter letzt sollte noch einmal erwähnt werden, dass die mrate nur die auf multicast basierenden Routingprotokolle beeinflusst. Wenn nun Anpassungen an den mrates vorgenommen werden, die zu keiner Veränderung der Routen führt, werden natürlich auch keine höheren Geschwindigkeiten bei der Datenübertragung zu beobachten sein.

Und bevor jetzt alle wild anfangen an der mrate rum zu schrauben, noch die Warnung, dass man sich bei so etwas schnell aussperren kann, da die Node dann keinen Link mehr aufbaut!

Auch sollten sich alle aktiven Freifunker in einem Projekt und einer Nachbarschaft, einmal über dieses Thema ausführlich unterhalten und einen bestmöglichen Konsens finden!

Wer noch Fachliche oder andere Fehler im Artikel findet, möge Sie bitte beheben und uns eventuell bescheid geben.

THX 4 feedback. BlueT2001 & tipuraneo