RFC 9587 YANG Data Model for OSPFv3 Extended Link State Advertisements (LSAs)

Internet Engineering Task Force (IETF)                         A. Lindem
Request for Comments: 9587                       LabN Consulting, L.L.C.
Category: Standards Track                                      S. Palani
ISSN: 2070-1721                                                Microsoft
                                                                   Y. Qu
                                                  Futurewei Technologies
                                                               June 2024

YANG Data Model for OSPFv3 Extended Link State Advertisements (LSAs)

Модель данных YANG для расширенных анонсов LSA в OSPFv3

PDF

Аннотация

В этом документе определена модель данных YANG, дополняющая модель IETF OSPF YANG (RFC 9129) для поддержки расширяемости анонсов состояния каналов (Link State Advertisement или LSA) в OSPFv3, определённой в RFC 8362. OSPFv3 Extended LSA обеспечивают на основе TLV расширения типов LSA, определённых в RFC 5340.

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

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

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

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

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

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

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

1. Обзор

Язык определения данных YANG [RFC7950] служит для задания содержимого концептуального хранилища данных, которое позволяет управлять сетевыми устройствами с помощью NETCONF [RFC6241]. YANG подходит и для других ситуаций, таких как привязка к другим интерфейсам (например, RESTCONF [RFC8040]) и отличное от XML кодирование (например, JSON). Кроме того, модели данных YANG могут служить основой для реализации таких интерфейсов, как командный (Command-Line Interface или CLI) или программный API.

В этом документе задана модель данных YANG, дополняющая модель IETF OSPF YANG [RFC9129], которая сама дополняет [RFC8349], для поддержки конфигурации и рабочих состояний расширенных анонсов состояния каналов OSPFv3 (LSA), определённых в [RFC8362].

Заданный здесь модуль YANG соответствует архитектуре хранилищ данных управления сетью (Network Management Datastore Architecture или NMDA) [RFC8342].

2. Диаграммы деревьев

В документе используется графическое представление моделей данных, описанное в [RFC8340].

3. OSPFv3 Extended LSA

Этот документ определяет модель данных YANG для OSPFv3 Extended LSA, дополняя базовую модель OSPF [RFC9129] для поддержки расширения OSPFv3 LSA [RFC8362]. Расширенные OSPFv3 LSA поддерживают анонсы состояния каналов на основе TLV в соответствии с [RFC5340].

