91
Некоторые вопросы автоматизации сетей передачи данных ООО «Солидекс» Ровнов Павел 20 декабря 2019 года

Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

Некоторые вопросы автоматизации сетей

передачи данных

ООО «Солидекс»

Ровнов Павел

20 декабря 2019 года

Page 2: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

2

Содержание

• Пролог

• Задание состояния сети

• Тестирование корректности конфигурационных файлов

• Поддержание сети в заданном состоянии

Page 3: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

3

Вопросы, рассматриваемые в презентации

• Как создать нужную вам сеть

• Как поддерживать сеть в заданном состоянии

Page 4: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

4

Способы задать состояние сети

• Задание конфигурации сети

• Изменение рабочего состояния: операционные команды,

например, «ifdown eth0», «reboot»

• Взаимодействие с Control Plane (например, BGP)

• Программирование RIB, FIB (например, OpenFlow)

Page 5: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

5

• Задание конфигурации сети

– Интерактивный ввод команд в CLI, TCL, Expect

– Шаблоны конфигурационных файлов

– “Network as Сode”

• Изменение рабочего состояния: операционные команды,

например, «ifdown eth0», «reboot»

• …

Способы задать состояние сети

Page 6: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

6

Модель жизненного цикла сети

Обследование

Формирование требований к

системе

Разработка ТЗ

Разработка технического

решения

Проверка решения (PoC)

Создание и загрузка конф.

файлов*

Проверка состояния сети

Проверка соответствия ТЗ

(ПиМ)

* См. Семинар-2018

Эксплуатация

Page 7: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

7

Факторы усложнения сетей

• Число приложений, типы генерируемого трафика

• Увеличение количества устройств в сети

• Усложнение Control plane

• «Технический долг»

• Увеличение степени непредсказуемости поведения сети

как результат Configuration drift

• Требования безопасности

Page 8: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

8

Модель жизненного цикла сети

Конфигурационные файлы Схемы, таблицы Функционирующая сеть

Обследование

Формирование требований к

системе

Разработка ТЗ

Разработка технического

решения

Проверка решения (PoC)

Создание и загрузка конф.

файлов*

Проверка состояния сети

Проверка соответствия ТЗ

(ПиМ)

Эксплуатация

Page 9: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

9

Задачи разработки (Dev)

• Изучение и анализ текущего состояния сети

• Разработка технического решения: схем и таблиц

• Создание конфигурационных файлов из схем и таблиц

• Проверка состояния сети: синтаксис и семантика конфигов

Конфигурационные файлы Функционирующая сеть Схемы, таблицы

Page 10: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

10

Задачи эксплуатации (Ops)

• Мониторинг заданного состояния

• Обнаружение, диагностика отказов, восстановление

работоспособности

Конфигурационные файлы Функционирующая сеть Схемы, таблицы

Page 11: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

11

Риски Dev в условиях усложнения сетей

• Потеря уверенности в корректности изменений как

результат неудачных изменений

• Внесение изменений в согласованные «окна»

• Блокирование внесения изменений с целью обеспечить

работоспособность

Page 12: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

12

Риски Ops в условиях усложнения сетей

• Непредвиденные перерывы в обслуживании

• Отсутствие понимания, что происходит в сети

• Увеличение времени диагностики и восстановления

работоспособности после отказов

Page 13: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

13

• Разработка:

– Изменение состояния сети

– Придание сети свойств, которых изначально не было

• Эксплуатация:

– Поддержание заданного состояния

Dev+Ops

Эксплуатация Разработка

Page 14: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

14

Dev+Ops vs. DevOps

Эксплуатация Разработка

Разработка+Эксплуатация

• Dev+Ops:

• DevOps:

Page 15: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

15

Идеи

• Изменить подход связанный с поддержанием сети в

заданном состоянии с тем, чтобы была возможность

вносить изменения безопасным образом

• Снизить издержки и риски, связанные с потерями

работоспособности сети, автоматизировав диагностику и

восстановление после отказов

Page 16: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

16

Содержание

• Пролог

• Задание состояния сети

– Вопрос непротиворечивости и полноты информации о

сети

– Парадигмы задания конфигурации сети

• Тестирование корректности конфигурационных файлов

• Поддержание сети в заданном состоянии

Page 17: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

17

Задача: перейти из состояния «А» в «Б»

