RFC 9375 A YANG Data Model for Network and VPN Service Performance Monitoring

Internet Engineering Task Force (IETF)                        B. Wu, Ed.
Request for Comments: 9375                                    Q. Wu, Ed.
Category: Standards Track                                         Huawei
ISSN: 2070-1721                                        M. Boucadair, Ed.
                                                                  Orange
                                                     O. Gonzalez de Dios
                                                              Telefonica
                                                                  B. Wen
                                                                 Comcast
                                                              April 2023

A YANG Data Model for Network and VPN Service Performance Monitoring

Модель данных YANG для мониторинга производительности сетей и служб VPN

PDF

Аннотация

Модель данных для сетевых топологий, заданная в RFC 8345, вносит вертикальные межуровневые взаимодействия между сетями, которые можно дополнить для других топологий сетей и служб. Этот документ определяет модуль YANG для мониторинга производительности (performance monitoring или PM) базовых сетей и наложенных служб VPN, который может применяться для отслеживания производительности сетей на обоих уровнях и управления ею.

Статус документа

Документ относится к категории Internet Standards Track.

Документ является результатом работы IETF1 и представляет согласованный взгляд сообщества IETF. Документ прошёл открытое обсуждение и был одобрен для публикации IESG2. Дополнительную информацию о стандартах Internet можно найти в разделе 2 в RFC 7841.

Информация о текущем статусе документа, найденных ошибках и способах обратной связи доступна по ссылке https://www.rfc-editor.org/info/rfc9375.

Авторские права

Copyright (c) 2023. Авторские права принадлежат IETF Trust и лицам, указанным в качестве авторов документа. Все права защищены.

