switch DSA linux com configuração de ponte compatível com Vlan

switch DSA linux com configuração de ponte compatível com Vlan

Estou trabalhando em um caso de uso em que SoC com apenas uma porta Ethernet (eth1) se conecta a um chip switch SJA1105. Conforme mencionado nos documentos do kernel Linux, o mecanismo DSA usará a eth1 como porta de gerenciamento e terá limitação para abrir o soquete diretamente nesta interface. Para o caso Vlan-unware, eu uso a configuração de referência do documento conforme abaixo:

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

Funciona bem. Posso usar br0 como substituto de eth1 para acessar hosts atrás de swpN. Mas quando se trata de um caso compatível com Vlan, não funciona. Ainda uso a configuração revisada da referência:

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

Os hosts por trás do swpN ainda podem executar ping entre si, mas não podem executar ping em br0, vice-versa. tcpdump não captura pacotes em br0, mas encontra pacotes em eth1.

há algo errado na minha configuração? ou qualquer outro método para atingir o objetivo de que o daemon da CPU possa se comunicar com os hosts por trás do swpN com Vlan marcado em tal configuração?

Agradeceremos muito se houver algum comentário, obrigado antecipadamente!

Responder1

Você precisa criar uma interface VLAN para sua VLAN br0 nativa (marcada como PVID) e atribuir o endereço IP a essa interface em vez da própria ponte. Esta parece ser a diferença em relação às pontes "comuns".

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

Não encontrei nenhuma documentação descrevendo esse comportamento, mas esta solução funciona e faz sentido.

informação relacionada