Обзор протокола netconf/yang и его применение для...

53
Операторы связи Обзор протокола Netconf/YANG и его применение для управления услугами Влад Патенко Инженер-консультант 30 Ноября 2016

Upload: cisco-russia

Post on 16-Apr-2017

232 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Обзор протокола Netconf/YANG и его применение для управления услугами

Операторы связи

Обзор протокола Netconf/YANG и его применение для управления услугамиВлад ПатенкоИнженер-консультант30 Ноября 2016

Page 2: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

NETCONF, RESTCONF и YANGМодели данных + протоколы для разных задач

NETCONF

Manager

NETCONF

YangModel

sПриложения контроля сети

Приложения услуг

HTTP:RESTCONF

Протоколы + представления

Модель YangМодель Yang Модель Yang

Модель Yang

ДанныеДанныеДанные

Page 3: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Модель данных• Определение структуры, синтаксиса и семантики

данных• Полнота и согласованность

• Протокол• Механизм передачи данных• Кодирование информации, определенной моделью

данных

Модель данных и протокол

Модель данных

Протокол

Page 4: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

История стандартизации IETF

NETCONF• Протокол управления• RFC 4741 (1.0)• RFC 6241 (1.1, июнь

2011

YANG• Язык моделирования

данных• RFC 6020 (1.0)• Октябрь 2010

YANG 1.1 (RFC6020bis)RESTCONF• Использование

NETCONF в вызовах REST

• Последние стадии стандартизации

Стандартизация моделей данных YANG

2006 2010 2016

4

Page 5: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Обзор NETCONF

Page 6: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Netconf – протокол, ориентированный на соединение• SSH, TLS как транспорт

• Клиент Netconf (“manager”) устанавливает сессию с сервером(“agent”)

• Данные кодируются в виде XML• Базируется на RPC

• <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id=”100">

• Определен в RFC4741 (NETCONF 1.0) и RFC6241 (NETCONF 1.1)• Функция Call-home в процессе стандартизации

• Возможность инициировать соединение со стороны устройства

Что такое NETCONF?

Page 7: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Операция NETCONF <hello>

•Обмен возможностями•Обмен идентификаторами моделей данных

•Кодирование XML•Фреймы• NETCONF 1.0 EOM, ]]>]]>• NETCONF 1.1 Chunked Framing

<?xml version="1.0" encoding="UTF-8"?><hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.1">

<capabilities><capability>urn:ietf:params:netconf:base:1.1</capability>

</capabilities></hello>

Page 8: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Операция NETCONF <hello> – ответ агента<?xml version="1.0" encoding="UTF-8"?><hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><capabilities><capability>urn:ietf:params:netconf:base:1.1</capability><capability>urn:ietf:params:netconf:capability:writable-running:1.0</capability<capability>urn:ietf:params:netconf:capability:candidate:1.0</capability><capability>urn:ietf:params:netconf:capability:confirmed-commit:1.0</capability<capability>urn:ietf:params:netconf:capability:xpath:1.0</capability><capability>urn:ietf:params:netconf:capability:validate:1.0</capability><capability>urn:ietf:params:netconf:capability:rollback-on-error:1.0</capabilit<capability>http://tail-f.com/ns/netconf/with-defaults/1.0</capability><capability>http://tail-f.com/ns/netconf/actions/1.0</capability><capability>http://tail-f.com/ns/netconf/commit/1.0</capability><capability>http://tail-f.com/ns/example/dhcpd?module=dhcpd</capability><capability>urn:ietf:params:xml:ns:yang:ietf-inet-types?revision=2010-09-24&amp;module=ietf-inet-types</capability></capabilities><session-id>5</session-id></hello>

Page 9: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Фильтрация по ветке дерева

Операция NETCONF <get-config>

•Фильтрация XPATH

<rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.1” message-id="1"><get-config>

<source><running/>

</source><filter xmlns="http://tail-f.com/ns/aaa/1.1">

<aaa/></filter>

</get-config></rpc>

Page 10: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Операция NETCONF <get-config> - ответ<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.1” message-id="1">

<data><aaa xmlns="http://tail-f.com/ns/aaa/1.1">

<authentication><users>

<user><name>admin</name><uid>9000</uid><gid>0</gid><password>$1$3ZHhR6Ow$acznsyClFc0keo3B3BVjx/</password><ssh_keydir>/var/confd/homes/admin/.ssh</ssh_keydir><homedir>/var/confd/homes/admin</homedir>

</user><user>

<name>oper</name>…

</users></authentication>

</aaa></data>

</rpc-reply>

Page 11: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Операция NETCONF <edit-config><rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.1” message-id="1">

<edit-config><target><running/></target><config>

