
Kann man mehrere Internetkanäle zu einem einzigen bündeln? Rund um dieses Thema gibt es viele Missverständnisse und Mythen; sogar erfahrene Netzwerktechniker wissen manchmal nicht, dass es möglich ist. In den meisten Fällen wird Kanalbündelung fälschlicherweise mit NAT-Balancing oder Failover gleichgesetzt. Echte Bündelung ermöglicht jedoch eine einzige TCP-Verbindung gleichzeitig über alle Internetkanäle zu leiten, beispielsweise für eine Videostreaming, so dass bei einem Ausfall eines der Internetkanäle die Übertragung nicht unterbrochen wird.
Es gibt teure kommerzielle Lösungen für Videostreaming, aber solche Geräte kosten viele tausend Euro. Dieser Artikel beschreibt die Einrichtung des kostenlosen, offenen Pakets OpenMPTCPRouter und entlarvt populäre Mythen über die Kanalbündelung.
Mythen über die Kanalbündelung
Es gibt viele handelsübliche Router, die die Funktion Multi-WAN unterstützen. Manchmal bezeichnen Hersteller dies als Kanalbündelung, was nicht ganz korrekt ist. Viele Netzwerktechniker glauben, dass neben und auf der L2-Ebene zusammenzufassen, gibt es keine andere Kanalbündelung. Ich habe häufig gehört, dass dies von Menschen, die in der Telekommunikation arbeiten, für völlig unmöglich gehalten wird. Lassen Sie uns also die gängigen Mythen untersuchen.
Lastverteilung auf der IP-Verbindungsebene
Dies ist die zugänglichste und beliebteste Methode, um mehrere Internetkanäle gleichzeitig zu nutzen. Stellen wir uns der Einfachheit halber vor, dass Sie drei Internetanbieter haben, die Ihnen jede einen realen IP-Adresse aus ihrem Netzwerk bereitstellen. Alle diese Anbieter sind mit einem Router verbunden, der die Multi-WAN-Funktion unterstützt. Das kann ein OpenWRT mit dem Paket mwan3, Mikrotik, Ubiquiti oder jeder andere handelsübliche Router sein, denn solche Optionen sind mittlerweile keine Seltenheit mehr.
Um die Situation zu modellieren, stellen wir uns vor, dass die Anbieter uns folgende Adressen zugewiesen haben:
WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN3 — 33.33.33.33
Das heißt, beim Verbinden mit einem entfernten Server example.com Durch jeden der Anbieter sieht der Remote-Server drei unabhängige Quell-IP-Adressen des Clients. Die Lastverteilung ermöglicht es, die Belastung gleichmäßig auf alle Kanäle zu verteilen und diese gleichzeitig zu nutzen. Zur Vereinfachung nehmen wir an, dass wir die Last gleichmäßig auf alle Kanäle aufteilen. Wenn der Client eine Website mit hypothetisch drei Bildern öffnet, lädt er jedes Bild über einen separaten Anbieter. Auf der Website erscheinen die Verbindungen als Verbindungen von drei verschiedenen IPs.

Bei der Lastverteilung auf Verbindungsniveau wird jede TCP-Verbindung über einen separaten Anbieter geleitet.
Ein solches Lastenausgleichsverfahren kann häufig Probleme für Nutzer verursachen. Beispielsweise binden viele Webseiten Cookies und Tokens eng an die IP-Adresse des Clients. Wenn sich diese plötzlich ändert, wird die Anfrage abgewiesen oder der Nutzer wird von der Seite abgemeldet. Dies geschieht häufig in Systemen des Online-Bankings und auf anderen Seiten mit strengen Regeln für Benutzer-Sitzungen. Hier ein einfaches Beispiel: Musikdateien auf VK.com sind nur mit einem gültigen Sitzungsschlüssel verfügbar, der an die IP gebunden ist. Bei Nutzern, die eine solche Lastenverteilung verwenden, werden oft keine Audiodateien abgespielt, da die Anfrage nicht über den Anbieter gesendet wurde, an den die Sitzung gebunden ist.

