---
# System prepended metadata

title: NOC Roadmap

---

# NOC Roadmap

``` mermaid
graph LR
    kafka[Kafka]
    kafka_sg[Kafka Subscriber Groups]
    envoy[Envoy]
    envoy_mesh[Envoy Service Mesh]
    envoy_acme[Envoy/ACME]
    consul_decline[Decline of the Consul]
    healthchecks[Healthchecks]
    virtual_appliance["Virtual Appliance"]
    saas["SaaS"]
    py3.12["★ Python 3.12 support"]
        style py3.12 fill:#f1c40f
    gufo_err_integration[Gufo Err Integration]
    gufo_loader_integration[Gufo Loader Integration]
    http_client[New HTTP Client]
        style http_client fill:#f1c40f
    snmp_v3["SNMPv3 Support"]
        style snmp_v3 fill:#27ae60
    snmp_v3_config[SNMPv3 Config]
        style snmp_v3_config fill:#27ae60
    runner_scripts[Runer: Scripts]
    runner_ui[Runner: UI]
    mrt_decline[Decline of the MRT]
    neighbor_tables[Neighbor Tables]
    discovery_decompose[Decomposition of Discovery]
    purgatorium_configuration[Purgatorium Configuration]
    network_scan[Network Scan]
    mo_discovery[Managed Object Discovery]
    purgatorium[Purgatorium]
    mo_etl[MO ETL]
    no_cython[Cython Dependency Removal]
    gufo_snmp_migration[Gufo SNMP Migration]
    channel_model[Channel Data Model]
    vlan_trails[VLAN Trails]
    vxlan_trails[VXLAN Trails]
    no_sae[SAE MO Removal]
    gufo_ping_dgram([Gufo Ping: DGRAM socket])
    gufo_ping_udp([Gufo Ping: UDP socket])
    gufo_snmp_v3([Gufo SNMP: v3 support])
        style gufo_snmp_v3 fill:#27ae60
    gufo_ping_3.12([Gufo Ping: Py3.12 packets])
        style gufo_ping_3.12 fill:#27ae60
    gufo_snmp_3.12([Gufo SNMP: Py3.12 packets])
        style gufo_snmp_3.12 fill:#27ae60
    gufo_snmp_mib([Gufo SNMP: MIB Support])
    gufo_snmp_traps([Gufo Snmp: Traps API])
    gufo_http([Gufo HTTP])
        style gufo_http fill:#27ae60
    mo_templates[Managed Object Templates]
    envoy --> envoy_mesh
    envoy --> envoy_acme
    envoy_mesh --> consul_decline
    kafka --> kafka_sg
    kafka_sg --> consul_decline
    gufo_ping_dgram --> healthchecks
    gufo_ping_udp --> healthchecks
    http_client --> py3.12
    gufo_snmp_v3 --> snmp_v3
    gufo_ping_3.12 --> py3.12
    gufo_snmp_3.12 --> py3.12
    gufo_http --> http_client
    http_client --> healthchecks
    snmp_v3_config --> snmp_v3
    runner_scripts --> mrt_decline
    runner_ui --> mrt_decline
    runner_ui --> discovery_decompose
    neighbor_tables --> discovery_decompose
    consul_decline --> virtual_appliance
    envoy_acme --> virtual_appliance
    purgatorium_configuration --> network_scan
    network_scan --> mo_discovery
    purgatorium_configuration --> mo_discovery
    neighbor_tables --> mo_discovery
    purgatorium_configuration --> purgatorium
    mo_discovery --> purgatorium
    mo_etl --> purgatorium
    healthchecks --> purgatorium
    py3.12 --> virtual_appliance
    gufo_snmp_mib --> gufo_snmp_migration
    gufo_snmp_traps --> gufo_snmp_migration
    gufo_snmp_migration --> no_cython
    gufo_snmp_v3 --> gufo_snmp_migration
    channel_model --> vlan_trails
    channel_model --> vxlan_trails
    runner_scripts --> vlan_trails
    runner_scripts --> vxlan_trails
    no_cython --> virtual_appliance
    virtual_appliance --> saas
    network_scan --> no_sae
    mo_templates --> mo_discovery
```

