STP-пакеты отбрасывались (1 пакет каждые 2 секунды), когда к интерфейсу присоединилась несоответствующая многоадресная группа
Я пытаюсь понять странную проблему отбрасывания пакетов при присоединении к определенной группе многоадресной рассылки.
Я думаю, что эта проблема связана с патчем, введенным в ядре версии 2.6.37.
Beginning with kernel 2.6.37, it has been changed the meaning of dropped
packet count. Before, dropped packets was most likely due to an error.
Now, the rx_dropped counter shows statistics for dropped frames because
of:
Softnet backlog full -- (Measured from /proc/net/softnet_stat)
Bad / Unintended VLAN tags
Unknown / Unregistered protocols
IPv6 frames when the server is not configured for IPv6
If any frames meet those conditions, they are dropped before the
protocol stack and the rx_dropped counter is incremented.
На чистом SLES11 SP3 мне удалось воспроизвести это, присоединившись к многоадресной группе STP (01:80:c2:00:00:00).
Без каких-либо изменений нет пакетов /proc/net/dev
(RX) или netstat -i
потому что моя система не присоединилась к многоадресной группе STP (поэтому игнорирует пакеты).
Когда я присоединяюсь к группе многоадресной рассылки STP, я вижу отбрасывание пакетов (1 пакет каждые 2 секунды), которые, как я считаю, отбрасываются из-за исправления, введенного в ядре 2.6.37 (неизвестные / незарегистрированные протоколы), и это нормально.
hostname:~ # ip maddr add 01:80:c2:00:00:00 dev eth1
Насколько я понимаю, когда я встраиваю модуль modprobe llc/stp в ядро, он распознает протокол и поэтому прекращает отбрасывать пакеты (тесты доказывают, что я прав).
Modprobing llc
или же stp
модуль (зависит от llc) "исправляет" проблему отброшенного пакета.
Теперь вопрос:
У меня есть приложение, которое присоединяется к нескольким группам многоадресной рассылки при запуске. И по какой-то причине одно конкретное соединение вызывает сбрасывание пакета (1 пакет за 2 секунды).
Проблема в том, что это не многоадресный адрес STP 01:80:c2:00:00:00
но совсем другой (01:00:5e:46:ac:04 aka 239.70.172.4
). Вставка модуля llc / stp "исправляет" приращение счетчика пропущенных пакетов. Все другие многоадресные группы не вызывают эту проблему, например (01:00:5e:46:ac:02
) а также многие другие.
Кадры STP являются единственными, которые появляются на интерфейсе каждые 2 секунды, но их MAC-адрес назначения - 01: 80: c2: 00: 00: 00.
00:21:1b:4f:a3:bf > 01:80:c2:00:00:00, 802.3, length 119: LLC, dsap STP (0x42) Individual, ssap STP (0x42) Command, ctrl 0x03: STP 802.1s, Rapid STP, CIST Flags [Learn, Forward]
Как это возможно? Почему группа многоадресной рассылки 01: 00: 5e: 46: ac: 04 вызывает такое поведение, как если бы оно каким-то образом было связано с группой STP и позволяло кадрам / пакетам проходить дальше через стек?