Beim Herunterladen von Torrents summiert die Lastenverteilung auf Verbindungsebene die Bandbreite aller Kanäle.
Mit dieser Lastenverteilung lässt sich die Geschwindigkeit der Internetverbindung durch die Nutzung mehrerer Verbindungen summieren. Zum Beispiel, wenn jeder von drei Anbietern eine Geschwindigkeit von 100 Megabit hat, erhalten wir beim Herunterladen von Torrents insgesamt 300 Megabit. Denn ein Torrent eröffnet zahlreiche Verbindungen, die auf alle Anbieter verteilt werden und schließlich die gesamte Bandbreite nutzen.
Es ist wichtig zu verstehen, dass eine einzelne TCP-Verbindung immer nur über einen einzelnen Anbieter erfolgt. Das heißt, wenn wir eine große Datei über HTTP herunterladen, wird diese Verbindung von einem der Anbieter abgewickelt. Wenn die Verbindung zu diesem Anbieter unterbrochen wird, bricht auch der Download ab.

Eine Verbindung nutzt immer nur einen Internet-Kanal.
Das gilt auch für Video-Streams. Wenn Sie Streaming-Video auf einer Plattform wie Twitch übertragen, wird eine IP-Level-Lastverteilung keine nennenswerte Vorteile bieten, da der Video-Stream innerhalb einer einzigen IP-Verbindung gesendet wird. In diesem Fall, wenn der WAN-Anbieter Probleme mit der Verbindung hat, wie beispielsweise Paketverlust oder Geschwindigkeitsreduktion, können Sie nicht sofort zu einem anderen Anbieter wechseln. Der Stream muss gestoppt und die Verbindung neu eingerichtet werden.
Echte Kanalbündelung
Echte Kanalbündelung ermöglicht es, eine Verbindung zu Twitch über alle Anbieter hinweg einzurichten, sodass, falls einer der Anbieter ausfällt, die Verbindung nicht unterbrochen wird. Dies ist eine überraschend komplexe Aufgabe, die immer noch keine optimale Lösung hat. Viele wissen nicht einmal, dass dies möglich ist!
Wie in den vorherigen Abbildungen dargestellt, kann der hypothetische Twitch-Server nur einen Video-Stream von einer einzigen Quell-IP-Adresse empfangen. Daher muss diese Adresse stets konstant bleiben, unabhängig davon, welche Anbieter ausfallen oder welche funktionieren. Um dies zu erreichen, benötigen wir einen Aggregationsserver, der alle unsere Verbindungen terminieren und in eine einzige zusammenführen kann.

Der Aggregationsserver fasst alle Kanäle in einen Tunnel zusammen. Alle Verbindungen erfolgen von der Adresse des Aggregationsservers.
In diesem Schema werden alle Anbieter genutzt, sodass das Ausfallen eines einzelnen Anbieters die Verbindung zum Twitch-Server nicht unterbricht. Im Grunde handelt es sich hierbei um einen speziellen VPN-Tunnel, der mehrere Internetkanäle gleichzeitig bündelt. Das Hauptziel dieser Konfiguration ist es, die qualitativ beste Verbindung zu gewährleisten. Treten bei einem Anbieter Probleme auf, wie Paketverluste oder erhöhte Latenzen, sollte sich dies nicht auf die Verbindungsqualität auswirken, da die Last automatisch auf andere, hochwertigere Kanäle verteilt wird, die zur Verfügung stehen.
Kommerzielle Lösungen
Dieses Problem beschäftigt seit langem diejenigen, die Live-Übertragungen von Veranstaltungen durchführen und keinen Zugriff auf eine qualitativ hochwertige Internetverbindung haben. Für solche Aufgaben gibt es mehrere kommerzielle Lösungen, zum Beispiel stellt die Firma Teradek monströse Router her, in die mehrere USB-Modems eingesteckt werden.