<dhcp xmlns="http://tail-f.com/ns/example/dhcpd"xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.1">

<defaultLeaseTime nc:operation="merge”>PT1H</defaultLeaseTime>

</dhcp></config>

</edit-config></rpc>

<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.1" message-id="1"><ok/>

</rpc-reply>

Page 12: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Операция NETCONF <edit-config> - опции

nc:test-option (:validate)test-then-set (default)settest-only

nc:error-optionstop-on-error (default)continue-on-errorrollback-on-error (:rollback-on-error)

nc:operationmergereplacecreatedelete remove (:base:1.1)

Ошибка, если объект для удаления не существует

Нет ошибки, если объект для удаления не существует

Page 13: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Копирование конфигурации между местами хранения данных или через URL

Операция NETCONF <copy-config>

<rpc message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><copy-config>

<target><running/></target><source>

<url>https://[email protected]:passphrase/cfg/new.txt</url>

</source></copy-config>

</rpc>

<rpc-reply message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><ok/>

</rpc-reply>

Page 14: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Полное удаление конфигурации (не running)

Операция NETCONF <delete-config>

<rpc message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><delete-config>

<target><startup/>

</target></delete-config>

</rpc>

<rpc-reply message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><ok/>

</rpc-reply>

Page 15: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Блокировка/разблокировка файла конфигурации

Операция NETCONF <lock>, <unlock>

<rpc message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><lock>

<target><candidate/>

</target></lock>

</rpc>

<rpc-reply message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><ok/>

</rpc-reply>

Page 16: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

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

Операция NETCONF <get>

<rpc message-id="101” xmlns=”urn:ietf:param<get>

<filter type="subtree"><top xmlns="http://example.com/ns/dhc

<interfaces><interface>

<ifName>eth0</ifName></interface>

</interfaces></top>

</filter></get>

<rpc-reply message-id="101” xmlns=“urn:ie<data>

<top xmlns="http://example.com/ns/dhc<interfaces>

<interface><ifName>eth0</ifName><ifInOctets>45621</ifInOctets><ifOutOctets>774344</ifOutOctet

</interface></interfaces>

</top></data>

</rpc-reply>

Page 17: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Корректный путь закрыть сессию

Операция NETCONF <close-session>

<rpc message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><close-session/>

</rpc>

<rpc-reply message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><ok/>

</rpc-reply>

Page 18: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Не очень корректный метод закрыть другую сессиюОсвобождение блокировок, отмена всех изменений, связанных с сессией

Операция NETCONF <kill-session>

<rpc message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><kill-session>

<session-id>17</session-id></kill-session>

</rpc>

<rpc-reply message-id="101” xmlns="urn:ietf:params:xml:ns:netconf:base:1.1"><ok/>

</rpc-reply>

Page 19: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• <commit>, <discard-changes> (:candidate)

• <validate> (:validate)• Копирование candidate в running• Отмена изменений в candidate (копирование running в candidate)

• <create-subscription> (:notification)

• <partial-lock>, <partial-unlock> (:partial-lock)

• <commit>, <cancel-commit> (:commit)

• <get-schema> (:ietf-netconf-monitoring)

Дополнительные операции NETCONF

Page 20: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• NETCONF• Требует открытое соединение• Поддерживает повторные сообщения

• SNMP• Широко и успешно используется• Небольшие пакеты• Не требует постоянного соединения

• SYSLOG• Пробелы в стандартизации формата событий

Уведомления

Page 21: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Почему NETCONF?Сценарий SNMP NETCONFПолучение группы параметров о состоянии Да Да. Гораздо

быстрее, чем SNMP

Изменение группы параметров Да, до 64kB Да

Транзакционное изменение параметров Нет Да

Транзакция через группу сетевых устройств Нет Да

Вызов административных функций Теоретически Да

Отсылка уведомление Да Да

Резервное копирование и восстановление Обычно нет Да

Защищенный протокол V3 Да

Тестирование конфигурации перед применением Нет Да

Набор поддерживаемых сценариев делают Netconf

привлекательным

Page 22: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• http://datatracker.ietf.org/wg/netconf/• Важные RFCs

• RFC 6241 – Network Configuration Protocol 1.1 (NETCONF)• RFC 6242 – Using the NETCONF Protocol over Secure Shell (SSH)• RFC 5277 – NETCONF Event Notifications• RFC 6536 – NETCONF Access Control Model (NACM)

• В процессе разработки• Протокол RESTCONF• Zero Touch Provisioning для NETCONF (Call Home)

Netconf, дополнительная информация

Page 23: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Обзор YANG

Page 24: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• YANG – Yet Another Next-Generation...• ... сетевой протокол?• ... шина сообщений?• ... язык для описания данных!

