TCP Performance in AdHoc Networks

From
Revision as of 16:31, 15 July 2007 by Mhildebr (talk | contribs)
Jump to navigation Jump to search

Motivation: Warum überhaupt TCP ?

Nun, TCP ist eine Schicht des TCP/IP-Stacks ist der Standard-Protokoll-Stack im Internet. Will also ein Rechner über das Internet mit anderen Rechnern kommunizieren, so muss er den TCP/IP-Stack implementieren.

Was ist TCP ?

TCP ist die Abkürzung für Transmission Transport Protocol und stellt im TCP/IP-Stack die Transportschicht dar. Damit stellt TCP Dienste für das Senden und Empfangen von Daten bereit. Der Zweck ist hier konkret einen verlässlichen Byte-Strom in einem unzuverlässigen Netzwerk bereitzustellen.

Folgende Mechanismen sind essentielle Bestandteile von TCP

Segmentierung und Assemblierung
Meist gibt es mindestens eine Schicht, welche die maximale Größe eines Pakets begrenzt, so besitzen z.B. Ethernet-Pakete eine maximale Größe von 1500 Bytes.
Fehlerbehandlung
Um einen verlässlichen Byte-Strom zu etablieren ist es natürlich essentiell, aufgetretene Fehler zu entdecken und diese ggf. zu korrigieren. Hierfür werden die TCP-Pakete nummeriert und deren Empfang bestätigt. Erhält der Sender nach einer bestimmten Zeit keine Bestätigung, so sendet er das betreffende Paket erneut.
Flusskontrolle
Um zu verhindern, dass der Sender den Empfänger überlastet, erhält ersterer eine Sendekredit, welcher angibt wieviele Pakte ein Sender ohne das Warten auf Bestätigungen versenden darf.
Staukontrolle
Um nun auch zu verhindern, dass das gesamte Netzwerk überlastet wird, schließlich teilt man sich hier ein Übertragungsmedium, gibt die Staukontrolle. Hierfür besitzt der Sender ein zusätzlich Fenster ähnlich dem Sendekredit. Es werden nur soviele Pakete auf einmal gesendet, wie es das Minimum von Sendekredit und Überlastungsfenster erlauben.

unwichtiger Kram von Micha

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Nochmehr Kram vonMicha

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Explicit Link Failure Notification (ELFN)

Eines der Hauptprobleme bei Mobilität in drahtlosen Netzwerken ist das gestörte Links als vermeintlicher Stau im Netzwerk angesehen werden. Eine sehr simple Lösung wäre demnach dem Absender einfach kenntlich zu machen, dass ein fehlerhafter Link vorliegt. Genau dies macht die hier vorgestellte Erweiterung. Dazu nehmen wir die eh vorhandenen DSR-Routing Nachrichten und packen in Ihren Payload noch eine ebensolche angesprochene Notiz. Daraufhin kommt nichtmehr die Überlaststeuerung zu tragen, sondern der Absender geht in einen Warte-Modus - er "freezed". In bestimmten zeitlichen Abständen schickt er nun eine Anfrage ins Netz um zu schauen, ob die Verbindung wieder steht. Sollte dies der Fall sein, kann es mehr oder weniger normal weitergehen.

Simulation

Hier nun ein paar Graphen mit ELFN im Einsatz. Die ersten beiden Diagramme zeigen jeweils pro Bewegungsmuster den erreichten Durchsatz im Vergleich zum optimalen Durchsatz (gestrichelte Gerade). Zum Vergleich sind jeweils die Ergebnisse ohne ELFN in rot abgetragen.

Das dritte Diagramm konzentriert sich nur auf verschiedene Zeitintervalle in denen Anfragen ins Netz geschickt werden.

Per-pattern performance of TCP with ELFN using a 2s probe intervall. Mean Speed 2ms.
Per-pattern performance of TCP with ELFN using a 2s probe intervall. Mean Speed 10ms.
Performance comparison using different probe intervalls