RFC 8346 A YANG Data Model for Layer 3 Topologies

image_print
Internet Engineering Task Force (IETF)                          A. Clemm
Request for Comments: 8346                                        Huawei
Category: Standards Track                                      J. Medved
ISSN: 2070-1721                                                    Cisco
                                                                R. Varga
                                               Pantheon Technologies SRO
                                                                  X. Liu
                                                                   Jabil
                                                      H. Ananthakrishnan
                                                           Packet Design
                                                              N. Bahadur
                                                       Bracket Computing
                                                              March 2018

A YANG Data Model for Layer 3 Topologies

Модель данных YANG для топологии L3

PDF

Аннотация

Этот документ определяет модель данных YANG для топологии L3.

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

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

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

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

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

Copyright (c) 2018. Авторские права принадлежат 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. Введение

Этот документ задаёт модель данных YANG [RFC7950] [RFC6991] для сетевой топологии L3, в частности, L3 Unicast. Модель позволяет приложению иметь целостное представление о топологии сети L3 в одном концептуальном хранилище YANG. Модель строится на основе модели данных топологии сети, заданной в [RFC8345], и дополняет ее. Документ также показывает, как можно усовершенствовать модель для охвата разных типов топологии L3 Unicast на примере модели для OSPF [RFC2328]. Пример предназначен для иллюстрации и в полной модели OSPF предполагается большая точность и полнота.

Для модели данных топологии имеется много приложений, варианты использования рассмотрены в разделе 6 [USECASE-REQS]. Например, узлы сети могут применять модель данных для фиксации своего представления топологии сети и раскрывать его сетевому контроллеру. Контроллер может использовать созданные топологические данные для сравнения и согласования со своим видением управляемых элементов сети. Как вариант, узлы сети могут распространять это понимание для сравнения и согласования между собой или с помощью контроллера. Контроллер может даже сам использовать модель данных для представления управляемой им топологии и раскрытия её приложению через свой северный интерфейс.

Заданная в этом документе модель данных для топологии L3 Unicast содержится в модуле YANG ietf-l3-unicast-topology. Этот модуль дополняет общую модель топологии, определённую в [RFC8345], сведениями L3 Unicast. Таким образом, общая топологическая модель расширяется в соответствии с потребностями топологии L3 Unicast.

Сведения, хранящиеся в базе данных организации трафика (Traffic Engineering Database или TED), будут заданы в отдельной модели [YANG-TE] и выходят за рамки этого документа.

2. Уровни требований

Ключевые слова необходимо (MUST), недопустимо (MUST NOT), требуется (REQUIRED), нужно (SHALL), не следует (SHALL NOT), следует (SHOULD), не нужно (SHOULD NOT), рекомендуется (RECOMMENDED), не рекомендуется (NOT RECOMMENDED), возможно (MAY), необязательно (OPTIONAL) в данном документе интерпретируются в соответствии с BCP 14 [RFC2119] [RFC8174] тогда и только тогда, когда они выделены шрифтом, как показано здесь.

3. Определения и сокращения

Этот документ определяет модель YANG и поэтому в нем применяются многие термины, заданные в YANG [RFC7950] и NETCONF [RFC6241]. Некоторые из них, такие как хранилище данных (datastore) и дерево данных (data tree) повторены здесь для ясности и поддержки контекста.

Datastore – хранилище данных

Концептуальное место хранения информации и доступа к ней. Хранилище может быть реализовано с использованием файлов, баз данных, флэш-памяти или их комбинации. Хранилище сопоставляется с созданным экземпляром дерева данных YANG (определение заимствовано из [RFC8342]).

Data subtree – субдерево (ветвь) данных

Установленный экземпляр узла данных и узлы данных, иерархически входящие в него.

IS-IS

Протокол маршрутизации между промежуточными системами (Intermediate System или IS).

LSP

Label Switched Path – путь с коммутацией по меткам.

NETCONF

Network Configuration Protocol – протокол конфигурации сети.

NMDA

Network Management Datastore Architecture – архитектура хранилища данных управления сетью.

OSPF

Open Shortest Path First – протокол маршрутизации по состояниям каналов.

URI

Uniform Resource Identifier – единый (однотипный) идентификатор ресурса.

TED

Traffic Engineering Database – база данных организации трафика.

YANG

Язык моделирования данных, применяемый в моделях данных конфигурации, состояния, вызовах удалённых процедур (Remote Procedure Call или RPC) и уведомлениях для протоколов управления сетью [RFC7950].

4. Структура модели

Модель для топологии L3 Unicast задана в модуле YANG l3-unicast-topology, связи которого с другими модулями YANG показаны на рисунке 1.

+-----------------------------+
|  +-----------------------+  |
|  |      ietf-network     |  |
|  +----------^------------+  |
|             |               |
|  +-----------------------+  |
|  | ietf-network-topology |  |
|  +----------+------------+  |
+-------------^---------------+
              |
              |
 +------------^-------------+
 | ietf-l3-unicast-topology |
 +------------^-------------+
              |
              |
  +-----------^-----------+
  | example-ospf-topology |
  +-----------------------+

Рисунок 1. Структура модели.


Модули YANG ietf-network и ietf-network-topology совместно задают базовую модель топологии сети [RFC8345]. Модуль YANG ietf-l3-unicast-topology дополняет эту модель определениями, требуемыми для представления топологии L3 Unicast. Сам этот модуль может быть дополнен другими модулями YANG с определениями для конкретных типов топологии L3 Unicast, таких как OSPF и IS-IS.