Конфигурационные файлы Схемы, таблицы

Конфигурационные файлы Схемы, таблицы

А

А

А

А

Б

Б

Б

Б

Page 18: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

18

Необходимые данные о состоянии «А»

• Имена устройств

• L1/L2 топология сети

• IP адреса интерфейсов

• Параметры протоколов маршрутизации

• Параметры сервисов DNS, NTP, Syslog

• ACL

• …

Page 19: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

19

Критерии выбора источника информации

• Непротиворечивость данных

• Простота поддержания непротиворечивости данных

Page 20: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

20

Конфигурационные файлы как источник данных

Б

Б

Б

Б

Конфигурационные файлы Схемы, таблицы

А

А

А

А

Page 21: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

21

Пример одной организации

1.Выгрузка

2. Структурный

анализ 3. Создание новых

конфигураций

А

А

А

А

Б

Б

Б

Б

4. Загрузка

Page 22: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

22

Оценка подхода

• Проблема установления взаимосвязи между параметрами

конфигураций и техническим решением

• Необходимость управления configuration drift вручную

• Необходимость структурного анализа конфигурационных

файлов

Page 23: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

23

Подход SSoT (Single Source of Truth)

Конфигурационные файлы Схемы, таблицы

Конфигурационные файлы Схемы, таблицы

А

А

А

А

Б

Б

Б

Б

SSoT

SSoT

Page 24: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

24

Подход SSoT (Single Source of Truth)

Конфигурационные файлы Схемы, таблицы

Конфигурационные файлы Схемы, таблицы

А

А

А

А

Б

Б

Б

Б

SSoT

SSoT

Python

Python

Ш

Шаблон

Page 25: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

25

Критерии выбора источника информации

• Непротиворечивость данных

• Простота поддержания непротиворечивости данных

Дополнительное требование:

• Пригодность к автоматизации

Page 26: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

26

Варианты реализации SSoT

• Файлы YAML (пример: Ansible)

• Инструменты DCIM, IPAM

DCIM = Data Center Infrastructure Management

IPAM = IP Address Management

Page 27: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

27

DCIM/PAM

• Инструменты:

– Netbox (github.com/netbox-community/netbox)

– NSoT (github.com/dropbox/nsot)

DCIM = Data Center Infrastructure Management

IPAM = IP Address Management

Page 28: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

28

SSoT: Getting started

• Упростить конфигурацию сети

• Стандартизовать конфигурационные файлы

• Отделить ключевые параметры (информация SSoT) от

представления (шаблон конфигурационного файла)

• Автоматизировать создание конфигурационных файлов

Конфигурационные

файлы Б

Б

Б

Б

SSoT

Ш

Шаблон

Python

Page 29: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

29

Бонусы SSoT

• Упрощается отслеживание изменений

• Документирование сети

• Возможность идентификации изменений, внесенных

вручную

• Упрощается проверка конфигураций устройств сети на

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

DCIM = Data Center Infrastructure Management

IPAM = IP Address Management

Page 30: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

30

Демо

• Задача: настройка коммутаторов 10G для

лаборатории

• Netbox:

– Имена устройств и их management IP

– Роли: “leaf”, “spine”

– BGP router id, ASN

• Создание и загрузка конфигураций: Ansible

(inventory plugin: netbox)

Page 31: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

31

Содержание

• Пролог

• Задание состояния сети

– Вопрос непротиворечивости и полноты информации о

сети

– Парадигмы задания конфигурации сети

• Тестирование корректности конфигурационных файлов

• Поддержание сети в заданном состоянии

Page 32: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

32

Требования к способу задания конфиг. файлов

• Поддержка SSoT в качестве источника информации о сети

• Ограничить, где это возможно, участие оператора

Page 33: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

33

Парадигмы задания конфигурационных файлов

• Интерактивный ввод команд в CLI, TCL, Expect

• Шаблоны конфигурационных файлов

• “Network as Сode”

Page 34: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

34

Парадигма шаблонов конфигурационных файлов

• Синтаксис конфигурационных файлов на выходе – CLI

• Роль шаблона: подстановка информации SSoT в конфиг,

выполнение простейшей логики (прим.: ветвление, циклы)

• Пример: Jinja2

Конфигурационные

файлы

Б

Б

Б

Б

SSoT

Ш

Шаблон

Python

Page 35: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

35

