Zwei Uplinks, ein Tunnel: Failover, Lastverteilung oder Bündelung
Failover, Lastverteilung pro Fluss und die Bündelung eines einzelnen Flusses sind drei verschiedene Versprechen. Zwei Standardrouten liefern das erste, aber nicht die anderen beiden.
Zwei Internetleitungen können ein VPN verfügbarer machen, und sie können es für manche Arbeitslasten schneller machen, aber der Mechanismus entscheidet, welches von beidem eintritt. Ein Router mit zwei Standardrouten ist nicht gebündelt, und ein Tunnel, der Tausende innerer Verbindungen trägt, bleibt ein äußerer Fluss. Das Versprechen zuerst zu benennen ist der Unterschied zwischen einem Entwurf und einer teuren Enttäuschung. Die Tabelle unten trennt die Optionen danach, was jede am fernen Ende braucht und was ein Leitungsausfall mit einer Übertragung macht.
Drei Versprechen, und nur eines braucht einen Partner
Failover hält einen Pfad verfügbar, wenn die bevorzugte Leitung verschwindet. Lastverteilung per Fluss-Hash verteilt unabhängige Flüsse auf beide Uplinks. Die Bündelung eines einzelnen Flusses lässt eine Übertragung beide Leitungen gleichzeitig nutzen. Das sind verschiedene Produkte mit verschiedenen Anforderungen, und nur das letzte braucht Zusammenarbeit von etwas außerhalb Ihres Routers.
| Mechanism | Far-end requirement | Effect on one transfer | What breaks under a link loss |
|---|---|---|---|
| Packet-spraying overlay | A cooperating endpoint that reassembles the stream | Packets can spread across both links | Reordering and buffering on the surviving path; its own recovery logic decides what continues |
| MPTCP subflows | A peer or proxy that accepts subflows | Subflows can share one connection | Surviving subflows continue if the peer keeps them alive |
| Flow-hash balancing | Nothing new; the existing tunnel endpoint is enough | One outer flow still follows one link | Flows hashed onto the dead link move; established sessions break |
| Link failover | Nothing new | One path at a time; the second link sits idle | The session stalls or restarts on the other link |
Nichts in dieser Tabelle ist ein Grund, eine zweite Leitung zu kaufen. Sie bewirkt, dass ein Failover-Entwurf nicht bewertet wird, als wäre er Bündelung.
Warum ein Tunnel für den Router wie ein einzelner Fluss aussieht
Ein lastverteilender Router hasht Quell- und Zieladressen zusammen mit den Ports und schickt dann den ganzen Fluss dorthin, wohin der Hash zeigt. Ein VPN-Tunnel ist aus Sicht des Routers genau ein solcher Fluss, was auch immer darin läuft. Innere Verbindungen erreichen die Hash-Entscheidung nie, weil der äußere Header den Pfad bereits festgelegt hat. Deshalb kann ein zweiter Uplink die Gesamtkapazität für viele Nutzer verdoppeln und für die große Übertragung eines einzelnen Nutzers nichts ändern.
Zwei getrennte Tunnel geben Ihnen zwei Kandidaten, aber sie brauchen trotzdem eine bewusste Richtlinie, die Verkehr zuweist und Antworten auf dem Pfad hält, der die Anfrage getragen hat. Asymmetrisches Routing ist das übliche Ergebnis, wenn man diesen Schritt überspringt. Das Minimum ist eine Richtlinie, die den Fluss, die bevorzugte Leitung und die Ausweichleitung benennt.
Ethernet-Bündelung überquert keine unverbundenen Anbieter, weil das ferne Ende am Aggregationsprotokoll teilnehmen muss. Eine Bündelung über zwei Anbieter ist ein Forschungsprojekt, solange kein kooperierender Endpunkt existiert.
Was Multipath-TCP an beiden Enden braucht
Die Multipath-TCP-Dokumentation von Linux beschreibt mehrere Subflüsse, die zu einer Verbindung gehören. Kernel-Unterstützung an einem Ende ändert für sich genommen nichts, da die Gegenseite diese Subflüsse ebenfalls annehmen muss. Ein Proxy am fernen Ende ist die andere übliche Anordnung, und er wird zu einer Komponente mit eigener Kapazität und Verfügbarkeit, für die geplant werden muss. Dieselbe Logik schließt eine einfache Antwort für WireGuard aus, dessen Transport UDP ist: MPTCP baut TCP-Subflüsse auf und kann diesen Tunnel ohne etwas anderes im Entwurf nicht bündeln.
Prüfen Sie, ob die Kernel-Funktion aktiviert ist, bevor Sie darum herum entwerfen, denn viele Distributionen liefern sie abgeschaltet. Diese drei Befehle beantworten das in einer Minute.
sysctl net.mptcp.enabled
ss -M | head
ip mptcp limits show
Wählen Sie nach der Arbeitslast, nicht nach der Broschüre
Wenn die Arbeitslast aus vielen unabhängigen Sitzungen besteht, kann Lastverteilung per Fluss-Hash Kapazität ohne Zusammenarbeit am fernen Ende hinzufügen. Wenn es eine große Übertragung ist, hilft nur ein Aggregationsentwurf, und dieser Entwurf braucht eine kooperierende Gegenseite. Wenn die Anforderung ist, dass Arbeit weiterläuft, wenn eine Leitung stirbt, ist Failover die Antwort, und der Durchsatz einer einzelnen Übertragung ist irrelevant.
Schreiben Sie die Anforderung in einen Satz mit einem Verb darin: eine Sicherung wird doppelt so schnell fertig, oder eine ausgefallene Leitung beendet keine Sitzung. Vage Ziele erzeugen Entwürfe, die niemand annehmen oder ablehnen kann. Entscheiden Sie dann, was das ferne Ende sein darf, denn die billigste Option ist oft die, die dort nichts Neues verlangt. Diese Einschränkung beseitigt die meisten Broschürenaussagen noch vor dem ersten Meeting.
Halten Sie die drei Versprechen im Anforderungsdokument getrennt. Ein Entwurf, der alle drei behauptet, liefert meist eines und setzt die anderen stillschweigend voraus. Der nächste Abschnitt prüft, welches tatsächlich geliefert wird.
Testen Sie eine Übertragung und viele, dann ziehen Sie eine Leitung
Vergleichen Sie eine durchgehende Übertragung mit mehreren parallelen Übertragungen zum selben Ziel, und erfassen Sie Verlust, Verzögerung und Auslastung pro Leitung für jede. Ein Gewinn nur bei parallelen Sitzungen deutet auf Flussverteilung hin, nicht auf die Bündelung eines einzelnen Flusses. Testen Sie den Verlust eines Uplinks getrennt, denn Kapazität bei funktionierenden beiden Leitungen sagt nichts über Failover für eine bestehende Sitzung. Erfassen Sie Route, Socket und die Zähler für Neuübertragungen vor und nach jedem Test.
ip route show default
ip route get 10.80.0.5
mtr -n -c 20 -r 10.80.0.5
Wenn die einzelne Übertragung weiterhin einen Uplink nutzt, tut der Entwurf genau das, was ein Fluss-Hash impliziert. Wenn parallele Übertragungen sich auf beide verteilen, funktioniert die Lastverteilung und die Bündelung nicht. Halten Sie fest, welches der drei Versprechen der Entwurf wirklich einhält, und das nächste Kapazitätsgespräch beginnt mit Belegen statt mit einer Anbieteraussage.