Возможности работы НОКа с топологией¶
Одним из ключевых компонентов НОКа это топология сети. Она представлена в виде графа связности оборудования (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
)
- MAC адреса устройства (
- Идентификатор порта устройства - позволяется определить порт соседа к которому идёт связь. Например:
- Имя интерфейса (
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 |
---|---|---|---|
CDP | CDP | get_cdp_neighbors | Network CDP |
REP | REP | get_rep_topology | Network REP |
LLDP | LLDP | get_lldp_neighbors | Network LLDP |
STP | STP | get_spanning_tree | Network STP |
UDLD | UDLD | get_udld_neighbors | Network UDLD |
OAM | OAM | get_oam_status | Network OAM |
BFD | BFD | get_bfd_sessions | Network BFD |
FDP | FDP | get_fdp_neighbors | Network FDP |
Huawei NDP (NTDP) | Huawei NDP | get_huawei_ndp_neighbors | Network FDP |
LACP | LACP | get_lacp_neighbors | Network LACP |
NRI | - | - | - |
ifDesc | - | - | - |
xMAC | - | get_mac_address_table | - |
Segment - отдельный метод построения связей на основе таблицы MAC адресов (FDB
). В отличие от перечисленных в таблице он строит связи между устройствами одного сегмента и работает по расписанию сегмента.
Расчёт направления вверх¶
Обычный граф связности является ненаправленным: все узлы графа разнозначны друг другу. Но в реальных условиях сети делятся на слабосвязанные между собой кластеры - сегменты Network Segment. Связь между кластерами осуществляется через выделенные узлы (обзываются агрегаторы, концентраторы и т.д.). Информацию важно знать для правильной работы RCA - определения причины аварии по топологии. Если связность кластера проходит через один узел, то её недоступность вызовет недоступность всех узлов кластера.
В системе есть несколько подходов к вычислению направления вверх (Uplink
) связи. Рассмотри их подробнее
Level¶
Положение устройства по отношению к другим. Чем выше уровень, тем важнее устройство для сети. Устройство выше уровнем текущего является вышестоящим и направление вверх считается через него. В качестве примера можно указать уровни устройство сети в зависимости от их роли.
Role | Level |
---|---|
Client's Equipment | 10-19 |
CPE | 15 |
Access Level | 20-29 |
VPN Server | 22 |
WiFi Access Point | 22 |
Media Gateway | 23 |
Access Switch | 25 |
Aggregation Level | 30-39 |
WiFi Controller | 35 |
Aggregation Switch | 38 |
City Core | 40-49 |
L3 switch/router | 42 |
BRAS | 44 |
MPLS PE | 44 |
MPLS P | 46 |
ASBR | 48 |
Regional Core | 50-59 |
L3 switch/router | 52 |
MPLS PE | 54 |
MPLS P | 56 |
ASBR | 58 |
Macroregional Core | 60-69 |
L3 switch/router | 62 |
MPLS PE | 64 |
MPLS P | 66 |
ASBR | 68 |
National-wide Core | 70-79 |
L3 switch/router | 72 |
MPLS PE | 74 |
MPLS P | 76 |
ASBR | 78 |
World-wide Core | 70-79 |
L3 switch/router | 82 |
MPLS PE | 84 |
MPLS P | 86 |
ASBR | 88 |
Иерархия сегментов¶
В НОКе для устройства обязательно задаётся его сегмент 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 в авариях Корреляция по топологии
- Отчёты по метрикам с учётом топологии