Пример решения

• Задача: ввод в действие 150 площадок сети

• Создание конфигов:

– SSoT: YAML

– Шаблоны Jinja2

• Загрузка конфигов:

– Ansible/NAPALM

Page 36: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

36

Использование шаблона Jinja2 на примере

Page 37: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

37

Оценка решения

• Взаимодействие с устройством через терминал как

следствие использования синтаксиса CLI:

– Проблема порядка команд

– Проблема сверки текущего и загружаемого

набора команд

• Свой набор шаблонов для каждой сетевой ОС

Page 38: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

38

Парадигма «Network as Code»

• Использование API для программирования устройств, что

предполагает формирование и обмен структурированными

данными (например, JSON, XML)

• Использование SSoT

• Git как система контроля версий

Page 39: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

39

Модели YANG

• YANG – язык моделирования конфигураций и

состояния сетевых элементов (RFC 6020, RFC 7950)

• YANG модель – описание сетевого элемента

Page 40: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

40

Источник: https://medium.com/@k.okasha/yang-and-road-to-a-model-driven-network-

e9e52d47148d

Сравнение подходов: CLI vs. YANG

CLI

YANG

Page 41: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

41

Пример: сетевой интерфейс (YANG/OC*/XML)

<interfaces xmlns="http://openconfig.net/yang/interfaces">

<interface>

<name>ge-0/0/2</name>

<subinterfaces>

<subinterface>

<index>0</index>

<config>

<description>Primary public IP address</description>

</config>

<ipv4 xmlns="http://openconfig.net/yang/interfaces/ip">

<addresses>

<address>

<ip>192.168.12.1</ip>

<config>

<ip>192.168.12.1</ip>

<prefix-length>24</prefix-length>

</config>

</address>

</addresses>

</ipv4>

</subinterface>

</subinterfaces>

</interface>

</interfaces> * OpenConfig

Page 42: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

42

Источники YANG-моделей

• Организации стандартизации:

– IETF

– IEEE

• Рабочие группы, например:

OpenConfig

• Производители оборудования

Page 43: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

43

Модели данных OpenConfig

Page 44: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

44

Демо

• Задача: обеспечение связности

между маршрутизаторами

(настройка IP интерфейсов)

• Модель:

– Источник: OpenConfig

– Кодирование: XML

• Механизм создания: Jinja2 (Ansible) Cisco

CSR1000V

Juniper vMX

Page 45: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

45

Создание конфигураций на Python

• Примеры YANG

DevKit:

– pyangbind

– ydk-py

Page 46: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

46

Задание конфигурации интерфейса (ydk-py)

Page 47: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

47

Демо

• Задача: обеспечение связности

между маршрутизаторами

(настройка IP интерфейсов)

• Модель:

– Источник: OpenConfig

– Кодирование: XML

• Механизм создания: ydk-py Cisco

CSR1000V

Juniper vMX

Page 48: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

48

Создание OC/XML без написания кода