Модули YANG ietf-network и ietf-network-topology предназначены для совместного применения в реализациях, поддерживающих архитектуру NMDA, определённую в [RFC8342]. Это верно и для модулей YANG, дополняющих их. Для применения модели в ситуациях, где NMDA не поддерживается, в Приложени A определён дополнительный модуль YANG (его не следует применять в реализациях, поддерживающих NMDA).

5. Обзор модели топологии L3 Unicast

Модель топологии L3 Unicast определена в модуле YANG ietf-l3-unicast-topology, а её структура показана ниже в нотации [RFC8340]. Для краткости уведомления не показаны.

   module: ietf-l3-unicast-topology
     augment /nw:networks/nw:network/nw:network-types:
       +--rw l3-unicast-topology!
     augment /nw:networks/nw:network:
       +--rw l3-topology-attributes
          +--rw name?   string
          +--rw flag*   l3-flag-type
     augment /nw:networks/nw:network/nw:node:
       +--rw l3-node-attributes
          +--rw name?        inet:domain-name
          +--rw flag*        node-flag-type
          +--rw router-id*   rt-types:router-id
          +--rw prefix* [prefix]
             +--rw prefix    inet:ip-prefix
             +--rw metric?   uint32
             +--rw flag*     prefix-flag-type
     augment /nw:networks/nw:network/nt:link:
       +--rw l3-link-attributes
          +--rw name?      string
          +--rw flag*      link-flag-type
          +--rw metric1?   uint64
          +--rw metric2?   uint64
     augment /nw:networks/nw:network/nw:node/nt:termination-point:
       +--rw l3-termination-point-attributes
          +--rw (termination-point-type)?
             +--:(ip)
             |  +--rw ip-address*       inet:ip-address
             +--:(unnumbered)
             |  +--rw unnumbered-id?    uint32
             +--:(interface-name)
                +--rw interface-name?   string

Модуль дополняет модули ietf-network и ietf-network-topology, как указано ниже.

  • Добавлен новый тип топологии сети l3-unicast-topology и соответствующий контейнер дополняет типы сетей мз модуля ietf-network.

  • Добавлены атрибуты топологии, определённые в группировке, которая дополняет список network в модуле ietf-network. Атрибуты включают имя топологии и набор флагов в форме leaf-list. Каждый тип флагов представлен своим идентификатором, что позволяет добавлять флаги в модулях дополнения с использованием новых идентификаторов без необходимости перематривать этот модуль.

  • Добавлены объекты данных для узлов путём дополнения списка node в модуле ietf-network. Новые объекты включают набор флагов и список префиксов, каждый из которых содержит префикс IP, метрику и зависящий от префикса набор флагов.

  • Каналы (в ietf-network-topology) дополнены набором параметров, позволяющим связать с каналом имя, набор флагов и метрику.

  • Точки завершения (в ietf-network-topology) дополнены выбором IP-адреса, идентификатора или имени.

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

6. Модуль YANG для топологии L3 Unicast

