VLAN 対応ブリッジ設定を備えた Linux DSA スイッチ

VLAN 対応ブリッジ設定を備えた Linux DSA スイッチ

私は、1 つの ethnet ポート (eth1) のみを持つ SoC を SJA1105 スイッチ チップに接続するユース ケースに取り組んでいます。Linux カーネル ドキュメントに記載されているように、DSA メカニズムは eth1 を管理ポートとして受け取り、このインターフェイスで直接ソケットを開くことに制限があります。Vlan が認識されないケースでは、次のドキュメントの参照構成を使用します。

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

問題なく動作します。 eth1 の代わりに br0 を使って swpN の背後にあるホストにアクセスできます。 しかし、Vlan 対応の場合はうまくいきません。 私はまだ、参考資料から修正した構成を使用しています:

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

swpN の背後にあるホストは、まだ互いに ping できますが、br0 に ping できません。その逆も同様です。tcpdump は br0 でパケットをキャプチャしませんが、eth1 でパケットが見つかりました。

私の設定に何か問題がありますか? または、このような設定で、CPU デーモンが VLAN タグ付きの swpN の背後にあるホストと通信できるようにするという目標を達成するための他の方法はありますか?

コメントを頂ければ大変ありがたく思います。よろしくお願いします!

答え1

ネイティブ br0 VLAN (PVID としてマーク) 用の VLAN インターフェイスを作成し、ブリッジ自体ではなくそのインターフェイスに IP アドレスを割り当てる必要があります。これが「一般的な」ブリッジとの違いのようです。

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

この動作を説明するドキュメントは見つかりませんでしたが、この解決策は機能し、理にかなっています。

関連情報