Eu tenho um host KVM com convidados unidos a uma ponte virtual para rede.
Netdata em convidados deste sistema chamou minha atenção para pacotes sendo descartados no nível da interface de rede (a métrica relatada como RX dropped
por ifconfig
).
Eu rastreei os pacotes descartados para transmissões STP (protocolo de árvore de abrangência) de fora do host. A ponte virtual no host está com o STP desativado, mas esses pacotes de outros switches na rede ainda são encaminhados aos convidados.
# tcpdump -i enp2s0 stp -etn
30:23:03:27:7c:27 > 01:80:c2:00:00:00, 802.3, length 38: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id fffe.30:23:03:27:7c:27.8001, length 43
# tcpdump -i enp1s0 stp -etn
10:06:45:e6:24:0b > 01:80:c2:00:00:00, 802.3, length 38: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1d, Config, Flags [none], bridge-id 8000.10:06:45:e6:24:0b.8004, length 43
Pergunta
Como posso descartar pacotes STP sendo encaminhados pela ponte virtual?
Tentei filtrar pelo número dsap/ssap, mas não funcionou.
ebtables -A FORWARD -p LENGTH --802_3-sap 0x42 -j DROP
alternativamente, eu estaria interessado em quaisquer razões pelas quais isso não é uma boa ideia .
O que os pacotes descartados significam é que nenhum subsistema do kernel registrou o STP como um protocolo suportado; o driver ethernet não sabe para onde enviar o pacote, então o descarta e incrementa o contador descartado. Isso em si é bom, mas a Netdata trata o contador crescente como um possível problema.
A maneira mais simples de corrigir isso é tornar o kernel/driver ciente do STP:
Isso deve fazer com que os pacotes STP sejam descartados pelo driver STP em vez do driver ethernet.
Na maioria das distribuições Linux, você pode tornar isso permanente adicionando
stp
a/etc/modules
.