Linux-DSA-Switch mit VLAN-fähigem Bridge-Setup

Linux-DSA-Switch mit VLAN-fähigem Bridge-Setup

Ich arbeite an einem Anwendungsfall, bei dem SoCs mit nur einem Ethernet-Port (eth1) mit einem SJA1105-Switch-Chip verbunden werden. Wie in den Linux-Kernel-Dokumenten erwähnt, verwendet der DSA-Mechanismus eth1 als Verwaltungsport und hat die Beschränkung, Sockets direkt auf dieser Schnittstelle zu öffnen. Für den Fall, dass VLAN nicht verwendet wird, verwende ich die Referenzkonfiguration aus dem Dokument wie folgt:

ip link set eth1 up
ip link set swp1 up
ip link set swp2 up

ip link add name br0 type bridge

ip link set dev swp1 master br0
ip link set dev swp2 master br0

ip addr add 172.20.1.129/24 dev br0

ip link set dev br0 up

es funktioniert gut. Ich kann br0 als Ersatz für eth1 verwenden, um auf Hosts hinter swpN zuzugreifen. Aber im VLAN-fähigen Fall funktioniert es nicht. Ich verwende immer noch die aus der Referenz überarbeitete Konfiguration:

ip link set eth1 up

ip link set swp1 up
ip link set swp2 up

ip link add name br0 type bridge

ip link set dev br0 type bridge vlan_filtering 1

ip link set dev swp1 master br0
ip link set dev swp2 master br0

bridge vlan add dev swp1 vid 100 pvid untagged
bridge vlan add dev swp2 vid 100 pvid untagged
bridge vlan add dev br0 vid 100 pvid untagged self

ip addr add 172.20.1.129/24 dev br0

ip link set dev br0 up

Die Hosts hinter swpN können sich weiterhin gegenseitig anpingen, aber nicht br0 und umgekehrt. tcpdump erfasst keine Pakete auf br0, hat aber Pakete auf eth1 gefunden.

ist irgendetwas an meiner Konfiguration falsch? Oder gibt es andere Methoden, um das Ziel zu erreichen, dass der CPU-Daemon mit den Hosts hinter swpN mit VLAN-Tag in einem solchen Setup kommunizieren kann?

Würde mich über Kommentare sehr freuen, danke im Voraus!

Antwort1

Sie müssen eine VLAN-Schnittstelle für Ihr natives br0-VLAN (markiert als PVID) erstellen und die IP-Adresse dieser Schnittstelle statt der Brücke selbst zuweisen. Dies scheint der Unterschied zu „normalen“ Brücken zu sein.

ip link add link br0 name br0.100 type vlan id 100
ip addr add 172.20.1.129/24 dev br0.100

Ich habe keine Dokumentation gefunden, die dieses Verhalten beschreibt, aber diese Lösung funktioniert und ist sinnvoll.

verwandte Informationen