Router für Videoübertragungen mit der Funktion zur Kanalaggregation
In solchen Geräten ist normalerweise die Möglichkeit integriert, Videosignale über HDMI oder SDI aufzunehmen. Zusammen mit dem Router wird ein Abonnement für den Kanalaggregationsdienst sowie für die Verarbeitung, Umkodierung und Weiterleitung des Video-Streams angeboten. Der Preis solcher Geräte beginnt bei 2.000 $ mit einem Paket von Modems, zuzüglich separat ein Abonnement für den Dienst.
Manchmal sieht das ziemlich einschüchternd aus:

OpenMPTCPRouter einrichten
Protokoll (MultiPath TCP) wurde entwickelt, um die gleichzeitige Verbindung über mehrere Kanäle zu ermöglichen. Zum Beispiel wird es und kann gleichzeitig über WLAN und das Mobilfunknetz eine Verbindung zu einem entfernten Server herstellen. Es ist wichtig zu verstehen, dass dies keine zwei separaten TCP-Verbindungen sind, sondern eine einzige Verbindung, die gleichzeitig über zwei Kanäle hergestellt wird. Damit dies funktioniert, muss der entfernte Server ebenfalls MPTCP unterstützen.
ist ein Open-Source-Projekt eines Software-Routers, das es ermöglicht, Kanäle wirklich zu summieren. Die Autoren geben an, dass sich das Projekt im Alpha-Stadium befindet, aber es ist bereits nutzbar. Es besteht aus zwei Teilen: einem kumulierenden Server, der im Internet gehostet wird, und einem Router, an den mehrere Internetanbieter und die Endgeräte der Kunden wie Computer und Telefone angeschlossen werden. Als Benutzerrouter kann ein Raspberry Pi, verschiedene WiFi-Router oder ein normaler Computer verwendet werden. Es gibt fertige Builds für verschiedene Plattformen, was sehr praktisch ist.

Funktionsprinzip von OpenMPTCPRouter
Einrichtung des kumulierenden Servers
Der kumulierende Server wird im Internet platziert und terminiert die Verbindungen von allen Kanälen des klientseitigen Routers in eine einzige. Die IP-Adresse dieses Servers wird die externe Adresse sein, wenn Sie über OpenMPTCPRouter ins Internet gehen.
Für diese Aufgabe verwenden wir einen VPS-Server mit Debian 10.
Anforderungen an den Zusammenfassungsserver:
- MPTCP funktioniert nicht mit OpenVZ-Virtualisierung
- Es muss möglich sein, einen eigenen Linux-Kernel zu installieren
Der Server wird durch Ausführung eines einzigen Befehls bereitgestellt. Das Skript installiert einen Kernel mit mptcp-Unterstützung und alle erforderlichen Pakete. Installationsskripte für Ubuntu und Debian sind verfügbar.
wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh
Das Ergebnis der erfolgreichen Serverinstallation.

Wir speichern die Passwörter, die wir für die Konfiguration des Client-Routers benötigen, und starten neu. Es ist wichtig zu beachten, dass SSH nach der Installation über Port 65222 verfügbar sein wird. Nach dem Neustart müssen wir sicherstellen, dass wir mit dem neuen Kernel gebootet sind.
uname -a
Linux test-server.local 4.19.67-mptcp
Wir sehen neben der Versionsnummer den Hinweis mptcp, was bedeutet, dass der Kernel korrekt installiert wurde.
Konfiguration des Client-Routers
Auf Fertige Builds für einige Plattformen wie Raspberry Pi, Banana Pi, Lynksys-Router und virtuelle Maschinen sind verfügbar.
Dieser Teil von openmptcprouter basiert auf OpenWRT und verwendet LuCI als Benutzeroberfläche, die allen bekannt ist, die jemals mit OpenWRT zu tun hatten. Die Distribution hat eine Größe von etwa 50 MB!

