Tap-Bridge-Tap: Kein LACP

515
Francesco

Ich habe zwei Switches, die über TAP-Schnittstellen angeschlossen sind. Jeder Virtual Switch-Port ist mit einem einzelnen TAP-Port verbunden, und die TAP-Ports sind über eine Bridge verbunden.

SW1-port1 = TAP 11 <== BR121 ==> TAP 21 = SW2-port1 SW1-port2 = TAP 12 <== BR122 ==> TAP 22 = SW2=port2 

Wenn ich die Switch-Ports als normale Layer 3 konfiguriere, können sie sich gegenseitig pingen, was bedeutet, dass das oben beschriebene Setup funktioniert. Allerdings werden LACP-Pakete verworfen und ich kann keinen Port-Kanal zwischen den beiden einrichten (für Bildungszwecke).

Ich kann LACP-Pakete sehen, die vom lokal verbundenen Switch erzeugt werden, wenn ich die TAP-Schnittstelle "tcpdump", aber irgendwie schafft es das LACP-Paket nicht bis zum anderen Ende (zum anderen TAP I / F).

Könnte es die Brücke sein, die das LACP-Paket absorbiert? Gibt es eine Möglichkeit, dies zu verhindern?

Danke, Francesco

1

1 Antwort auf die Frage

0
grawity

Ja, LACP verwendet die Gruppenadresse 01: 80: C2: 00: 00: 02, die sich im Bereich "Don't Relay" befindet: Jede 802.1D-kompatible Bridge darf diese Frames nicht weiterleiten .

Linux-Bridges erlauben zwar die Konfiguration von Ausnahmen (über group_fwd_mask ), diese Funktion ist jedoch für Protokolle höherer Ebenen wie LLDP oder 802.1X gedacht und weigert sich ausdrücklich, einen Bypass für die STP / LACP-Adresse hinzuzufügen.

(Ich denke, das macht sehr viel Sinn, da diese Protokolle spezifisch für die Verwendung zwischen zwei Peers an gegenüberliegenden Enden einer direkten Verbindung gedacht sind und ansonsten auf verschiedene Weise zu Fehlfunktionen führen würden.)

Eine Ausnahme bilden Bridges, die als Zwei-Port-MAC-Relays eingestuft werden. Da sie genau zwei Schnittstellen miteinander verbinden, können sie für LACP transparent sein. Soweit ich weiß, gibt es keine native Methode, um eine Linux-Bridge als eine zu kennzeichnen.

Es könnte mit einem Userspace-Programm ausgeführt werden, um Frames zwischen zwei Schnittstellen zu verschieben, z socat.

Alternativ können Sie LACP zwischen jedem Ihrer vswitches und dem Linux-Host ausführen (entweder mit den Bonding- oder Teaming-Treibern) und dann die Bridge auf die beiden LAGs (Bond-Schnittstellen) setzen.

Hallo Grawity, das ist eine sehr gute Erklärung und macht durchaus Sinn. Ich werde die SOCAT-Option untersuchen. Francesco vor 6 Jahren 0