Я пытаюсь понять странную проблему с отбрасыванием пакетов при присоединении к определенной группе многоадресной рассылки.
Я думаю, что эта проблема связана с патчем, введенным в версии ядра 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 в ядро, он распознает протокол и, следовательно, перестает сбрасывать пакеты (тесты доказывают, что я прав).
Модпробинг llc
или stp
модуль (зависит от ООО) "исправляет" проблему с отброшенным пакетом.
Теперь вопрос:
У меня есть приложение, которое при запуске присоединяется к нескольким группам многоадресной рассылки. И почему-то один определенные триггеры соединения сбрасывают проблему с пакетом (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 и позволяет фреймам / пакетам проходить дальше через стек?