Por que o tráfego de multidifusão adequadamente marcado com VLAN não chegaria na interface marcada?

1

Estou trabalhando com um aplicativo que envia tráfego multicast entre um cliente e um servidor. Este tráfego é enviado via multicast. O cliente e o servidor estão usando interfaces VLAN e precisam se comunicar em uma VLAN específica para poder se comunicar corretamente. O cliente e o servidor estão na mesma sub-rede (portanto, não há saltos de rede) e seus IPs estão na mesma sub-rede (portanto, o único roteamento em andamento é uma rota para a difusão seletiva da interface de VLAN).

Usando tcpdump , posso ver o tráfego na interface não marcada de ambos os hosts, mas, se observar a interface marcada, só vejo o tráfego da máquina local. Confirmei que o tráfego que vem na interface não marcada também tem a tag vlan adequada.

Para ajudar a ilustrar isso, digamos:

VLAN: 10
Multicast: 239.1.1.1

O que estou vendo é:

[root@client]# tcpdump -ei ens192 host 239.1.1.1
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]

e a mesma ideia do outro lado:

[root@server]# tcpdump -ei ens192 host 239.1.1.1
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]
.... vlan 10 ... server.[port] > 239.1.1.1.[port]
.... vlan 10 ... client.[port] > 239.1.1.1.[port]

Mas quando eu tcpdump a interface marcada:

[root@client]# tcpdump -ei ens192.10 host 239.1.1.1
.... client.[port] > 239.1.1.1.[port]
.... client.[port] > 239.1.1.1.[port]

Mesma ideia do servidor.

Eu tentei sysctl net.ipv4.conf.all.rp_filter=0 sem alteração.

Eu também executei strace -fe trace=network -p [PID of software] 2>&1 | grep 239.1.1.1 no cliente e no servidor, e havia apenas send_to chamadas sendo feitas, nada foi recebido (o que eu esperava depois de não ver a entrada na interface marcada).

Também confirmei com ip maddr que ens192.10 está inscrito em 239.1.1.1 , embora todas as outras interfaces VLAN também estejam inscritas, o que achei um pouco suspeito. Confirmei com tcpdump que o tráfego não está chegando em nenhuma das outras interfaces de VLAN. Eu admito que não sei como este software está executando as assinaturas, já que não tenho acesso ao código fonte / interno.

O sistema operacional é o RHEL 7.5.

Existe alguma razão pela qual o tráfego da VLAN corretamente marcado não apareça na interface de VLAN apropriada?

EDIT: Além disso, há outro tráfego mutlicast trabalhando muito bem nesta interface VLAN, o problema parece específico para este software.

    
por Centimane 03.10.2018 / 17:30

1 resposta

-1

Eu não acho que você pode usar o usuário tcpdump em uma subinterface (por exemplo, ens192.10 ) como esta no Linux.

A maneira usual de descarregar um tráfego vlan específico (ou todo) é

tcpdump -i ens192 -e vlan 10 and host 239.1.1.1 # just vlan tag 10
tcpdump -i ens192 -e vlan and host 239.1.1.1 # all tagged vlans

ou, se a sua versão tcpdump não suportar a sintaxe vlan X , você poderá combinar cabeçalhos brutos com

tcpdump -i ens192 -e 'ether[12:2] = 0x8100 and ether[15] = 10' and host 239.1.1.1
    
por 03.10.2018 / 18:02