Als Teststand werde ich einen Raspberry Pi und mehrere USB-Modelle mit verschiedenen Anbietern: MTS und MegaFon verwenden. Ich nehme an, dass es nicht nötig ist zu erklären, wie man ein Abbild auf die SD-Karte schreibt.
Zu Beginn ist der Ethernet-Port im Raspberry Pi als LAN mit einer statischen IP-Adresse konfiguriert. 192.168.100.1Um das Kabelgewirr auf dem Tisch zu vermeiden, habe ich den Raspberry Pi mit einem WLAN-Zugangspunkt verbunden und dem WLAN-Adapter des Computers eine statische Adresse zugewiesen. 192.168.100.2Der DHCP-Server ist standardmäßig nicht aktiviert, daher müssen statische Adressen verwendet werden.
Jetzt können Sie auf die Web-Oberfläche zugreifen.
Beim ersten Zugriff fordert das System zur Eingabe des Root-Passworts auf, mit diesem Passwort ist auch SSH erreichbar.

In den LAN-Einstellungen können Sie das gewünschte Subnetz festlegen und den DHCP-Server aktivieren.
Ich verwende Modems, die als USB-Ethernet-Schnittstellen mit separatem DHCP-Server erkannt werden, weshalb es notwendig war, Der Vorgang ist identisch mit der Konfiguration von Modems in herkömmlichem OpenWRT, daher werde ich ihn hier nicht behandeln.
Als Nächstes müssen die WAN-Schnittstellen konfiguriert werden. Zunächst sind im System zwei virtuelle Schnittstellen WAN1 und WAN2 erstellt. Ihnen müssen physische Geräte zugewiesen werden, in meinem Fall sind das die Namen der USB-Modem-Schnittstellen.
Um nicht in den Schnittstellennamen durcheinander zu kommen, empfehle ich, sich die dmesg-Nachrichten anzusehen, nachdem Sie sich per SSH verbunden haben.
Da meine Modems selbst Router sind und einen DHCP-Server integriert haben, musste ich die Einstellungen ihrer internen IP-Bereiche ändern und den DHCP-Server deaktivieren, da ursprünglich beide Modems Adressen aus demselben Netzwerk vergeben, was zu Konflikten führt.
OpenMPTCPRouter erfordert, dass die WAN-Schnittstellenadressen statisch sind, daher weisen wir den Modems Subnetze zu und konfigurieren dies im Menü system → openmptcprouter → Schnittstelleneinstellungen. Hier müssen auch die IP-Adresse und der Server-Schlüssel angegeben werden, die während der Einrichtung des Aggregationsservers erhalten wurden.

Bei erfolgreicher Konfiguration sollte auf der Statusseite ein ähnliches Bild erscheinen. Es ist zu sehen, dass der Router den Aggregationsserver erreichen konnte und beide Kanäle ordnungsgemäß funktionieren.

Standardmäßig wird der Modus shadowsocks + mptcp verwendet. Dies ist ein Proxy, der alle Verbindungen kapselt. Er ist ursprünglich so eingestellt, dass er nur TCP verarbeitet, kann jedoch auch UDP aktivieren.

Wenn auf der Statusseite keine Fehler angezeigt werden, kann die Konfiguration als abgeschlossen betrachtet werden.
Bei einigen Anbietern kann es vorkommen, dass das mptcp-Flag auf dem Weg des Datenverkehrs abgeschnitten wird, was zu folgendem Fehler führt:

In diesem Fall kann ein anderer Betriebsmodus verwendet werden, der ohne MPTCP auskommt. Weitere Informationen dazu finden Sie hier. .
Fazit
Das Projekt OpenMPTCPRouter ist sehr interessant und wichtig, da es wohl die einzige offene Gesamtlösung für das Kanalbündelungsproblem darstellt. Alles andere ist entweder komplett proprietär oder es handelt sich um getrennte Module, deren Handhabung für den durchschnittlichen Benutzer schwierig ist. In der aktuellen Entwicklungsphase ist das Projekt noch ziemlich roh, die Dokumentation ist äußerst spärlich, viele Aspekte sind einfach nicht beschrieben. Dennoch funktioniert es. Ich hoffe, dass es weiterhin Fortschritte macht und wir Endverbraucher-Router erhalten, die in der Lage sind, Kanäle direkt nach dem Auspacken sinnvoll zu bündeln.
Folgen Sie unserem Entwickler auf Instagram.
Quelle: habr.com
