Перейти к содержанию

Возможности работы НОКа с топологией

Одним из ключевых компонентов НОКа это топология сети. Она представлена в виде графа связности оборудования (ManagedObject). На его основе можно менять поведение системы, это предоставляет следующие возможности:

  • Строить L2 топологию по данным с оборудования и внешних систем (Remote System)
  • Строить L2 связи между интерфейсами Interface устройства ManagedObject.
  • Показывать топологию на карте сети
  • Определять причины аварии по топологии
  • Производить поиск пути по топологии
  • Строить отчёты на основании данных по топологии
  • Предоставлять топологическую информацию через API - Datastream

L2 топология (L2 Topology) строится между интерфейсами Interface устройства ManagedObject. Помимо ручного создания связей (Link), через интерфейс пользователя, система может выстраивать связи на основе данных с оборудования. Можно выделить следующие этапы работы с топологией:

  • Построение связей между устройствами (вручную или по итогам опроса)
  • Расчёт направления вверх (Uplink)
  • Отображение схемы сети
  • Построение пути по топологии

Построение топологии

При построении топологии важно помнить термины:

  • Связь (Link) - групп (традиционно 2)
  • Текущее устройство - это устройство (ManagedObject) на котором запущен опрос
  • Соседнее устройство (сосед) - устройства, соединенённые с текущим напрямую (не через иные устройства уровня L2). Они отображаются в таблице соседей устройства
  • Идентификатор устройства - свойство, позволяющее найти соседнее устройство. В топологических протоколах используются следующие идентификаторы
    • MAC адреса устройства (Chassis ID)
    • Hostname устройства
    • IP адес (IP address)
    • Серийный номер (Serial)
  • Идентификатор порта устройства - позволяется определить порт соседа к которому идёт связь. Например:
    • Имя интерфейса (Interface Name)
    • Описание (Description)
    • MAC адрес интерфейса
    • SNMP индекс (ifindex)
    • Номер интерфейса
    • Иные
  • Топологический метод (Topology Method) - это способ с помощью которого система строит связь. Помимо обычных, совпадающих с топологическими протоколами, в системе присутствует несколько дополнительных.

Для создания связи (Link) обязательно наличие интерфейса Interface на всех связанных устройствах. Дальнейший список требования отличается в завимости от метода создания связи (Link). Рассмотри доступные.

Создание связи вручную

Производится через панель инфтерфейс в форме устройства ManagedObject. Для этого выбираем интерфей текущего устройство и указываем интерфейс соседа, с которым будет создана связь.

Создание связи на основе протоколов соседства

Для автоматического построения связи можно воспользоваться информацией о соседях с устройства. В НОКе поддерживается достаточное большое число протоколов соседства - LLDP, CDP, ... но основные подходы в их работе не меняются:

  • Устройство должно поддерживать возможность показать список соседей с указанием их интерфейсов
  • Идентификатор соседа из списка должен позволять найти устройство в системе
  • Идентификатор порта соседа должен позволять найти порт соседа в системе
  • В профилях SA Profile устройств должны быть реализованы скрипты для получения информации о соседях

Процедура построений связи


flowchart TD
    discovery_start[Запуск опроса] --> get_lo_neighbor[Запрос соседей с устройства];
    get_lo_neighbor --> find_lo_neighbor[Поиск соседа в Системе];
    find_lo_neighbor --> find_lo_neighbor_cond{Нашли соседа?};
    find_lo_neighbor_cond --> |Да| find_lo_neighbor_ri[Поиск интерфейса соседа в системе];
    find_lo_neighbor_ri --> find_lo_neighbor_ri_cond{Нашли интерфейс соседа?};
    find_lo_neighbor_ri_cond --> |Да| get_ri_neighbor[Запрос соседей соседа];
    get_ri_neighbor --> find_ro_neighbor[Поиск соседей соседа в Системе];
    find_ro_neighbor --> find_ro_neighbor_cond{Нашли текущее устройство?};
    find_ro_neighbor_cond --> |Да| find_ro_neighbor_ri[Поиск интерфейса текущего устройства в системе];
    find_ro_neighbor_ri --> find_ro_neighbor_ri_cond{Нашли локальный интерфейс?};
    find_lo_neighbor_ri_cond --> |Нет| next_condition{Есть ещё соседи?};
    find_lo_neighbor_cond --> |Нет| next_condition;
    find_ro_neighbor_ri_cond --> |Нет| find_li_ri_cond{Найденный интерфейс совпадает с локальным?};
    find_ro_neighbor_ri_cond --> |Нет| next_condition;
    find_li_ri_cond --> |Да| create_link[/Создать связь/];
    find_li_ri_cond --> |Нет| next_condition;
    next_condition --> |Да| find_lo_neighbor;
    next_condition --> |Нет| discoveryend[Окончание опроса];

Запрос соседей с устройства

