Link-Aggregation und Failover
Schulrouter Plus stellt die Schnittstelle lagg(4) zur Verfügung, mit der mehrere Netzwerkschnittstellen zu einer virtuellen Schnittstelle aggregiert werden können, um Failover und Link-Aggregation zu ermöglichen. Failover ermöglicht es, dass der Datenverkehr weiterhin fließt, solange mindestens eine aggregierte Netzwerkschnittstelle einen etablierten Link hat. Link-Aggregation funktioniert am besten auf Switches, die LACP unterstützen, da dieses Protokoll den Verkehr bidirektional verteilt und gleichzeitig auf den Ausfall einzelner Links reagiert.
Die von der lagg-Schnittstelle unterstützten Aggregationsprotokolle bestimmen, welche Ports für ausgehenden Verkehr verwendet werden und ob ein bestimmter Port eingehenden Verkehr akzeptiert oder nicht. Die folgenden Protokolle werden von lagg(4) unterstützt:
- Ausfallsicherung
-
In diesem Modus wird Datenverkehr nur über den Master-Port gesendet und empfangen. Wenn der Master-Port nicht mehr verfügbar ist, wird der nächste aktive Port verwendet. Die erste zur virtuellen Schnittstelle hinzugefügte Schnittstelle ist der Master-Port und alle nachfolgend hinzugefügten Schnittstellen werden als Failover-Geräte verwendet. Wenn ein Failover auf einen Nicht-Master-Port erfolgt, wird der ursprüngliche Port zum Master, sobald er wieder verfügbar ist.
- fec / loadbalance
-
Cisco® Fast EtherChannel® (FEC) ist auf älteren Cisco® Switches zu finden. Er bietet eine statische Einrichtung und handelt keine Aggregation mit der Gegenstelle aus und tauscht keine Frames zur Überwachung der Verbindung aus. Wenn der Switch LACP unterstützt, sollte dieser stattdessen verwendet werden.
- lacp
-
Das IEEE® 802.3ad Link Aggregation Control Protocol (LACP) handelt einen Satz aggregierbarer Links mit der Gegenstelle in eine oder mehrere Link Aggregated Groups (LAGs) aus. Jede LAG besteht aus Ports der gleichen Geschwindigkeit, die auf Vollduplex-Betrieb eingestellt sind, und der Datenverkehr wird auf die Ports in der LAG mit der größten Gesamtgeschwindigkeit verteilt. Normalerweise gibt es nur eine LAG, die alle Ports enthält. Bei Änderungen in der physikalischen Konnektivität konvergiert LACP schnell zu einer neuen Konfiguration.
LACP gleicht den ausgehenden Datenverkehr über die aktiven Ports auf der Grundlage von Hash-Header-Informationen aus und akzeptiert den eingehenden Datenverkehr von jedem aktiven Port. Der Hash enthält die Ethernet-Quell- und -Zieladresse und, falls verfügbar, das VLAN-Tag sowie die IPv4- oder IPv6-Quell- und -Zieladresse.
- roundrobin
-
Dieser Modus verteilt den ausgehenden Datenverkehr mithilfe eines Round-Robin-Schedulers über alle aktiven Ports und akzeptiert den eingehenden Datenverkehr von jedem aktiven Port. Da dieser Modus die Ethernet-Rahmenordnung verletzt, sollte er mit Vorsicht verwendet werden.
Konfigurationsbeispiele
In diesem Abschnitt wird gezeigt, wie ein Cisco® -Switch und ein Betriebssystem für den LACP-Lastausgleich konfiguriert werden. Anschließend wird gezeigt, wie zwei Ethernet-Schnittstellen im Failover-Modus konfiguriert werden und wie der Failover-Modus zwischen einer Ethernet- und einer Wireless-Schnittstelle konfiguriert wird.
Beispiel 1: LACP-Aggregation mit einem Cisco® Switch
In diesem Beispiel werden zwei fxp(4)-Ethernet-Schnittstellen auf einer OS-Maschine mit den ersten beiden Ethernet-Ports auf einem Cisco® -Switch als einzelne lastverteilte und fehlertolerante Verbindung verbunden. Es können weitere Schnittstellen hinzugefügt werden, um den Durchsatz und die Fehlertoleranz zu erhöhen. Ersetzen Sie die Namen der Cisco® -Ports, der Ethernet-Geräte, der Kanalgruppennummer und der IP-Adresse im Beispiel, damit sie mit der lokalen Konfiguration übereinstimmen.
Auf Ethernet-Verbindungen ist Frame-Ordering obligatorisch und jeglicher Verkehr zwischen zwei Stationen fließt immer über dieselbe physikalische Verbindung, wodurch die maximale Geschwindigkeit auf die einer Schnittstelle begrenzt wird. Der Sendealgorithmus versucht, so viele Informationen wie möglich zu verwenden, um verschiedene Verkehrsströme zu unterscheiden und die Ströme auf die verfügbaren Schnittstellen zu verteilen.
Fügen Sie auf dem Cisco® -Switch die Schnittstellen FastEthernet0/1 und FastEthernet0/2 zur Kanalgruppe 1 hinzu:
interface FastEthernet0/1
channel-group 1 mode active
channel-protocol lacp
!
interface FastEthernet0/2
channel-group 1 mode active
channel-protocol lacp
Erstellen Sie auf dem Betriebssystem die lagg(4)-Schnittstelle unter Verwendung der physischen Schnittstellen fxp0 und fxp1 und richten Sie die Schnittstellen mit einer IP-Adresse von 10.0.0.3/24 ein:
# ifconfig fxp0 up
# ifconfig fxp1 up
# ifconfig lagg0 create
# ifconfig lagg0 up laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24
Überprüfen Sie als nächstes den Status der virtuellen Schnittstelle:
# ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:05:5d:71:8d:b8
inet 10.0.0.3 netmask 0xffffff00 broadcast 10.0.0.255
media: Ethernet autoselect
status: active
laggproto lacp
laggport: fxp1 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
laggport: fxp0 flags=1c<ACTIVE,COLLECTING,DISTRIBUTING>
Die als AKTIV
gekennzeichneten Ports sind Teil der LAG, die mit dem entfernten Switch ausgehandelt wurde. Der Verkehr wird über diese aktiven Ports gesendet und empfangen. Fügen Sie -v
an den obigen Befehl an, um die LAG-Kennungen anzuzeigen.
So sehen Sie den Port-Status auf dem Cisco®-Switch:
switch# show lacp neighbor
Flags: S - Device is requesting Slow LACPDUs
F - Device is requesting Fast LACPDUs
A - Device is in Active mode P - Device is in Passive mode
Channel group 1 neighbors
Partner's information:
LACP port Oper Port Port
Port Flags Priority Dev ID Age Key Number State
Fa0/1 SA 32768 0005.5d71.8db8 29s 0x146 0x3 0x3D
Fa0/2 SA 32768 0005.5d71.8db8 29s 0x146 0x4 0x3D
Für weitere Details geben Sie show lacp neighbor detail
ein.
Um diese Konfiguration über Neustarts hinweg beizubehalten, fügen Sie die folgenden Einträge zu /etc/rc.conf
auf dem Betriebssystem hinzu:
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24"
Beispiel 2: Failover Modus
Der ModusFailover kann verwendet werden, um auf eine sekundäre Schnittstelle umzuschalten, wenn die Verbindung auf der Master-Schnittstelle verloren geht. Um Failover zu konfigurieren, stellen Sie sicher, dass die zugrunde liegenden physischen Schnittstellen aktiv sind, und erstellen Sie dann die Schnittstelle lagg(4). In diesem Beispiel ist fxp0 die Master-Schnittstelle, fxp1 ist die sekundäre Schnittstelle, und der virtuellen Schnittstelle wird die IP-Adresse 10.0.0.15/24 zugewiesen:
# ifconfig fxp0 up
# ifconfig fxp1 up
# ifconfig lagg0 create
# ifconfig lagg0 up laggproto failover laggport fxp0 laggport fxp1 10.0.0.15/24
Die virtuelle Schnittstelle sollte in etwa so aussehen:
# ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 00:05:5d:71:8d:b8
inet 10.0.0.15 netmask 0xffffff00 broadcast 10.0.0.255
media: Ethernet autoselect
status: active
laggproto failover
laggport: fxp1 flags=0<>
laggport: fxp0 flags=5<MASTER,ACTIVE>
Der Verkehr wird auf fxp0 gesendet und empfangen. Wenn die Verbindung auf fxp0 verloren geht, wird fxp1 die aktive Verbindung. Wenn die Verbindung auf der Master-Schnittstelle wiederhergestellt wird, wird sie erneut zur aktiven Verbindung.
Um diese Konfiguration über Neustarts hinweg beizubehalten, fügen Sie die folgenden Einträge in /etc/rc.conf
ein:
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport fxp0 laggport fxp1 10.0.0.15/24"
Beispiel 3: Failover Modus zwischen Ethernet- und Wireless-Schnittstellen
Für Laptop-Benutzer ist es normalerweise wünschenswert, das drahtlose Gerät als sekundäres zu konfigurieren, das nur verwendet wird, wenn die Ethernet-Verbindung nicht verfügbar ist. Mit lagg(4) ist es möglich, eine Ausfallsicherung zu konfigurieren, die sowohl aus Leistungs- als auch aus Sicherheitsgründen die Ethernet-Verbindung bevorzugt, während die Fähigkeit zur Datenübertragung über die drahtlose Verbindung erhalten bleibt.
Dies wird erreicht, indem die MAC-Adresse der Ethernet-Schnittstelle mit der der Funkschnittstelle überschrieben wird.
Hinweis
Theoretisch kann entweder die Ethernet- oder die Wireless-MAC-Adresse geändert werden, um sie an die jeweils andere anzupassen. Bei einigen gängigen drahtlosen Schnittstellen fehlt jedoch die Unterstützung für das Überschreiben der MAC-Adresse. Wir empfehlen daher, die Ethernet-MAC-Adresse für diesen Zweck zu überschreiben.
Hinweis
Wenn der Treiber für die drahtlose Schnittstelle nicht im GENERIC
- oder Custom-Kernel geladen ist und auf dem Rechner das Betriebssystem REL121.CURRENT läuft, laden Sie die entsprechende .ko
in /boot/loader.conf
, indem Sie driver_load="YES"
in diese Datei eintragen und neu booten. Ein anderer, besserer Weg ist es, den Treiber in /etc/rc.conf
zu laden, indem man ihn zu kld_list
(siehe rc.conf(5) für Details) in dieser Datei hinzufügt und neu bootet. Dies ist notwendig, da sonst der Treiber zum Zeitpunkt der Einrichtung der lagg(4)-Schnittstelle noch nicht geladen ist.
In diesem Beispiel ist die Ethernet-Schnittstelle, re0, der Master und die drahtlose Schnittstelle, wlan0, die Ausfallsicherung. Die Schnittstelle wlan0 wurde aus der physikalischen Funkschnittstelle ath0 erstellt, und die Ethernet-Schnittstelle wird mit der MAC-Adresse der Funkschnittstelle konfiguriert. Ermitteln Sie zunächst die MAC-Adresse der drahtlosen Schnittstelle:
# ifconfig wlan0
wlan0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether b8:ee:65:5b:32:59
groups: wlan
ssid Bbox-A3BD2403 channel 6 (2437 MHz 11g ht/20) bssid 00:37:b7:56:4b:60
regdomain ETSI country FR indoor ecm authmode WPA2/802.11i privacy ON
deftxkey UNDEF AES-CCM 2:128-bit txpower 30 bmiss 7 scanvalid 60
protmode CTS ampdulimit 64k ampdudensity 8 shortgi -stbctx stbcrx
-ldpc wme burst roaming MANUAL
media: IEEE® 802.11 Wireless Ethernet MCS mode 11ng
status: associated
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
Ersetzen Sie wlan0 durch den Namen der drahtlosen Schnittstelle des Systems. Die Zeile ether
wird die MAC-Adresse der angegebenen Schnittstelle enthalten. Ändern Sie nun die MAC-Adresse der Ethernet-Schnittstelle:
# ifconfig re0 ether b8:ee:65:5b:32:59
Bringen Sie die Funkschnittstelle in Betrieb (ersetzen Sie FR durch Ihren eigenen 2-Buchstaben-Ländercode), aber stellen Sie keine IP-Adresse ein:
# ifconfig wlan0 create wlandev ath0 country FR ssid my_router up
Stellen Sie sicher, dass die Schnittstelle re0 aktiv ist, und erstellen Sie dann die Schnittstelle lagg(4) mit re0 als Master mit Failover auf wlan0:
# ifconfig re0 up
# ifconfig lagg0 create
# ifconfig lagg0 up laggproto failover laggport re0 laggport wlan0
Die virtuelle Schnittstelle sollte in etwa so aussehen:
# ifconfig lagg0
lagg0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether b8:ee:65:5b:32:59
laggproto failover lagghash l2,l3,l4
laggport: re0 flags=5<MASTER,ACTIVE>
laggport: wlan0 flags=0<>
groups: lagg
media: Ethernet autoselect
status: active
Starten Sie dann den DHCP-Client, um eine IP-Adresse zu beziehen:
# dhclient lagg0
Um diese Konfiguration über Neustarts hinweg beizubehalten, fügen Sie die folgenden Einträge in /etc/rc.conf
ein:
ifconfig_re0="ether b8:ee:65:5b:32:59"
wlans_ath0="wlan0"
ifconfig_wlan0="WPA"
create_args_wlan0="country FR"
cloned_interfaces="lagg0"
ifconfig_lagg0="up laggproto failover laggport re0 laggport wlan0 DHCP"