Модуль YANG OSPFv3 Extended LSA требует поддержки базовой модели OSPF, определяющей базовые состояния и конфигурацию OSPF. Модуль YANG OSPF дополняет модель данных YANG ietf-routing, заданную в [RFC8349]. Дополнения модуля YANG ietf-ospfv3-extended-lsa обеспечивают поддержку глобальной конфигурации, конфигурации областей (area) и добавление OSPFv3 Extended LSA к рабочему состоянию базы состояний каналов (Link State Database или LSDB).

   module: ietf-ospfv3-extended-lsa

     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf:
       +--rw extended-lsa-support?   boolean
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:areas
               /ospf:area:
       +--rw extended-lsa-support?   boolean
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area
               /ospf:interfaces/ospf:interface/ospf:database
               /ospf:link-scope-lsa-type/ospf:link-scope-lsas
               /ospf:link-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3
               /ospf:body:
       +--ro e-link
          +--ro rtr-priority?   uint8
          +--ro lsa-options
          |  +--ro lsa-options*   identityref
          +--ro e-link-tlvs* []
             +--ro unknown-tlv
             |  +--ro type?     uint16
             |  +--ro length?   uint16
             |  +--ro value?    yang:hex-string
             +--ro intra-prefix-tlv
             |  +--ro metric?           ospf:ospf-metric
             |  +--ro prefix?           inet:ip-prefix
             |  +--ro prefix-options
             |  |  +--ro prefix-options*   identityref
             |  +--ro sub-tlvs* []
             |     +--ro unknown-sub-tlv
             |        +--ro type?     uint16
             |        +--ro length?   uint16
             |        +--ro value?    yang:hex-string
             +--ro ipv6-link-local-addr-tlv
             |  +--ro link-local-address?   inet:ipv6-address
             |  +--ro sub-tlvs* []
             |     +--ro unknown-sub-tlv
             |        +--ro type?     uint16
             |        +--ro length?   uint16
             |        +--ro value?    yang:hex-string
             +--ro ipv4-link-local-addr-tlv
                +--ro link-local-address?   inet:ipv4-address
                +--ro sub-tlvs* []
                   +--ro unknown-sub-tlv
                      +--ro type?     uint16
                      +--ro length?   uint16
                      +--ro value?    yang:hex-string
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:areas/ospf:area
               /ospf:database/ospf:area-scope-lsa-type
               /ospf:area-scope-lsas/ospf:area-scope-lsa/ospf:version
               /ospf:ospfv3/ospf:ospfv3/ospf:body:
       +--ro e-router
       |  +--ro router-bits
       |  |  +--ro rtr-lsa-bits*   identityref
       |  +--ro lsa-options
       |  |  +--ro lsa-options*   identityref
       |  +--ro e-router-tlvs* []
       |     +--ro unknown-tlv
       |     |  +--ro type?     uint16
       |     |  +--ro length?   uint16
       |     |  +--ro value?    yang:hex-string
       |     +--ro link-tlv
       |        +--ro interface-id?            uint32
       |        +--ro neighbor-interface-id?   uint32
       |        +--ro neighbor-router-id?      rt-types:router-id
       |        +--ro type?                    ospf:router-link-type
       |        +--ro metric?                  ospf:ospf-link-metric
       |        +--ro sub-tlvs* []
       |           +--ro unknown-sub-tlv
       |              +--ro type?     uint16
       |              +--ro length?   uint16
       |              +--ro value?    yang:hex-string
       +--ro e-network
       |  +--ro lsa-options
       |  |  +--ro lsa-options*   identityref
       |  +--ro e-network-tlvs* []
       |     +--ro unknown-tlv
       |     |  +--ro type?     uint16
       |     |  +--ro length?   uint16
       |     |  +--ro value?    yang:hex-string
       |     +--ro attached-router-tlv
       |        +--ro adjacent-neighbor-router-id*   rt-types:router-id
       +--ro e-nssa
       |  +--ro e-external-tlvs* []
       |     +--ro unknown-tlv
       |     |  +--ro type?     uint16
       |     |  +--ro length?   uint16
       |     |  +--ro value?    yang:hex-string
       |     +--ro external-prefix-tlv
       |        +--ro flags
       |        |  +--ro ospfv3-e-external-prefix-bits*   identityref
       |        +--ro metric?           ospf:ospf-metric
       |        +--ro prefix?           inet:ip-prefix
       |        +--ro prefix-options
       |        |  +--ro prefix-options*   identityref
       |        +--ro sub-tlvs* []
       |           +--ro ipv6-fwd-addr-sub-tlv
       |           |  +--ro forwarding-address?   inet:ipv6-address
       |           +--ro ipv4-fwd-addr-sub-tlv
       |           |  +--ro forwarding-address?   inet:ipv4-address
       |           +--ro route-tag-sub-tlv
       |           |  +--ro route-tag?   uint32
       |           +--ro unknown-sub-tlv
       |              +--ro type?     uint16
       |              +--ro length?   uint16
       |              +--ro value?    yang:hex-string
       +--ro e-inter-area-prefix
       |  +--ro e-inter-prefix-tlvs* []
       |     +--ro unknown-tlv
       |     |  +--ro type?     uint16
       |     |  +--ro length?   uint16
       |     |  +--ro value?    yang:hex-string
       |     +--ro inter-prefix-tlv
       |        +--ro metric?           ospf:ospf-metric
       |        +--ro prefix?           inet:ip-prefix
       |        +--ro prefix-options
       |        |  +--ro prefix-options*   identityref
       |        +--ro sub-tlvs* []
       |           +--ro unknown-sub-tlv
       |              +--ro type?     uint16
       |              +--ro length?   uint16
       |              +--ro value?    yang:hex-string
       +--ro e-inter-area-router
       |  +--ro e-inter-router-tlvs* []
       |     +--ro unknown-tlv
       |     |  +--ro type?     uint16
       |     |  +--ro length?   uint16
       |     |  +--ro value?    yang:hex-string
       |     +--ro inter-router-tlv
       |        +--ro lsa-options
       |        |  +--ro lsa-options*   identityref
       |        +--ro metric?                  ospf:ospf-metric
       |        +--ro destination-router-id?   rt-types:router-id
       |        +--ro sub-tlvs* []
       |           +--ro unknown-sub-tlv
       |              +--ro type?     uint16
       |              +--ro length?   uint16
       |              +--ro value?    yang:hex-string
       +--ro e-intra-area-prefix
          +--ro referenced-ls-type?         uint16
          +--ro referenced-link-state-id?   uint32
          +--ro referenced-adv-router?      rt-types:router-id
          +--ro e-intra-prefix-tlvs* []
             +--ro unknown-tlv
             |  +--ro type?     uint16
             |  +--ro length?   uint16
             |  +--ro value?    yang:hex-string
             +--ro intra-prefix-tlv
                +--ro metric?           ospf:ospf-metric
                +--ro prefix?           inet:ip-prefix
                +--ro prefix-options
                |  +--ro prefix-options*   identityref
                +--ro sub-tlvs* []
                   +--ro unknown-sub-tlv
                      +--ro type?     uint16
                      +--ro length?   uint16
                      +--ro value?    yang:hex-string
     augment /rt:routing/rt:control-plane-protocols
               /rt:control-plane-protocol/ospf:ospf/ospf:database
               /ospf:as-scope-lsa-type/ospf:as-scope-lsas
               /ospf:as-scope-lsa/ospf:version/ospf:ospfv3/ospf:ospfv3
               /ospf:body:
       +--ro e-as-external
          +--ro e-external-tlvs* []
             +--ro unknown-tlv
             |  +--ro type?     uint16
             |  +--ro length?   uint16
             |  +--ro value?    yang:hex-string
             +--ro external-prefix-tlv
                +--ro flags
                |  +--ro ospfv3-e-external-prefix-bits*   identityref
                +--ro metric?           ospf:ospf-metric
                +--ro prefix?           inet:ip-prefix
                +--ro prefix-options
                |  +--ro prefix-options*   identityref
                +--ro sub-tlvs* []
                   +--ro ipv6-fwd-addr-sub-tlv
                   |  +--ro forwarding-address?   inet:ipv6-address
                   +--ro ipv4-fwd-addr-sub-tlv
                   |  +--ro forwarding-address?   inet:ipv4-address
                   +--ro route-tag-sub-tlv
                   |  +--ro route-tag?   uint32
                   +--ro unknown-sub-tlv
                      +--ro type?     uint16
                      +--ro length?   uint16
                      +--ro value?    yang:hex-string

