VLAN 인식 브리지 설정이 포함된 Linux DSA 스위치

VLAN 인식 브리지 설정이 포함된 Linux DSA 스위치

저는 하나의 이더넷 포트(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

잘 작동합니다. swpN 뒤에 있는 호스트에 액세스하기 위해 eth1 대신 br0을 사용할 수 있습니다. 그러나 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

이 동작을 설명하는 문서를 찾지 못했지만 이 솔루션은 작동하고 의미가 있습니다.

관련 정보