На первом этапе запускается опрос устройства по одному из методов. Система получает список соседей текущего устройства (на котором запускается опрос). В списке присутствуют:

  • Идентификатор соседа - зависит от протокола. Для случая LLDP, это может быть MAC адрес или hostname.
  • Локальный порт - порт текущего устройства, за которым виден сосед
  • Порт соседа. Указание за каким портом соседнего устройства видно текущее. Может приходить в виде имени, MAC адреса, или некоторого локального идентификатора (обычно snmp_index)

Пример вывода на примере LLDP (для других протоколов он будет другой):

[
    {
        "local_interface": "GigabitEthernet0/0/1",
        "neighbors": [
            {
                "remote_chassis_id_subtype": 4,
                "remote_chassis_id": "00:0E:5E:11:22:77",
                "remote_port_subtype": 5,
                "remote_port": "port 25",
                "remote_port_description": "TRUNK",
                "remote_system_name": "782-swc1",
                "remote_system_description": "ISCOM2128EA-MA-AC ROS_4.15.1365_20171229(Compiled Dec 29 2017, 15:40:31)",
                "remote_capabilities": 4
            }
        ]
    },
    {
        "local_interface": "XGigabitEthernet0/1/1",
        "neighbors": [
            {
                "remote_chassis_id_subtype": 4,
                "remote_chassis_id": "08:19:A6:11:22:88",
                "remote_port_subtype": 5,
                "remote_port": "XGigabitEthernet0/1/2",
                "remote_port_description": "\"link to WAN\"",
                "remote_system_name": "70-swc71",
                "remote_system_description": "S5328C-EI-24S",
                "remote_capabilities": 20
            }
        ]
    }
]

Note

Для уменьшения частоты захода на устройства есть возможность настроить кэш соседства

Формирование списка кандидатов

По полученному списку идентификаторов происходит поиск соседнего устройства ManagedObject и его порта Interface. При успехе пара текущее устройство -> порт, соседнее устройство -> соседний порт добавляются в список кандидатов. После формирования списка кандидатов начинается его проверка - система запрашивает таблицу соседей соседнего устройства и проверяет что за указанным соседним портом находится текущее устройство.

В данном случае возможны следующие ошибки: ...

Построение связи

В случае подтверждения начинается процедура создания связи (Link). Она регулируется настройкой Политика при опросе Discovery Policy в профиле интерфейса (Interface Profile). Доступны опции:

  • Ignored (Игнорировать) - не создавать связь (Link) с этим портом
  • Create New (Создавать новый) - не создавать связь, если таковая уже есть
  • Replace (Заменять) - создать связь с портом
  • Cloud (Облако) - добавть порт к существующей связи (образуется облако)

Для самой процедуры могут быть следующие варианты:

  • Новый связь - когда на обоих интерфейсах отсутствуют линки. Просто создаётся (если не выставлена опция Ignored) и заполняется поле first_discovered временем создания.
  • Существующая связь - между интерфейсами уже есть построенный линк. В этом случае происходит обновление поля last_seen (время когда система видела линк последний раз)
  • Другой линк - когда на интерфейсе есть линк и новый ведёт в другую сторону. Если выставлена опция Create New, то линк разрываться не будет. Если же перелинковка (Replace) разрешена, поведение регулируется приоритетом метода. Если линк нашёл более приоритетный метод - он его перестраивает. Если менее, то остаётся построенный более высоким приоритетом. Приоритет выставляется на сегмент в Профиле сегмента (Segment Profile)

Note

При создании линка поле first_discovered заполняется временем создания. При повторном нахождении обновляется поле last_seen.

Note

Удаление существующей связи производится если она не обнаружена на соседнем устройстве

Удаление связей

Если при проверке соседнего устройства текущее не обнаруживается в соседях и между ними есть связь (Link), то она разрывается. При этом, если устройство выведено из эксплуатации или порты перестали быть задействованы, то связь становится вечной, поскольку опрос не может обнаружить её отсутствие: по причине его отключения или отсутствия соседа. Не всегда это может быть удобным.

Если требуются очищать связи не обновляемые в течении какого-то времени, можно воспользоваться аргументом ttl_policy команды ./noc link.

Методы построения связи

Доступные методы построения линков:

  • Метод - метод построения связи
  • Протокол (Protocol) - используемый методом протокол определения соседей
  • Скрипт (Script) - необходимый скрипт в профиле для работы метода
  • Возможность (Capabilities) необходимая для запуска опроса
МетодПротоколСкриптCaps
CDPCDPget_cdp_neighborsNetwork CDP
REPREPget_rep_topologyNetwork REP
LLDPLLDPget_lldp_neighborsNetwork LLDP
STPSTPget_spanning_treeNetwork STP
UDLDUDLDget_udld_neighborsNetwork UDLD
OAMOAMget_oam_statusNetwork OAM
BFDBFDget_bfd_sessionsNetwork BFD
FDPFDPget_fdp_neighborsNetwork FDP
Huawei NDP (NTDP)Huawei NDPget_huawei_ndp_neighborsNetwork FDP
LACPLACPget_lacp_neighborsNetwork LACP
NRI---
ifDesc---
xMAC-get_mac_address_table-

