Как использовать SciVal Spotlight для планирования научной деятельности в вузе
Обзор протокола Netconf/YANG и его применение для...
-
Upload
cisco-russia -
Category
Technology
-
view
232 -
download
4
Transcript of Обзор протокола Netconf/YANG и его применение для...
Операторы связи
Обзор протокола 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&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://[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>
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