[WLANware] Bandbreitenmessung und OLSR - Teil 2

Fabian Melzow wlan at tpwm.dyndns.org
Mon Mar 13 15:56:25 CET 2006


Hallo Leute!

So, jetzt in Teil 2 mal etwas zu den verschiedenen Verfahren zur
Bandbreitenmessung.

Das älteste Verfahren ist die Bestimmung der Bandbreite ist das, von
pathchar, das ich hier mal vereinfacht wiedergebe.
Im Prinzip ist es eine Erweiterung von traceroute, bei dem zusätzlich
unterschiedliche Paketgrößen benutzt werden, um die Bandbreite und die
Verweildauer in den Routerqueues zu messen.
Aus den gemessenen Werten der kürzesten Paketumlaufzeiten (RTT) wird
die Linkbandbreite unter Berücksichtigung der jeweils übertragene
Datenmenge bestimmt. Wen das ganze näher interessiert, kann sich z.B. mal
das Programm pchar ansehen oder eins der vielen Paper zu dem Thema lesen.

Dieses Verfahren sieht auf den ersten Blick schön aus, ist es aber
leider nicht, da gemeine Menschen Switche für Netzwerke erfunden haben. ;-)
Da diese die übertragenen Daten kurzzeitig zwischenspeichern, ohne das
dies durch Software feststellbar ist, verzögert sich die Laufzeit und
die gemessene Bandbreite eines 100 Mbit Direktlinks der z.B. mit
99 Mbit gemessen wurde, sinkt beisspielsweise schon mal auf 51 Mbit,
nur weil jetzt noch zusätzlich ein Switch in den Link eingebaut wurde.
Bei weiteren Switchen sinkt die Bandbreite dann weiter.

Ein weiteres Problem sind außerdem auch, aus mehreren kleineren 
gebündelte größere Datenleitungen, da das Paket ja nicht "sieht", das es
da mehr als eine Leitung gibt.

Natürlich kam man dann auf die Idee, einfach zwei, auf dem Link hoffentlich
direkt aufeinander folgende, Datenpakete loszuschicken. Man sendet
zunächst ein Paket mit MTU-Größe und hofft, das in der Zeit, die für
die Übertragung gebraucht wird, der Rechner soweit ist, ein darauf
folgendes kleines Paket direkt im Anschluß an das Große auf dem Link zu
übertragen. Bei diesem "packet tailgating" genannten Verfahren interessiert
einen nur die Differenz aus den beiden RTT-Werten, die man dann, anhand des
Größenunterschiedes zwischen den beiden Paketen, in die Bandbreite
umrechnen kann.

Verfahren Nummer drei ist eine Verfeinerung des "packet tailgating"-
Verfahrens unter Benutzung der TCP-Timestamping-Option, das ich mir
ausgedacht habe. Ich habe noch keine Versuche/Recherchen in der Hinsicht
gemacht, ob der Timestamp auf bei geschlossenen Ports gesetzt wird, aber
mit offenen TCP-Ports sollte es definitiv funktionieren und man kann
zumindest die Bandbreite des Flaschenhalses damit bestimmen, wobei auch
asynchrone Bandbreiten erkannt werden können.

Da der TCP-Timestamp leider nicht sehr gut zeitlich auflöst
(bei Linux immerhin 1 ms), muß man das große SYN-Paket durch künstliche
IP-Fragmentierung sehr groß machen. Indem man die Differenz der
TCP-Timestamps mit der Größe verrechnet, bekommt man die Bandbreite
des Upstreams und durch den Unterschied der beiden RTT die Bandbreite des
Downstreams.

Für OLSR halte ich es für sinnvoll, eine Kombination aus RTT-Messung und
packet tailgating-Verfahren jeweils zwischen zwei benachbarten Routern
zu machen. Alle Pakete für die Messung enthalten die 4 (S)NTP-Timestamps
(das die reale Zeit unwichtig ist, sollte klar sein) also
Zeit des Versands bei A, Zeit des Eingangs bei B, Zeit des Weiterversands
bei B und die Zeit des Eingangs bei A) sowie eine für ein Paketpaar
jeweils eindeutige Identifikationsnummer, um erkennen zu können, ob die
gemachte Messung auch wirklich brauchbar ist.

Die momentane Bandbreite bestimmt man dann als Mittelwert der beiden RTT-
Messungen (diese sind nicht anfällig dafür, das sie vielleicht mal nicht
auf hintereinander auf dem Link verschickt wurden), es sei denn, die
gemessenen Zeitwerte für das paket tailgating-Verfahren sind deutchlich
kleiner, was bedeutet, das sich das noch ein oder mehrere Switche im Link
befinden.

Wie man das ganze gut in das nicht im Ping-Pong-Verfahren arbeitende OLSR
einbaut, ohne das der Overhead zu groß wird, das überlasse ich mal den
Leuten, die am OLSR rumschrauben. Ich hoffe das hilft vielleicht das ganze
Routing noch etwas zu verbessern.

Gruß
Fabian



More information about the WLANware mailing list