К документу применимы права и ограничения, указанные в BCP 78 и IETF Trust Legal Provisions и относящиеся к документам IETF (http://trustee.ietf.org/license-info), на момент публикации данного документа. Прочтите упомянутые документы внимательно. Фрагменты программного кода, включённые в этот документ, распространяются в соответствии с упрощённой лицензией BSD, как указано в параграфе 4.e документа IETF Trust Legal Provisions, без каких-либо гарантий (как указано в Simplified BSD License).

1. Введение

В [RFC8969] описана модель автоматизации управления сетями и службами с помощью моделей данных YANG [RFC7950]. Там сказано, что модель телеметрических измерений следует связывать с моделями служб (таких как L3 VPN или L2 VPN) или сетей для мониторинга общей производительности сети и соглашений об уровне сервиса (Service Level Agreement или SLA).

Производительность служб VPN связана с изменениями производительности базовых сетей, обеспечивающих услуги VPN. Например, задержка в канале между устройствами на периметре (Provider Edge или PE) и в сети провайдера (Provider или P) и состояние потери пакетов на интерфейсах L2 и L3, соединяющих PE и граничные устройства клиента (Customer Edge или CE), напрямую влияют на производительность услуг VPN. Кроме того, интеграция данных о производительности L2/L3 VPN и сети позволяет оркестраторам выполнять согласованный мониторинг. Поэтому данный документ задаёт модуль YANG для мониторинга производительности (PM) сети и службы VPN. Модуль пригоден для мониторинга и управления производительностью сети на уровне топологии сети или топологии сервиса между сайтами VPN.

Базовую модель из раздела 5. Модуль YANG для мониторинга производительности сетей и VPN можно расширить включением связанных с технологией деталей, например, добавив статистику явных уведомлений о перегрузке (Explicit Congestion Notification или ECN) сетей L3 или служб VPN для поддержки зависящих от производительности приложений.

Документ не задаёт новых показателей производительности сети или механизмов её измерения, а использует имеющиеся механизмы и параметры статистики для мониторинга сети и служб.

Модуль YANG, определённый здесь, предназначен для дополнения модели данных YANG для топологии сети, заданный в [RFC8345], и использует соответствующие типы YANG из [RFC6991], [RFC8345], [RFC8532], [RFC9181].

В Приложении A представлен набор примеров, иллюстрирующих применение модуля.

2. Терминология

Ниже указаны используемые к этом документе термины, которые определены в [RFC7950].

  • Augment – дополнение.
  • Data model – модель данных.
  • Data node – узел данных.

Термины для описания моделей данных YANG приведены в [RFC7950].

Деревья представлены в этом документе с использованием нотации [RFC8340].

2.1. Сокращения

CE

Customer Edge – граничное оборудование коиента, как определено в [RFC4026].

L2VPN

Layer 2 Virtual Private Network – виртуальная частная сеть канального уровня, как определено в [RFC4026].

L3VPN

Layer 2 Virtual Private Network – виртуальная частная сеть сетевого уровня, как определено в [RFC4026].

L2NM

L2VPN Network Model – модель сети L2VPN.

L3NM

L3VPN Network Model – модель сети L3VPN.

MPLS

Multiprotocol Label Switching – многопротокольная коммутация по меткам.

OAM

Operations, Administration, and Maintenance – эксплуатация, администрирование, поддержка.

OSPF

Open Shortest Path First – сначала по кратчайшему пути.

OWAMP

One-Way Active Measurement Protocol – протокол активных измерений в одном направлении, заданный в [RFC4656].

P

Provider router – маршрутизатор провайдера, как определено в [RFC4026].

PE

Provider Edge – граничное устройство провайдера, как определено в [RFC4026].

PM

Performance Monitoring – мониторинг производительности.

SLA

Service Level Agreement – соглашение об уровне обслуживания.

TP

Termination Point – точка завершения, как определено в параграфе 4.2 [RFC8345].

TWAMP

Two-Way Active Measurement Protocol – протокол активных измерений в 2 направлениях, заданный в [RFC5357].

VPLS

Virtual Private LAN Service – служба виртуальных частных ЛВС, как определено в [RFC4026].

VPN

Virtual Private Network – виртуальная частная сеть.

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

Модели очень важны для автоматизации управления сетью (раздел 3 в [RFC8969]). В частности, нужны модели сети и служб, а также телеметрии производительности для отслеживания производительности сети в соответствии с требованиями сервиса (обычно указываются в SLA).

                     +---------------+
                     |    Клиент     |
                     +-------+-------+
                             |
Модели обслуживания клиентов |
                             |
                     +-------+---------+
                     |  Оркестратор    |
                     |     услуг       |
                     +------+-+--------+
                            | |
    Модели сетевого сервиса | | Модели PM для сети и VPN
                            | |
                     +------+-+--------+
                     |   Контроллер    |
                     |      сети       |
                     +-------+---------+
                             |
     +-----------------------+------------------------+
                           Сеть

Рисунок 1. Пример архитектуры с оркестратором служб.


Модель PM для сети и VPN может служить для раскрытия сведений о рабочей производительности вышележащему уровню, например, оркестратору или иному клиентскому приложению поддержки бизнеса (Business Support System или BSS) или эксплуатации (Operational Support System или OSS) через стандартные API управления сетью. На рисунке 1 показан пример использования многоуровневой архитектуры модели, описанной в [RFC8309].

Перед использованием модели контроллеру нужно обеспечить видимость топологии сети и VPN. Например, контроллер использовать сведения о сети от [RFC8345] и [YANG-SAP] или о VPN от модели L3VPN (L3VPN Network Model или L3NM) [RFC9182] и L2VPN (L2VPN Network Model или L2NM) [RFC9291]. После этого контроллер получает данные о производительности сети или VPN, агрегируя (или фильтруя) данные нижележащих уровней, собранные счётчиками мониторинга на вовлечённых устройствах.

Данные о производительности сети или VPN могут приходить из разных источников. Например, данные мониторинга производительности по каналам базовых сетей можно собирать с помощью методов измерения производительности сети, таких как активные измерения в одном (OWAMP) [RFC4656] или двух (TWAMP) [RFC5357] направлениях, простой протокол двухсторонних активных измерений (Simple Two-way Active Measurement Protocol или STAMP) [RFC8762], измерение потерь и задержек при многопротокольной коммутации по меткам (Multiprotocol Label Switching или MPLS) [RFC6374], In situ OAM (IOAM) [RFC9197]. Данные мониторинга производительности сети, отражающие качество работы сети или службы VPN (например, производительность сети между источником и получателем или между сайтами VPN) могут быть обработаны и агрегированы с использованием, например, сведений из базы данных организации трафика (Traffic Engineering Database или TED) [RFC7471] [RFC8570] [RFC8571] или крупномасштабной измерительной платформы (Large-Scale Measurement Platform или LMAP) [RFC8194].

Интервалы измерений и отчётов, связанных с данными о производительности, обычно зависят от конфигурации методов измерения и сбора сведений. Этот документ задаёт интервалы измерений в масштабе сети для согласования требований к измерениям для сетей и служб VPN.

3.1. Сбор данных через механизм публикации и подписки

Некоторые приложения, такие как приложения гарантий обслуживания, которые должны поддерживать постоянное представление рабочих данных и состояния, могут применять модель подписки, заданную в [RFC8641], для предоставления конкретных сведений о производительности сети или службы VPN от источника данных. Например, можно узнать от изменении топологии сети или VPN с помощью уведомлений об изменениях [RFC8641]. Для динамических данных PM (например, маршруты VRF3, записи MAC4, метрика каналов и интерфейсов), могут быть заданы свои уведомления, позволяющие получить более полные данные. Могут быть заданы периодические обновления [RFC8641] для получения данных о производительности в реальном масштабе времени. Для контроллеров и устройств поддерживающих историю производительности в интервале времени, может быть организовано воспроизведение (replay) уведомлений (см. [RFC5277] или [RFC8639]). Можно задать уведомления о сигналах тревоги (alarm) [RFC8632] при выходе показателей производительности за определённые пределы.

Источник данных может использовать модель мониторинга производительности сети или службы VPN, заданную в этом документе, и модель данных YANG-Push [RFC8641] для описания конкретных данных телеметрии.

3.2. Сбор данных по запросу

При получении моментального снимка (snapshot) данных производительности от топологии сети или службы VPN приложение для обеспечения гарантий обслуживания может извлекать сведения с использованием модели PM для сети или службы по протоколу настройки сети (Network Configuration Protocol или NETCONF) [RFC6241] или RESTCONF [RFC8040]. Например, заданный идентификатор link-id для VPN может служить фильтров запроса RESTCONF GET для извлечения данных VPN PM по каналу.

4. Описание модели данных YANG

В этом документе задан модуль YANG ietf-network-vpn-pm, дополняющий модули ietf-network и ietf-network-topology.

4.1. Связи между уровнями топологии

В [RFC8345] задана модель данных YANG для топологии и описи сетей и служб. Топология сервиса, описанная в [RFC8345], включает абстрактную топологию служб выше базовой топологии уровней L1, L2 и L3. Эта топология службы имеет базовые элементы для узлов, каналов и точек завершения. Типовой пример топологии представлен на риснке 3 в [RFC8345] с двумя службами VPN в общей топологии L3. Топология каждой службы VPN отображается на подмножество узлов топологии L3.

На рисунке 2 показан пример иерархии топологий с сопоставлением топологии двух служб VPN и базовой сети L3.

                     VPN 1                       VPN 2
          +------------------------+   +------------------------+
         /                        /   /                        /
        / S1C_[VN3]..........    /   /                        /
       /         \          :   /   / S2A_[VN1]____[VN3]_S2B /
      /           \         :  /   /        *        *      /
     /             \        :............ * ....     *     /
    / S1B_[VN2]____[VN1]_S1A /   /       *     :     *    /
   +---------:-------:------+   +-------*------:-----*---+
             :        :      * * *  * *        :     *
             :         :   *                   :     *
   Сайт-1A   :  +-------:-*--------------------:-----*-----+ Сайт-1C
     [CE1]___:_/_______[N1]___________________[N2]___*____/__[CE3]
             :/       / / \             _____//      *   /
   [CE5]_____:_______/ /    \     _____/     /     *    /
 Сайт-2A    /:        /       \  /          /    *     /
           / :                [N5]         /   *      /
          /   :     /       __/ \__       /  *       /
         /     :   /    ___/       \__   / *        /
Сайт-1B /       : / ___/              \ /*         /  Сайт-2B
[CE2]__/________[N4]__________________[N3]________/____[CE4]
      /                                          /
     +------------------------------------------+
                                     Топология L3
N   Узел
VN  Узел VPN
S   Сайт
CE  Граничное устройство клиента
__  Канал внутри сетевого уровня
:   Сопоставление топологии службы VPN 1 и топологии L3
*   Сопоставление топологии службы VPN 2 и топологии L3

Рисунок 2. Пример сопоставления топологии между VPN и базовой сетью.


VPN 1

Топология этой службы поддерживает соединения «звезда» (Hub-and-Spoke) для «клиента 1», обеспечивающие доступ на трёх сайтах – 1A, 1B, 1C. Эти сайты подключены к узлам, отображённым на узлы 1 (N1), 2 (N2) и 4 (N4) в базовой сети L3. Сайт-1A играет роль концентратора (Hub), 1B и 1C настроены как лучи (Spoke).

VPN 2

Топология этой службы обеспечивает соединения «каждый с каждым» для «клиента 2», обеспечивающие доступ на двух сайтах 2A и 2B. Эти сайты соединены с узлами, которые отображаются на узлы 1 (N1) и 3 (N3) в базовой сети L3.

На основе ассоциация между топологией обеих VPN и топологией базовой сети модуль YANG для PM сетей и служб VPN извлекает сведения о производительности из базовой сети и служб VPN. Например, модуль может отслеживать статистику PM для каналов и статистику портов в базовой сети (сети L1, L2, L3, OSPF). Он может также предоставлять статистику VPN PM, которые можно разделить на PM для туннеля VPN и узлов доступа VPN PE (Рисунок 3).

          +-----------------------------------------------------+
          |                                                     |
          |                      Канал VPN2                     |
          |              |<-------------------->|               |
          |              |                      |               |
          |      VPN2+---+---+              +---+---+VPN2       |
          |       TP1| VN1   |  Туннель PM  |  VN3  |TP2        |
          |       ---+ PE A  |==============|  PE B +----       |
          |vpn-access+-------+              +-------+ vpn-access|
          |-interface|                              | -interface|
          |          |##############################|           |
          |          |inter-vpn-access-interface PM |           |
          |                                                     |
          +-----------------------------------------------------+
          |                                                     |
          |                                                     |
   +----+ |        TP+-----+ Канал +---+ Канал +-----+TP        | +----+
   | CE4+-+----------+ N1  +-------+-N2+-------+  N3 +----------+-+CE5 |
   +----+ |       1-1+-----+1-2 2-1+---+2-2 3-1+-----+3-2       | +----+
          |                                                     |
          |                                                     |
          +-----------------------------------------------------+
N   Узел
VN  Узел VPN
TP  Точка завершения
-   Канал

Рисунок 3. Пример VPN PM.


На рисунке 3 приведён пример VPN PM и двух методов измерения VPN PM, включающих туннель VPN и интерфейс между VPN. VPN PM может также предоставлять статистику для интерфейсов доступа VPN, числа текущих маршрутов VRF или записей L2VPN MAC на узле VPN.

4.2. Добавление мониторинга производительности на уровне сети

Описанный ниже модуль может служить для мониторинга производительности базовых сетей и служб VPN, которые будут отдельными записями в списке сетей [RFC8345]. Различия определяются присутствием контейнера service. differences are as follows:

  • Отсутствие контейнера указывает, что выполняется мониторинг производительности сети.

  • Наличие контейнера указывает мониторинг производительности службы VPN, заданной листом service-type, например, L3VPN или VPLS. Значения взяты из [RFC9181]. Когда экземпляр топологии сети содержит L3VPN или иные типы сетей L2VPN, он представляет экземпляр VPN способный отслеживать производительность.

Дерево YANG на рисунке 4 является частью дерева ietf-network-vpn-pm и определяет указанные ниже атрибуты сетевого уровня.

vpn-id

Указывает идентификатор службы VPN, определённый в [RFC9181]. Этот идентификатор служит для сопоставления статуса производительности с конфигурацией сетевой службы.

vpn-service-topology

Указывает тип топологии службы VPN. Эта модель поддерживает варианты any-to-any (каждый с каждым), hub-spoke (где концентраторы могут обмениваться трафиком) и hub-spoke-disjoint (концентраторы не могут обмениваться трафиком), взятые из [RFC9181]. Эти типы топологии служб VPN можно использовать для описания взаимодействий между сайтами VPN.
   module: ietf-network-vpn-pm
     augment /nw:networks/nw:network/nw:network-types:
       +--rw service!
          +--rw service-type            identityref
          +--rw vpn-id?                 vpn-common:vpn-id
          +--rw vpn-service-topology?   identityref

Рисунок 4. Дерево YANG сетевого уровня.

4.3. Добавление мониторинга производительности на уровне узла

Дерево YANG на рисунке 5 показывает связанную с узлом часть дерева ietf-network-vpn-pm. Для мониторинга производительности модуль задаёт указанные ниже атрибуты.

node-type

Указывает тип устройства – PE, P, или ASBR5, как определено в [RFC4026] и [RFC4364], чтобы можно было сообщать метрику производительности между двумя любыми узлами определённого типа.

entry-summary

Список наборов параметров статистики IPv4, IPv6 и MAC. Подробная статистика задаётся отдельно.

Для топологии службы VPN модуль определяет ещё один атрибут.

role

Указывает роль в конкретной топологии службы VPN. Роли взяты из [RFC9181] (например, any-to-any-role, spoke-role, hub-role).
     augment /nw:networks/nw:network/nw:node:
       +--rw node-type?       identityref
       +--ro entry-summary
          +--ro ipv4-num
          |  +--ro maximum-routes?        uint32
          |  +--ro total-active-routes?   uint32
          +--ro ipv6-num
          |  +--ro maximum-routes?        uint32
          |  +--ro total-active-routes?   uint32
          +--ro mac-num
             +--ro maximum-mac-entries?        uint32
             +--ro total-active-mac-entries?   uint32
     augment /nw:networks/nw:network/nw:node:
       +--rw role?   identityref

Рисунок 5. Дерево YANG на уровне узла.

4.4. Добавление мониторинга производительности на уровне канала и TP

Дерево YANG на рисунке 6 показывает связанную с каналами и точками завершениячасть дерева ietf-network-vpn-pm.

Каналы делятся на 2 типа – топологические (определены в [RFC8345]) и абстрактные каналы VPN между PE (определены в этом модуле).

Данные производительности для канала – это набор счётчиков и датчиков, сообщающих состояние производительности. Все эти показатели определены как односторонние (unidirectional).

     augment /nw:networks/nw:network/nt:link:
       +--rw perf-mon
          +--rw low-percentile?            percentile
          +--rw intermediate-percentile?   percentile
          +--rw high-percentile?           percentile
          +--rw measurement-interval?      uint32
          +--ro pm* [pm-type]
          |  +--ro pm-type          identityref
          |  +--ro pm-attributes
          |     +--ro start-time?                     yang:date-and-time
          |     +--ro end-time?                       yang:date-and-time
          |     +--ro pm-source?                      identityref
          |     +--ro one-way-pm-statistics
          |     |  +--ro loss-statistics
          |     |  |  +--ro packet-loss-count?   yang:counter64
          |     |  |  +--ro loss-ratio?          percentage
          |     |  +--ro delay-statistics
          |     |  |  +--ro unit-value?                     identityref
          |     |  |  +--ro min-delay-value?                yang:gauge64
          |     |  |  +--ro max-delay-value?                yang:gauge64
          |     |  |  +--ro low-delay-percentile?           yang:gauge64
          |     |  |  +--ro intermediate-delay-percentile?  yang:gauge64
          |     |  |  +--ro high-delay-percentile?          yang:gauge64
          |     |  +--ro jitter-statistics
          |     |     +--ro unit-value?                     identityref
          |     |     +--ro min-jitter-value?               yang:gauge64
          |     |     +--ro max-jitter-value?               yang:gauge64
          |     |     +--ro low-jitter-percentile?          yang:gauge64
          |     |     +--ro intermediate-jitter-percentile? yang:gauge64
          |     |     +--ro high-jitter-percentile?         yang:gauge64
          |     +--ro one-way-pm-statistics-per-class* [class-id]
          |        +--ro class-id             string
          |        +--ro loss-statistics
          |        |  +--ro packet-loss-count?   yang:counter64
          |        |  +--ro loss-ratio?          percentage
          |        +--ro delay-statistics
          |        |  +--ro unit-value?                     identityref
          |        |  +--ro min-delay-value?                yang:gauge64
          |        |  +--ro max-delay-value?                yang:gauge64
          |        |  +--ro low-delay-percentile?           yang:gauge64
          |        |  +--ro intermediate-delay-percentile?  yang:gauge64
          |        |  +--ro high-delay-percentile?          yang:gauge64
          |        +--ro jitter-statistics
          |           +--ro unit-value?                     identityref
          |           +--ro min-jitter-value?               yang:gauge64
          |           +--ro max-jitter-value?               yang:gauge64
          |           +--ro low-jitter-percentile?          yang:gauge64
          |           +--ro intermediate-jitter-percentile? yang:gauge64
          |           +--ro high-jitter-percentile?         yang:gauge64
          +--rw vpn-pm-type
             +--rw inter-vpn-access-interface
             |  +--rw inter-vpn-access-interface?   empty
             +--rw vpn-tunnel!
                +--ro vpn-tunnel-type?   identityref
     augment /nw:networks/nw:network/nw:node/nt:termination-point:
       +--ro pm-statistics
          +--ro last-updated?               yang:date-and-time
          +--ro inbound-octets?             yang:counter64
          +--ro inbound-unicast?            yang:counter64
          +--ro inbound-broadcast?          yang:counter64
          +--ro inbound-multicast?          yang:counter64
          +--ro inbound-discards?           yang:counter64
          +--ro inbound-errors?             yang:counter64
          +--ro inbound-unknown-protocol?   yang:counter64
          +--ro outbound-octets?            yang:counter64
          +--ro outbound-unicast?           yang:counter64
          +--ro outbound-broadcast?         yang:counter64
          +--ro outbound-multicast?         yang:counter64
          +--ro outbound-discards?          yang:counter64
          +--ro outbound-errors?            yang:counter64
          +--ro vpn-network-access* [network-access-id]
             +--ro network-access-id           vpn-common:vpn-id
             +--ro last-updated?               yang:date-and-time
             +--ro inbound-octets?             yang:counter64
             +--ro inbound-unicast?            yang:counter64
             +--ro inbound-broadcast?          yang:counter64
             +--ro inbound-multicast?          yang:counter64
             +--ro inbound-discards?           yang:counter64
             +--ro inbound-errors?             yang:counter64
             +--ro inbound-unknown-protocol?   yang:counter64
             +--ro outbound-octets?            yang:counter64
             +--ro outbound-unicast?           yang:counter64
             +--ro outbound-broadcast?         yang:counter64
             +--ro outbound-multicast?         yang:counter64
             +--ro outbound-discards?          yang:counter64
             +--ro outbound-errors?            yang:counter64

Рисунок 6. Ветви YANG для канала и точки завершения.

Для узлов данных link, указанных на рисунке 6, модуль YANG задаёт указанный ниже минимальный набор атрибутов производительности на уровне канала.

Параметры в процентилях

Модуль поддерживает указание параметров задержки и её вариаций в процентилях. Имеется три значения в процентилях для настройки разных уровней отчётности. Про умолчанию используется низкий (low, 10-й процентиль), средний (intermediate, 50-й процентиль) и высокий (high, 90-й процентиль). Настройка для процентиля значения 0.000 указывает, что клиент не заинтересован в получении соответствующего процентиля. Если такое значение задано для всех процентилей, для данного показателя не будут сообщаться узлы с процентилями (например, задержки и их вариации в одном направлении), а останутся лишь узлы пиковых и минимальных значений. Например, клиент может указать серверу, что он заинтересован в получении лишь высоких процентилей. Тогда для данного канала в заданные моменты start-time, end-time и measurement-interval будут сообщаться значения high-delay-percentile и high-jitter-percentile. Пример использования процентилей дап в Приложении A.3.

Интервал измерения (measurement-interval)

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

Время старта (start-time)

Время начала измерений производительности для статистики канала.

Время окончания (end-time)

Время окончания измерений производительности для статистики канала.

Источник данных PM (pm-source)

Указывает источник данных мониторинга производительности, например, состояние канала BGP (BGP – Link State или BGP-LS) [RFC8571]. Может собираться статистика абстрактных каналов VPN на основе механизмов VPN OAM, например, механизмов OAM из [RFC9182] или Ethernet OAM [ITU-T-Y-1731] из [RFC9291]. Кроме того, данные могут быть основаны на механизмах OAM базовой технологии, например, OAM туннеля GRE.

Статистика потерь

Набор атрибутов статистики потерь в одном направлении, которые служат для измерения сквозных потерь между сайтами VPN или любыми двумя узлами сети. Может указываться точное значение или доля теряемых пакетов.

Статистика задержек

Набор атрибутов статистики задержки в одном направлении, которые служат для измерения сквозной задержки между сайтами VPN или любыми двумя узлами сети. Могут указываться пиковые и минимальные значения или значения процентилей.

Статистика вариаций задержки

Набор атрибутов статистики вариаций задержки пакетов IP в одном направлении [RFC3393], которые служат для измерения сквозных вариаций между сайтами VPN или любыми двумя узлами сети. Могут указываться пиковые и минимальные значения или значения процентилей.

Статистика PM по классам (one-way-pm-statistics-per-class)

Односторонняя статистика PM по классам содержит статистику измерений для топологии физических или абстрактных каналов между VPN PE я данными именами class-id. Список задаётся отдельно от one-way-pm-statistics, используемой для сбора базовых показателей для неуказанных class-id.

Тип VPN PM (vpn-pm-type)

Указывает тип мониторинга производительности VPN – inter-vpn-access-interface PM или vpn-tunnel PM, которые являются распространёнными для VPN. Тип inter-VPN-access-interface PM служит для мониторинга производительности логических соединений VPN «точка-точка» (point-to-point) между исходным и целевым интерфейсами доступа VPN. Тип vpn-tunnel PM служит для мониторинга производительности туннелей VPN. Тип inter-VPN-access-interface PM включает мониторинг PE-PE, поэтому обычно применяется лишь 1 из этих двух методов. Тип inter-VPN-access-interface определён как пустой лист, который не привязан к какому-либо конкретному интерфейсу доступа VPN. Исходный и целевой интерфейсы доступа VPN для измерения могут быть добавлены (augment) при необходимости.

Тип туннеля VPN (vpn-tunnel-type)

Указывает тип протокола абстрактного канала VPN, такой как GRE или IP-in-IP. Лист указывает идентификатор базового транспорта (underlay-transport) заданный в [RFC9181], который определяет транспортную технологию для передачи трафика службы VPN. В случае нескольких типов туннелей между одной парой узлов VPN может создаваться отдельный канал для каждого типа туннеля.

Для узлов данных termination-point, показанных на рисунке 6, модуль задаёт показанный ниже минимальный набор параметров статистики.

Время последнего обновления (last-updated)

Показывает дату и время последнего обновления счетчиков.

Входная статистика

Набор атрибутов входной статистики, которые служат для измерения входной статистики точки завершения, например, числа принятых пакетов, числа паринятых пакетов с ошибками и т. п.

Выходная статистика

Набор атрибутов выходной статистики, которые служат для измерения выходной статистики точки завершения, например, числа переданных пакетов, числа пакетов, которые не удалось передать из-за ошибок и т. п.

Доступ в сеть VPN (vpn-network-access)

Список счётчиков доступа к сети VPN, определённых в L3NM [RFC9182] или L2NM [RFC9291]. При создании нескольких сетевых подключений VPN через один физический порт могут отслежтваться более детализированные показатели. Если точка TP связана лишь с одной VPN, этот список не требуется.

5. Модуль YANG для мониторинга производительности сетей и VPN

Модуль YANG ietf-network-vpn-pm использует определения типов из [RFC6991], [RFC8345], [RFC8532], [RFC9181].

   <CODE BEGINS> file "ietf-network-vpn-pm@2023-03-20.yang"
   module ietf-network-vpn-pm {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm";
     prefix nvp;

     import ietf-yang-types {
       prefix yang;
       reference
         "RFC 6991: Common YANG Data Types";
     }
     import ietf-vpn-common {
       prefix vpn-common;
       reference
         "RFC 9181: A Common YANG Data Model for Layer 2 and
              Layer 3 VPNs";
     }
     import ietf-network {
       prefix nw;
       reference
         "RFC 8345: A YANG Data Model for Network
              Topologies, Section 6.1";
     }
     import ietf-network-topology {
       prefix nt;
       reference
         "RFC 8345: A YANG Data Model for Network
              Topologies, Section 6.2";
     }
     import ietf-lime-time-types {
       prefix lime;
       reference
         "RFC 8532: Generic YANG Data Model for the Management of
              Operations, Administration, and Maintenance (OAM)
              Protocols That Use Connectionless Communications";
     }

     organization
       "IETF OPSAWG (Operations and Management Area Working Group)";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/opsawg/> 
        WG List:  <mailto:opsawg@ietf.org>

        Editor: Bo Wu
             <lana.wubo@huawei.com> 

        Editor: Mohamed Boucadair
             <mohamed.boucadair@orange.com> 

        Editor: Qin Wu
             <bill.wu@huawei.com> 

        Author: Oscar Gonzalez de Dios
             <oscar.gonzalezdedios@telefonica.com> 

        Author: Bin Wen
             <bin_wen@comcast.com>"; 
     description
       "Этот модуль YANG задаёт модель для мониторинга 
        производительности сети или службы VPN.

        Авторские права (Copyright (c) 2023) принадлежат IETF Trust и
        лицам, указанным как авторы. Все права защищены.

        Распространение и применение модуля в исходной или двоичной 
        форме с изменениями или без таковых разрешено в соответствии с
        лицензией Simplified BSD License, изложенной в параграфе 4.c
        IETF Trust's Legal Provisions Relating to IETF Documents
        (https://trustee.ietf.org/license-info). 

        Эта версия модуля YANG является частью RFC 9375, где правовые
        аспекты приведены более полно.";

     revision 2023-03-20 {
       description
         "Исходная версия.";
       reference
         "RFC 9375: A YANG Data Model for Network and VPN Service
              Performance Monitoring";
     }

     identity node-type {
       description
         "Базовый идентификатор для типа узла";
     }

     identity pe {
       base node-type;
       description
         "Граничное устройство провайдера (PE) - устройство или набор
          устройств на границе сети провайдера, обеспечивающих 
          функциональность, требуемую для взаимодействия с клиентом.";
     }

     identity p {
       base node-type;
       description
         "Маршрутизатор провайдера - маршрутизатор в ядре сети, не 
          имеющий интерфейсов для прямого подключения клиентов.";
     }

     identity asbr {
       base node-type;
       description
         "Граничный маршрутизатор автономной системы (ASBR).";
       reference
         "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)";
     }

     identity pm-source-type {
       description
         "Базовый идентификатор, из которого выводятся конкретные типы
          механизмов мониторинга производительности.";
     }

     identity pm-source-bgpls {
       base pm-source-type;
       description
         "Указывает BGP-LS как источник данных PM.";
       reference
         "RFC 8571: BGP - Link State (BGP-LS) Advertisement of
              IGP Traffic Engineering Performance Metric
              Extensions";
     }

     identity pm-source-owamp {
       base pm-source-type;
       description
         "Указывает протокол OWAMP как источник данных PM.";
       reference
         "RFC 4656: A One-way Active Measurement Protocol (OWAMP)";
     }

     identity pm-source-twamp {
       base pm-source-type;
       description
         "Указывает протокол TWAMP как источник данных PM.";
       reference
         "RFC 5357: A Two-Way Active Measurement Protocol (TWAMP)";
     }

     identity pm-source-stamp {
       base pm-source-type;
       description
         "Указывает протокол STAMP как источник данных PM.";
       reference
         "RFC 8762: Simple Two-Way Active Measurement Protocol";
     }

     identity pm-source-y-1731 {
       base pm-source-type;
       description
         "Указывает Ethernet OAM Y.1731 как источник данных PM.";
       reference
         "ITU-T Y.1731: Operations, administration and
                maintenance (OAM) functions and mechanisms
                for Ethernet-based networks";
     }

     identity pm-source-ioam {
       base pm-source-type;
       description
         "Указывает IOAM как источник данных PM.";
       reference
         "RFC 9197: Data Fields for In Situ Operations, Administration,
              and Maintenance (IOAM)";
     }

     identity pm-type {
       description
         "<Базовый идентификатор для типа PM.";
     }

     identity pm-type-network-link {
       base pm-type;
       description
         "Указывает тип PM для канала в топологии сети.";
     }

     identity pm-type-vpn-inter-access {
       base pm-type;
       description
         "Указывает тип PM для логических соединений VPN «точка-точка»
          между исходным и целевым интерфейсами доступа VPN.";
     }

     identity pm-type-vpn-tunnel {
       base pm-type;
       description
         "Указывает тип PM для туннелей VPN.";
     }

     typedef percentage {
       type decimal64 {
         fraction-digits 5;
         range "0..100";
       }
       description
         "В процентах до 5 знаков после запятой.";
     }

     typedef percentile {
       type decimal64 {
         fraction-digits 3;
         range "0..100";
       }
       description
         "Процентиль - это значение от 0 до 100, имеющее до 3 знаков в
          дробной части, например, 10.000, 99.900, 99.990. Если для
          данного измерения односторонней задержки задан процентиль 
          95.000 и 95-й процентиль односторонней задержки составляет 2
          мсек, тогда 95 процентов значений выборки задержки будут иметь
          значение не больше 2 миллисекунд.";
     }

     grouping entry-summary {
       description
         "Сводная группировка записей, применяемая для дополнения 
          топологии сети.";
       container entry-summary {
         config false;
         description
           "Контейнер для сводки VPN или сети.";
         container ipv4-num {
           leaf maximum-routes {
             type uint32;
             description
               "Максимальное число маршрутов IPv4 для VPN или сети.";
           }
           leaf total-active-routes {
             type uint32;
             description
               "Общее число активных маршрутов IPv4 для VPN или сети.";
           }
           description
             "Параметры, относящиеся к IPv4.";
         }
         container ipv6-num {
           leaf maximum-routes {
             type uint32;
             description
               "Максимальное число маршрутов IPv6 для VPN или сети.";
           }
           leaf total-active-routes {
             type uint32;
             description
               "Общее число активных маршрутов IPv6 для VPN или сети.";
           }
           description
             "Параметры, относящиеся к IPv6.";
         }
         container mac-num {
           leaf maximum-mac-entries {
             type uint32;
             description
               "Максимальное число записей MAC для VPN или сети.";
           }
           leaf total-active-mac-entries {
             type uint32;
             description
               "Общее число активных записей MAC для VPN или сети.";
           }
           description
             "Статистика MAC.";
         }
       }
     }

     grouping link-loss-statistics {
       description
         "Группировка для статистики ошибок на канал.";
       container loss-statistics {
         description
           "Сводка потерь в одном направлении.";
         reference
           "RFC 4656: A One-way Active Measurement Protocol (OWAMP)
            ITU-T Y.1731: Operations, administration and
                  maintenance (OAM) functions and mechanisms
                  for Ethernet-based networks";
         leaf packet-loss-count {
           type yang:counter64;
           description
             "Общее число потерянных пакетов.";
         }
         leaf loss-ratio {
           type percentage;
           description
             "Доля потерянных пакетов в процентах от числа переданных.";
         }
       }
     }

     grouping link-delay-statistics {
       description
         "Группировка для статистики задержки на канал.";
       container delay-statistics {
         description
           "Сводка задержки в одном направлении.";
         reference
           "RFC 4656: A One-way Active Measurement Protocol (OWAMP)
            ITU-T Y.1731: Operations, administration and
                  maintenance (OAM) functions and mechanisms
                  for Ethernet-based networks";
         leaf unit-value {
           type identityref {
             base lime:time-unit-type;
           }
           default "lime:milliseconds";
           description
             "Единицы времени (возможны часы, минуты, секунды, 
              милли-, микро- и наносекунды).";
         }
         leaf min-delay-value {
           type yang:gauge64;
           description
             "Минимальная наблюдаемая односторонняя задержка.";
         }
         leaf max-delay-value {
           type yang:gauge64;
           description
             "Максимальная наблюдаемая односторонняя задержка.";
         }
         leaf low-delay-percentile {
           type yang:gauge64;
           description
             "Низкий процентиль наблюдаемой односторонней задержки
              для конкретного метода измерения.";
         }
         leaf intermediate-delay-percentile {
           type yang:gauge64;
           description
             "Средний процентиль наблюдаемой односторонней задержки
              для конкретного метода измерения.";
         }
         leaf high-delay-percentile {
           type yang:gauge64;
           description
             "Высокий процентиль наблюдаемой односторонней задержки
              для конкретного метода измерения.";
         }
       }
     }

     grouping link-jitter-statistics {
       description
         "Группировка для статистики вариаций задержки на канал.";
       container jitter-statistics {
         description
           "Сводка вариаций задержки в одном направлении.";
         reference
           "RFC 3393: IP Packet Delay Variation Metric
                for IP Performance Metrics (IPPM)
            RFC 4656: A One-way Active Measurement Protocol (OWAMP)
            ITU-T Y.1731: Operations, administration and
                  maintenance (OAM) functions and mechanisms
                  for Ethernet-based networks";
         leaf unit-value {
           type identityref {
             base lime:time-unit-type;
           }
           default "lime:milliseconds";
           description
             "Единицы времени (возможны часы, минуты, секунды, 
              милли-, микро- и наносекунды).";
         }
         leaf min-jitter-value {
           type yang:gauge64;
           description
             "Минимальные наблюдаемые вариации односторонней задержки.";
         }
         leaf max-jitter-value {
           type yang:gauge64;
           description
             "Максимальные наблюдаемые вариации односторонней задержки";
         }
         leaf low-jitter-percentile {
           type yang:gauge64;
           description
             "Низкий процентиль наблюдаемых вариаций односторонней 
              задержки.";
         }
         leaf intermediate-jitter-percentile {
           type yang:gauge64;
           description
             "Средний процентиль наблюдаемых вариаций односторонней 
              задержки.";
         }
         leaf high-jitter-percentile {
           type yang:gauge64;
           description
             "Высокий процентиль наблюдаемых вариаций односторонней 
              задержки.";
         }
       }
     }

     grouping tp-svc-telemetry {
       leaf last-updated {
         type yang:date-and-time;
         config false;
         description
           "Дата и время последнего обновления счетчиков.";
       }
       leaf inbound-octets {
         type yang:counter64;
         description
           "Общее число октетов, полученных интерфейсом, включая
            символы кадрирования.";
       }
       leaf inbound-unicast {
         type yang:counter64;
         description
           "Общее число входящих индивидуальных пакетов.";
       }
       leaf inbound-broadcast {
         type yang:counter64;
         description
           "Общее число входящих широковещательных пакетов.";
       }
       leaf inbound-multicast {
         type yang:counter64;
         description
           "Общее число входящих групповых пакетов.";
       }
       leaf inbound-discards {
         type yang:counter64;
         description
           "Число входящих пакетов, которые были отброшены, несмотря на
            отсутствие обнаруженных ошибок. Причинами отбрасывания могут
            быть освобождение буферного пространства, нехватка буферов
            и т. п.";
       }
       leaf inbound-errors {
         type yang:counter64;
         description
           "Общее число входящих пакетов с ошибками.";
       }
       leaf inbound-unknown-protocol {
         type yang:counter64;
         description
           "Чсило полученных интерфейсом пакетов, которые были отброшены 
            из-за неизвестного или не поддерживаемого протокола.";
       }
       leaf outbound-octets {
         type yang:counter64;
         description
           "Общее число октетов, переданных интерфейсом, включая
            символы кадрирования.";
       }
       leaf outbound-unicast {
         type yang:counter64;
         description
           "Общее число исходящих индивидуальных пакетов.";
       }
       leaf outbound-broadcast {
         type yang:counter64;
         description
           "Общее число исходящих широковещательных пакетов.";
       }
       leaf outbound-multicast {
         type yang:counter64;
         description
           "Общее число исходящих групповых пакетов.";
       }
       leaf outbound-discards {
         type yang:counter64;
         description
           "Число входящих пакетов, которые были отброшены, несмотря на
            отсутствие обнаруженных ошибок, препятствующих передача. 
            Причинами отбрасывания могут быть освобождение буферного 
            пространства, нехватка буферов и т. п.";
       }
       leaf outbound-errors {
         type yang:counter64;
         description
           "Общее число исходящих пакетов с ошибками.";
       }
       description
         "Группировка для телеметрии интерфейсов службы.";
     }

     augment "/nw:networks/nw:network/nw:network-types" {
       description
         "Определяет типы топологии службы.";
       container service {
         presence "Наличие контейнера указывает мониторинг 
                   производительности службы VPN, а отсутствие - 
                   мониторинг производительности сети.";
         description
           "Контейнер для службы VPN.";
         leaf service-type {
           type identityref {
             base vpn-common:service-type;
           }
           mandatory true;
           description
             "Указывает тип сервиса, например, L3VPN, VPLS.";
         }
         leaf vpn-id {
           type vpn-common:vpn-id;
           description
             "Идентификатор VPN.";
         }
         leaf vpn-service-topology {
           type identityref {
             base vpn-common:vpn-topology;
           }
           description
             "Топология службы VPN, например, hub-spoke, any-to-any,
              hub-spoke-disjoint.";
         }
       }
     }

     augment "/nw:networks/nw:network/nw:node" {
       description
         "Добавляет общие атрибуты для узла сети.";
       leaf node-type {
         type identityref {
           base node-type;
         }
         description
           "Тип узла, например, PE, P, ASBR.";
       }
       uses entry-summary;
     }

     augment "/nw:networks/nw:network/nw:node" {
       when '../nw:network-types/nvp:service' {
         description
           "Дополнение для PM службы VPN.";
       }
       description
         "Добавление атрибутов службы VPN узлу сети.";
       leaf role {
         type identityref {
           base vpn-common:role;
         }
         default "vpn-common:any-to-any-role";
         description
           "Роль узла в топологии службы VPN.";
       }
     }

     augment "/nw:networks/nw:network/nt:link" {
       description
         "Добавление атрибутов PM к каналу сетевой топологии.";
       container perf-mon {
         description
           "Контейнер для атрибутов PM.";
         leaf low-percentile {
           type percentile;
           default "10.000";
           description
             "Низкий процентиль для отчёта. Установка значения 0.000
              указывает, что клиент не заинтересован в получении.";
         }
         leaf intermediate-percentile {
           type percentile;
           default "50.000";
           description
             "Средний процентиль для отчёта. Установка значения 0.000
              указывает, что клиент не заинтересован в получении.";
         }
         leaf high-percentile {
           type percentile;
           default "95.000";
           description
             "Высокий процентиль для отчёта. Установка значения 0.000
              указывает, что клиент не заинтересован в получении.";
         }
         leaf measurement-interval {
           type uint32 {
             range "1..max";
           }
           units "seconds";
           default "60";
           description
             "Интервал измерений PM.";
         }
         list pm {
           key "pm-type";
           config false;
           description
             "Список PM по типам PM.";
           leaf pm-type {
             type identityref {
               base pm-type;
             }
             config false;
             description
               "Тип PM для измеренных атрибутов PM.";
           }
           container pm-attributes {
             description
               "Контейнер для атрибутов PM.";
             leaf start-time {
               type yang:date-and-time;
               config false;
               description
                 "Дата и время последнего начала измерения.";
             }
             leaf end-time {
               type yang:date-and-time;
               config false;
               description
                 "Дата и время последнего окончания измерения.";
             }
             leaf pm-source {
               type identityref {
                 base pm-source-type;
               }
               config false;
               description
                 "Инструмент OAM, используемый для сбора данных PM.";
             }
             container one-way-pm-statistics {
               config false;
               description
                 "Контейнер для атрибутов телеметрии канала.";
               uses link-loss-statistics;
               uses link-delay-statistics;
               uses link-jitter-statistics;
             }
             list one-way-pm-statistics-per-class {
               key "class-id";
               config false;
               description
                 "Список данных PM по классам обслуживания.";
               leaf class-id {
                 type string;
                 description
                   "Значение class-id служит для указания класса
                    обслужтвания. Эти идентификаторы находятся в
                    ведении локального администратора.";
               }
               uses link-loss-statistics;
               uses link-delay-statistics;
               uses link-jitter-statistics;
             }
           }
         }
       }
     }

     augment "/nw:networks/nw:network/nt:link/perf-mon" {
       when '../../nw:network-types/nvp:service' {
         description
           "Дополнение PM для службы VPN.";
       }
       description
         "Дополнение атрибутов PM службы VPN к каналу топологии сети.";
       container vpn-pm-type {
         description
           "Тип VPN PM логического одностороннего канала VPN 
            точка-точка.";
         container inter-vpn-access-interface {
           description
             "Указывает inter-vpn-access-interface PM, используемый для
              мониторинга производительности логических соединений VPN
              точка-точка между исходным и целевым интерфейсом доступа 
              VPN.";
           leaf inter-vpn-access-interface {
             type empty;
             description
               "Подстановка (placeholder) для inter-vpn-access-interface 
                PM, не связанного с конкретным интерфейсом доступа VPN.
                Исходный или целевой интерфейс доступ VPN можно
                добавить при необходимости.";
           }
         }
         container vpn-tunnel {
           presence "Включает PM для туннеля VPN.";
           description
             "Указывает PM туннеля VPN, используемый для мониторинга
              производительности туннелей VPN.";
           leaf vpn-tunnel-type {
             type identityref {
               base vpn-common:protocol-type;
             }
             config false;
             description
               "Указывает тип туннеля VPN, например, GRE, Geneve.";
           }
         }
       }
     }

     augment "/nw:networks/nw:network/nw:node/nt:termination-point" {
       description
         "Дополняет точку завершения топологии сети атрибутами PM.";
       container pm-statistics {
         config false;
         description
           "Контейнер для атрибутов PM точки завершения.";
         uses tp-svc-telemetry;
       }
     }

     augment "/nw:networks/nw:network/nw:node"
           + "/nt:termination-point/pm-statistics" {
       when '../../../nw:network-types/nvp:service' {
         description
           "Дополнения для PM службы VPN.";
       }
       description
         "Дополняет точку завершения топологии сети атрибутами PM 
          для службы VPN.";
       list vpn-network-access {
         key "network-access-id";
         description
           "Список PM на основе доступа в сеть VPN.";
         leaf network-access-id {
           type vpn-common:vpn-id;
           description
             "Ссылка на идентификатор доступа в сеть VPN.";
         }
         uses tp-svc-telemetry;
       }
     }
   }
   <CODE ENDS>

6. Вопросы безопасности

Заданный здесь модуль YANG определяет схему данных, предназначенных для доступа через протоколы управления сетью, такие как NETCONF [RFC6241] и RESTCONF [RFC8040]. Нижним уровнем для NETCONF является уровень защищённого транспорта с обязательно для реализации поддержкой Secure Shell (SSH) [RFC6242]. Нижним уровнем RESTCONF является HTTPS с обязательной реализацией защищённого транспорта TLS [RFC8446].

Модель управления доступом к конфигурации сети (Network Configuration Access Control Model или NACM) [RFC8341] обеспечивает средства для предоставления доступа лишь определенным пользователям NETCONF или RESTCONF к заранее заданному набору содержимого и протокольных операций NETCONF или RESTCONF.

В этом модуле данных YANG определено множество узлов данных, которые разрешают запись, создание и удаление (т. е. config true, как принято по умолчанию). Эти узлы могут быть конфиденциальными или уязвимыми в некоторых сетевых средах. Запись в такие узлы (например, edit-config) без должной защиты может негативно влиять на работу сети. Такие операции записи могут вести к неполноте или неточности измерений, что может влиять на видимость и решения, принимаемые на основе этих сведений. Ниже перечислены ветви и узлы, которые могут быть конфиденциальны или уязвимы.

Таблица 1. Возможные влияния записи в узлы.

Доступ

Узел

Возможное влияние

/nw:networks/nw:network/nw:network-types

write

service type

Отключение VPN PM

write

VPN identifier

Отключение VPN PM

write

VPN service topology

Сбор непригодных данных

/nw:networks/nw:network/nw:node

write

node type

Сбор непригодных данных

write

VPN topology role

Сбор непригодных данных

/nw:networks/nw:network/nw:link/nvp:perf-mon

write

percentile

Ритм передачи отчетов

write

measurement interval

Достоверность мониторинга

write

vpn-pm-type

Достоверность мониторинга

Некоторые из доступных для чтения узлов в этом модуле YANG могут быть конфиденциальны или уязвимы в той или иной сетевой среде. Важно контролировать доступ к таким объектам (например, get, get-config, notification). При их использовании нужно найти компромисс между конфиденциальностью и потребностями мониторинга производительности. Ниже перечислены ветви и узлы, которые могут быть конфиденциальны или уязвимы.

/nw:networks/nw:network/nw:node

Несанкционирование чтение этой ветви может раскрывать сведения рабочего состояния базовой сети или экземпляров VPN.

/nw:networks/nw:network/nt:link/nvp:perf-mon/nvp:one-way-pm-statistics

Несанкционирование чтение этой ветви может раскрывать сведения рабочего состояния каналов базовой сети или абстрактных каналов VPN.

/nw:networks/nw:network/nw:node/nt:termination-point/nvp:pm-statistics

Несанкционирование чтение этой ветви может раскрывать сведения рабочего состояния точек завершения базовой сети или доступа в сеть VPN.

Этот модуль YANG не задаёт операций или действий, связанных с удалёнными вызовами процедур (Remote Procedure Call или RPC).

7. Взаимодействие с IANA

Агентство IANA зарегистрировало указанный ниже URI в субреестре ns реестра IETF XML Registry [RFC3688]

   URI:  urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm
   Registrant Contact:  The IESG.
   XML:  N/A; запрошенный URI является пространством имён XML.

Агентство IANA зарегистрировало модуль YANG в субреестре YANG Module Names [RFC6020] реестра YANG Parameters

   Name:  ietf-network-vpn-pm
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-network-vpn-pm
   Maintained by IANA:  N
   Prefix:  nvp
   Reference:  RFC 9375

8. Литература

8.1. Нормативные документы

[RFC3393] Demichelis, C. and P. Chimento, “IP Packet Delay Variation Metric for IP Performance Metrics (IPPM)”, RFC 3393, DOI 10.17487/RFC3393, November 2002, <https://www.rfc-editor.org/info/rfc3393>.

[RFC3688] Mealling, M., “The IETF XML Registry”, BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>.

[RFC4364] Rosen, E. and Y. Rekhter, “BGP/MPLS IP Virtual Private Networks (VPNs)”, RFC 4364, DOI 10.17487/RFC4364, February 2006, <https://www.rfc-editor.org/info/rfc4364>.

[RFC4656] Shalunov, S., Teitelbaum, B., Karp, A., Boote, J., and M. Zekauskas, “A One-way Active Measurement Protocol (OWAMP)”, RFC 4656, DOI 10.17487/RFC4656, September 2006, <https://www.rfc-editor.org/info/rfc4656>.

[RFC5357] Hedayat, K., Krzanowski, R., Morton, A., Yum, K., and J. Babiarz, “A Two-Way Active Measurement Protocol (TWAMP)”, RFC 5357, DOI 10.17487/RFC5357, October 2008, <https://www.rfc-editor.org/info/rfc5357>.

[RFC6020] Bjorklund, M., Ed., “YANG – A Data Modeling Language for the Network Configuration Protocol (NETCONF)”, RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>.

[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., “Network Configuration Protocol (NETCONF)”, RFC 6241, DOI 10.17487/RFC6241, June 2011, <https://www.rfc-editor.org/info/rfc6241>.

[RFC6242] Wasserman, M., “Using the NETCONF Protocol over Secure Shell (SSH)”, RFC 6242, DOI 10.17487/RFC6242, June 2011, <https://www.rfc-editor.org/info/rfc6242>.

[RFC6374] Frost, D. and S. Bryant, “Packet Loss and Delay Measurement for MPLS Networks”, RFC 6374, DOI 10.17487/RFC6374, September 2011, <https://www.rfc-editor.org/info/rfc6374>.

[RFC6991] Schoenwaelder, J., Ed., “Common YANG Data Types”, RFC 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-editor.org/info/rfc6991>.

[RFC7950] Bjorklund, M., Ed., “The YANG 1.1 Data Modeling Language”, RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>.

[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, “RESTCONF Protocol”, RFC 8040, DOI 10.17487/RFC8040, January 2017, <https://www.rfc-editor.org/info/rfc8040>.

[RFC8340] Bjorklund, M. and L. Berger, Ed., “YANG Tree Diagrams”, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, <https://www.rfc-editor.org/info/rfc8340>.

[RFC8341] Bierman, A. and M. Bjorklund, “Network Configuration Access Control Model”, STD 91, RFC 8341, DOI 10.17487/RFC8341, March 2018, <https://www.rfc-editor.org/info/rfc8341>.

[RFC8345] Clemm, A., Medved, J., Varga, R., Bahadur, N., Ananthakrishnan, H., and X. Liu, “A YANG Data Model for Network Topologies”, RFC 8345, DOI 10.17487/RFC8345, March 2018, <https://www.rfc-editor.org/info/rfc8345>.

[RFC8446] Rescorla, E., “The Transport Layer Security (TLS) Protocol Version 1.3”, RFC 8446, DOI 10.17487/RFC8446, August 2018, <https://www.rfc-editor.org/info/rfc8446>.

[RFC8532] Kumar, D., Wang, Z., Wu, Q., Ed., Rahman, R., and S. Raghavan, “Generic YANG Data Model for the Management of Operations, Administration, and Maintenance (OAM) Protocols That Use Connectionless Communications”, RFC 8532, DOI 10.17487/RFC8532, April 2019, <https://www.rfc-editor.org/info/rfc8532>.

[RFC8571] Ginsberg, L., Ed., Previdi, S., Wu, Q., Tantsura, J., and C. Filsfils, “BGP – Link State (BGP-LS) Advertisement of IGP Traffic Engineering Performance Metric Extensions”, RFC 8571, DOI 10.17487/RFC8571, March 2019, <https://www.rfc-editor.org/info/rfc8571>.

[RFC8641] Clemm, A. and E. Voit, “Subscription to YANG Notifications for Datastore Updates”, RFC 8641, DOI 10.17487/RFC8641, September 2019, <https://www.rfc-editor.org/info/rfc8641>.

[RFC8762] Mirsky, G., Jun, G., Nydell, H., and R. Foote, “Simple Two-Way Active Measurement Protocol”, RFC 8762, DOI 10.17487/RFC8762, March 2020, <https://www.rfc-editor.org/info/rfc8762>.

[RFC9181] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., Ed., and Q. Wu, “A Common YANG Data Model for Layer 2 and Layer 3 VPNs”, RFC 9181, DOI 10.17487/RFC9181, February 2022, <https://www.rfc-editor.org/info/rfc9181>.

8.2. Дополнительная литература

[ITU-T-Y-1731] ITU-T, “Operations, administration and maintenance (OAM) functions and mechanisms for Ethernet-based networks”, ITU-T Recommendation G.8013/Y.1731, August 2015, <https://www.itu.int/rec/T-REC-Y.1731/en>.

[RFC4026] Andersson, L. and T. Madsen, “Provider Provisioned Virtual Private Network (VPN) Terminology”, RFC 4026, DOI 10.17487/RFC4026, March 2005, <https://www.rfc-editor.org/info/rfc4026>.

[RFC5277] Chisholm, S. and H. Trevino, “NETCONF Event Notifications”, RFC 5277, DOI 10.17487/RFC5277, July 2008, <https://www.rfc-editor.org/info/rfc5277>.

[RFC7471] Giacalone, S., Ward, D., Drake, J., Atlas, A., and S. Previdi, “OSPF Traffic Engineering (TE) Metric Extensions”, RFC 7471, DOI 10.17487/RFC7471, March 2015, <https://www.rfc-editor.org/info/rfc7471>.

[RFC8194] Schoenwaelder, J. and V. Bajpai, “A YANG Data Model for LMAP Measurement Agents”, RFC 8194, DOI 10.17487/RFC8194, August 2017, <https://www.rfc-editor.org/info/rfc8194>.

[RFC8309] Wu, Q., Liu, W., and A. Farrel, “Service Models Explained”, RFC 8309, DOI 10.17487/RFC8309, January 2018, <https://www.rfc-editor.org/info/rfc8309>.

[RFC8570] Ginsberg, L., Ed., Previdi, S., Ed., Giacalone, S., Ward, D., Drake, J., and Q. Wu, “IS-IS Traffic Engineering (TE) Metric Extensions”, RFC 8570, DOI 10.17487/RFC8570, March 2019, <https://www.rfc-editor.org/info/rfc8570>.

[RFC8632] Vallin, S. and M. Bjorklund, “A YANG Data Model for Alarm Management”, RFC 8632, DOI 10.17487/RFC8632, September 2019, <https://www.rfc-editor.org/info/rfc8632>.

[RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, E., and A. Tripathy, “Subscription to YANG Notifications”, RFC 8639, DOI 10.17487/RFC8639, September 2019, <https://www.rfc-editor.org/info/rfc8639>.

[RFC8969] Wu, Q., Ed., Boucadair, M., Ed., Lopez, D., Xie, C., and L. Geng, “A Framework for Automating Service and Network Management with YANG”, RFC 8969, DOI 10.17487/RFC8969, January 2021, <https://www.rfc-editor.org/info/rfc8969>.

[RFC9182] Barguil, S., Gonzalez de Dios, O., Ed., Boucadair, M., Ed., Munoz, L., and A. Aguado, “A YANG Network Data Model for Layer 3 VPNs”, RFC 9182, DOI 10.17487/RFC9182, February 2022, <https://www.rfc-editor.org/info/rfc9182>.

[RFC9197] Brockners, F., Ed., Bhandari, S., Ed., and T. Mizrahi, Ed., “Data Fields for In Situ Operations, Administration, and Maintenance (IOAM)”, RFC 9197, DOI 10.17487/RFC9197, May 2022, <https://www.rfc-editor.org/info/rfc9197>.

[RFC9291] Boucadair, M., Ed., Gonzalez de Dios, O., Ed., Barguil, S., and L. Munoz, “A YANG Network Data Model for Layer 2 VPNs”, RFC 9291, DOI 10.17487/RFC9291, September 2022, <https://www.rfc-editor.org/info/rfc9291>.

[YANG-SAP] Boucadair, M., Ed., Gonzalez de Dios, O., Barguil, S., Wu, Q., and V. Lopez, “A YANG Network Model for Service Attachment Points (SAPs)”, Work in Progress, Internet-Draft, draft-ietf-opsawg-sap-15, 18 January 2023, <https://datatracker.ietf.org/doc/html/draft-ietf-opsawg-sap-15>.

Приложение A. Иллюстративные примеры

A.1. Пример подписки для производительности VPN

Пример на рисунке 7 показывает, как клиент подписывается на сведения мониторинга производительности между узлами (node-id) A и B в топологии сети L3. Клиента интересуют параметры мониторинга сквозных потерь.

   POST /restconf/operations/ietf-subscribed-notifications:establish-\6
                                      subscription
   Host: example.com
   Content-Type: application/yang-data+json

   {
     "ietf-subscribed-notifications:input": {
       "stream-subtree-filter": {
         "ietf-network:networks": {
           "network": {
             "network-id": "example:VPN1",
             "ietf-network-vpn-pm:service": {
               "service-type": "ietf-vpn-common:l3vpn"
             },
             "node": [
               {
                 "node-id": "example:A",
                 "ietf-network-vpn-pm:node-type": "pe",
                 "termination-point": [
                   {
                     "tp-id": "example:1-0-1"
                   }
                 ]
               },
               {
                 "node-id": "example:B",
                 "ietf-network-vpn-pm:node-type": "pe",
                 "termination-point": [
                   {
                     "tp-id": "example:2-0-1"
                   }
                 ]
               }
             ],
             "ietf-network-topology:link": [
               {
                 "link-id": "example:A-B",
                 "source": {
                   "source-node": "example:A"
                 },
                 "destination": {
                   "dest-node": "example:B"
                 },
                 "ietf-network-vpn-pm:perf-mon": {
                   "pm": [
                     {
                       "pm-type": "pm-type-vpn-tunnel",
                       "pm-attributes": {
                         "one-way-pm-statistics": {
                           "loss-statistics": {
                             "packet-loss-count": {}
                           }
                         }
                       }
                     }
                   ],
                   "vpn-pm-type": {
                     "vpn-tunnel": {
                       "vpn-tunnel-type": "ietf-vpn-common:gre"
                     }
                   }
                 }
               }
             ]
           }
         },
         "ietf-yang-push:periodic": {
           "period": "500"
         }
       }
     }
   }

Рисунок 7. Пример извлечения Pub/Sub.

A.2. Пример «снимка» производительности VPN

Пример на рисунке 8 показывает тело сообщения VPN PM с запросом RESTCONF для извлечения данных производительности на канале и точке завершения TP, относящимся к VPN1.

   {
     "ietf-network:networks": {
       "network": {
         "network-id": "example:VPN1",
         "node": [
           {
             "node-id": "example:A",
             "ietf-network-vpn-pm:node-type": "pe",
             "termination-point": [
               {
                 "tp-id": "example:1-0-1",
                 "ietf-network-vpn-pm:pm-statistics": {
                   "inbound-octets": "100",
                   "outbound-octets": "150"
                 }
               }
             ]
           },
           {
             "node-id": "example:B",
             "ietf-network-vpn-pm:node-type": "pe",
             "termination-point": [
               {
                 "tp-id": "example:2-0-1",
                 "ietf-network-vpn-pm:pm-statistics": {
                   "inbound-octets": "150",
                   "outbound-octets": "100"
                 }
               }
             ]
           }
         ],
         "ietf-network-topology:link": [
           {
             "link-id": "example:A-B",
             "source": {
               "source-node": "example:A"
             },
             "destination": {
               "dest-node": "example:B"
             },
             "ietf-network-pm:perf-mon": {
               "pm": [
                 {
                   "pm-type": "pm-type-vpn-tunnel",
                   "pm-attributes": {
                     "one-way-pm-statistics": {
                       "loss-statistics": {
                         "packet-loss-count": "120"
                       }
                     }
                   }
                 }
               ],
               "vpn-pm-type": {
                 "vpn-tunnel": {
                   "vpn-tunnel-type": "ietf-vpn-common:gre"
                 }
               }
             }
           }
         ]
       }
     }
   }

Рисунок 8. Пример VPN PM.

A.3. Пример мониторинга процентилей

Это пример данных измерения в процентилях, которые могут быть возвращаны для канала example:A-B между example:A и example:B.

   {
     "ietf-network-topology:link": [
       {
         "link-id": "example:A-B",
         "source": {
           "source-node": "example:A"
         },
         "destination": {
           "dest-node": "example:B"
         },
         "ietf-network-vpn-pm:perf-mon": {
           "low-percentile": "20.000",
           "intermediate-percentile": "50.000",
           "high-percentile": "90.000",
           "pm": [
             {
               "pm-type": "pm-type-vpn-inter-access",
               "pm-attributes": {
                 "one-way-pm-statistics": {
                   "delay-statistics": {
                     "unit-value": "ietf-lime-time-types:milliseconds",
                     "min-delay-value": "43",
                     "max-delay-value": "99",
                     "low-delay-percentile": "64",
                     "intermediate-delay-percentile": "77",
                     "high-delay-percentile": "98"
                   }
                 }
               }
             }
           ],
           "vpn-pm-type": {
             "inter-vpn-access-interface": {
               "inter-vpn-access-interface": [null]
             }
           }
         }
       }
     ]
   }

Рисунок 9. Пример VPN PM со значениями процентилей.

Благодарности

Спасибо Joe Clarke, Adrian Farrel, Tom Petch, Greg Mirsky, Roque Gagliano, Erez Segev, Dhruv Dhody за рецензии и важный вклад в этот документ.

Эта работа частично поддерживалась Европейской комиссией в рамках проекта Horizon 2020 по обеспечения защищенного автономного управления трафиком для Tera-потоков SDN (Teraflow), грант № 101015857.

Участники работы

Ниже перечислены люди, внёсшие значительный вклад в подготовку этого документа.

Michale Wang
Huawei
Email: wangzitao@huawei.com
 
Roni Even
Huawei
Email: ron.even.tlv@gmail.com
 
Change Liu
China Unicom
Email: liuc131@chinaunicom.cn
 
Honglei Xu
China Telecom
Email: xuhl6@chinatelecom.cn

Адреса авторов

Bo Wu (editor)
Huawei
Yuhua District
101 Software Avenue
Nanjing
Jiangsu, 210012
China
Email: lana.wubo@huawei.com
 
Qin Wu (editor)
Huawei
Yuhua District
101 Software Avenue
Nanjing
Jiangsu, 210012
China
Email: bill.wu@huawei.com
 
Mohamed Boucadair (editor)
Orange
Rennes 35000
France
Email: mohamed.boucadair@orange.com
 
Oscar Gonzalez de Dios
Telefonica
Madrid
Spain
Email: oscar.gonzalezdedios@telefonica.com
 
Bin Wen
Comcast
Email: bin_wen@comcast.com

Перевод на русский язык

Николай Малых

nmalykh@protokols.ru


1Internet Engineering Task Force – комиссия по решению инженерных задач Internet.

2Internet Engineering Steering Group – комиссия по инженерным разработкам Internet.

3VPN Routing and Forwarding – маршрутизация и пересылка VPN.

4Media Access Control – управление доступом к среде передачи.

5Autonomous System Border Router – граничный маршрутизатор автономной системы.

6Строка разделена символом \ в соответствии с RFC 8792.

Запись опубликована в рубрике RFC. Добавьте в закладки постоянную ссылку.

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