После месячного перерыва появилась тема для новой заметки. На этот раз поговорим об LLDP и Ingress Checking. Если кому-то интересна предыстория, с ней можно ознакомиться здесь. Ниже я просто опишу выводы.
На моделях DES-3200-XX A1/B1 согласно информации от D-Link "начиная с прошивки 1.52.B004 Ingress Checking действует также и на BPDU пакетики, поэтому PVID магистральных портов должен быть равен VID реально существующего на них влана либо нужно отключать Ingress Checking."
На практике это означает, что для работы LLDP следует либо выключить Ingress Checking совсем, либо для каждого коммутатора подбирать настройки с учетом имеющихся на нем VLAN'ов.
Что же такое Ingress Checking*? Это "проверка попадания" кадра в набор VID, ассоцирированных с портом. Если функционал Ingress Checking включен, то при поступлении в порт коммутатора кадра производится сравнение VID кадра с набором идентификаторов VID, ассоциированных с портом (включая PVID порта). Если нет, то кадр отбрасывается. Если же функционал Ingress Checking выключен, то никакой проверки не производится.
В моем случае получалось, что VLAN на порту отсутствовал, но фрейм с его ID прилетал на коммутатор, который заносил MAC-адрес в таблицу коммутации. Немного подумав, коммутатор выкидывал этот MAC из таблицы коммутации до истечения fdb aging time. Видимо, он сам чувствовал, что здесь что-то не так! Но через несколько секунд MAC появлялся в таблице снова. В результате коммутатор генерировал большое количество MAC-notify трапов, благодаря чему, собственно, и был найден. После включения Ingress Checking безобразия прекращались, но переставал работать LLDP. Происходило так потому, что магистральные порты не настраивались как untagged, поэтому PVID там был равен 1. А после удаления с портов vlan default фреймы LLDP попадали под проверку функционалом Ingress Checking и отбрасывались.
Решение было найдено следующее: прописывать на магистральных портах PVID равный VID multicast-vlan'a. Удобство здесь в том, что данный VLAN присутствует на всех коммутаторах сети и на каждом имеет один и тот же ID. Это позволяет указывать такой PVID одинаковым для любого коммутатора, независимо от имеющихся на нем VLAN. В результате и настройка одинакова для всех коммутаторов и LLDP работает и некорректные фреймы с абонентских портов блокируются.
*Updated 2017.08.23:
Теперь приведено описание Ingress Checking для более общего случая. Раньше описывался вариант для untagged-порта.
На моделях DES-3200-XX A1/B1 согласно информации от D-Link "начиная с прошивки 1.52.B004 Ingress Checking действует также и на BPDU пакетики, поэтому PVID магистральных портов должен быть равен VID реально существующего на них влана либо нужно отключать Ingress Checking."
На практике это означает, что для работы LLDP следует либо выключить Ingress Checking совсем, либо для каждого коммутатора подбирать настройки с учетом имеющихся на нем VLAN'ов.
Что же такое Ingress Checking*? Это "проверка попадания" кадра в набор VID, ассоцирированных с портом. Если функционал Ingress Checking включен, то при поступлении в порт коммутатора кадра производится сравнение VID кадра с набором идентификаторов VID, ассоциированных с портом (включая PVID порта). Если нет, то кадр отбрасывается. Если же функционал Ingress Checking выключен, то никакой проверки не производится.
В моем случае получалось, что VLAN на порту отсутствовал, но фрейм с его ID прилетал на коммутатор, который заносил MAC-адрес в таблицу коммутации. Немного подумав, коммутатор выкидывал этот MAC из таблицы коммутации до истечения fdb aging time. Видимо, он сам чувствовал, что здесь что-то не так! Но через несколько секунд MAC появлялся в таблице снова. В результате коммутатор генерировал большое количество MAC-notify трапов, благодаря чему, собственно, и был найден. После включения Ingress Checking безобразия прекращались, но переставал работать LLDP. Происходило так потому, что магистральные порты не настраивались как untagged, поэтому PVID там был равен 1. А после удаления с портов vlan default фреймы LLDP попадали под проверку функционалом Ingress Checking и отбрасывались.
Решение было найдено следующее: прописывать на магистральных портах PVID равный VID multicast-vlan'a. Удобство здесь в том, что данный VLAN присутствует на всех коммутаторах сети и на каждом имеет один и тот же ID. Это позволяет указывать такой PVID одинаковым для любого коммутатора, независимо от имеющихся на нем VLAN. В результате и настройка одинакова для всех коммутаторов и LLDP работает и некорректные фреймы с абонентских портов блокируются.
*Updated 2017.08.23:
Теперь приведено описание Ingress Checking для более общего случая. Раньше описывался вариант для untagged-порта.