Segment - отдельный метод построения связей на основе таблицы MAC адресов (FDB). В отличие от перечисленных в таблице он строит связи между устройствами одного сегмента и работает по расписанию сегмента.

Расчёт направления вверх

Обычный граф связности является ненаправленным: все узлы графа разнозначны друг другу. Но в реальных условиях сети делятся на слабосвязанные между собой кластеры - сегменты Network Segment. Связь между кластерами осуществляется через выделенные узлы (обзываются агрегаторы, концентраторы и т.д.). Информацию важно знать для правильной работы RCA - определения причины аварии по топологии. Если связность кластера проходит через один узел, то её недоступность вызовет недоступность всех узлов кластера.

В системе есть несколько подходов к вычислению направления вверх (Uplink) связи. Рассмотри их подробнее

Level

Положение устройства по отношению к другим. Чем выше уровень, тем важнее устройство для сети. Устройство выше уровнем текущего является вышестоящим и направление вверх считается через него. В качестве примера можно указать уровни устройство сети в зависимости от их роли.

RoleLevel
Client's Equipment10-19
CPE15
Access Level20-29
VPN Server22
WiFi Access Point22
Media Gateway23
Access Switch25
Aggregation Level30-39
WiFi Controller35
Aggregation Switch38
City Core40-49
L3 switch/router42
BRAS44
MPLS PE44
MPLS P46
ASBR48
Regional Core50-59
L3 switch/router52
MPLS PE54
MPLS P56
ASBR58
Macroregional Core60-69
L3 switch/router62
MPLS PE64
MPLS P66
ASBR68
National-wide Core70-79
L3 switch/router72
MPLS PE74
MPLS P76
ASBR78
World-wide Core70-79
L3 switch/router82
MPLS PE84
MPLS P86
ASBR88

Иерархия сегментов

В НОКе для устройства обязательно задаётся его сегмент Network Segment. Устройства, находящиеся в родительском сегменте по отношению к сегменту устройства, являются вышестоящими и направление вверх считается через них.

IP Адрес

В качестве критерия можно использовать IP адрес устройства. Зачастую, вышестоящим устройствам (шлюзам) назначают младший или старший IP адрес из диапазона IP сети. Это можно использовать

Настройки

Настройки опроса по методам находятся на вкладке Box в разделe топология Managed Object Profile. Для активации метода необходимо поставить напротив него галочку.

Требования по каждому из методов указаны в разделе. Необходимо учитывать следующие требования:

  • L2 связь строится между интерфейсами, по этой причине у устройства должен быть включён опрос инетерфейсов Interface
  • Для запуска методов он должен поддерживаться на устройстве, так что необходимо включить опрос возможностей Capabilities. Для методов ifDesc, xMAC и NRI не требуется.
  • Часть методов производят поиск устройств по идентификатору, для них необходимо включить опрос ID

Помимо настройки опроса необходимо включить метод в приоритете методов.

Приоритет методов

Настройка приоритетов расположена в Профиле сегмента Network Segment Profile - Методы построения топологии. Если устройство поддерживает несколько методов построения связи может возникнуть ситуация когда информация от разных методов отличается. Например по описанию интерфейса (ifDesc) связь строится с одним устройством, а по LLDP с другим. В это случае победит метод, расположенный выше по приоритету.

Note

Если метод отсутствует в списке приоритетов - опрос по нему не проводится

После прохождения опроса должны построиться связи. При возникновении ошибок они напишутся в лог.

Кэш соседей

Для построение связи обязательным условием является её подтверждение с двух сторон. Если у устройства достаточно большое число соседей процедура подтверждения может привести к повышенной нагрузке (при опросе каждого соседа НОК будет заходить на устройство). Для облегчения ситуации предусмотрен Кэш соседей (Neighbor cache). При его включении на указанное время (TTL) система запоминает соседей устройства и при не заходит на него. По истечении времени кэш очищается и при опросе потребуется заход на устройство.

Настройка расположена в Профиле объекта Managed Object Profile Управление объектами (Service Activation) -> Настройки (Setup) -> Профиль объекта (ManagedObject Profile) на вкладке Box. По умолчанию выставлена в 0, т.е. отключено. Значение больше 0 определяет время в течении которого система запоминает полученную с устройства информацию и при поиске соседа обращается к ней, а не к устройству. Использование соседей из кэша можно увидеть в логе опроса по записи: [discovery|box|<MONAME>|lldp] Use neighbors cache.

Warning

При включённом кэше соседей новые соседи устройства будут увидены системой только после истечения времени запоминания. Это может вводить в заблуждение.

Работа с топологией

  • Схема сегмента
  • Ттрассировка пути на верх из карточки
  • Расчёт пути path
  • Расчёт RCA в авариях Корреляция по топологии
  • Отчёты по метрикам с учётом топологии