Aleksandr Skorohodov Programmiruemosto kommutatorov …...управления разными ......

Preview:

Citation preview

CiscoConnectМосква, 2017

Цифровизация: здесь и сейчас

Программируемость коммутаторов для ЦОД Cisco Nexus

Александр Скороходов

Инженер-консультант

© 2017 Cisco and/or its affiliates. All rights reserved.

Цели сессииДля двух типов аудитории

Для сетевых администраторов:

• Показать, как программируемость сети может сделать их работу проще и эффективнее

• Продемонстрировать возможности расширения функциональности

• Перестать бояться программирования

• Помочь найти общий язык с программистами ;)

Для программистов:

• Показать возможности использования Nexus как открытой программируемой платформы

• Описать ключевой инструментарий программирования для работы с сетевым оборудованием Cisco для ЦОД

• Помочь найти общий язык с сетевыми администраторами ;)

Для сетевых администраторов и программистов:

Возможность объединения усилий в рамках DevOps модели разработки,

внедрения и эксплуатации

Источние: исследование Cisco, 2016

Традиционные подходы не успевают за требованиями «цифрового бизнеса»

Зачем автоматизировать сеть?

Затрат на

эксплатацию сети

уходит на

диагностику и

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

75%

Нарушений политики безопасности из-за

«человеческого фактора»

70%

Сетевых изменений выполняются

вручную

95%

Что даёт программируемость?

Экономия времени

Кастомизация Новые возможности

Снижение числа ошибок

Модели эксплуатации сети

Управление отдельными устройствами

• CLI

• Порты, VLAN, протоколы...

• Привычно

• Хорошо документировано

• Медленно – “несколько недель на создание VLAN???”

• Подвержено ошибкам

• Классические NMS мало помогают

• Сеть воспринимается как тормоз ИТ!

Чем будет заниматься сетевой инженер будущего ?

Автоматизация и

программирование

• Скрипты, API, Chef/Puppet…

• «Управлять коммутаторами

так же, как серверами»

• DevOps модель

• Высокая скорость

развертывания и внесения

изменений

• Единый инструментарий

управления разными

элементами среды

• Новый набор навыков

• Кто будет отвечать за сеть?

Оркестрация и управление

по политикам

• Системы оркестрации

• ACI: OpFlex, Group-based

Policy…

• Развёртывание и

эксплуатация сети в контексте

приложения/сервиса

• «Сеть как сервис»

• Единая точка

программируемости

• Новый набор навыков

• Миграция?

Спектр технологий программируемости и расширения функциональных возможностей

Bash +

netdevices

Guest

Shell

Открытая

системаЗакрытая

система

Сторонние

RPM

Скриптинг на Python

POAP/

PXE EEMNX-API

CLINX-APIREST

Puppet/

Chef/AnsibleCLI

Open NX-OSЗагрузка образа ОС: iPXE

VTEP VTEP VTEP VTEP

Использование существующей ИТ

инфраструктуры (PXE/iPXE) для

поддержки NX-OS

Загрузчик в BIOS на основе gPXE

Загрузка NX-OS с сервера по

HTTP/HTTPS или TFTP с поддержкой

IPv4 и IPv6

Добавлена настройка в NX-OS CLI для

выбора источника загрузки: <bootflash>

(GRUB) или <pxe> (GPXE)

Boot Server(DHCP & HTTP/TFTP)NX-OS Image Repository

DHCP DISCOVER(v4/v6)

IP Address & File/Image URL

TFTP GET FILE/HTTP URL

http://n9k-dk9….bin..

Validate Image Checksum & Boot

Script Server

Коммутатор Nexus

DHCP Server

Download Script file onto the switch and execute the script

DHCP Discover phase:Get IP Address, GatewayScript server Script file

Download Configuration License Software images onto the switch

2

3

4

Default Gateway

1Power up Phase: Start Power On Auto-Provisioning Process

License, Configuration and Software Server

5

Reboot if needed. Switch up and running the downloaded image

and config

POAP (Power-on Auto Provisioning)Быстрое развёртывание коммутаторов

Сокращение времени и трудоёмкости

первоначального развёртывания