## Envoy Proxy

Заменить Nginx на Envoy.

Profit:
* Service healthcheck
* Loadbalance policies

Steps:
* Обкатать в Gufo Thor на Docker

## Envoy ACME
Интегрировать Envoy с Gufo ACME для автоматической генерации сертификатов (при условии, что HTTPS endpoint глобально доступен)

Profit:
* Упрощение развертывания системы

## Envoy Service Mesh
Использовать Envoy для маршрутизации вызовов внутреннего API.

Profit:
* Healthcheck
* Load balancing
* Отсутсвие необходимости в Consul
* Вынос интеграции с Consul из сервисов

## Decline of the Consul
Отказаться от использования Consul.

Profit:
* Упрощение системы
* Повышение надежности
* Экономия ресурсов для однонодовых инсталляций

## Kafka
Интеграция с Kafka

Pros:
* Миграция с неподдерживаемого сервиса Liftbridge.

## Kafka Subscriber Group
Добиться динамичности работы системы за счет отказа от фиксированных слотов и использования Subscriber Groups.

Pros:
* Гибкое балансирование наргрузки на consumer
* Сохранение событийной консистентности на уровне MO

## Healthchecks
Необходимо предусмотреть расширенный механизм проверки работоспособности MO, который может включать в себя одну или несколько проб: icmp ping, udp ping, snmp ping, tcp connect, http probe, etc. Кроме того, возможна проверка сторонних сервисов.

Pros:
* Гибкая политика определения работоспособности

## New HTTP Client
http-parser более не поддерживается и несовместим с py3.12

Steps:
* Реализовать отдельную библиотеку

## SNMP v3
Реализовать поддержку SNMP v3

## Runner Scripts
Реализовать в Runner поддержку запуска скриптов

## Decline of the MRT
Runner полностью покрывает функционал MRT и позволяет его заменить.

Profit:
* Improved security
* Unified user experience
* Run Now становится ad-hoc конструктором job'ов

## Runner UI
Реалиизовать UI для контроля и управления задачами Runner

## Virtual Appliance
Реализовать процесс сборки и доставки VA на регулярной основе

## Python 3.12
Перейти на версию Python 3.12

Profit:
* Рост производительности

## Gufo Err Integration
Gufo Err является обобщением механизма noc.core.debug и полностью его заменяет

Profit:
* Поддержка code positions Py3.11+
* Гибкое управление выводом
* Расширенное тестирование
* Документированный API для разработчиков

## Gufo Loader Integration
Gufo Loader является обобщением механизма loader

Profit:
* Typing
* Code completion
* Multiple customs

Problems:
* Script loader?

## Decomposition of Discovery
Задания discovery могут быть представлены в виде графа задач для runner, а существующие checks выполнены как action.

Profit:
* Снижение нагрузки на mongo
* Общий инструментарий для мониторинга выполнения
* Семафоры и locks для ограничения нагрузки
* Гибкая конфигурация заданий для MO

## Neighbor Tables

Топологические проверки в discovery должны быть преобразованы в запуск скриптов для обнаружения соседей с последующим стримингом результата сервису topo. Сервис topo должен самостоятельно обнаруживать изменения топологиии.

Profit:
* Снижение нагрузки на базу
* Возможность архивирования первичной информации
* Data locality & caching
* MPLS/L3 topology.

## Network Scan

Сканирование сети для поиска новых MO

## MO ETL
ETL для MO должен добавлять объекты только через Purgatorium

## Pugratorium
Чистилище MO, дедупликациия, начальные проверки, добавление в базу.

* Проверка реквизитов доступа до добавления в базу

## Chanel Model
Модель данных для каналов

## VLAN Trails
Автоматическая прокладка/разборка VLAN

## VXLAN Trails
Автоматическая прокладка/разбока VXLAN/eVPN

## SAE MO Removal
Удаление managed object SAE