Этот модуль YANG ссылается на [RFC2863] и [RFC8343].

   <CODE BEGINS> file "ietf-l3-unicast-topology@2018-02-26.yang"
   module ietf-l3-unicast-topology {
     yang-version 1.1;
     namespace
       "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology";
     prefix "l3t";
     import ietf-network {
       prefix "nw";
     }
     import ietf-network-topology {
       prefix "nt";
     }

     import ietf-inet-types {
       prefix "inet";
     }
     import ietf-routing-types {
       prefix "rt-types";
     }
     organization
       "IETF I2RS (Interface to the Routing System) Working Group";
     contact
       "WG Web:    <https://datatracker.ietf.org/wg/i2rs/> 
        WG List:   <mailto:i2rs@ietf.org> 
        Editor:    Alexander Clemm
                   <mailto:ludwig@clemm.org> 
        Editor:    Jan Medved
                   <mailto:jmedved@cisco.com> 
        Editor:    Robert Varga
                   <mailto:robert.varga@pantheon.tech> 
        Editor:    Xufeng Liu
                   <mailto:xufeng.liu.ietf@gmail.com> 
        Editor:    Nitin Bahadur
                   <mailto:nitin_bahadur@yahoo.com> 
        Editor:    Hariharan Ananthakrishnan
                   <mailto:hari@packetdesign.com>"; 
     description
       "Модуль определяет модель для топологии L3 Unicast.

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

        Распространение и использование в исходной или двоичной форме с
        изменениями или без таковых разрешено в соответствии с лицензией
        Simplified BSD, изложенной в разделе 4  IETF Trust's Legal
        Provisions применительно к документам IETF
        (http://trustee.ietf.org/license-info). 
 
        Эта версия данного модуля YANG является частью RFC 8346, где
        правовые вопросы рассмотрены более полно.";
     revision "2018-02-26" {
       description
         "Initial revision.";
       reference
         "RFC 8346: A YANG Data Model for Layer 3 Topologies";
     }

     identity flag-identity {
       description "Базовый тип для флагов.";
     }

     typedef l3-event-type {
       type enumeration {
         enum "add" {
           description
             "Добавлен узел, канал, префикс или точка завершения L3.";
         }
         enum "remove" {
           description
             "Удален узел, канал, префикс или точка завершения L3.";
         }
         enum "update" {
           description
             "Обновлен узел, канал, префикс или точка завершения L3.";
         }
       }
       description "Тип события L3 для уведомлений.";
     }

     typedef prefix-flag-type {
       type identityref {
         base "flag-identity";
       }
       description "Атрибуты флагов префикса.";
     }

     typedef node-flag-type {
       type identityref {
         base "flag-identity";
       }
       description "Атрибуты флагов узла.";
     }

     typedef link-flag-type {
       type identityref {
         base "flag-identity";
       }
       description "Атрибуты флагов канала.";
     }

     typedef l3-flag-type {
       type identityref {
         base "flag-identity";
       }
       description "Атрибуты флагов L3.";
     }

     grouping l3-prefix-attributes {
       description
         "Атрибуты префикса L3.";
       leaf prefix {
         type inet:ip-prefix;
         description
           "Префикс IP.";
       }
       leaf metric {
         type uint32;
         description
           "Метрика префикса.";
       }
       leaf-list flag {
         type prefix-flag-type;
         description
           "Флаги префикса.";
       }
     }
     grouping l3-unicast-topology-type {
       description "Указывает тип топологии L3 Unicast.";
       container l3-unicast-topology {
         presence "Указывает тип топологии L3 Unicast.";
         description
           "Наличие контейнера указывает топологию L3 Unicast";
       }
     }
     grouping l3-topology-attributes {
       description "Атрибуты области действия топологии.";
       container l3-topology-attributes {
         description "Атрибуты топологии.";
         leaf name {
           type string;
           description
             "Имя топологии.";
         }
         leaf-list flag {
           type l3-flag-type;
           description
             "Флаги топологии.";
         }
       }
     }
     grouping l3-node-attributes {
       description "Атрибуты области действия узла L3.";
       container l3-node-attributes {
         description
           "Атрибуты узла";
         leaf name {
           type inet:domain-name;
           description
             "Имя узла.";
         }
         leaf-list flag {
           type node-flag-type;
           description
             "Флаги узла.";
         }
         leaf-list router-id {
           type rt-types:router-id;
           description
             "Router-id для узла.";
         }
         list prefix {
           key "prefix";
           description
             "Список префиксов с их атрибутами.";
           uses l3-prefix-attributes;
         }
       }
     }
     grouping l3-link-attributes {
       description
         "Атрибуты области действия канала L3.";
       container l3-link-attributes {
         description
           "Атрибуты канала.";
         leaf name {
           type string;
           description
             "Имя канала.";
         }
         leaf-list flag {
           type link-flag-type;
           description
             "Флаги канала.";
         }
         leaf metric1 {
           type uint64;
           description
               "Метрика 1 для канала.";
         }
         leaf metric2 {
           type uint64;
           description
               "Метрика 2 для канала.";
         }
       }
     }
     grouping l3-termination-point-attributes {
       description "Атрибуты области действия точки завершения L3.";
       container l3-termination-point-attributes {
         description
           "Атрибуты точки завершения.";
         choice termination-point-type {
           description
             "Тип точки завершения.";
           case ip {
             leaf-list ip-address {
               type inet:ip-address;
               description
                 "Адрес IPv4 или IPv6.";
             }
           }
           case unnumbered {
             leaf unnumbered-id {
               type uint32;
               description
                 "Идентификатор безадресного интерфейса, соответствующий
                  значению ifIndex для интерфейса, т. е. ifIndex для
                  узла ifEntry, представляющего интерфейс в реализации с
                  поддержкой Interfaces Group MIB (RFC 2863).";
               reference
                 "RFC 2863: The Interfaces Group MIB";
             }
           }
           case interface-name {
             leaf interface-name {
               type string;
               description
                 "Имя интерфейса, которое может (но не обязано)
                  соответствовать ссылке на интерфейс содержащего его
                  узла, т. е. путь к соответствующему узлу данных
                  интерфейса на содержащем его узле напоминает тип
                  данных interface-ref из RFC 8343. Следует отметить, 
                  что тип interface-ref из RFC 8343 нельзя применять
                  напрямую, поскольку он служит для указания интерфейса
                  в хранилище данных одного узла сети, а не для 
                  однозначного указания интерфейсов всей сети.";
               reference
                 "RFC 8343: A YANG Data Model for Interface Management";
             }
           }
         }
       }
     }
     augment "/nw:networks/nw:network/nw:network-types" {
       description
         "Новый тип сети для топологии L3 Unicast";
       uses l3-unicast-topology-type;
     }
     augment "/nw:networks/nw:network" {
       when "nw:network-types/l3t:l3-unicast-topology" {
         description
           "Параметры дополнения, применимые лишь для сетей с топологией
            L3 Unicast.";
       }
       description
           "L3 Unicast для сети в целом.";
       uses l3-topology-attributes;
     }
     augment "/nw:networks/nw:network/nw:node" {
       when "../nw:network-types/l3t:l3-unicast-topology" {
         description
           "Параметры дополнения, применимые лишь для сетей с топологией
            L3 Unicast.";
       }
       description
           "Атрибуты на уровне узлаL3 Unicast.";
       uses l3-node-attributes;
     }
     augment "/nw:networks/nw:network/nt:link" {
       when "../nw:network-types/l3t:l3-unicast-topology" {
         description
           "Параметры дополнения, применимые лишь для сетей с топологией
            L3 Unicast.";
       }
       description
         "Дополнение атрибутов топологического канала.";
       uses l3-link-attributes;
     }
     augment "/nw:networks/nw:network/nw:node/"
            +"nt:termination-point" {
       when "../../nw:network-types/l3t:l3-unicast-topology" {
         description
           "Параметры дополнения, применимые лишь для сетей с топологией
            L3 Unicast.";
       }
       description "Дополнение конфигурации топологии точки завершения";
       uses l3-termination-point-attributes;
     }
     notification l3-node-event {
       description
         "Уведомление о событии для узла L3.";
       leaf l3-event-type {
         type l3-event-type;
         description
           "Тип события";
       }
       uses nw:node-ref;
       uses l3-unicast-topology-type;
       uses l3-node-attributes;
     }
     notification l3-link-event {
       description
         "Уведомление о событии для канала L3.";
       leaf l3-event-type {
         type l3-event-type;
         description
           "Тип события";
       }
       uses nt:link-ref;
       uses l3-unicast-topology-type;
       uses l3-link-attributes;
     }
     notification l3-prefix-event {
       description
         "Уведомление о событии для префикса L3.";
       leaf l3-event-type {
         type l3-event-type;
         description
           "Тип события";
       }
       uses nw:node-ref;
       uses l3-unicast-topology-type;
       container prefix {
         description
           "Атрибуты префикса L3.";
         uses l3-prefix-attributes;
       }
     }
     notification termination-point-event {
       description
         "Уведомление о событии для точки завершения L3.";
       leaf l3-event-type {
         type l3-event-type;
         description
           "Тип события";
       }
       uses nt:tp-ref;
       uses l3-unicast-topology-type;
       uses l3-termination-point-attributes;
     }
   }
   <CODE ENDS>

7. Взаимодействия с другими модулями YANG

Как указано в разделе 4, модель в этом документе основана на модулях YANG из [RFC8345] и дополняет их. В частности, модуль ietf-l3-unicast-topology дополняет модули ietf-network и ietf-network-topology. Кроме того, модель использует типы данных, определённые в [RFC6991].

Модель является независимой от протокола моделью данных YANG со сведениями о топологии L3. Она отделена и не связана с моделями данных, применяемыми для настройки протоколов или данных маршрутизации, такими как ietf-routing [RFC8022] и ietf-rib-extension [YANG-RIB]. При этом модель импортирует определение типа из ietf-routing-types [RFC8294].

Модель соответствует требованиям к эфемерному состоянию из [RFC8242]. Для эфемерных данных топологии, предоставляемых сервером, процесс, которому поручено поддерживать сведения о топологии, будет загружать данные из процесса маршрутизации (например, OSPF) в модель данных, не полагаясь на хранилище данных конфигурации.

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

Этот документ регистрирует два идентификатора URI в реестре IETF XML Registry [RFC3688].

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

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

Документ регистрирует два модуля YANG в реестре YANG Module Names [RFC6020].

   Name: ietf-l3-unicast-topology
   Namespace: urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology
   Prefix: l3t
   Reference: RFC 8346

   Name: ietf-l3-unicast-topology-state
   Namespace: urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology-state
   Prefix: l3t-s
   Reference: RFC 8346

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

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

Модель управления доступом NETCONF [RFC8341] обеспечивает средства, позволяющие предоставить доступ лишь конкретным пользователям NETCONF и RESTCONF к предопределённому подмножеству доступных в NETCONF или RESTCONF протокольных операций и содержимого.

Обычно топология L3 Unicast контролируется системой и обеспечивает эфемерные топологические данные. На серверах NMDA это лишь часть рабочего хранилища <operational>, обеспчающая клиентам доступ только для чтения, поэтому они менее уязвимы. Тем не менее, эти модули YANG в принципе позволяют настраивать данные.

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

l3-topology-attributes

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

l3-node-attributes

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

l3-link-attributes

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

l3-termination-point-attributes

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

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

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

[RFC2119] Bradner, S., “Key words for use in RFCs to Indicate Requirement Levels”, BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[RFC2328] Moy, J., “OSPF Version 2”, STD 54, RFC 2328, DOI 10.17487/RFC2328, April 1998, <https://www.rfc-editor.org/info/rfc2328>.

[RFC2863] McCloghrie, K. and F. Kastenholz, “The Interfaces Group MIB”, RFC 2863, DOI 10.17487/RFC2863, June 2000, <https://www.rfc-editor.org/info/rfc2863>.

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

[RFC5246] Dierks, T. and E. Rescorla, “The Transport Layer Security (TLS) Protocol Version 1.2”, RFC 5246, DOI 10.17487/RFC5246, August 2008, <https://www.rfc-editor.org/info/rfc5246>.

[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>.

[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>.

[RFC7951] Lhotka, L., “JSON Encoding of Data Modeled with YANG”, RFC 7951, DOI 10.17487/RFC7951, August 2016, <https://www.rfc-editor.org/info/rfc7951>.

[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>.

[RFC8174] Leiba, B., “Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words”, BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8294] Liu, X., Qu, Y., Lindem, A., Hopps, C., and L. Berger, “Common YANG Data Types for the Routing Area”, RFC 8294, DOI 10.17487/RFC8294, December 2017, <https://www.rfc-editor.org/info/rfc8294>.

[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>.

[RFC8342] Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, “Network Management Datastore Architecture (NMDA)”, RFC 8342, DOI 10.17487/RFC8342, March 2018, <https://www.rfc-editor.org/info/rfc8342>.

[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>.

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

[RFC8022] Lhotka, L. and A. Lindem, “A YANG Data Model for Routing Management”, RFC 8022, DOI 10.17487/RFC8022, November 2016, <https://www.rfc-editor.org/info/rfc8022>.

[RFC8242] Haas, J. and S. Hares, “Interface to the Routing System (I2RS) Ephemeral State Requirements”, RFC 8242, DOI 10.17487/RFC8242, September 2017, <https://www.rfc-editor.org/info/rfc8242>.

[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>.

[RFC8343] Bjorklund, M., “A YANG Data Model for Interface Management”, RFC 8343, DOI 10.17487/RFC8343, March 2018, <https://www.rfc-editor.org/info/rfc8343>.

[USECASE-REQS] Hares, S. and M. Chen, “Summary of I2RS Use Case Requirements”, Work in Progress, draft-ietf-i2rs-usecase-reqs-summary-03, November 2016.

[YANG-RIB] Lindem, A. and Y. Qu, “RIB YANG Data Model”, Work in Progress, draft-acee-rtgwg-yang-rib-extend-06, January 2018.

[YANG-TE] Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and O. Gonzalez de Dios, “YANG Data Model for Traffic Engineering (TE) Topologies”, Work in Progress, draft-ietf-teas-yang-te-topo-153, February 2018.

Приложение A. Модель YANG для реализаций без NMDA

Определённый здесь модуль YANG ietf-l3-unicast-topology дополняет модули ietf-network и ietf-network-topology из [RFC8345], предназначенные для использования с реализациями, поддерживающими архитектуру NMDA [RFC8342]. Для возможности применения этой модели без поддержки NMDA в [RFC8345] заданы два дополнительных модуля ietf-network-state и ietf-network-topology-state, представляющие модели состояния сетей и сетевой топологии.

Для возможности применения заданной здесь модели для топологии L3 в реализациях без поддержки NMDA нужен дополнительный модуль. Этот модуль ietf-l3-unicast-topology-state отражает ietf-l3-unicast-topology и дополняет модули ietf-network-state и ietf-network-topology-state (вместо ietf-network и ietf-network-topology), а все его узлы являются ненастраиваемыми.

Похожие соображения применимы к любому модулю, дополняющему ietf-l3- unicast-topology, такому как пример из приложения B (example-ospf-topology). Для реализаций, не поддерживающих NMDA, нужны дополнительные модули, представляющие данные состояния и не содержащие настраиваемых узлов. Эти модули дополняют ietf-l3-unicast-topology-state, а не ietf-l3-unicast-topology. Дополнительные модули для модуля из приложения B не представлены здесь, поскольку этот модуль служит лишь примером.

Подобно ietf-network-state и ietf-network-topology-state, модуль ietf-l3-unicast-topology не следует поддерживать реализациям с NMDA. Поэтому модуль вынесен в приложение. Определение модуля приведено ниже, а его структура соответствует структуре базового модуля и не показана для краткости.

   <CODE BEGINS> file "ietf-l3-unicast-topology-state@2018-02-26.yang"
   module ietf-l3-unicast-topology-state {
     yang-version 1.1;
     namespace
       "urn:ietf:params:xml:ns:yang:ietf-l3-unicast-topology-state";
     prefix "l3t-s";
     import ietf-network-state {
       prefix "nw-s";
     }
     import ietf-network-topology-state {
       prefix "nt-s";
     }
     import ietf-l3-unicast-topology {
       prefix "l3t";
     }
     organization
       "IETF I2RS (Interface to the Routing System) Working Group";
     contact
       "WG Web:    <https://datatracker.ietf.org/wg/i2rs/> 
        WG List:   <mailto:i2rs@ietf.org> 
        Editor:    Alexander Clemm
                   <mailto:ludwig@clemm.org> 
        Editor:    Jan Medved
                   <mailto:jmedved@cisco.com> 
        Editor:    Robert Varga
                   <mailto:robert.varga@pantheon.tech> 
        Editor:    Xufeng Liu
                   <mailto:xufeng.liu.ietf@gmail.com> 
        Editor:    Nitin Bahadur
                   <mailto:nitin_bahadur@yahoo.com> 
        Editor:    Hariharan Ananthakrishnan
                   <mailto:hari@packetdesign.com>"; 
     description
       "Этот модуль определяет модель состояния топологии L3 Unicast, 
        представляя топологию, которая изучена или является результатом
        применения топологии, заданной моделью ietf-l3-unicast-topology,
        отражающей соответствующие узлы этой модели.

        Модель отражает ietf-l3-unicast-topology, но содержит доступные
        лишь для чтения данные состояния. Модель не предназначена для
        случаев, когда базовая инфраструктура поддерживает NMDA.

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

        Распространение и использование в исходной или двоичной форме с
        изменениями или без таковых разрешено в соответствии с лицензией
        Simplified BSD, изложенной в разделе 4  IETF Trust's Legal
        Provisions применительно к документам IETF
        (http://trustee.ietf.org/license-info). 
 
        Эта версия данного модуля YANG является частью RFC 8346, где
        правовые вопросы рассмотрены более полно.";
     revision "2018-02-26" {
       description
         "Исходный выпуск.";
       reference
         "RFC 8346: A YANG Data Model for Layer 3 Topologies";
     }
     augment "/nw-s:networks/nw-s:network/nw-s:network-types" {
       description
         "Новый тип сети для топологии L3 Unicast";
       uses l3t:l3-unicast-topology-type;
     }
     augment "/nw-s:networks/nw-s:network" {
       when "nw-s:network-types/l3t-s:l3-unicast-topology" {
         description
           "Параметры дополнения, применимые лишь для сетей с топологией
            L3 Unicast.";
       }
       description
           "L3 Unicast для сети в целом.";
       uses l3t:l3-topology-attributes;
     }
     augment "/nw-s:networks/nw-s:network/nw-s:node" {
       when "../nw-s:network-types/l3t-s:l3-unicast-topology" {
         description
           "Параметры дополнения, применимые лишь для сетей с топологией
            L3 Unicast.";
       }
       description
           "Атрибуты L3 Unicast на уровне узла.";
       uses l3t:l3-node-attributes;
     }
     augment "/nw-s:networks/nw-s:network/nt-s:link" {
       when "../nw-s:network-types/l3t-s:l3-unicast-topology" {
         description
           "Параметры дополнения, применимые лишь для сетей с топологией
            L3 Unicast.";
       }
       description
         "Дополнение атрибутов топологии канала.";
       uses l3t:l3-link-attributes;
     }
     augment "/nw-s:networks/nw-s:network/nw-s:node/"
            +"nt-s:termination-point" {
       when "../../nw-s:network-types/l3t-s:l3-unicast-topology" {
         description
           "Параметры дополнения, применимые лишь для сетей с топологией
            L3 Unicast.";
       }
       description "Дополняет конфигурацию точки завершения.";
       uses l3t:l3-termination-point-attributes;
     }
     notification l3-node-event {
       description
         "Уведомление о событии для узла L3.";
       leaf l3-event-type {
         type l3t:l3-event-type;
         description
           "Тип события";
       }
       uses nw-s:node-ref;
       uses l3t:l3-unicast-topology-type;
       uses l3t:l3-node-attributes;
     }
     notification l3-link-event {
       description
         "Уведомление о событии для канала L3.";
       leaf l3-event-type {
         type l3t:l3-event-type;
         description
           "Тип события";
       }
       uses nt-s:link-ref;
       uses l3t:l3-unicast-topology-type;
       uses l3t:l3-link-attributes;
     }
     notification l3-prefix-event {
       description
         "Уведомление о событии для префикса L3.";
       leaf l3-event-type {
         type l3t:l3-event-type;
         description
           "Тип события";
       }
       uses nw-s:node-ref;
       uses l3t:l3-unicast-topology-type;
       container prefix {
         description
           "Атрибуты префикса L3";
         uses l3t:l3-prefix-attributes;
       }
     }
     notification termination-point-event {
       description
         "Уведомление о событии для точки завершения L3.";
       leaf l3-event-type {
         type l3t:l3-event-type;
         description
           "Тип события";
       }
       uses nt-s:tp-ref;
       uses l3t:l3-unicast-topology-type;
       uses l3t:l3-termination-point-attributes;
     }
   }
   <CODE ENDS>

Приложение B. Расширение модели

Модель можно расширить для конкретных типов топологии L3 Unicast, например OSPF и IS-IS. В этом приложении дан модуль YANG, определяющий простую модель топологии для OSPF. Модель представлена как пример уточнения базовой модели топологии на несколько уровней и не содержит полноценной топологии OSPF.

B.1. Пример топологии OSPF

B.1.1. Обзор модели

Приведённая ниже модель показывает как можно расширить модель топологии L3 Unicast для OSPF, путём набора дополнений в модуле YANG example-ospf-topology, структура которого показана ниже (в нотации [RFC8340]). Отметим, что одна строка разделена на 2 части, поскольку её размер превышал 72 символа, принятые в RFC.

   module: example-ospf-topology
   augment /nw:networks/nw:network/nw:network-types/
     l3t:l3-unicast-topology:
     +--rw ospf!
   augment /nw:networks/nw:network/l3t:l3-topology-attributes:
     +--rw ospf-topology-attributes
        +--rw area-id?   area-id-type
   augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes:
     +--rw ospf-node-attributes
        +--rw (router-type)?
        |  +--:(abr)
        |  |  +--rw abr?               empty
        |  +--:(asbr)
        |  |  +--rw asbr?              empty
        |  +--:(internal)
        |  |  +--rw internal?          empty
        |  +--:(pseudonode)
        |     +--rw pseudonode?        empty
        +--rw dr-interface-id?   uint32
   augment /nw:networks/nw:network/nt:link/l3t:l3-link-attributes:
     +--rw ospf-link-attributes
   augment /l3t:l3-node-event:
     +---- ospf!
     +---- ospf-node-attributes
        +---- (router-type)?
        |  +--:(abr)
        |  |  +---- abr?               empty
        |  +--:(asbr)
        |  |  +---- asbr?              empty
        |  +--:(internal)
        |  |  +---- internal?          empty
        |  +--:(pseudonode)
        |     +---- pseudonode?        empty
        +---- dr-interface-id?   uint32
   augment /l3t:l3-link-event:
     +---- ospf!
     +---- ospf-link-attributes

Модуль дополняет ietf-l3-unicast-topology, как показано ниже.

  • Добавлен новый тип для топологии OSPF.

  • Заданы дополнительные атрибуты топологии в новой группировке, которая дополняет l3-topology-attributes из модуля ietf-l3-unicast-topology. Атрибуты включают OSPF area-id для указания области OSPF.

  • Заданы дополнительные объекты для узлов путём дополнения l3-node-attributes из модуля ietf-l3-unicast-topology. Новые объекты включают router-type и dr-interface-id для псевдоузлов.

  • Каналы дополнены атрибутами каналов OSPF.

Кроме того, модуль добавляет уведомления для событий, связанных с узлами L3 и каналы с атрибутами OSPF.

Следует отметить, что заданная здесь модель представляет топологию и служит лишь примером, не задавая способов настройки интерфейсов и маршрутизаторов OSPF.

B.1.2. Модуль YANG для топологии OSPF

Модуль YANG OSPF Topology представлен ниже. Как уже отмечено, он служит лишь примером расширения модели топологии L3 Unicast для OSPF и не является нормативным. Поэтому модуль приведён без тегов <CODE BEGINS> и <CODE ENDS>.

  file "example-ospf-topology@2017-12-16.yang"
  module example-ospf-topology {
      yang-version 1.1;
      namespace "urn:example:example-ospf-topology";
      prefix "ex-ospft";
      import ietf-yang-types {
          prefix "yang";
      }
      import ietf-network {
          prefix "nw";
      }
      import ietf-network-topology {
          prefix "nt";
      }
      import ietf-l3-unicast-topology {
          prefix "l3t";
      }
      description
         "Этот модуль служит примером расширения топологии 
          Layer 3 Unicast для OSPF.";
      typedef area-id-type {
          type yang:dotted-quad;
          description
              "Тип Area ID.";
      }
      grouping ospf-topology-type {
          description
              "Указывает тип топологии OSPF.";
          container ospf {
              presence "Указывает топологию OSPF.";
              description
                  "Присутствие говорит о топологии типа OSPF.";
          }
      }
      augment "/nw:networks/nw:network/nw:network-types/"
      + "l3t:l3-unicast-topology" {
          description
              "Определяет тип топологии OSPF.";
          uses ospf-topology-type;
      }
      augment "/nw:networks/nw:network/l3t:l3-topology-attributes" {
          when "../nw:network-types/l3t:l3-unicast-topology/" +
              "ex-ospft:ospf" {
              description
                  "Дополняет лишь топологию OSPF.";
              }
          description
              "Дополняет конфигурацию топологии.";
          container ospf-topology-attributes {
              description
                  "Атрибуты топологии.";
              leaf area-id {
                  type area-id-type;
                  description
                      "Идентификатор области OSPF.";
              }
          }
      }
      augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" {
          when "../../nw:network-types/l3t:l3-unicast-topology/" +
              "ex-ospft:ospf" {
              description
                  "Дополняет лишь топологию OSPF.";
          }
          description
              "Дополняет конфигурацию узла.";
          uses ospf-node-attributes;
      }
      augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" {
          when "../../nw:network-types/l3t:l3-unicast-topology/" +
              "ex-ospft:ospf" {
              description
                  "Дополняет лишь топологию OSPF.";
          }
          description
              "Дополняет конфигурацию канала.";
          uses ospf-link-attributes;
      }
      grouping ospf-node-attributes {
          description
              "Дополняет атрибуты области действия узла OSPF.";
          container ospf-node-attributes {
              description
                  "Атрибуты узла.";
              choice router-type {
                  description
                      "Тип маршрутизатора.";
                  case abr {
                      leaf abr {
                          type empty;
                          description
                              "Узел является ABR";
                      }
                  }
                  case asbr {
                      leaf asbr {
                          type empty;
                          description
                              "Узел является ASBR";
                      }
                  }
                  case internal {
                      leaf internal {
                          type empty;
                          description
                              "Узел является внутренним";
                      }
                  }
                  case pseudonode {
                      leaf pseudonode {
                          type empty;
                          description
                              "Псевдоузел.";
                      }
                  }
              }
              leaf dr-interface-id {
                  when "../pseudonode" {
                      description
                          "Действителен лишь для псевдоузла.";
                  }
                  type uint32;
                  default "0";
                  description
                      "DR interface-id для псевдоузлов.";
              }
          }
      }
      grouping ospf-link-attributes {
          description
              "Атрибуты области действия канала OSPF.";
          container ospf-link-attributes {
              description
                  "Атрибуты канала OSPF.";
          }
      } // ospf-link-attributes
      augment "/l3t:l3-node-event" {
          description
              "Событие на узле OSPF.";
          uses ospf-topology-type;
          uses ospf-node-attributes;
      }
      augment "/l3t:l3-link-event" {
          description
              "Событие на канале OSPF.";
          uses ospf-topology-type;
          uses ospf-link-attributes;
      }
  }

Приложение C. Пример

В этом приложении представлен пример дерева данных с кодированием JSON [RFC7951]. Пример создаёт экземпляр ietf-l3-unicast-topology для топологии, показанной на рисунке 2. Здесь имеется три узла: D1, D2, D3. Узел D1 имеет три точки завершения 1-0-1, 1-2-1, 1-3-1, D2 – 2-1-1, 2-0-1, 2-3-1, а D3 – две точки завершения 3-1-1 и 3-2-1. Имеется также 6 каналов, по два между каждой парой узлов с одним каналом для каждого направления.

 +------------+                   +------------+
 |     D1     |                   |     D2     |
/-\          /-\                 /-\          /-\
| | 1-0-1    | |---------------->| | 2-1-1    | |
| |    1-2-1 | |<----------------| |    2-0-1 | |
\-/  1-3-1   \-/                 \-/  2-3-1   \-/
 |   /----\   |                   |   /----\   |
 +---|    |---+                   +---|    |---+
     \----/                           \----/
      A  |                             A  |
      |  |                             |  |
      |  |                             |  |
      |  |       +------------+        |  |
      |  |       |     D3     |        |  |
      |  |      /-\          /-\       |  |
      |  +----->| | 3-1-1    | |-------+  |
      +---------| |    3-2-1 | |<---------+
                \-/          \-/
                 |            |
                 +------------+

Рисунок 2. Пример топологии сети.


Соответствующий экземпляр дерево данных показан ниже. Отметим, что некоторые строки разделены на части для соблюдения ограничения на размер строки не более 72 символов, принятого в RFC.

   {
     "ietf-network:networks": {
       "network": [
         {
           "network-types": {
             "ietf-l3-unicast-topology:l3-unicast-topology": {}
           },
           "network-id": "l3-topo-example",
           "node": [
             {
               "node-id": "D1",
               "termination-point": [
                 {
                   "tp-id": "1-0-1",
                   "ietf-l3-unicast-topology:
                     l3-termination-point-attributes": {
                     "unnumbered-id:": 101
                   }
                 },
                 {
                   "tp-id": "1-2-1",
                   "ietf-l3-unicast-topology:
                     l3-termination-point-attributes": {
                     "unnumbered-id:": 121
                   }
                 },
                 {
                   "tp-id": "1-3-1",
                   "ietf-l3-unicast-topology:
                     l3-termination-point-attributes": {
                     "unnumbered-id:": 131
                   }
                 }
               ],
               "ietf-l3-unicast-topology:l3-node-attributes": {
                 "router-id": ["203.0.113.1"]
               }
             },
             {
               "node-id": "D2",
               "termination-point": [
                 {
                   "tp-id": "2-0-1",
                   "ietf-l3-unicast-topology:
                     l3-termination-point-attributes": {
                     "unnumbered-id:": 201
                   }
                 },
                 {
                   "tp-id": "2-1-1",
                   "ietf-l3-unicast-topology:
                     l3-termination-point-attributes": {
                     "unnumbered-id:": 211
                   }
                 },
                 {
                   "tp-id": "2-3-1",
                   "ietf-l3-unicast-topology:
                     l3-termination-point-attributes": {
                     "unnumbered-id:": 231
                   }
                 }
               ],
               "ietf-l3-unicast-topology:l3-node-attributes": {
                 "router-id": ["203.0.113.2"]
               }
             },
             {
               "node-id": "D3",
               "termination-point": [
                 {
                   "tp-id": "3-1-1",
                   "ietf-l3-unicast-topology:
                     l3-termination-point-attributes": {
                     "unnumbered-id:": 311
                   }
                 },
                 {
                   "tp-id": "3-2-1",
                   "ietf-l3-unicast-topology:
                     l3-termination-point-attributes": {
                     "unnumbered-id:": 321
                   }
                 }
               ],
               "ietf-l3-unicast-topology:l3-node-attributes": {
                 "router-id": ["203.0.113.3"]
               }
             }
           ],
           "ietf-network-topology:link": [
             {
               "link-id": "D1,1-2-1,D2,2-1-1",
               "source": {
                 "source-node": "D1",
                 "source-tp": "1-2-1"
               }
               "destination": {
                 "dest-node": "D2",
                 "dest-tp": "2-1-1"
               },
               "ietf-l3-unicast-topology:l3-link-attributes": {
                 "metric1": "100"
               }
             },
             {
               "link-id": "D2,2-1-1,D1,1-2-1",
               "source": {
                 "source-node": "D2",
                 "source-tp": "2-1-1"
               }
               "destination": {
                 "dest-node": "D1",
                 "dest-tp": "1-2-1"
               },
               "ietf-l3-unicast-topology:l3-link-attributes": {
                 "metric1": "100"
               }
             },
             {
               "link-id": "D1,1-3-1,D3,3-1-1",
               "source": {
                 "source-node": "D1",
                 "source-tp": "1-3-1"
               }
               "destination": {
                 "dest-node": "D3",
                 "dest-tp": "3-1-1"
               },
               "ietf-l3-unicast-topology:l3-link-attributes": {
                 "metric1": "100"
               }
             },
             {
               "link-id": "D3,3-1-1,D1,1-3-1",
               "source": {
                 "source-node": "D3",
                 "source-tp": "3-1-1"
               }
               "destination": {
                 "dest-node": "D1",
                 "dest-tp": "1-3-1"
               },
               "ietf-l3-unicast-topology:l3-link-attributes": {
                 "metric1": "100"
               }
             },
             {
               "link-id": "D2,2-3-1,D3,3-2-1",
               "source": {
                 "source-node": "D2",
                 "source-tp": "2-3-1"
               }
               "destination": {
                 "dest-node": "D3",
                 "dest-tp": "3-2-1"
               },
               "ietf-l3-unicast-topology:l3-link-attributes": {
                 "metric1": "100"
               }
             },
             {
               "link-id": "D3,3-2-1,D2,2-3-1",
               "source": {
                 "source-node": "D3",
                 "source-tp": "3-2-1"
               }
               "destination": {
                 "dest-node": "D2",
                 "dest-tp": "2-3-1"
               },
               "ietf-l3-unicast-topology:l3-link-attributes": {
                 "metric1": "100"
               }
             }
           ]
         }
       ]
     }
   }