• yaml_to_ydk (https://github.com/networkop/yang)

YAML

Python,

yaml_to_ydk

Python,

ydk

OC/XML

Python

Page 49: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

49

Нюансы YANG

• Поддержка источников и типов моделей со стороны

производителя

• Различия в версиях одной и той же YANG модели

• Функции и их реализации, к примеру настройка IP

интерфейса:

– Routed interface: interface > subinterface > IP

– BVI/SVI: vlan > routed vlan > IP

BVI = Bridge Group Virtual Interface

SVI = Switch VLAN Interface

Page 50: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

50

Перспективы использования YANG

• Модели сервисов

Page 51: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

51

Содержание

• Пролог

• Задание состояния сети

• Тестирование корректности конфигурационных файлов

• Поддержание сети в заданном состоянии

Page 52: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

52

Тестирование после ввода в действие

Конфигурационные файлы Схемы, таблицы Функционирующая сеть

Обследование

Формирование требований к

системе

Разработка ТЗ

Разработка технического

решения

Проверка решения (PoC)

Создание и загрузка конф.

файлов

Проверка состояния сети

Проверка соответствия ТЗ

(ПиМ)

Эксплуатация

Page 53: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

53

Пример тестирования (1)

• Проект: ввод в действие Security Gateway

• Перечень проверок:

– Настройки IP интерфейсов

– Доступность next-hop устройств

– BGP: установление соседства, получение префиксов

Page 54: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

54

Пример тестирования (2)

• Перечень проверок:

– IP связность с точки зрения тестового клиента

– ААА и динамическое назначение сервисов

– Административный доступ: учетные записи и ACL

– Регистрация сообщений об установленных соединениях

и отправка сообщений в Syslog-сервер

– …другие проверки

Page 55: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

55

Пример тестирования (3)

• Инструмент: Ansible (мод. fortiosconfig, napalm_get_facts)

Page 56: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

56

Тестирование до ввода в действие

Цели:

• Проверка синтаксиса: выявить ошибки, опечатки

• Проверка семантики: работоспособности конфигурации,

влияния изменений на существующие сервисы

Обследование

Формирование требований к

системе

Разработка ТЗ

Разработка технического

решения

Проверка решения (PoC)

Создание и загрузка конф.

файлов

Проверка состояния сети

Проверка соответствия ТЗ

(ПиМ)

Эксплуатация

Page 57: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

57

Что можно протестировать?

• Сервисы по отдельности (unit-тесты)

– Пример: проверка что интерфейс добавлен в процесс

OSPF, OSPF-соседство установлено

• Функциональное тестирование (end-to-end)

– Пример: проверка доступности веб-сервера с точки

зрения пользователя

• Поведение сети при введении возмущений: сценарии

“если …, то …”

Page 58: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

58

Способы тестирования

• Текстовый анализ

• Эмуляция

• Моделирование

Page 59: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

59

Текстовый анализ

• Проверка синтаксиса

• Проверка наличия и значения параметра в

конфигурационном файле

hostname egde-rtr1

!

!

ip name-server 192.168.1.100

Page 60: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

60

Эмуляция

• Создание копии сети в виртуальной среде

• Выполнение тестов:

– Состояние конфигурационного файла в устройстве

– Unit-тесты

– Функциональное тестирование

– Введение отказов и проверка состояния сети

Page 61: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

61

Моделирование

• Создание математической копии сети, например, по

конфигурационным файлам

• Выполнение тестов (в зависимости от возможностей среды

моделирования):

– Непротиворечивость конфигурационных файлов

– IP связность, пути прохождения трафика

– Проверка корректности ACL, политик FW

– Моделирование отказов

Batfish

Page 62: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

62

Сравнение способов тестирования

• Текстовый анализ

• Эмуляция

• Моделирование

Источник: https://www.intentionet.com/blog/the-what-when-and-how-of-network-validation/

Page 63: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

63

Тестирование до ввода в действие

• Процедуры:

– Тестирование состояния сети при изменениях (CI)

– Загрузка конфигурационных файлов (CD/CD)

• Инструменты:

– Git

– GitLab

– VirtualBox, Vagrant

– Ansible

– Behave

Page 64: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

64

Continuous Integration

• Автоматическое поднятие тестовой среды при

обнаружении изменений (git)

• Выполнение тестов

• Подготовка к переносу кода в рабочую среду

Page 65: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

65

Continuous Delivery

• Публикация нового состояния сети:

– Исходных данных для настройки (SSoT)

– Кода, шаблонов для создания конф. файлов устройств

– Сценариев управления состоянием сети

Page 66: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

66

Continuous Deployment

• Загрузить новые конфигурационные файлы в устройства

Page 67: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

67

Инструменты CI*

* Один из вариантов

Page 68: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

68

Git

• Хранение конфигурационных файлов

• Контроль версий

• Управление ветками (пример: test, dev-ipv6, prod)

• Документирование изменений

Page 69: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

69

GitLab

• Запуск тестов удаленно: GitLab Runner

• Выполнение тестов: проверка синтаксиса (yamllint)

• GUI

• Оповещение о событиях (email)

Page 70: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

70

VirtualBox, Vagrant

• VirtualBox: гипервизор

• Vagrant: оркестровка среды тестирования

– Создание, запуск, разрушение VM

– Построение L1/L2 сетевой топологии

Page 71: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

71

Ansible

• Загрузка конфигурационных файлов в устройства

• Получение данных о состоянии конфигурационных

файлов, рабочем состоянии устройств для целей тестов

Page 72: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

72

Behave

Выполнение сценариев проверки:

• Описание сценариев

• Запуск

• Контроль результатов

Page 73: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

73

Демо

• Задача: добавление нового сервера в

лабораторию

• Инструменты:

Page 74: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

74

Усиление тестов с Batfish

Batfish

Факторы:

• Полнота тестов

• Ресурсы, требуемые для выполнения тестов

• Скорость выполнения тестов

Page 75: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

75

Демо

• Задача: построение BGP фабрики ЦОД

• Инструменты:

Batfish

Page 76: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

76

Другие инструменты

• Среда для эмуляции:

– EveNG

– vrnetlab

– OpenStack

• CI

– Drone CI

• Управление сценариями

проверок:

– Robot framework

• Тестирование :

– pytest

– pyATS

Page 77: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

77

Вопрос топологии (предстоит рассмотреть)

Создание файла сетевой топологии для целей тестов:

• Эмуляция:

– Netbox → vagrant_net* →Vagrantfile

– Netbox → ? → Dot → Cumulus Topology Converter →

Vagrantfile

• Моделирование:

– Netbox → ? → Batfish layer1-topology.json

* github.com/malbertus/vagrant_net

Page 78: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

78

Содержание

• Пролог

• Задание состояния сети

• Тестирование корректности конфигурационных файлов

• Поддержание сети в заданном состоянии

Page 79: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

79

Задачи

• Мониторинг состояния сети, обнаружение отказов,

диагностика, восстановление работоспособности

• Управление трафиком (traffic engineering)

• Планирование: определение доступной емкости

• Задачи безопасности (напр., Anti-DDoS)

Page 80: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

80

Источники сведений о состоянии сети

• Метрики:

– SNMP query

– SSH, выполнение команд на устройстве

• События: SNMP trap

• Лог сообщения: Syslog

• Потоки: Netflow/Sflow

Page 81: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

81

SNMP: время оповещения о событии

Факторы:

• SNMP trap: ненадежность доставки

• SNMP query/SSH exec

– Какой интервал опроса устройства?

– Как быстро устройство сможет отдать

информацию?

Page 82: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

82

SNMP: точность информации

Источник: https://pc.nanog.org/static/published/meetings/NANOG73/1677/

20180625_Shakir_Snmp_Is_Dead_v1.pdf

Page 83: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

83

Streaming Telemetry

• Данные о состоянии, примеры: загрузка CPU, счетчики

интерфейсов Tx/Rx, LLDP соседи, состояние таблицы RIB

• Отправка по интервалу или при изменении состояния

• Структурированные, нормализованные данные,

например, YANG/OpenConfig

Page 84: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

84

Streaming Telemetry vs. SNMP

• Посекундная отправка данных

• Человекочитаемые схемы

данных

• Задействует меньше ресурсов

устройства

• Надежная доставка, если TCP-

транспорт

Page 85: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

85

Структура протоколов ST

• Моделирование

данных

• Кодирование

• Транспорт

GPB = Google Protocol Buffers

gRPC = Google RPC

Native

• YANG/?

• JSON, GPB,

XML

• UDP

gRPC

• YANG/

OpenConfig

• GPB

• UDP

sFlow

• sFlow

struct.

• XDR

RFC4506

• UDP

Альтернативный

вариант

Page 86: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

86

gNMI

• gNMI – gRPC Network Management Interface

• Решаемые задачи:

– Конфигурирование (альтернатива NETCONF/RESTCONF)

– Сбор телеметрии

– Управление рабочим состоянием устройства: команды

ping, reboot, clear ip bgp, …

Page 87: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

87

Структура решения OpenConfig

Page 88: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

88

Инструменты

• Сбор сведений: Telegraf

• Хранение: InfluxDB

• Аналитика (выявление отказов): Kapacitor

• Формирование реакции: StackStorm

• Управление устройствами: Ansible

• Уведомление: Slack

Page 89: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

89

Демо

• Задача: обнаружение отказов и

восстановление требуемого

состояния сетевого интерфейса без

участия оператора

• Сценарий восстановления:

– Проверка состояния

– Перезапуск

– Проверка состояния

– Уведомление оператора

Page 90: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

90

Перспективы

• Предсказание отказов:

– На основе правил, созданных оператором

– На основе алгоритмов машинного обучения

(инструменты: Kapacitor+LoudML)

Page 91: Ровнов Павел...2019/12/20  · 4 Способы задать состояние сети •Задание конфигурации сети •Изменение рабочего

Вопросы?