• Цель• Определение конфигурационных данных для Netconf...• ... Изначально фокусируется на конфигурационной информации, но не ограничена ею• ... Может использоваться отдельно от Netconf

(не цель спецификации, но важный аспект)

Что такое YANG?

Page 25: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• YANG использует XML для кодирования данных• Определяет правила генерации XML• Использует некоторые расширенные возможности XML (например, Xpath)• Хорошо увязывается с NETCONF

• YANG не является XML• Акцент на читаемости документа

• Структура, удобная для программистов. Похожа на C/C++ или Java• Грамматика XM определена в YIN (Yang-Independent Notation)

• Похожая семантика• Трансляция семантики YANG <-> YIN

• Определены альтернативные методы кодирования (например, JSON для RESTconf)

YANG и XML

Page 26: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Развитие моделей YANG в IETF

26http://claise.be/IETFYANGPageCompilation.png

Tool: yangvalidator.com

Tool: pyang patch

pyang 1.6 (YANG 1.1)

Начало консолидации

Page 27: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Вклад Cisco в развитие моделей YANG в IETF

27

Page 28: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

YANG в индустрии• IETF:

• Около 200 модулей YANG в статусе «drafts»• 38 модулей YANG приняты как стандарт

• IEEE: Утвержденный проект для моделей 802.1x и 802.1q• Broadband Forum: Около 120 YANG модулей => фокус на услугах• MEF:

• MEF 38 и 39 для OAM Fault Monitoring и Performance Measurement• Услуги EVC и OVC

• OpenDaylight: более 680 модулей YANG• Openconfig:

• Около 45 модулей YANG

• www.sysrepo.org: • Управление на базе NETCONF/YANG для CPE на базе LINUX (OpenWRT).

28

Page 29: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Модели YANG в IETF

29

Производители: • Cisco: 54 • Huawei: 50• Juniper: 40 • Ericsson: 27 • Alcatel-Lucent: 7 • Ciena: 11 • ZTE: 9• Brocade: 7 • Intel: 1

Операторы: • Google: 4• Verizon: 2• AT&T: 5• Telefonica: 5• Orange: 9• Level 3: 3

Другие компании:• Yumarkworks: 7 • Tail-f: 8

Page 30: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

YANG и SNMPЯзык:

YANG

Информационная модель:Модули YANG

Кодирование

XML

Транспорт:

Netconf

Язык:SMIv2

Информационная модель:Модули MIB

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

ASN.1 BER

Транспорт:

SNMP

“Содержание”

“Кодирование”

“Структура”

SNMP

Правила трансляцииMIBs à YANG

Иерархия объектов (как в MIB: значения + таблицы)

Условия, проверка значений данных

Читаемость текстаЛегкое расширение модели

B2B, средства Web

Возможность инкрементальных изменений (например, edit-config)

Поддержка транзакцийФокус на настройку в

возможностями мониторингаИли другой

Page 31: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Encoding

Терминология и связи

Data Model Language

Data Modeling

Protocol

YANG

YANG Data Models

XML JSON

RESTCONFNETCONF31

ProtoBuf

GRPC (HTTP/2)

Thrift

Не стандарт

YANG Development KitApplication

Page 32: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Язык моделирования данных• Данные о конфигурации• Данные о состоянии

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

• Данные и типы

YANG

acme-box module

properties container

interfaces container

name: string, config

name: string, config

interface: list, key = name

oper-state: enum, config

Page 33: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Структура модели• Типы и определение типов• Простые выражения• Расширенные выражения• Отклонения модели

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

Page 34: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Структура модуля YANG

Заголовок

Внешние данные (import/include)

Определение типов

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

Определение действий (RPC) и извещений

Page 35: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Модель YANG - заголовок

Page 36: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Модуль YМодуль X

Модель YANG– внешние параметры

ФрагментA.yang

ФрагментB.yang

ФрагментC.yang

ФрагментD.yang

ФрагментE.yang

Включение модели в другую модель; включенный фрагмент не может быть использован в другом модуле

include

includeinclude

import

Импорт определений для повторного использования

Page 37: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Оператор Import/Include

Внимание: суб-модули не могут ссылаться на определения в основном модуле

Каждый суб-модуль принадлежит какому-то модулю

Page 38: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Большинство элементов YANG имеют определенный тип данных

• Тип данных может быть базовым или наследованным• Существует более 20 базовых

типов

Базовые типы данных YANG

Тип данных Значениеint8/16/32/64 Integeruint8/16/32/64 Unsigned integer

decimal64 Non-integer

string Unicode string

enumeration Set of alternativesboolean True or false

bits Boolean array

binary Binary BLOBleafref Reference “pointer”identityref Unique identityempty No value, void

