Інтернет-конференції НУБіП України, ТЕОРЕТИЧНІ ТА ПРИКЛАДНІ АСПЕКТИ РОЗРОБКИ КОМП’ЮТЕРНИХ СИСТЕМ '2025

Розмір шрифту: 
Cisco NSO: огляд та можливості використання
Олексій Євгенович Клименко

Остання редакція: 23-04-2025

Тези доповіді


Клименко О.Є.

 

Cisco Network Services Orchestrator (NSO), розроблений компанією Tail-f і придбаний Cisco у 2014 році, є платформою для автоматизації мережевих сервісів. Продукт забезпечує гнучкість, масштабованість та швидкість у впровадженні сервісів без потреби в ручній конфігурації. NSO підтримує як фізичні, так і віртуальні пристрої у мультивендорному середовищі. Головна ідея – перевести налаштування мережевих послуг у модель на основі стандартів, яка дозволяє швидко створювати, оновлювати і видаляти сервіси. NSO працює на основі YANG-моделей. YANG (Yet Another Next Generation) – це мова моделювання даних, стандартизована IETF (Internet Engineering Task Force). Вона дозволяє визначати структуру даних, перевіряти коректність введених значень та реалізовувати зв’язки між даними. У NSO YANG використовується для опису сервісів. В моделі можна використовувати типи даних, шаблони, обмеження, унікальність значень, перевірку регулярними виразами тощо. YANG-моделі є критично важливими для забезпечення валідної конфігурації та автоматизованих перевірок узгодженості параметрів.

NSO включає засіб для емуляції мережевих пристроїв під назвою netsim. Ці пристрої дозволяють створювати віртуальне середовище без потреби в реальному обладнанні. Через NED (Network Element Drivers) NSO взаємодіє з пристроями через CLI, NETCONF або SNMP. Наприклад, можна створити пристрої Cisco IOS або Dell та використовувати CLI команди для перевірки конфігурацій. Це корисно для підготовки шаблонів сервісів.

Дизайн сервісу в NSO включає створення YANG-моделі, XML-шаблону конфігурації та, за потреби, скриптів на Python чи Java. Створення нового сервісу передбачає створення директорій із шаблоном сервісу. NSO GUI генерує HTML-форму для введення значень користувачем, які передаються до шаблону. Шаблони містять змінні, які підставляються залежно від обраного пристрою. Таким чином, система автоматично генерує конфігурацію для конкретного пристрою, враховуючи його платформу (IOS, IOS-XR, NX-OS тощо).

Скрипти на Python дозволяють виконувати додаткову логіку під час створення або модифікації сервісу. NSO передає параметри, введені користувачем, до скрипту. Наприклад, можна реалізувати попередні або постконфігураційні перевірки. Також можна використовувати багатопоточність для фонових перевірок. Скрипти мають доступ до змінних, шаблонів і можуть керувати тим, як саме застосовується конфігурація. Хоча YANG дозволяє базову валідацію, складні перевірки, наприклад, перевірка унікальності VPN ID в усій мережі або вільності інтерфейсів, вимагають зовнішніх скриптів для перевірки узгодженості параметрів. Такі скрипти можуть взаємодіяти з базами даних або перевіряти локальні конфігурації на NSO, щоб гарантувати, що обрані параметри не суперечать існуючим. Це особливо важливо у великих інфраструктурах, де ручні помилки критичні.

NSO дозволяє створювати сервіси оновлення програмного забезпечення для пристроїв. Такий сервіс може автоматично завантажувати образи, виконувати валідацію, оновлювати пристрої поетапно, проводити попередні і постоновлювальні перевірки, формувати звіти про зміни. Це складний процес, який вимагає детального програмування, але може значно зменшити ризики та витрати при масштабних оновленнях.

Багато прикладів, документації та шаблонів можна знайти у спільноті Cisco, на GitHub або DevNet. Проте відсутність єдиного стандарту та фрагментарність інформації ускладнюють навчання та впровадження для новачків. Особливо складно знайти відповіді на нестандартні або глибокі питання.

У таблиці 1 наведено доречність використання Cisco NSO в залежності від типу мережі.

Таблиця 1

Співставлення Cisco NSO та типів комп’ютерних мереж за функцією та масштабом

Тип організації

Підходить

Причина

Оператори зв'язку, телекомунікації

Так

Масштабне надання послуг, часті зміни, інтеграція з OSS/BSS (система підтримки операцій/система підтримки бізнесів), уніфіковане управління сервісами, підтримка мультивендорного середовища

Дата-центри (ДЦ)

Так

Автоматизація впровадження VLAN, IPAM, тунелів, firewall-політик

Корпоративні мережі (Enterprise)

Частково

Якщо є великий стек мережі або мультивендорна система. Складніший у запуску

Хмарні провайдери

Частково

Може доповнити SDN, CI/CD, але менш популярне у cloud-native сценаріях

Малі компанії (SMB)

Ні

Занадто складна та дорога, немає потреби у такій гнучкості

 

У великих компаніях доцільно використовувати: NetBox (Source of Truth, джерело правди), Nornir, Napalm або Ansible – для повного контролю, керування та автоматизації. Cisco NSO – все в одному, а також трансакційна модель, але значно складніше для невеликих проектів. У таблиці 2 наведено порівняння використання різних систем для автоматизації.

Таблиця 2

Сценарії використання Cisco NSO та інших систем для автоматизації

Сценарій

Інструмент

Масштабна оркестрація сервісів

Cisco NSO

Автоматизація типових задач CLI

Ansible, Nornir

CMDB (база даних керування конфігурацією) / Source of Truth

NetBox

Гнучкий кодовий контроль мережі

Nornir, Napalm

Просте редагування конфігурацій

Ansible, Napalm

Провайдер / оператор рівня Tier-1

Cisco NSO

 

NSO не є ідеальною або повністю автоматизованою платформою – вона потребує значних зусиль зі створення YANG-моделей, шаблонів і скриптів. Автоматизація можлива, але вимагає досвідчених інженерів і значних вкладень часу. Для великих компаній та провайдерів NSO може дати реальні переваги. Проте в умовах малого або середнього бізнесу вигоди не завжди виправдовують витрати.

 

СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ

1. Dahir H., Davis J., Clark S., Snyder Q. Cisco Certified DevNet Professional DEVCOR 350-901 Official Cert Guide. Cisco Press. 2022.

2. Cisco Crosswork NSO documentation. URL: https://cisco-tailf.gitbook.io/nso-docs/guides/administration/installation-and-deployment  (дата звернення: 06.04.2025).