4. Модуль YANG OSPFv3 Extended LSA

[RFC6991] и [RFC8294] не упоминаются в этом документе, но ссылки на них даны в модуле ietf-ospfv3-extended-lsa.yang.

   <CODE BEGINS> file "ietf-ospfv3-extended-lsa@2024-06-07.yang"
   module ietf-ospfv3-extended-lsa {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa";
     prefix ospfv3-e-lsa;

     import ietf-routing-types {
       prefix rt-types;
       reference
         "RFC 8294: Common YANG Data Types for the Routing Area";
     }
     import ietf-inet-types {
       prefix inet;
       reference
         "RFC 6991: Common YANG Data Types";
     }
     import ietf-routing {
       prefix rt;
       reference
         "RFC 8349: A YANG Data Model for Routing
          Management (NMDA Version)";
     }
     import ietf-ospf {
       prefix ospf;
       reference
         "RFC 9129: YANG Data Model for the OSPF Protocol";
     }

     organization
       "IETF LSR - Link State Routing Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/lsr/> 
        WG List:  <mailto:lsr@ietf.org> 

        Author:   Acee Lindem
                  <mailto:acee.ietf@gmail.com> 
        Author:   Sharmila Palani
                  <mailto:sharmila.palani@microsoft.com> 
        Author:   Yingzhen Qu
                  <mailto:yingzhen.ietf@gmail.com>"; 
     description
       "Этот модуль YANG определяет конфигурацию и рабочее состояние
        OSPFv3 Extended LSA, общие для реализаций всех производителей.
        Семантика и кодирование OSPFv3 Extended LSA описаны в RFC 8362. 
        OSPFv3 Extended LSA обеспечивают на основе TLV расширения базовых 
        типов LSA, определённых в RFC 5340.

        Модуль YANG соответствует архитектуре NMDA (RFC 8342).

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

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

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

     reference
       "RFC 9587: YANG Data Model for OSPFv3 Extended Link State
        Advertisements (LSAs)";

     revision 2024-06-07 {
       description
         "Исходный выпуск.";
       reference
         "RFC 9587: YANG Data Model for OSPFv3 Extended Link State
          Advertisements (LSAs)";
     }

     /*
      * Идентификаторы типов OSPFv3 Extended LSA
      */

     identity ospfv3-e-router-lsa {
       base ospf:ospfv3-lsa-type;
       description
         "OSPFv3 E-Router-LSA - тип 0xA021.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4.1";
     }

     identity ospfv3-e-network-lsa {
       base ospf:ospfv3-lsa-type;
       description
         "OSPFv3 E-Network-LSA - тип 0xA022.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4.2";
     }

     identity ospfv3-e-summary-lsa-type {
       base ospf:ospfv3-lsa-type;
       description
         "Типы OSPFv3 Extended Summary LSA 
          E-Inter-Area-Prefix-LSA and E-Inter-Area-Router-LSA.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграфы 4.3 и 4.4";
     }

     identity ospfv3-e-inter-area-prefix-lsa {
       base ospfv3-e-summary-lsa-type;
       description
         "OSPFv3 E-Inter-Area-Prefix-LSA - тип 0xA023.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4.3";
     }

     identity ospfv3-e-inter-area-router-lsa {
       base ospfv3-e-summary-lsa-type;
       description
         "OSPFv3 E-Inter-Area-Router-LSA - тип 0xA024.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4.4";
     }

     identity ospfv3-e-external-lsa-type {
       base ospf:ospfv3-lsa-type;
       description
         "Типы OSPFv3 Extended External LSA 
          E-AS-External-LSA и E-NSSA-LSA (NSSA- это 
          Not-So-Stubby-Area — не совсем тупиковая область).";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграфы 4.5 и 4.6";
     }

     identity ospfv3-e-as-external-lsa {
       base ospfv3-e-external-lsa-type;
       description
         "OSPFv3 E-AS-External-LSA - тип 0xC025.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4.5";
     }

     identity ospfv3-e-nssa-lsa {
       base ospfv3-e-external-lsa-type;
       description
         "OSPFv3 E-NSSA-LSA - тип 0xA027.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4.6";
     }

     identity ospfv3-e-link-lsa {
       base ospf:ospfv3-lsa-type;
       description
         "OSPFv3 E-Link-LSA - тип 0x8028.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4.7";
     }

     identity ospfv3-e-intra-area-prefix-lsa {
       base ospf:ospfv3-lsa-type;
       description
         "OSPFv3 E-Intra-Area-Prefix-LSA - тип 0xA029.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4.8";
     }

     identity ospfv3-e-prefix-option {
       description
         "Базовые идентификаторы для опций префикса OSPFv3.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.1";
     }

     identity nu-bit {
       base ospfv3-e-prefix-option;
       description
         "При установленном флаге префикс следует исключать
          из расчётов IPv6.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.1
          RFC 5340: OSPF for IPv6, Приложение A.4.1.1";
     }

     identity la-bit {
       base ospfv3-e-prefix-option;
       description
         "При установленном флаге префикс фактически является
          адресом IPv6 анонсирующего маршрутизатора.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.1
          RFC 5340: OSPF for IPv6, Приложение A.4.1.1";
     }

     identity p-bit {
       base ospfv3-e-prefix-option;
       description
         "При установленном флаге префикс NSSA следует транслировать
          в E-AS-External-LSA и анонсировать транслирующему NSSA BR.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.1
          RFC 5340: OSPF for IPv6, Приложение A.4.1.1";
     }

     identity dn-bit {
       base ospfv3-e-prefix-option;
       description
         "При установленном флаге префикс E-Inter-Area-Prefix-LSA или
          E-AS-External-LSA анонсируется как префикс L3VPN.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.1
          RFC 5340: OSPF for IPv6, Приложение A.4.1.1";
     }

     identity n-bit {
       base ospfv3-e-prefix-option;
       description
         "При установленном флаге префикс является адресом хоста,
          который идентифицирует анонсирующий маршрутизатор.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.1
          RFC 5340: OSPF for IPv6, Приложение A.4.1.1";
     }

     identity ospfv3-e-external-prefix-option {
       description
         "Базовый идентификатор для опций внешнего префикса OSPFv3.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.6";
     }

     identity e-bit {
       base ospfv3-e-external-prefix-option;
       description
         "При установленном флаге E заданная метрика является внешней
          метрикой типа 2. Это означает, что метрика считается больше,
          чем у любого пути внутри AS. Сброшенный бит E указывает 
          внешнюю метрику типа 1. Это означает, что она выражается в 
          таких же единицах, как и в других LSA (как стоимость
          интерфейса в Router-LSA).";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.6";
     }

     grouping unknown-sub-tlv {
       description
         "Неизвестная группа TLV.";
       container unknown-sub-tlv {
         uses ospf:tlv;
         description
           "Неизвестный суб-TLV внешнего TLV.";
       }
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 6.3";
     }

     grouping ospfv3-lsa-prefix {
       description
         "Префикс OSPFv3 LSA.";
       leaf prefix {
         type inet:ip-prefix;
         description
           "LSA prefix.";
       }
       container prefix-options {
         leaf-list prefix-options {
           type identityref {
             base ospfv3-e-prefix-option;
           }
           description
             "Список флагов опций префикса OSPFv3, содержащий
              идентификаторы опций OSPFv3, установленных для
              префикса OSPFv3.";
         }
         description
           "Опции префикса.";
         reference
           "RFC 8362:  OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 3.1";
       }
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3";
     }

     grouping external-prefix-tlv {
       container external-prefix-tlv {
         description
           "External-Prefix TLV.";
         container flags {
           leaf-list ospfv3-e-external-prefix-bits {
             type identityref {
               base ospfv3-e-external-prefix-option;
             }
             description
               "Список битов OSPFv3 External-Prefix TLV.";
           }
           description
             "Флаги внешнего префикса.";
         }
         leaf metric {
           type ospf:ospf-metric;
           description
             "Метрика внешнего префикса.";
         }
         uses ospfv3-lsa-prefix;
         list sub-tlvs {
           description
             "Суб-TLV External-Prefix TLV.";
           container ipv6-fwd-addr-sub-tlv {
             description
               "Суб-TLV IPv6-Forwarding-Address для E-AS-External-LSA
                и E-NSSA-LSA для семейства адресов IPv6.";
             leaf forwarding-address {
               type inet:ipv6-address;
               description
                 "Адрес пересылки IPv6.";
             }
             reference
               "RFC 8362: OSPFv3 Link State Advertisement (LSA)
                Extensibility, параграф 3.10";
           }
           container ipv4-fwd-addr-sub-tlv {
             description
               "Суб-TLV IPv4-Forwarding-Address для E-AS-External-LSA
                и E-NSSA-LSA для семейства адресов IPv4.";
             leaf forwarding-address {
               type inet:ipv4-address;
               description
                 "Адрес пересылки IPv4.";
             }
             reference
               "RFC 8362: OSPFv3 Link State Advertisement (LSA)
                Extensibility, параграф 3.11";
           }
           container route-tag-sub-tlv {
             description
               "Суб-TLV Route-Tag.";
             leaf route-tag {
               type uint32;
               description
                 "Тег маршрута.";
             }
             reference
               "RFC 8362: OSPFv3 Link State Advertisement (LSA)
                Extensibility, параграф 3.12";
           }
           uses unknown-sub-tlv;
         }
       }
       description
         "Группа External-Prefix TLV.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.6";
     }

     grouping intra-area-prefix-tlv {
       container intra-prefix-tlv {
         description
           "Intra-Area-Prefix-LSA TLV.";
         leaf metric {
           type ospf:ospf-metric;
           description
             "Метрика внутриобластного префикса.";
         }
         uses ospfv3-lsa-prefix;
         list sub-tlvs {
           description
             "Суб-TLV Intra-Area-Prefix TLV.";
           uses unknown-sub-tlv;
         }
       }
       description
         "Группа Intra-Area-Prefix TLV.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.7";
     }

     grouping ipv6-link-local-addr-tlv {
       container ipv6-link-local-addr-tlv {
         description
           "IPv6 Link-Local Address TLV.";
         leaf link-local-address {
           type inet:ipv6-address;
           description
             "Адрес IPv6 Link-Local.";
         }
         list sub-tlvs {
           description
             "Суб-TLV IPv6 Link-Local Address TLV.";
           uses unknown-sub-tlv;
         }
       }
       description
         "Группа IPv6 Link-Local Address TLV.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.8";
     }

     grouping ipv4-link-local-addr-tlv {
       container ipv4-link-local-addr-tlv {
         description
           "IPv4 Link-Local Address TLV.";
         leaf link-local-address {
           type inet:ipv4-address;
           description
             "Адрес IPv4 Link-Local.";
         }
         list sub-tlvs {
           description
             "Суб-TLV IPv4 Link-Local Address TLV.";
           uses unknown-sub-tlv;
         }
       }
       description
         "Группа IPv4 Link-Local Address TLV.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 3.9";
     }

     /* Конфигурация */

     augment "/rt:routing/rt:control-plane-protocols"
           + "/rt:control-plane-protocol/ospf:ospf" {
       when "../rt:type = 'ospf:ospfv3'" {
         description
           "Дополняет протокол маршрутизации OSPFv3.";
       }
       description
         "Дополняет конфигурацию на уровне экземпляра OSPFv3 поддержкой
          Extended LSA. При включённой поддержке будут анонсироваться
          OSPFv3 Extended LSA, и не будут передаваться OSPFv3 Legacy
          LSA, которые анонсируются при отключённой поддержке. Однако 
          OSPFv3 Extended LSA могут анонсироваться в Extended LSA Sparse
          Mode для поддержки постепенного внедрения, как описано в
          параграфе 6.2 of RFC 8362.";
       leaf extended-lsa-support {
         type boolean;
         default "false";
         description
           "Включает поддержку OSPFv3 Extended LSA для домена OSPFv3.";
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, Приложение A - Global Configuration Support";
       }
     }

     augment "/rt:routing/rt:control-plane-protocols/"
           + "rt:control-plane-protocol/ospf:ospf/ospf:"
           + "areas/ospf:area" {
       when "../../../rt:type = 'ospf:ospfv3'" {
         description
           "Дополняет конфигурацию протокола OSPFv3 на уровне области.";
       }
       description
         "Дополняет конфигурацию протокола OSPFv3 на уровне области
          поддержкой Extended LSA.";
       leaf extended-lsa-support {
         type boolean;
         must "derived-from(../ospf:area-type,'stub-nssa-area') or "
            + "(current() = 'true') or "
            + "(../../../extended-lsa-support = 'false')" {
           description
             "Для обычных областей (области с лавинной рассылкой LSA
              уровня AS) отключение AreaExtendedLSASupport на уровне
              области запрещено при включении ExtendedLSASupport на
              уровне экземпляра. Анонсы E-AS-External-LSA рассылаются
              лавинно во все обычные области OSPFv3 (не тупиковые и не
              NSSA), поэтому отключение поддержки на уровне области
              невозможно.";
         }
         description
           "Дополняет конфигурацию протокола OSPFv3 на уровне области
            поддержкой Extended LSA. При включённой поддержке будут
            анонсироваться OSPFv3 Extended LSA и не будут передаваться 
            OSPFv3 Legacy LSA, которые анонсируются при отключённой 
            поддержке. Однако OSPFv3 Extended LSA могут анонсироваться
            в Extended LSA Sparse Mode для поддержки постепенного 
            внедрения, как описано в параграфе 6.2 of RFC 8362. По
            умолчанию статус поддержки Extended LSA наследуется из
            конфигурации на уровне экземпляра.";
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, Приложение B - Area Configuration Support";
       }
     }

     /*
      * Дополнения базы состояний каналов (Link State Database или LSDB)
      */

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:areas/ospf:area/"
           + "ospf:interfaces/ospf:interface/ospf:database/"
           + "ospf:link-scope-lsa-type/ospf:link-scope-lsas/"
           + "ospf:link-scope-lsa/ospf:version/ospf:ospfv3/"
           + "ospf:ospfv3/ospf:body" {
       when "../../../../../../../../../../../"
          + "rt:type = 'ospf:ospfv3'" {
         description
           "Это дополнение применимо лишь к OSPFv3.";
       }
       description
         "Добавляет OSPFv3 Link-scoped Extended LSA к рабочему
          состоянию LSDB на интерфейсе.";
       container e-link {
         when "../../ospf:header/ospf:type = "
            + "'ospfv3-e-lsa:ospfv3-e-link-lsa'" {
           description
             "Применимо лишь к E-Link-LSA.";
         }
         description
           "E-Link-LSA contents.";
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 4.7";
         leaf rtr-priority {
           type uint8;
           description
             "Приоритет маршрутизатора для интерфейса.";
         }
         uses ospf:ospfv3-lsa-options;
         list e-link-tlvs {
           description
             "E-Link-LSA TLV.";
           container unknown-tlv {
             uses ospf:tlv;
             description
               "Неизвестный E-Link TLV.";
           }
           uses intra-area-prefix-tlv;
           uses ipv6-link-local-addr-tlv;
           uses ipv4-link-local-addr-tlv;
         }
       }
     }

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:areas/ospf:area/ospf:database/"
           + "ospf:area-scope-lsa-type/ospf:area-scope-lsas/"
           + "ospf:area-scope-lsa/ospf:version/ospf:ospfv3/"
           + "ospf:ospfv3/ospf:body" {
       when "../../../../../../../../../"
          + "rt:type = 'ospf:ospfv3'" {
         description
           "Это дополнение применимо лишь к OSPFv3.";
       }
       description
         "Добавляет OSPFv3 Area-scoped Extended LSA к рабочему
          состоянию LSDB для области.";
       reference
         "RFC 8362: OSPFv3 Link State Advertisement (LSA)
          Extensibility, параграф 4";
       container e-router {
         when "../../ospf:header/ospf:type = "
            + "'ospfv3-e-lsa:ospfv3-e-router-lsa'" {
           description
             "Применимо лишь к OSPFv3 E-Router-LSA.";
         }
         description
           "Содержимое OSPFv3 E-Router-LSA.";
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 4.1";
         uses ospf:ospf-router-lsa-bits;
         uses ospf:ospfv3-lsa-options;
         list e-router-tlvs {
           description
             "E-Router-LSA TLV.";
           container unknown-tlv {
             uses ospf:tlv;
             description
               "Неизвестный E-Router TLV.";
           }
           container link-tlv {
             description
               "E-Router-LSA TLV.";
             leaf interface-id {
               type uint32;
               description
                 "Идентификатор интерфейса для канала.";
             }
             leaf neighbor-interface-id {
               type uint32;
               description
                 "Идентификатор интерфейса соседа по каналу.";
             }
             leaf neighbor-router-id {
               type rt-types:router-id;
               description
                 "Идентификатор соседнего маршрутизатора на канале.";
             }
             leaf type {
               type ospf:router-link-type;
               description
                 "Тип канала: 1 - «точка-точка»
                              2 - канал в транзитную сеть
                              3 - канал в тупиковую сеть
                              4 - виртуальный канал.";
             }
             leaf metric {
               type ospf:ospf-link-metric;
               description
                 "Метрика канала.";
             }
             list sub-tlvs {
               description
                 "Суб-TLV Link TLV.";
               uses unknown-sub-tlv;
             }
           }
         }
       }
       container e-network {
         when "../../ospf:header/ospf:type = "
            + "'ospfv3-e-lsa:ospfv3-e-network-lsa'" {
           description
             "Применимо лишь к E-Network-LSA.";
         }
         description
           "Содержимое E-Network-LSA.";
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 4.2";
         uses ospf:ospfv3-lsa-options;
         list e-network-tlvs {
           description
             "E-Network-LSA TLV.";
           container unknown-tlv {
             uses ospf:tlv;
             description
               "Неизвестный E-Network TLV.";
           }
           container attached-router-tlv {
             description
               "Attached-Routers TLV.";
             leaf-list adjacent-neighbor-router-id {
               type rt-types:router-id;
               description
                 "Идентификатор смежного маршрутизатора.";
             }
           }
         }
       }
       container e-nssa {
         when "../../ospf:header/ospf:type = "
            + "'ospfv3-e-lsa:ospfv3-e-nssa-lsa'" {
           description
             "Применимо лишь к E-NSSA-LSA.";
         }
         description
           "Содержимое E-NSSA-LSA.";
         list e-external-tlvs {
           description
             "E-NSSA-LSA TLV.";
           container unknown-tlv {
             uses ospf:tlv;
             description
               "Неизвестный E-External TLV.";
           }
           uses external-prefix-tlv;
         }
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 4.6";
       }
       container e-inter-area-prefix {
         when "../../ospf:header/ospf:type = "
            + "'ospfv3-e-lsa:ospfv3-e-inter-area-prefix-lsa'" {
           description
             "Применимо лишь к E-Inter-Area-Prefix-LSA.";
         }
         description
           "Содержимое E-Inter-Area-Prefix-LSA.";
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 4.3";
         list e-inter-prefix-tlvs {
           description
             "E-Inter-Area-Prefix-LSA TLV.";
           container unknown-tlv {
             uses ospf:tlv;
             description
               "Неизвестный E-Inter-Area-Prefix TLV.";
           }
           container inter-prefix-tlv {
             description
               "Неизвестный E-Inter-Area-Prefix-LSA TLV.";
             leaf metric {
               type ospf:ospf-metric;
               description
                 "Метрика внутриобластного префикса.";
             }
             uses ospfv3-lsa-prefix;
             list sub-tlvs {
               description
                 "Суб-TLV Inter-Area-Prefix TLV.";
               uses unknown-sub-tlv;
             }
           }
         }
       }
       container e-inter-area-router {
         when "../../ospf:header/ospf:type = "
            + "'ospfv3-e-lsa:ospfv3-e-inter-area-router-lsa'" {
           description
             "Применимо лишь к E-Inter-Area-Router-LSA.";
         }
         description
           "Содержимое E-Inter-Area-Router-LSA.";
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 4.4";
         list e-inter-router-tlvs {
           description
             "E-Inter-Area-Router-LSA TLV.";
           container unknown-tlv {
             uses ospf:tlv;
             description
               "Неизвестный E-Inter-Area-Router TLV.";
           }
           container inter-router-tlv {
             description
               "Неизвестный E-Inter-Area-Router-LSA TLV.";
             uses ospf:ospfv3-lsa-options;
             leaf metric {
               type ospf:ospf-metric;
               description
                 "Метрика межобластного маршрутизатора.";
             }
             leaf destination-router-id {
               type rt-types:router-id;
               description
                 "Идентификатор целевого маршрутизатора.";
             }
             list sub-tlvs {
               description
                 "Inter-Area-Router TLV sub-TLV.";
               uses unknown-sub-tlv;
             }
           }
         }
       }
       container e-intra-area-prefix {
         when "../../ospf:header/ospf:type = "
            + "'ospfv3-e-lsa:ospfv3-e-intra-area-prefix-lsa'" {
           description
             "Применимо лишь к E-Intra-Area-Prefix-LSA.";
         }
         description
           "Содержимое E-Intra-Area-Prefix-LSA.";
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 4.8";
         leaf referenced-ls-type {
           type uint16;
           description
             "Тип Referenced Link State.";
         }
         leaf referenced-link-state-id {
           type uint32;
           description
             "Referenced Link State ID.";
         }
         leaf referenced-adv-router {
           type rt-types:router-id;
           description
             "Анонсирующий маршрутизатор.";
         }
         list e-intra-prefix-tlvs {
           description
             "E-Intra-Area-Prefix-LSA TLV.";
           container unknown-tlv {
             uses ospf:tlv;
             description
               "Неизвестный E-Intra-Area-Prefix TLV.";
           }
           uses intra-area-prefix-tlv;
         }
       }
     }

     augment "/rt:routing/"
           + "rt:control-plane-protocols/rt:control-plane-protocol/"
           + "ospf:ospf/ospf:database/"
           + "ospf:as-scope-lsa-type/ospf:as-scope-lsas/"
           + "ospf:as-scope-lsa/ospf:version/ospf:ospfv3/"
           + "ospf:ospfv3/ospf:body" {
       when "../../../../../../../"
          + "rt:type = 'ospf:ospfv3'" {
         description
           "Это дополнение действительно лишь для OSPFv3.";
       }
       description
         "Это дополнение добавляет OSPFv3 AS-scoped Extended LSA к
          рабочему состоянию для LSDB на уровне экземпляра AS.";
       container e-as-external {
         when "../../ospf:header/ospf:type = "
            + "'ospfv3-e-lsa:ospfv3-e-as-external-lsa'" {
           description
             "Применимо лишь к E-AS-External-LSA.";
         }
         description
           "Содержимое E-AS-External-LSA.";
         list e-external-tlvs {
           description
             "E-AS-External-LSA TLV.";
           container unknown-tlv {
             uses ospf:tlv;
             description
               "Неизвестный E-External TLV.";
           }
           uses external-prefix-tlv;
         }
         reference
           "RFC 8362: OSPFv3 Link State Advertisement (LSA)
            Extensibility, параграф 4.5";
       }
     }
   }
   <CODE ENDS>

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

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

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

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