Автоматизация, стандартизация и

воспроизводимость конфигураций

Использует DHCP и TFTP

(альтернатива: USB)

Скрипт на Python или TCL script –

есть шаблон на cisco.com

Конфигурационный файл и образ

NX-OS

Выполняется при пустой конфигурации

или настройке «boot poap enable»

На всех семействах Nexus

(N3K/N5K/N7K/N9K)

DCNM on CCOhttp://www.cisco.com/go/dcnm

POAP (Power-on Auto Provisioning)Упрощение внедрения с помощью DCNM...

Упрощение внедрения POAP

Графический интерфейс

Готовый сервер в виде .OVA

Возможность генерации конфигураций на основе топологии, шаблонов и скриптов

Инструмент с открытым исходным кодом –возможности доработки, расширения и интеграции

https://github.com/datacenter/ignite

POAP (Power-on Auto Provisioning)...или с помощью Ignite

Nexus 3/9k only

Embedded Event Manager (EEM)«Программирование без программирования»

Отслеживает события и инициирует

действия

Поддерживается в IOS, IOS-XR и NX-OS

Политики по умолчанию работают «в фоне»

для поддержания здоровья коммутатора

Примеры событий:

Изменения оборудования (замена модуля)

Изменения статуса интерфейса

Команды администратора

Syslog сообщения

Диагностированные отказы (GOLD)

Примеры действий:

Отправка SNMP Trap

Генерация Syslog сообщения

Запуск скрипта на Python

event manager applet writer

event cli match “copy running-config startup-config”

action 1 syslog msg hi

action 2 cli copy running

bootflash:/autoconfig/running.latest

action 3 cli guestshell run sudo su - temp -c

'/home/temp/tester.py'

EEM

f = os.popen('mv -f /bootflash/autoconfig/running.latest/bootflash/autoconfig/running')

who = f.read()

f.close

print "Result:", who

