Skip to main content
Skip table of contents

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.

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.

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:

PYTHON
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:

PYTHON
# 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:

PYTHON
# 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:

PYTHON
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:

PYTHON
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto lacp laggport fxp0 laggport fxp1 10.0.0.3/24"

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:

PYTHON
# 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:

PYTHON
# 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:

PYTHON
ifconfig_fxp0="up"
ifconfig_fxp1="up"
cloned_interfaces="lagg0"
ifconfig_lagg0="laggproto failover laggport fxp0 laggport fxp1 10.0.0.15/24"

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:

PYTHON
# 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:

PYTHON
# 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:

PYTHON
# 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:

PYTHON
# ifconfig re0 up
# ifconfig lagg0 create
# ifconfig lagg0 up laggproto failover laggport re0 laggport wlan0

Die virtuelle Schnittstelle sollte in etwa so aussehen:

PYTHON
# 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:

PYTHON
# dhclient lagg0

Um diese Konfiguration über Neustarts hinweg beizubehalten, fügen Sie die folgenden Einträge in /etc/rc.conf ein:

PYTHON
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"
JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.