Mein PC verfügt über insgesamt 4 Netzwerkkarten, 2 kabelgebundene Gigabit-Ethernet-Netzwerkkarten und 2 kabellose Netzwerkkarten. (Ein Broadcom mit proprietären Treibern und Ralink mit Open Source-Software, die viel besser als Broadcom funktioniert.)
Mein Handy kann seine Verbindung drahtlos mit meinem PC teilen, aber ich habe auch eine kabelgebundene Internetverbindung. Ich habe also mehrere Internetverbindungen, um auf das Internet zuzugreifen. Wie kann ich zwei oder mehr Verbindungen zusammenführen und ausgleichen , um eine einheitliche Interneterfahrung zu erzielen, bei der es sich um die Summe aller damit verbundenen Internetverbindungen handelt?
Wenn ich zum Beispiel ein Modem mit einer Internetverbindung von 1024 kBit / s und ein anderes mit 512 kBit / s und ein kleines mit 128 kBit / s habe, kann ich nach dem Lastenausgleich und dem Zusammenführen aller Verbindungen (Bonding oder Teaming) unter herunterladen B. eine Geschwindigkeit von 1664 kB / s, wenn alle drei Internetverbindungen als eine verwendet werden.
Diese Frage hat mich immer fasziniert.
quelle
Antworten:
Ich mache so etwas bei der Arbeit mit Ubuntu 11.04. Wir führen das Shorewall-Firewall-Konfigurationstool aus, das nicht nur hervorragende Funktionen bietet, sondern auch rudimentär mehrere ISP-Routing-Tools bereitstellt, die möglicherweise Ihren Anforderungen entsprechen. Hier finden Sie einige Dokumente dazu: http://www.shorewall.net/MultiISP.html
Es kommt jedoch darauf an, dass Sie nicht mehrere ISPs für eine einzelne Verbindung verwenden können. Die Dinge sind nicht so einfach. Das Beste, was Sie tun können, ist zu versuchen, neue Verbindungen gleichmäßig zwischen den verschiedenen Anbietern zu leiten.
Es ist ein komplexes Problem. Sie werden wahrscheinlich Ihren Kopf gegen die Wand schlagen (das habe ich bestimmt getan), bevor Sie mit dem Debuggen aller Probleme fertig sind. Also, wie andere Poster vorgeschlagen haben, sollten Sie sorgfältig überlegen, wie stark Ihr Wunsch ist.
quelle
Sie können dazu das Paket verwenden
ifenslave
, mit dem Slave-Netzwerkschnittstellen an ein Bonding-Gerät angeschlossen und von diesem getrennt werden.Installieren:
Laden Sie das Bonding-Kernel-Modul
Konfigurieren Sie Ihre Schnittstellen:
Beispielkonfiguration, um eth0 und eth1 als Slaves für Ihre Bonding-Schnittstelle zu kombinieren:
Netzwerk neu starten:
Eingeschränkte Schnittstelle nach oben / unten bringen:
Es gibt verschiedene Bonding-Modi, die wir als Beispiel verwenden:
Beschreibung des Active-Backup-Bonding-Modus :
Active-Backup-Richtlinie: Nur ein Slave in der Bindung ist aktiv. Ein anderer Slave wird nur dann aktiv, wenn der aktive Slave ausfällt. Die MAC-Adresse der Verbindung ist nur an einem Port (Netzwerkadapter) von außen sichtbar, um Verwechslungen mit dem Switch zu vermeiden. Dieser Modus bietet Fehlertoleranz. Die primäre Option beeinflusst das Verhalten dieses Modus.
Quelle und mehr Infos im Ubuntu-Community-Hilfe-Wiki .
quelle
Es ist ein bisschen alte Frage, aber wenn Sie immer noch wissen wollen ..
Es gibt zwei typische Szenarien, über die sich gertvdijk und pl1nk in einer der Antworten gestritten haben:
Sie haben einen Computer mit 2 öffentlichen IPs (2 verschiedene ISPs) und stellen eine Verbindung zu einem anderen Host her (z. B. einem Server in einem Rechenzentrum mit einer Fatpipe, die größer ist als die Gesamtbandbreite beider ISP-Verbindungen Ihres Computers). Sie stellen also über Ihre 2 Verbindungen eine Bonding-Verbindung zum Host her und der Host (Server) bedient Ihren Datenverkehr über eine eigene Internetverbindung. In diesem Szenario können Sie fast 100% der kombinierten Bandbreite in beide Richtungen für eine einzelne Verbindung erhalten.
Dies ist ein besonderer Fall von Bonding / Teaming / Ling-Aggregation, bei dem mehrere Layer-2-Schnittstellen (dasselbe Netzwerk) miteinander verbunden werden. Dies könnte erreicht werden, indem auf jeder ISP-Schnittstelle VPN-Layer-2-Verbindungen (Tap) vom Computer zum Host hergestellt und diese miteinander verbunden werden (Round-Robin-Modus), um eine einzige Schnittstelle zu erhalten. Der begrenzende Faktor in diesem Szenario ist, wie unterschiedlich die Verzögerungen (Ping) bei jeder ISP-Verbindung zum Host sind. Je ähnlicher und stabiler sie sind, desto besser. Wir benutzen es in einer unserer Installationen, es funktioniert gut. Wenn Sie Einzelheiten zur Implementierung erfahren möchten, lassen Sie es mich wissen.
Dann wäre ein anderes Szenario ohne einen Zwischenhost, dh eine direkte Verbindung von Ihren ISP-Schnittstellen zu verschiedenen Webservern auf der ganzen Welt. In diesem Fall können Sie die ausgehenden Verbindungen zwischen den Schnittstellen gleichmäßig verteilen, dh eine TCP-Sitzung wird vollständig über einen Internetdienstanbieter, eine zweite Sitzung über einen anderen Internetdienstanbieter usw. abgewickelt. Dies liegt daran, dass beim Herstellen einer TCP-Verbindung die Ursprungs- und Ziel-IP-Adressen für jedes Paket angegeben werden. Wenn ein Server ein Paket von einer anderen IP empfängt, für die kein TCP-Handshake durchgeführt wurde, wird das Paket als fehlerhaft betrachtet und verworfen. Da jede ISP-Verbindung eine eigene öffentliche IP hat, können Sie für dieselbe TCP-Sitzung nicht ein Paket über eine Verbindung von einer IP-Adresse aus und ein anderes Paket über eine andere Verbindung mit einer anderen IP-Adresse senden.
Sie erreichen für einen einzelnen Computer keine so hohe Gesamtbandbreitennutzung wie für das erste Szenario, aber für ein kleines Büro könnte dies eine gute Lösung sein. Um es ein wenig zu erweitern, können Sie benutzerdefinierte Lösungen für bestimmte Protokolle implementieren. Zum Beispiel könnten Sie auf dem Gateway eine Art Proxy für http-Downloads haben (das könnte derselbe Computer sein) und nach verschiedenen Teilen einer riesigen Datei fragen, die über verschiedene ISP-Schnittstellen verschiedene TCP-Sitzungen aufbauen. In diesem Fall würde die resultierende Download-Rate nahezu 100% der kombinierten Bandbreite betragen. Es ist wie das Auslagern von ReGet, GetRight und ähnlichen Downloadern auf das Gateway. Google "HTTP 206 Partial Content". Ich kenne keine Standard-Open-Source-Lösungen für dieses Szenario, aber es gibt Hardware-Appliances, die genau das tun: google '
quelle
echo "bonding" >> /etc/modules
echo -e "alias bond* bonding\noptions bonding max_bonds=10 mode=2 xmit_hash_policy=layer3+4 arp_interval=100 arp_ip_target=10.0.0.1" > /etc/modprobe.d/bonding.conf
echo "+tapX " >> /sys/class/net/bond0/bonding/slaves
Überprüfen Sie ihren Status mit:cat /proc/net/bonding/bond0
Zu diesem Zeitpunkt sollte der gesamte Internetverkehr über bond0 zum Server im Rechenzentrum fließen. Dort sollten Sie das Routing einstellen:echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
(eth0 soll das Internet iface sein)mode=2 xmit_hash_policy=layer3+4
anzugebenmode=0
(siehe link @ kernel.org), aber zuerst prüfen, wie ähnlich die Verbindungen über 3G sind. Wenn sich die Ping-Zeiten um mehr als 2-3 ms unterscheiden oder der Jitter mehr als 1 ms beträgt, müssen Sie viele Pakete neu ordnen, um die Geschwindigkeit der aggregierten Verbindung effektiv zu verringern. Sie müssen die aggregierten Linkstatistiken mitnetstat -s
(nach erneuten Übertragungen suchen) undiperf -s
/ überprüfeniperf -c <server_ip> -d
. 1. Überprüfen Sie die Leistung jedes Links, dann können wir mit einer Lösung fortfahrenich hatte ein ähnliches problem ... und ich war sehr interessiert an der herangehensweise an die lösung nach dem ersten szenario von herrn. GTH und Anatoli, ich bitte Sie sehr, die grundlegenden Konfigurationen und Skripte zu erstellen, wenn möglich, um die im ersten Szenario beschriebene Konfiguration zu testen.
Jetzt habe ich VPN-Verbindungen über verschiedene ISP-Anbieter mithilfe kombinierter Tun / Tap-Schnittstellen (es ist keine Bindung, was in Antwort 8 erklärt wird) mit diesem Dienstprogramm konfiguriert:
Net-ISP-Balance von Lincoln D. Stein
Verteilen Sie Ihre Internetverbindung auf zwei oder mehr ISPs, um die Bandbreite und Zuverlässigkeit zu verbessern
Projektstartseite: https://lstein.github.io/Net-ISP-Balance/
Mit diesem Paket können Sie eine Heim- oder Kleinunternehmens-Internetverbindung über zwei oder mehr ISPs verteilen. Sie können es mit einem einzelnen Host verwenden, der an zwei ISPs angeschlossen ist, oder auf einem Router / Firewall-Computer, um den Lastenausgleich für Ihr gesamtes LAN durchzuführen. Der Netzwerkverkehr wird über beide ISP-Verbindungen verteilt, um die Upload- und Download-Kapazität zu erhöhen. Wenn ein ISP ausfällt, übernehmen die anderen ISPs automatisch die Übertragung.
Die Bandbreite wird auf Verbindungsebene verteilt. Dies bedeutet, dass Sie die aggregierte Bandbreite bei keinem bestimmten Download- oder Geschwindigkeits-Benchmark sehen, aber Sie werden die Vorteile sehen, wenn mehrere Datenübertragungen gleichzeitig stattfinden, z. B. wenn mehrere Personen in Ihrem Haushalt Filme streamen. Darüber hinaus werden bei Dateiübertragungsprotokollen mit mehreren Verbindungen wie BitTorrent die Vorteile des Lastenausgleichs sichtbar.
Dies ist ein Perl-basiertes Dienstprogramm zum Verwalten von Routing und IPTables unter Linux, das für unsere Zwecke perfekt geeignet ist. Es erstellt zunächst eine Routing-Tabelle für alle Anbieter und verteilt dann den gesamten LAN-Verkehr gleichmäßig zwischen den Anbietern, um zu verstehen, wie das Dienstprogramm funktioniert ein kleines beispiel (testkonfiguration) für 3 isp + 1 lan
quelle