…и больше

Page 39: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Определяет простой тип

Оператор Typedef

percent

completed

Переменная ссылается на новый тип

Представление данных:

<completed>50</completed>

Page 40: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

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

Оператор Union

Представление данных:

<threshold>50</threshold>

или:

<threshold>disabled</threshold>

Page 41: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• Общие типы YANG объявлены RFC 6021

• Используйте

• Для использования этих типов. Например:

Общие типы YANG

i www.rfc-editor.org/rfc/rfc6021.txt

counter32/64 ipv4-address

gauge32/64 ipv6-address

object-identifier ip-prefix

date-and-time ipv4-prefix

timeticks ipv6-prefix

timestamp domain-name

phys-address uri

ip-version mac-address

flow-label bridgeid

port-number vlanid

ip-address … и другие

Page 42: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Определяет новый тип структуры

Оператор Grouping

target

peer

addressport

destinationaddressport

Представление данных:<destination>

<address>192.168.0.1</address>

<port>80</port>

</destination>

Page 43: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Содержит одиночное значение определенного типа

Оператор Leaf

host-name

cpu-temp

Представление данных:

<host—name>my-host</host-name>

<cpu-temp>62</cpu-temp>

Page 44: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Группирует объекты leaf и container

Оператор Container

system

services

ssh

Presence

Page 45: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Оператор List

user

name classfull-nameuidDefault

Page 46: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Параметр “key” для списка

user

name classfull-nameuidDefault

/user[name=‘yang’]/name = yang/user[name=‘yang’]/uid = 1010/user[name=‘yang’]/class = admin

/user[name=‘ling’]/class = viewer

yang 1010 Yan Goode admin

hawk 1152 Ron Hawk oper

ling 1202 Lin Grossman viewer

Поле key определяет параметр, по которому будет идти доступ к значениям:

Ключ может быть простым или множественным

Page 47: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Оператор Unique

Определяет параметры, которые должны быть уникальны в рамках списка (list).

Уникальным может быть один параметр или группа

user

name classfull-nameuidDefault

1010 yang Yan Goode admin

1152 hawk Ron Hawk oper

1202 ling Lin Grossman viewer

Page 48: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Определяет действия с параметрами ввода и вывода

Оператор RPC

image

status

activate-software-image

Page 49: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Извещение с параметрами

Оператор Notification

operator-name

change

config-change

<change>/ex:system/ex:services/ex:ssh/ex:port</change><change>/ex:system/ex:user[ex:name='fred']/ex:type</change><change>/ex:system/ex:server[ex:ip='192.0.2.1'][ex:port='80’]</change>

Page 50: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Примеры

Работаем с ресурсамиGET : Получить ресурс

POST : Создать ресурс

PUT : Изменить ресурс

DELETE : Удалить ресурс

Module my-interfaces {{namespace ”com.my-interfaces”;

container interfaces { list interface {

key name; leaf name { type string; }leaf admin-status { type enum;}

rpc flap-interface { input {

leaf name { type string; }}output {

leaf result { type boolean; }}

}

POST /restconf/operations/my-interfaces:flap-interface+ JSON/XML Form Data (including name)Response will have JSON/XML result

GET /restconf/data/my-interfaces:interfacesGET /restconf/data/my-interfaces:interfaces/interface/<some name>

PUT /restconf/data/my-interfaces:interfaces/interface/<some name> + JSON/XML Form Data (name, admin-status)

DELETE /restconf/data/my-interfaces:interfaces/interface/<some name>

50

Page 51: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

Типы моделей данных YANG

- Стандартные модели- Частные расширения

стандартных моделей- Модели услуг,

определенные оператором

draft-ietf-netmod-yang-model-classification-00.txt

IETF draft-ietf-netmod-yang-model-classification

51

Page 52: Обзор протокола Netconf/YANG и его применение для управления услугами

Ciscoclub.ru

• http://datatracker.ietf.org/wg/netmod/

• Важные RFCs• RFC 6020: YANG – A Data Modeling Language for the Network Configuration

Protocol• RFC 6021: Common YANG Data Types• RFC 6087: Guidelines for Authors and Reviewers of YANG Data Model Documents• RFC 6110: Mapping YANG to Document Schema Definition Languages and

Validating NETCONF Content• RFC 6643: Translation of SMIv2 MIB Modules to YANG Modules

• В процессе• Моделирование JSON с YANG

YANG, дополнительная информация

Page 53: Обзор протокола Netconf/YANG и его применение для управления услугами

Клуб Cisco

Есть вопросы по приобретению оборудования Cisco?8 800 700 05 22

Благодарим за участие

Cisco CiscoRu CiscoRussia CiscoRu