[Berlin-wireless] B.A.D M.A.N

Fabian Melzow wlan
Mi Mär 29 01:16:38 CEST 2006


Hallo Leute!

Ich hab mich ja echt über die B.A.T.M.A.N-Ankündigungsmail gefreut,
weil es endlich mehr Infos gibt als Aussagen in der Form "Mit
B.A.T.M.A.N wird alles besser...". Ich hab dann auch gleich mal das
SVN ausgecheckt und dann gesehen, daß die Idee, die ich im Zusammen-
hang mit der Bandbreitenbestimmung ähnlich auch mal kurz hatte, dort
realisiert wurde.

B.A.T.M.A.N. sieht für mich so aus, als hätte man das Routing des
Internets (ARPANETs) von 1979 mit einem schlechteren RIP gekreuzt.
(siehe http://www.tm.uka.de/itm/uploads/folien/12/tm06-ka-1up.pdf
und http://www.tm.uka.de/itm/uploads/folien/93/tm-routing-1up.pdf)

Vielleicht solltet ihr besser schon mal ein Versionsfeld mit ins
Protokoll aufnehemen. ;-)

Ja, man braucht wirklich nur den besten nächsten Hop auf dem Weg
zum Ziel (das Schwierige ist ja nur gerade, herauszubekommen in
welcher Richtung  das liegt...) zu kennen und die Idee ist imho auch
nicht schlecht, wenn man ihre ganzen Probleme wegbekommen könnte.

Die Idee, das der ganze Broadcast-Overhead durch den Paketverlust
kompensiert werden könnte, ist auch echt gut.

Hier mal die Probleme, die mir bisher mit B.A.D M.A.N (v 0.0.6)
aufgefallen sind:

* geringste Bandbreite ist limitierend. Soll heißen: Es gibt einen
  Netsplit, wenn der dünnste Link verstopft ist und es keine
  Alternativ routen gibt.

* Netsplits entlang langer Pfade, für die es keine Alternativroute
  gibt: z.B.:  1-2-3-4-5-6-7-8
  Wenn ein Paket von z.B. von Knoten 3 abhanden kommt, kann 1
  8 nicht mehr erreichen und man hat 2 Teilnetze. Bei RIP verschickt
  man imho deshalb gleich die ganze Routingtabelle.

* langsame Reaktion auf den Ausfall von Knoten, weil bis der kaputte
  Pfad vergessen wurde (gibt ja bei Ausfall keine Statusmeldung),
  wird wohl möglich erst einmal in die Tonne geroutet, weil der
  kaputte Pfad eine bessere Metrik hat.
 
* Pakete mit alten Sequenznummern, die lange Laufzeiten haben,
  überschreiben neuere "Pfad"infos, da isDuplicate() das Paket
  nur bei gleicher Sequenznummer weg wirft und nicht auch bei
  älteren.

* Die Broadcasts verstopfen möglicherweise die Links, zumindest im
  Nahbereich. Idee: Man mancht eine Broadcastreduktion, auf dem
  jeweiligen Interface, indem man einfach die Intervallzeit zwischen
  den Broadcasts hochsetzt, wenn keine neuen Knoten über dieses
  Interface zur Routingtabelle hinzugefügt oder aber Knoten entfernt
  werden. Das entschärft die Situation in statischen Netzteilen 
  bei hoher Netzauslastung. Klar darf die Rate nicht gesenkt werden,
  wenn man gar keinen Knoten über das entsprechende Interface "sieht".

* Die Latenzzeit sagt nur bedingt etwas über die Weglänge und Qualität
  aus! Warum soll eine Satellitenverbindung oder Lanverbindung über
  mehrere Switche schlechter sein, als eine WLAN-Verbindung mit
  niedriger Latenz? Warum also nicht die Bandbreite messen?
  Das hat auch den Vorteil, daß man nicht nach der Vergangenheit
  routen muß, wenn einem die Zukunft interessiert!

* die TTL sollte imho besser hoch als runtergezählt werden, denn
  so weiß man, das immer bei 0 begonnen wurde.

* keine Erweiterungsmöglichkeiten im Protokoll vorgesehen. :-( 
  Ja, das finde ich schlecht, weil ich hab schon jede Menge Ideen,
  u.a. auch für automatische Tunnel übers Internet.

Zum Thema Erweiterungen: Zuerst hatte ich über TLV nachgedacht, 
aber das halte ich nicht für sinnvoll, besser finde ich, jede
Nachricht mit einem eindeutigen 16 bit-Wert zu beginnen, anhand
dessen man herausbekommen kann, ob die Nachricht für einen
überhaupt interessant ist. Am besten packt man auch noch die
Gesamtlänge des Pakets (16 bit) vor diesen Wert, dann hat man es bei
der Speicherreservierung für das Paket einfacher und weis, das man
auch alles bekommen hat, wenn das Paket fragmentiert wurde.

Den ID-Wert kann man dann für verschiede Pakettypen benutzen, wie
Routinginfos, Tunnelendpunktannouncements, etc. und man hat keine
Probleme bei Umstellungen und Erweitereungen, da man per default
alle Pakete mit IDs, die man nicht kennt, einfach forwardet.

So können z.B. die Gateways, die es anbieten, Infos über ihre
externe IP und den Typ des Tunnelprotokolls verteilen etc.

Gruß
Fabian

_______________________________________________
Berlin mailing list
Berlin at olsrexperiment.de
https://www.olsrexperiment.de/cgi-bin/mailman/listinfo/berlin





Mehr Informationen über die Mailingliste Berlin