У меня есть KVM-хост с гостями, подключенными к виртуальному мосту для работы в сети.
Netdata на гостях этой системы обратил мое внимание на отбрасываемые пакеты на уровне сетевого интерфейса (метрика сообщается как RX сброшен
в ifconfig
).
Я отслеживал отброшенные пакеты на STP (протокол связующего дерева) осуществляет широковещательную передачу извне хоста. У виртуального моста на хосте отключен протокол STP, но эти пакеты от других коммутаторов сети по-прежнему пересылаются гостям.
# 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
Вопрос
Как я могу отбросить пакеты STP перенаправляются через виртуальный мост?
Я попытался выполнить фильтрацию по номеру dsap / ssap, но это не сработало.
ebtables -A FORWARD -p LENGTH --802_3-sap 0x42 -j DROP
в качестве альтернативы, меня могут интересовать любые причины, по которым это не очень хорошая идея .
Отброшенные пакеты означают, что ни одна подсистема ядра не зарегистрировала STP в качестве поддерживаемого протокола; драйвер Ethernet не знает, куда отправить пакет, поэтому отбрасывает его и увеличивает значение счетчика отброшенных пакетов. Это само по себе нормально, но Netdata считает рост счетчика возможной проблемой.
Простейший способ исправить это — сделать ядро/драйвер осведомленным о STP:
sudo modprobe stp
Это должно привести к тому, что пакеты STP будут отбрасываться драйвером STP, а не драйвером Ethernet.
В большинстве дистрибутивов Linux вы можете сделать это постоянным, добавив stp
в /etc/modules
.