Erste Schritte mit Multipath TCP

Bisher war es üblich, das eine TCP-Session an eine IP-Adresse gebunden war. In der Praxis kennen wir das Problem zu häufig: Gerade sitzt man noch im Café und schlürft seinen Latte machiato und via WLAN arbeitet man per SSH an einem Projekt. Plötzlich ist die Verbindung weg und lediglich die UMTS-Verbindung ist noch da. Was passiert in Folge dessen? Alle SSH-Sessions sind beendet und man kann von vorne anfangen. Schaut ich mir  die jüngsten Erfolge des MultiPath TCP (MPTCP) Projektes an, könnte sich dieses Verhalten sehr bald ändern.

Um dieses Problem Einhalt zu gebieten, haben die Mitarbeiter in dem MPTCP-Projekt ein sehr interessantes Konzept entwickelt. Aufmerksam darauf bin ich durch den Vortrag auf der IETF 87 von Olivier Bonaventure geworden. Die Grundidee: Eine TCP-Verbindung über mehrere Wege parallel aufzubauen.

Die Idee klingt recht simpel, aber angesichts der sogenannten Middleboxes stieß das Projekt schnell auf die ersten Probleme. Diese Middleboxes sind Netzwerkgeräte, die den Datenverkehr inspizieren, transformieren, filtern oder auf andere Art und Weise manipulieren. Laut Oliver Bonaventure ist die Anzahl dieser Middleboxes im Internet in etwa so groß wie der üblichen Internet-Router.

Die Lösung: Mit Hilfe des Options-Feld können die Steuerinformationen zum Behandeln dieser Verbindungen relativ zuverlässig zwischen Client und Host ausgetauscht werden. Gehen diese Informationen verloren oder können nicht übertragen werden, kann die Verbindung weiterhin über einen einzelnen Pfad aufgebaut werden.

Da mich diese Idee völlig fasziniert hat und ich in der Theorie ausreichend mich dazu informiert hatte, wollte ich das Konzept selbst erleben und habe mir einen Versuchsaufbau aufgesetzt. Basis hierfür war ein Ubuntu (13.04) in einer Virtualbox als Client und ein Debian Wheezy als VMware Guest. Auf beiden Systemen muss zunächst der Kernel 3.5.7.wheezymptcp installiert werden.

Anschließend ist es noch ratsam, ebenfalls die Pakete iproute, tcpdump und net-tools zu installieren. Die Netzwerkanbindung des Client-Systems hat anfangs Probleme bereitet, da Virtualbox bei virtuellen Netzwerkkarten offenbar im NAT-Modus doch nicht wie erwartet funktioniert. Der Client hatte im Testaufbau parallel eine Anbindung in das Internet über eine WLAN- und eine Ethernet-Verbindung und die virtuellen Interfaces waren als Bridge konfiguriert.

Ob die Unterstützung für MPTCP im Kernel aktiv ist, kann beispielsweise wie folgt überprüft werden:

root@exodus:~# sysctl net.mptcp.mptcp_enabled
net.mptcp.mptcp_enabled = 1

Um zu überprüfen, ob eine Verbindung durch MPTCP unterstützt wird, dem hilft netstat -m weiter:

root@thkuehli-VirtualBox:/etc/network# netstat -m
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       Local Token Remote Token 
mptcp      0      0 thkuehli-VirtualB:58962 mptcp.info.ucl.ac.:http ESTABLISHED 799715482   1564975765

Soweit zur Theorie. Im Laboraufbau wollte ich erfahren, wie sich MPTCP bei Verbindungsabbrüchen verhält und ob tatsächlich die Bandbreite über die Verwendung mehrere Netzwerkpfade gesteigert werden kann. Schaut euch am besten die Ergebnisse selbst im Screencast an:

Zunächst wird dem Kernel beigebracht, über welche Quelladresse, welche Netzwerkverbindung genutzt werden muss. Dies geschieht über einzelne Routing-Tabellen und Routing-Regeln pro Anbindung. Anschließend läuft ein Test mit einer SSH-Verbindung, in der lediglich xscreensaver-demo als Demonstration läuft. Zur Simulation von Datenverkehr habe ich nach der SSH-Sitzung ein wget in einer Schleife laufen lassen, das von multipath-tcp.org das Release herunterlädt.

Fazit: Genial!

Ich bin überaus erstaunt, wie gut bereits das erste Stable-Release funktioniert. Bleibt abzuwarten und zu hoffen, dass diese Idee zügig ausgerollt wird. Ich bin gespannt, wie sich das Projekt weiterentwickelt. Auch wenn das Release bereits vielversprechend aussieht, bleibt abzuwarten, wie es sich im Detail verhält und wie schnell es sich verbreitet. Angesichts der derzeitigen Firmenpolitik von Firmen für mobiles Internet dürfte dieses Projekt für Ideen wie Mobile Data Offloading ein Dorn im Auge sein.

Da ich nach wie vor unglaublich fasziniert bin, werde ich den Verlauf der Entwickler und des Projektes weiter gespannt verfolgen und mich mit dem Thema genauer auseinander setzen. Ich bin gespannt, wie sich das Projekt das Options-Feld im Detail zu Nutze macht und wie es sich bei IPv6 verhält.

Falls jemand genauer Details erfahren möchte oder Fragen hat, kontaktiert mich einfach. Meine Kontaktinformationen findet Ihr im Impressum.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.