Рисунок 3. Дерево данных экземпляра.

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

Спасибо Alia Atlas, Andy Bierman, Benoit Claise, Joel Halpern, Susan Hares, Ladislav Lhotka, Carl Moberg, Carlos Pignataro, Juergen Schoenwaelder, Michal Vasco, Kent Watsen за полезный вклад, комментарии и предложения.

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

В разработке представленной в документе модели участвовало больше людей, нежели указано в списке авторов. Дополнительные участники работы перечислены ниже.

  • Vishnu Pavan Beeram, Juniper
  • Igor Bryskin, Huawei
  • Ken Gray, Cisco
  • Aihua Guo, Huawei
  • Tom Nadeau, Brocade
  • Tony Tkacik
  • Aleksandr Zhdankin, Cisco

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

Alexander Clemm
Huawei USA – Futurewei Technologies Inc.
Santa Clara, CA
United States of America
Email: ludwig@clemm.org, alexander.clemm@huawei.com
 
Jan Medved
Cisco
Email: jmedved@cisco.com
 
Robert Varga
Pantheon Technologies SRO
Email: robert.varga@pantheon.tech
 
Xufeng Liu
Jabil
Email: xufeng.liu.ietf@gmail.com
 
Hariharan Ananthakrishnan
Packet Design
Email: hari@packetdesign.com
 
Nitin Bahadur
Bracket Computing
Email: nitin_bahadur@yahoo.com

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

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

nmalykh@protokols.ru

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

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

3Опубликовано в RFC 8795. Прим. перев.

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

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