/ospf:ospf/extended-lsa-support

/ospf:ospf/ospf:areas/ospf:area/extended-lsa-support

Способность управлять поддержкой OSPFv3 Extended LSA может приводить к атакам на службы (Denial-of-Service или DoS), поскольку маршрутизаторы OSPFv3 будут использовать для расчётов OSPFv3 SPF исключительно OSPFv3 Extended LSA, либо OSPFv3 Legacy LSA. Использование маршрутизаторами OSPFv3 разных типов LSA приведёт к неполной доступности и возможному разделению на части домена маршрутизации OSPFv3. Дополнительные сведения о совместимости OSPFv3 Extended LSA приведены в разделе 6 [RFC8362].

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

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

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

В соответствии с этим документом агентство IANA внесло URI в реестр IETF XML Registry [RFC3688]

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

В соответствии с этим документом агентство IANA зарегистрировало модуль YANG в реестре YANG Module Names [RFC6020]

   Name:  ietf-ospfv3-extended-lsa
   Maintained by IANA:  N
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-ospfv3-extended-lsa
   Prefix:  ospfv3-e-lsa
   Reference:  RFC 9587

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

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

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

[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, “OSPF for IPv6”, RFC 5340, DOI 10.17487/RFC5340, July 2008, <https://www.rfc-editor.org/info/rfc5340>.

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

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

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

[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, “A YANG Data Model for Routing Management (NMDA Version)”, RFC 8349, DOI 10.17487/RFC8349, March 2018, <https://www.rfc-editor.org/info/rfc8349>.

[RFC8362] Lindem, A., Roy, A., Goethals, D., Reddy Vallem, V., and F. Baker, “OSPFv3 Link State Advertisement (LSA) Extensibility”, RFC 8362, DOI 10.17487/RFC8362, April 2018, <https://www.rfc-editor.org/info/rfc8362>.

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

[RFC9129] Yeung, D., Qu, Y., Zhang, Z., Chen, I., and A. Lindem, “YANG Data Model for the OSPF Protocol”, RFC 9129, DOI 10.17487/RFC9129, October 2022, <https://www.rfc-editor.org/info/rfc9129>.

[W3C.REC-xml-20081126] Bray, T., Paoli, J., Sperberg-McQueen, C. M., Maler, E., and F. Yergeau, “Extensible Markup Language (XML) 1.0 (Fifth Edition)”, W3C Recommendation REC-xml-20081126, November 2008, <https://www.w3.org/TR/xml/>.

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

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

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

[RFC8792] Watsen, K., Auerswald, E., Farrel, A., and Q. Wu, “Handling Long Lines in Content of Internet-Drafts and RFCs”, RFC 8792, DOI 10.17487/RFC8792, June 2020, <https://www.rfc-editor.org/info/rfc8792>.

Приложение A. Пример конфигурации

Ниже приведён пример XML (в соответствии с [W3C.REC-xml-20081126]) использования модели данных YANG для OSPFv3 Extended LSA. Длинные строки разорваны (\) в соответствии с [RFC8792].

   <?xml version='1.0' encoding='UTF-8'?>
     <routing xmlns="urn:ietf:params:xml:ns:yang:ietf-routing">
       <router-id>192.0.2.1</router-id>
       <control-plane-protocols>
         <control-plane-protocol>
           <type xmlns:ospf="urn:ietf:params:xml:ns:yang:ietf-ospf">\
           ospf:ospfv3</type>
           <name>"OSPFv3"</name>
           <ospf xmlns="urn:ietf:params:xml:ns:yang:ietf-ospf">
             <extended-lsa-support xmlns="urn:ietf:params:xml:ns:yang:\
               ietf-ospfv3-extended-lsa">true</extended-lsa-support>
           </ospf>
         </control-plane-protocol>
       </control-plane-protocols>
     </routing>

Этот же пример в формате JSON [RFC7951] показан ниже.

   {
     "routing": {
       "router-id": "192.0.2.1",
       "control-plane-protocols": {
         "control-plane-protocol": {
           "type": "ospf:ospfv3",
           "name": "\"OSPFv3\"",
           "ospf": {
             "extended-lsa-support": true
           }
         }
       }
     }
   }

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

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

Большое спасибо Tom Petch, Mahesh Jethanandani, Renato Westphal, Victoria Pritchard, Reshad Rahman, Chris Hopps за их рецензии и комментарии.

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

Acee Lindem
LabN Consulting, L.L.C.
301 Midenhall Way
Cary, NC 27513
United States of America
Email: acee.ietf@gmail.com
 
Sharmila Palani
Microsoft
1 Microsoft Way
Redmond, WA 98052
United States of America
Email: sharmila.palani@microsoft.com
 
Yingzhen Qu
Futurewei Technologies
2330 Central Expressway
Santa Clara, CA 95050
United States of America
Email: yingzhen.ietf@gmail.com

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

nmalykh@protokols.ru


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

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

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

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