Middleboxen verkalken das Internet

Seite 3: Wie man Middleboxen aufspüren kann

Inhaltsverzeichnis

Die vielen Middleboxen im Netz "optimieren heutige Anwendungen zu Lasten der künftigen", beklagen die MPTCP-Architekten in RFC 6182 diese "Verkalkung" des Internet. Ihretwegen müssten sich "künftige Anwendungen in einer ähnlichen Weise verhalten wie die existierenden, um die Chancen zur erfolgreichen Einführung zu vergrößern. Zudem ist das genaue Verhalten all dieser Middleboxen nicht klar spezifiziert und Fehler bei der Implementierung machen alles noch schlimmer, sodass sich die Hürden für die Einführung neuer Techniken erhöhen".

Aus den Arbeiten zu Multipath-TCP ist mit tracebox ein neues Werkzeug hervorgegangen, das es gestattet, die Wirkungsweise der Middleboxen präziser zu analysieren. Tracebox ist ein traceroute-Vetter, der aber nicht nur zwischengeschaltete Router auf dem Weg zu einem bestimmten Zielhost auflistet, sondern auch den Inhalt der auf die Echo Requests á la traceroute zurückgesandten Echo-Reply-Pakete des Internet Control Message Protocol (ICMP) auswertet.

Laut RFC 792 enthalten diese Pakete den IP-Header und die ersten 64 Bit der Nutzlast des ursprünglichen Echo Requests. Und wenn es sich bei der IP-Nutzlast um ein TCP-Segment handelt, entsprechen die ersten 64 Bit dem Quell- und Zielport sowie der TCP-Sequenznummer im Header. Der Vergleich des ursprünglichen Pakets mit dem in der ICMP-Antwort zitierten lässt dann Rückschlüsse auf Middlebox-Aktivitäten auf dem Pfad zu; durch sukzessives Steigern der Zahl der Hops beziehungsweise Time-To-Live in den Echo Requests lassen sich sogar einigermaßen genau lokalisieren.

Tracebox ist für Linux ausgelegt, der Quellcode ist auf Github veröffentlicht. Auf Mac OS X kann man das Tool über den Paketmanager Homebrew einrichten. Ein Beispiel sieht so aus:

tracebox -p IP/TCP/MSS/MPCAPABLE/WSCALE bahn.de

Je nachdem, ob eine Middlebox im Weg steht oder nicht, und ob sie TCP-Optionen verfrickelt oder nicht, liefert das Tool unterschiedliche Ausgaben. Die Autoren haben in einem Beispiel die Strecke von der belgischen Universität Löwen zum Web-Server der Deutschen Bahn untersucht und dabei eine Middlebox aufgespürt, die die MSS-Option verändert (Maximum Segment Size) und die Optionen MP_CAPABLE und WSCALE gleich ganz entfernt (diesen Elementen sind in der Tracebox-Ausgabe Minus-Zeichen vorangestellt). Ein Host könnte auf dieser Strecke also zum Webserver der Bahn nur herkömmliche TCP-Verbindungen aufbauen, also keine Leitungen bündeln.

Auf anderen Strecken und bei anderen Zielen kann das Ergebnis aber ganz anders aussehen. Beispielsweise verläuft eine gängige Strecke aus dem heise-Netz zum Bahn-Server über ganz andere Hops und dabei steht nicht die Middlebox der Bahn im Weg – dafür freilich eine hauseigene, die die Option MPJOIN entfernt.

In der Tabelle unten sind die Optionen aufgeführt, die bei MPTCP-Verbindungen übertragen werden. Das Tracebox-Tool akzeptiert zum Test derzeit nur die beiden ersten, also MPCAPABLE und MPJOIN.

Multipath-TCP-Optionen
Wert Optionstyp Funktion
0x0 MP_CAPABLE signalisiert dem Empfänger die Multipath-Fähigkeit
0x1 MP_JOIN fügt der bestehenden Verbindung einen weiteren TCP-Teilfluss hinzu
0x2 DSS Data Sequence Signal, enthält die DATA_ACK und die Zuordnung von DSN zu SSN
0x3 ADD_ADDR signalisiert der Gegenstelle eine weitere verfügbare Adresse
0x4 REMOVE_ADDR entfernt einen Pfad (Addresse) aus der Multipath-Verbindung
0x5 MP_PRIO mit MP_PRIO signalisiert ein Host bei der Initialisierung eines neuen Pfads, ob dieser regulär oder als Backup genutzt werden soll
0x6 MP_FAIL signalisiert Kommunikationsstörungen in einem Subflow (z. B. Prüfsummenfehler), sodass Hosts etwa den problematischen Pfad entfernen oder zum Einzelpfad-TCP zurückkehren können
0x7 MP_FASTCLOSE Analogon des Reset Signals (RST) für TCP für Multipath-Verbindungen, signalisiert der Gegenstelle, dass die Verbindung sofort abgebrochen wird und keine Daten mehr angenommen werden

(dz)