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

Post on 16-Apr-2017

232 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

Ciscoclub.ru

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

NETCONF

Manager

NETCONF

YangModel

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

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

HTTP:RESTCONF

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

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

Модель Yang

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

Ciscoclub.ru

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

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

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

данных

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

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

Протокол

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

Ciscoclub.ru

Обзор NETCONF

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?

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>

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>

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>

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>

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>

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)

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

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

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://user@example.com: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>

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>

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>

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>

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>

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>

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

Ciscoclub.ru

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

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

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

Уведомления

Ciscoclub.ru

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

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

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

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

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

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

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

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

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

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

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

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

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, дополнительная информация

Ciscoclub.ru

Обзор YANG

Ciscoclub.ru

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

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

Ciscoclub.ru

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

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

Tool: yangvalidator.com

Tool: pyang patch

pyang 1.6 (YANG 1.1)

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

Ciscoclub.ru

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

27

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

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

Ciscoclub.ru

YANG и SNMPЯзык:

YANG

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

Кодирование

XML

Транспорт:

Netconf

Язык:SMIv2

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

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

ASN.1 BER

Транспорт:

SNMP

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

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

“Структура”

SNMP

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

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

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

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

B2B, средства Web

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

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

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

Ciscoclub.ru

Encoding

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

Data Model Language

Data Modeling

Protocol

YANG

YANG Data Models

XML JSON

RESTCONFNETCONF31

ProtoBuf

GRPC (HTTP/2)

Thrift

Не стандарт

YANG Development KitApplication

Ciscoclub.ru

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

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

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

YANG

acme-box module

properties container

interfaces container

name: string, config

name: string, config

interface: list, key = name

oper-state: enum, config

Ciscoclub.ru

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

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

Ciscoclub.ru

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

Заголовок

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

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

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

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

Ciscoclub.ru

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

Ciscoclub.ru

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

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

ФрагментA.yang

ФрагментB.yang

ФрагментC.yang

ФрагментD.yang

ФрагментE.yang

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

include

includeinclude

import

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

Ciscoclub.ru

Оператор Import/Include

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

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

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

…и больше

Ciscoclub.ru

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

Оператор Typedef

percent

completed

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

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

<completed>50</completed>

Ciscoclub.ru

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

Оператор Union

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

<threshold>50</threshold>

или:

<threshold>disabled</threshold>

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 … и другие

Ciscoclub.ru

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

Оператор Grouping

target

peer

addressport

destinationaddressport

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

<address>192.168.0.1</address>

<port>80</port>

</destination>

Ciscoclub.ru

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

Оператор Leaf

host-name

cpu-temp

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

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

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

Ciscoclub.ru

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

Оператор Container

system

services

ssh

Presence

Ciscoclub.ru

Оператор List

user

name classfull-nameuidDefault

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 определяет параметр, по которому будет идти доступ к значениям:

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

Ciscoclub.ru

Оператор Unique

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

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

user

name classfull-nameuidDefault

1010 yang Yan Goode admin

1152 hawk Ron Hawk oper

1202 ling Lin Grossman viewer

Ciscoclub.ru

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

Оператор RPC

image

status

activate-software-image

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>

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

Ciscoclub.ru

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

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

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

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

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

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

51

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, дополнительная информация

Клуб Cisco

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

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

Cisco CiscoRu CiscoRussia CiscoRu

top related