f = os.popen('cd /bootflash/autoconfig;

/bootflash/git add running')

who = f.read()

f.close

print "Result:", who

Python

Встроенный интерпретатор Python

# python

Python 2.7.2 (default, Mar 6 2012, 15:51:12)

[GCC 3.4.3 (MontaVista 3.4.3-25.0.143.0800417 2008-02-22)] on

linux2

Type "help", "copyright", "credits" or "license" for more

information.

Loaded cisco NxOS lib!

>>>

Interactive Python Shell

# python bootflash:showBuffer.py

Mon Jan 30 19:26:36 UTC 2012

|------------------------------------------------------------

|

Total Instant Usage 0

Remaining Instant Usage 46080

Max Cell Usage 0

Switch Cell Count 46080

|------------------------------------------------------------

|

Mon Jan 30 19:26:38 UTC 2012

#

Run Python Script

• Почему Python?• Простота изучения• Выразительность• Интерактивный режим и

скриптинг• Огромный выбор модулей• «Язык DevOps»

• Варианты использования Python на Nexus:

• NX-OS CLI• EEM• Guest shell• Bash shell

• Полезные встроенные модули:• cli• cisco

• Возможность создавать «суперкоманды»

NX-API CLIПрограммный доступ к CLI современными средствами

• Взаимодействие с CLI устройства через HTTP / HTTPS• Обмен в JSON или XML формате для удобства программирования

Show Clock NXAPI Web Server

(NGINX)

[{"jsonrpc": "2.0","method": "cli","params": {"cmd": "show clock","version": 1

},"id": 1

}]

{"jsonrpc": "2.0","result": {"body": {"simple_time": "15:00:37.762 PST Mon Aug 18 2014\n"

}},"id": 1

}

HTTP / HTTPS

Switch# conf tSwitch(config)# feature nxapiSwitch(config)# exit

NX-API CLIВстроенная в коммутатор «песочница» (Sandbox)

• Удобная «стартовая площадка» с Web-интерфейсом для сетевых администраторов, интересующихся скриптингом/автоматизацией

• Генерация «обёртки» для CLI команд, отправка коммутатору по HTTP/HTTPSи показ возвращаемых структурированных результатов (JSON/XML)

• Генерация готового кода на Python!

• Встроенная документация

REST API для доступа к объектной модели управления Nexus

Автоматизация управления с использованиемопераций (CRUD) над иерархией объектов (MIT)

Асинхронное управление средствами модели:

BGP, VLAN, LACP, ACL, QoS, UDLD, CDP, MAC, DHCP, DNS, RBAC, AAA,SVI, Logging, NTP, VRRP

Возможность подписки на уведомления о событиях на уровне объекта или ветви иерархии с помощью Websockets

Преимущества использования объектной модели

Ускорение разработки ПО

Повышение качества ПО

Интеграция в ООП

Инструментарий NX toolkit для интеграции с Python (https://github.com/datacenter/nxtoolkit)

CLI REST JSON RPC SNMP

BGP LACP ACL QoSVLAN

Sys

Dom-yDom-x

BGP ACL

• …

MIT

Config

Faults &

Events

Stats

Data Models (Logical / Concrete)

Operational

Data

DME Processes

Data Management Engine

Object Store REST API(HTTP/HTTPS)

NX-API REST (MDP)Программируемость и автоматизация с помощью объектной модели

DEVNET-2101 18

Сравнение NX-API CLI и NX-API REST

System

BgpEntity BgpInstance BgpDomain BgpPeer

BgpLocalASN

BgpPeerAf

BgpPeerEntry

L1PhysIf

ethpmPhysIf ethpmPortCap

L1Load

L1StormControl

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

Единая структура объектов в БД

Симметричный API

sys/bgp/inst/dom-default/peer-[192.168.0.2]sys/phys-[eth1/1]/phys/portcap

NX-API REST: объектная модель

Документацияhttps://developer.cisco.com/site/nx-os/docs/

Отличия в подходе NX-API REST (MDP)На примере настройки BGP

CLI POST: отправка CLI команды (NX-API CLI)

POST: отправка BGP объекта(NX-API REST)

router bgp 11

router-id

1.1.1.1

POST http://Switch-IP/ins

{'content-

type':'application/json-

rpc'}.json()

{ "jsonrpc": "2.0",

"method": "cli",

"params": {

"cmd": "config t",

"version": 1 }, "id": 1},

{ "jsonrpc": "2.0",

"method": "cli",

"params": {

"cmd": "router bgp

11",

"version": 1 },"id":

1},

{ "jsonrpc": "2.0",

"method": "cli",

"params": {

"cmd": "router-id

1.1.1.1",

"version": 1}, "id":

2}]

POST http://Switch-

IP/api/mo/sys/bgp/inst.json

{ "bgpInst" : {

"children" : [{

"bgpDom" : { 11

"attributes" : {

"name":"default",

"rtrId" :

"1.1.1.1"

}

}

}

]

}

}

NX-API-REST

gRPC Agent

RestconfAgentNGINX

Data Management Engine

NetconfAgent

Object Store

Telemetry Agent

Telemetry Receiver

NetconfClient

BGP LACP ACL QoSVLAN

Transaction Commit Status: Success/Raise

Fault

Model Transformation (YANG)

RestconfClient

gRPC Client

Data Encoder

DME Models YANG Models

Управление NXOS с использованием моделейРасширение набора подходов

Industry definition

Определы стандартом (IETF, ITU, OpenConfig,

etc)

Пример: ietf-diffserv-policy.yang

(IETF Diffserv data model)

Cisco NXOS Specific

Документированы в рамках объектной модели NX-OS как

набор XML объектов

Открытые

модели

NXOS Device DME модели

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

открытые и специфичные для NX-OS

Открытые модели – подмножество функций моделей NX-OS

Cisco NXOS Specific

Определяются с с помощью YANG

Непосредственная интеграция с NSO

NXOS YANG модели

Web-based UI Превращение CLI команд в обращения к DME/YANG модели Облегчение принятия основанных на моделям NX-API REST и NETCONF/YANG интерфейсов

Варианты ‘nx-api rest’ и ‘nx yang’ для

генерации обращений к

соответствующим моделям

Ввод команд CLI

Преобразование команды CLI в NX-API REST JSON объект

(Выполняется на устройстве)

Отправляемый NX-API JSON объект

Генерация фрагментов кода на Python для отправки команд с использованием NX-API REST

POST для отправки NX-API JSONобъекта на коммутатор

24

NX-API REST/YANGВстроенная в коммутатор «песочница» (Sandbox)

Data Management Engine

Object Store

Telemetry Agent

BGP LACP ACL QoSVLAN

Transaction Commit Status: Success/Raise

Fault

Data Encoder

Потоковая телеметрия в NX-OSОбзор архитектуры

Collector

gRPC Agent

RestconfAgentNGINX

NetconfAgent

Model Transformation (YANG)

gRPC/GBP

Subscription

Periodic or on-change

Guest Shell

• Защищённая среда выполнения на

основе CentOS7 с возможностью

установки сторонних приложений

• Быстрая разработка/прототипирование

Скриптинг (Python)

Инструментарий Linux

API на уровне устройства

• Защита целостности NX-OS

Изолированное user space

Изоляция сбоев

Ограничение ресурсов

• Использование “guestshell resize” для

управления доступных Guest Shell

ресурсов (процессор/память/диск)

Защищённая среда Linux на коммутаторе

Network OS

Guestshell

Open Application Container

Linuxapplications

Bash Shell

(conf t)# feature bash-shell

(conf t)# run bash

bash$ id

uid=2002(admin) gid=503(network-admin) groups=503(network-admin)

bash$ sudo su

bash# id

uid=0(root) gid=0(root) groups=0(root)

• Доступ к Linux ОС самого коммутатора

• Полный доступ к оборудованию/интерфейсам

• Ядро Linux: Wind River 3.4.43. Distribution: Yocto 1.2

• Доступ только для пользователей NX-OS с ролями dev-ops или network-admin

Open NX-OSИспользование средств Linux для работы с интерфейсами

Порты коммутатора доступны для настройки и иcпользования как интерфейсы Linux сервера. Примеры:

ifconfig для изменения MTU интерфейса:

# ifconfig Eth2-1 mtu 9000

tcpdump для диагностики:

# tcpdump -w file.pcap -i Eth1-1

ethtool для получения детальной статистики:

# ethtool –S Eth1-1

ip route для добавления статического маршртута

# ip route add 203.0.113.0/24 via 198.51.100.2 dev Eth2-1

Отображение VRF в Linux namespaces

# ip netns

management

default

Open NX-OSУправление пакетами для NX-OS/Guestshell средствами YUM/RPM

•Возможность устанавливать сторонние программные компоненты на уровне Guestshell или NX-OS

•Средства мониторинга (Ganglia, Splunk, tcollector)

•Агенты управления конфигурациями (Chef/Puppet)

•Сторонние реализации протоколов маршртизации (Quagga)

•ПО собственной разработки

•Возможность патчинга/обновления компонент NX-OS с помощью rpm/yum

•Управление фоновыми процессами (демонами) с помощью стандартных механизмов Linux

•Встроенная поддержка YUM

Package as RPM

C app with

standard Linux

constructs

Open Embedded

64 bit Build

Environment

Cisco/Local

Repository

RPM local

repository

RPM upload

YUM Install

Linux Daemon

Linux Kernel

• Raw Socket

• Netdevs

• Libpcap

init.d

Monitoring

server

ASIC

Build Server Target Switch

Open NX-OS Разработка своих приложений

• Разработка и развёртывание собственных приложений:• SDK доступен с сайта Cisco, детали – в «Nexus 9000

Programmability Guide» • Установка SDK на Linux сервере разработки

(Fedora/Ubuntu/CentOS)• Компиляция/сборка и формирование пакетов на

сервере разработки, распространение и установка с использованием центального или локального репозитория

• Установка своих или сторонних приложений:• Непосредственно в NX-OS Linux (Yocto/Poky)• В среде Guestshell на базе CentOS7

Local RepositoryServer(YUM)

yum install app.rpm

http://repo-server/app.rpm

Respository

Средства управления конфигурациямиСовременный подход к управлению инфраструктурой

Декларативное управление: указание желаемого состояния

Часть DevOps подхода – «инфраструктура как код»

Основное применение – управление серверами, но используется и для других элементов инфраструктуры

Разные подходы к реализации:

С использованием агентов:

Chef, Puppet, CFEngine, SaltStack

Без использования агентов

Ansible, Salt SSH

CM Tool Nexus 3k/9K Nexus 5/7K

6.1 7.2

7.0 7.3

7.0 7.3

Puppet/Chef Master Server

Native Linux Service/etc/init.d/puppet.d & chef.d

NX-OS

Cisco Puppet/Chef Agent

Open NX-OS Агенты Рuppet/Chef для коммутаторов Nexus

NX-APICisco Puppet/Chef Module(Incl Utility

GEMs)

Linux Software Repository Server

Yum/RPM install puppet/chef.rpm

• Агенты для Puppet/Chef доступны на Puppet Forge/ Chef Supermarket

• Инсталляция агента в Guest shell или в Bash shell• Установка модулей Puppet/Chef для Cisco на Puppet Master

/ Chef Server• Агент на коммутаторе периодически опрашивает сервер

для обновления и выполняет действия по приведению в желаемое состояние

Интеграция с PuppetПровайдеры/типы Cisco для Puppet

• Поддержка NX-OS native (50) и netdev (21) типов - самая широкая поддержка в индустрии!

• Расширяемость путём добавления CLI команд используя cisco_command_config

Модули с поддержкой Cisco :Puppet Open-Source:https://github.com/cisco/cisco-network-puppet-module

Puppet Enterprise:https://forge.puppet.com/puppetlabs/ciscopuppet

Демо Puppet на YouTube:https://youtu.be/NALrL0oZtDg

Интеграция с ChefПровайдеры Cisco для Chef

• Текущий набор модулей для Chef

• Расширяемость путём добавления CLI команд используя cisco_command_config

Модули с поддержкой Cisco :Chef Open-Source:https://github.com/cisco/cisco-network-chef-cookbookChef Enterprise:https://supermarket.chef.io/cookbooks/cisco-cookbook

Демо Chef на YouTube:https://youtu.be/e-otCss_YNA

Ansible

Ansible опирается на push модель без использование агентов

Использует шаблоны на базе YAML и Jinja2

Может использовать CLI (SSH) или NX-API

Использование модулей nxos-ansible, или Core Ansible

Ansible Server

Playbooks

Server sends config when playbook is run

NX-API (HTTP/S)CLI (SSH)

Nexus

No agentfeature nxapi

Unlike server configuration Ansible does not execute Python on-box

36

Интеграция с AnsibleМодули Cisco в Ansible Core

Модули для NX-OShttp://docs.ansible.com/ansible/list_of_network_modules.html#nxos

• 66 модулей для NX-OS в Ansible – самая широкая поддержка в индустрии!

• Расширяемость путём добавления CLI команд используя cisco_command_config

Демо Ansible на YouTube:https://youtu.be/JQ9Q0NwiuHM

Ссылки по теме

Источник Ссылка

DevNet: cайт Cisco для разработчиков по тематике NXOS (включая sandbox среду и Virtual Nexus 9000)

https://developer.cisco.com/site/nx-os/https://developer.cisco.com/site/nx-os/docs/guides/getting-started/

Репозиторий Cisco по программмируемости для ЦОД (Nexus/ACI)

http://github.com/datacenter/

Книга «Programmability and Automation with Cisco Open NX-OS»

http://www.cisco.com/c/dam/en/us/td/docs/switches/datacenter/nexus9000/sw/open_nxos/programmability/guide/Programmability_Open_NX-OS.pdf

Слишком заняты, чтобы сделать свою работу эффективнее? ;)

Cisco Connect 2017 © 2017 Cisco and/or its affiliates. All rights reserved. 38

Нет, спасибо!

Мы слишком заняты...

#CiscoConnectRu#CiscoConnectRu

Спасибо за внимание!

Оцените данную сессию в мобильном приложении конференции

© 2017 Cisco and/or its affiliates. All rights reserved.

Контакты:

Тел.: +7 495 9611410www.cisco.com

www.facebook.com/CiscoRu

www.vk.com/cisco

www.instagram.com/ciscoru

www.youtube.com/user/CiscoRussiaMedia

Recommended