MAC Blacklist
Описание проблемы
Отдельные несознательные производители умудряются выпускать целые партии оборудования, на которых прошит один и тот же мак. Обычно проблема выявляется слишком поздно и устройства уже успевают установить и подключить к ним клиентов. Помимо вполне очевидных проблем при работе в одном сегменте (ARP cache, STP), которую сложно игнорировать, возникает и отложенная проблема с LLDP discovery, которая приводит к случаем ошибочной линковки и, как следствие, к неправильной корреляции аварий. В любом случае - дубликаты маков на сети - проблема, которая может выстелить в любой момент.
Коллекция macblacklist
Предлагается вести коллекцию macblacklist
вида:
- name - название записи
- uuid - UUID записи
- from_mac - первый мак
- to_mac - последний мак
- description - описание
- vendors - список "отличившихся" вендоров
- vendor - ссылка на
Vendor
- platform - ссылка на
Platform
, опционально
- vendor - ссылка на
-
is_duplicated
- причина бана - дубликаты
MACBlackList содержит метод
@classmethod
def is_banned_mac(cls, mac: MAC, is_duplicated: bool=False) -> bool
который возвращает True, если MAC-адрес забанен по указанным причинам
Коллекия macblacklist синхронизируется через глобальный механизм распространения коллекций и, таким образом, может пополняться автоматически после деплоя.
Обработка в LLDP discovery
Если сосед отдает chassis subtype 4 (mac), то необходимо проверить, не является ли MAC забаненым по причине дублирования.
В случае бана по дублированию проверяем, нет ли в выводе get_lldp_neighbors
дополнительного поля remote_system_name
.
Если он есть, используем его для поиска по hostname, при условии, что он уникален.
В любом случае пишем в лог, что обнаружен проблемный сосед.
Проблемы discovery
Помечаем проблемные железки в отчете "Проблемы discovery", как обладающие дублирующимися маками.
Проверка id discovery
В id discovery проверяем, не содержит ли железка забаненых маков. Если содержит, поднимаем аварию NOC | ManagedObject | Banned MAC
Документация
При генерации документации в списках поддерживаемых платформ отдельно отмечать факты выпуска бракованых партий.