RFC 8795 YANG Data Model for Traffic Engineering (TE) Topologies

Internet Engineering Task Force (IETF)                            X. Liu
Request for Comments: 8795                                Volta Networks
Category: Standards Track                                     I. Bryskin
ISSN: 2070-1721                             Futurewei Technologies, Inc.
                                                               V. Beeram
                                                                 T. Saad
                                                        Juniper Networks
                                                                 H. Shah
                                                                   Ciena
                                                     O. Gonzalez de Dios
                                                              Telefonica
                                                             August 2020

YANG Data Model for Traffic Engineering (TE) Topologies

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

PDF

Аннотация

Этот документ задаёт модель данных YANG для представления, извлечения и манипуляций с топологией организации трафика (Traffic Engineering или TE). Модель служит основой для зависящих от технологии моделей топологии TE.

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

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

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

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

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

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

База данных организации трафика (Traffic Engineering Database или TED) является важным компонентом систем TE на основе MPLS-TE [RFC2702] и GMPLS [RFC3945]. TED – это коллекция сведений TE обо всех узлах и каналах TE в сети. Топология TE схематически показывает узлы и каналы TE данной базы TED. В данной системе TE может существовать одна или несколько топологий TE. С топологией TE работают алгоритмы расчёта путей.

Этот документ задаёт модель данных YANG [RFC7950] для представления, извлечения и манипуляций с топологией TE. Модель включает независимые от технологии блоки топологии TE, которые могут применяться в связанных с технологией топологических моделях TE.

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

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

Предполагается знакомство читателя с основами, опубликованными в RFC по организации трафика. [RFC7926] может послужить хорошей отправной точкой для тех, кто мало знаком с RFC по организации трафика.

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

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

Набор сведений TE обо всех узлах и каналах TE в данной сети.

TE topology – топология TE

Схематическое представление узлов и каналов TE данной базы TED, служащее основой графа, пригодного для расчёта путей TE.

Native TE topology – естественная топология TE

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

Customized TE topology – настраиваемая топология TE

Топология, создаваемая провайдером для данного клиента. Такая топология обычно представляет собой абстракции на основе естественной топологии TE у провайдера и представляется клиенту, который при получении сливает её со своей естественной топологией. Алгоритмы расчёта путей у клиента обычно не работают с настраиваемой топологией, а используют результат слияния с естечтвенной топологией клиента.

1.2. Структура дерева

Упрощённое графическое представление модели данных приведено в Приложении A с использованием формата, заданного в [RFC8340] для моделей данных YANG.

1.3. Префиксы имён в модели данных

В этом документе для имён узлов и других объектов модели данных применяются стандартные префиксы, связанные с импортируемыми модулями YANG, как показано в таблице 1.

Таблица . Префиксы модулей YANG.

 

Префикс

Модуль YANG

Документ

yang

ietf-yang-types

[RFC6991]

inet

ietf-inet-types

[RFC6991]

nw

ietf-network

[RFC8345]

nt

ietf-network-topology

[RFC8345]

te-types

ietf-te-types

[RFC8776]

 

2. Классификация топологии TE

Заданная в этом документе модель данных учитывает перечисленные ниже характеристики топологии TE.

  • Топология TE является абстрактным представлением плоскостью управления топологии плоскости данных, поэтому относящиеся к плоскости данных атрибуты должны быть включены в соответствующую модель топологии TE. Топология TE включает динамически обнаруженные данные, а также достаточно много статических сведений, связанных с узлами и каналами плоскости данных. Динамические данные, такие как нераспределенная пропускная способность каналов плоскости данных, могут меняться достаточно часто. Статические данные, такие как идентификация сетевого уровня, возможности и ограничения адаптации, общая судьба и административное раскрашивание, меняются редко. Одна топология TE может включать сведения TE из нескольких уровней коммутации.

  • Топология TE не зависит от протокола. Сведения об элементах топологии можно получить от протоколов, основанных на состояниях каналов, но топология может существовать независимо от какого-либо конкретного протокола.

  • Топология TE может не совпадать с топологией маршрутизации в данной системе TE. Топология маршрутизации строится на основе смежности маршрутизаторов. Нет взаимно-однозначного соответствия между каналами TE и смежностью маршрутизаторов. Например, наличие канала TE между парой узлов не обязательно предполагает маршрутную смежность между этими узлами. Дополнительные сведения по этим вопросам представлены в работах [TEAS-TOPO] и [YANG-L3].

  • С каждым элементом топологии TE связан хотя бы один источник информации и в некоторых случаях таких источников может быть несколько.

  • Топология TE может быть иерархической. Каждый узел и канал данной топологии TE может быть связан с соответствующей базовой топологией. Это означает, что каждый узел и канал данной TE топологии может быть связан с независимым стеком поддерживающих топологий TE.

  • Топология TE может быть настраиваемой. Топологии TE данной сети, представляемые провайдером своим клиентам могут настраиваться для каждого клиента. Такая настройка может выполняться провайдером и/или соглашением между провайдером и клиентом. Связь между настроенной топологией и естественной топологией провайдера может быть представлена как иерархия (базовая – наложенная), а в остальном эти две топологии развязаны между собой. Настраиваемая топология предоставляется клиенту, а естественная топология провайдера известна только ему.

3. Абстракции и преобразования при моделировании

3.1. Топология TE

Топология TE – это представление организации трафика с одним или несколькими уровнями топологии сети. Топология TE включает узлы TE (вершины графа), соединённые каналами TE (ребра графа). Топология отображается в граф TE.

3.2. Узел TE

                             | +---+          __
                             | |   | Узел TE  \/ TTP  o LTP
                             | +---+
                             |
                             | ----- Канал TE
                             | ***** Матрица связности узлов,
                             |       Связность локальных каналов TTP
                             | @@@@@ Туннель TE
                             o----------------------------------

   Node-1                                            Node-3
+------------+                                    +------------+
|    TTP-1   |                                    |    TTP-1   |
|LTP  __     |           TE-Tunnel-1              |     __     |
|-6   \/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\/     |
o    *  *    oLTP-1           Node-2         LTP-6o    *  *    o
|   *    *   |           +------------+           |   *    *   |
|  * TTP-2*  |           |            |           |  * TTP-2*  |
| *   __   * |LTP-2 LTP-6|            |LTP-1 LTP-5| *   __   * |
o*    \/    *o-----------o************o-----------o*    \/    *o
|LTP *  *    | Link-12   |          * | Link-23   |    *  *    |
|-5 *    *   |      LTP-5|        *   |LTP-2      |   *    *   |
+--o------o--+           o************o           +--o------o--+
 LTP-4  LTP-3            | *   *    * |            LTP-4  LTP-3
                         |  **     *  |
                         +--o------o--+
                          LTP-4  LTP-3

LTP: Link Termination Point - точка завершения канала
TTP: Tunnel Termination Point - точка завершения туннеля

Рисунок . Абстракции моделирования топологии TE.


Узел TE – это элемент топологии TE, представляемый вершиной (vertex) графа TE и соответствующий одному или нескольким узлам или части узла (это может быть коммутатор или маршрутизатор, физический или виртуальный). Узел TE принадлехит одной топологии TE и полностью определён в ней. Узлу присваивается уникальный идентификатор в рамках топологии TE. Атрибуты узла TE включают сведения, относящиеся к плоскости данных соответствующего узла или узлов (например, матрица связности), а также данные конфигурации (такие, как имя узла TE). Данный узел TE доступен на графе TE через один или несколько каналов TE, завершающихся узлом TE.

Многоуровневые узлы TE, обеспечивающие функции коммутации на нескольких сетевых уровнях, являются примером, где физический узел можно расщепить на несколько логических узлов TE. Некоторые из этих (логических) узлов TE могут относиться к топологии TE клиентского уровня, а остальные принадлежат тополгии TE серверного уровня.

На рисунке 1 узлы Node-1, Node-2, Node-3 являются узлами TE.

3.3. Канал TE

Канал TE – это элемент топологии TE, представляемый ребром графа TE. Стрелки на ребре указывают направления (одно или оба) канала TE. При наличии пары параллельных односторнних и разнонаправленных каналов используется ребро без стрелок. Канал TE представляет один или несколько (физических) каналов или часть канала. Канал TE относится к одной топологии TE и полностью определяется ею. Каналу TE назначается уникальный в рамках топологии TE идентификатор. Атрибуты канала TE включают параметры, относящиеся к аспектам плоскости данных соответствующих каналов (невыделенная пропускная способность, карты (пулы) ресурсов и т. п.), а также данные конфигурации (идентификаторы удалённых узлов, идентификаторы каналов, SRLG3, административная раскраска и т. п.). Канал TE присоединяется к узлу TE, заврешающему канал TE через одну точку (Link Termination Point или LTP).

На рисунке 1 каналы TE обозначены Link-12 и Link-23.

3.4. Переходный канал TE для многоуровневых топологий

Сети обычно состоят из нескольких уровней и один или несколько сигналов сети клиентского уровня могут мультиплексироваться и инкапсулироваться в сигнал серверного уровня [RFC5212] [G.805]. Этот сигнал может передаваться в сети уровня серверов через множество узлов, пока сигнал не будет завершён и сигналы уровня клиентов снова не появятся на завершающем серверный уровень узле. Примеры многоуровневых сетей включают (1) IP через MPLS в сети Ethernet и (2) низкоуровневые оптические сигналы (Optical Data Unit-k или ODUk), мультиплексируемые в высокоуровневый сигнал ODUl (l>k), передаваемый через сигнал оптического канала (Optical Channel иои OCh) в оптической транспортной сети (Optical Transport Network или OTN), как указано в [G.872] и [G.709].

Определённые в параграфе 3.3 каналы TE могут служить для представления каналов внутри сетевого уровня. В случае многоуровневой сети узлы и каналы TE позволяют лишь представлять каждый уровень сети как отдельную топологию TE. Каждая из таких одноуровневых топологий TE может быть изолирована от от топологии TE клиентского и среверного уровня (при их наличии). Верхний и нижний уровни сетевой иерархии имеют лишь одну точку смежности с соседним уровнем (выше или ниже). Мультиплексирование сигналов клиентского уровня и их инкапсуляция в сигнал уровня серверов требует обеспечиваемой внутри узла функции (обычно реализованной аппаратно), которую называют межуровневым переходом (layer transition).

                             |                 |
                             | +---+          ---
                             | |   | Узел TE  \ / Переходный
                             | +---+           |  канал
                             |
                             | ----- Канал клиентского уровня
                             | ===== Канал серверного уровня
                             | ***** Граница между уровнями
                             o----------------------------------

   +-------------------+
   | +-------+         |                          +-------+
-----|Коммут.|------+  |             Каналы  -----|Узел   |
   | |клиент.|---+  |  |             клиентского  |клиент.|
-----|уровня |-+ |  |  |             уровня  -----|уровня |
   | +------ + | |  |  |                          +-------+
   |           | |  |  | Клиентский                | |  |
   |           | | ---_| уровень                   --- ---
***|***********|*| \ /*|***************************\ /*\ /****
   |           ---  |  | Серверный      Переходные  |   |
   |Завершение \ /  |  | уровень            каналы  |   |
   |  уровня    |   |  |                            |   |
   |            |   |  |                            |   |
   |         +-------+ |                          +-------+
=============|Коммут.|=====           Каналы  ====|Узел   |====
   |         |сервер.| |              серверного  |сервер.|
=============|уровня |=====           уровня  ====|уровня |====
   |         +-------+ |                          +-------+
   +-------------------+

Представление физического узла        Представление топологии TE

Рисунок . Моделирование многоуровневого узла (в примере 2 уровня).


Одним из основных требований в расчёту пути является возможность нахождения пути между парой конечных точек через многоуровневую сеть, на основе представляющее её топологии TE. Это требует дополнительной конструкции TE, представляющей вожможные переходы между уровнями в многоуровневой топологии TE, для соединения топологий TE отдельных уровней сети. Такой конструкцией является переходный канал TE, представляющий функцию межуровневого перехода внутри узла, который разбирается (декомпозиция) на несколько логических узлов, представленных как узлы TE (см. определения переходного канала для OTN в [G.8080]). link for the OTN). Следовательно, переходный канал TE соединяет узел клиентского уровня с узлом серверного уровня. Канал TE, как указано в параграфе 3.3 имеет LTP одного типа на каждом конце соединения, а пареходный канал TE имеет LTP клиентского уровня на стороне клиента и одну точку LTP серверного уровня на стороне сервера. Следует отметить, что переходные каналы являются вспомогательной функцией в многоуровневой топологии TE и существуют лишь до начала использования, поскольку они представляют потенциальную связность. После установки трассы на уровне сервером между LTP двух переходных каналов, полученный в результате канал клиентского уровня в плоскости данных можно представить как обычный канал TE в топологии клиентского уровня. Переходные каналы TE появляются снова при разрыве трассы на уровне серверов.

3.5. Точка завершения канала TE (LTP)

Точка завершения канала TE (Link Termination Point – или LTP) – это концептуальная точка присоединения узла TE к обному из каналов TE, завершаемому на узле TE. Мощность (cardinality) соединения LTP и связанного канала TE составляет 1:0..1.

На рисунке 1 узел Node-2 имеет шесть LTP – LTP-1 – LTP-6.

3.6. Точка завершения туннеля TE (TTP)

Точка завершения туннеля TE (Tunnel Termination Point или TTP) – это элемент топологии TE, представляющий одну или несколько возможных точек завершения транспортного сервиса (точек адаптации услуги клиентом, таких как транспондер WDM4/OCh). TTP связывается с одним узлом TE (размещается на узле), в области действия которого TTP назначается уникальный идентификатор. В зависимости от внутренних ограничений узла TE доступ к данной точке TTP может осуществляться через один, несколько или все каналы TE, завршающиеся на этом узле TE.

На рисунке 1 узел Node-1 имеет две точки TTP – TTP-1 и TTP-2.

3.7. Матрица связности узла TE

Матрица связности узла TE – это атрибут узла TE, описывающий ограничения коммутации на узле в виде допустимых комбинаций LTP узла TE (см. ниже). С точки зрения потенциального пути TE, приходящего на узел TE через данную входную точку LTP, матрица связности описывает действительные (выходные) LTP, через которые путь TE может выйти из узла TE.

На рисунке 1 матрица связности Node-2 имеет вид {<LTP-6, LTP-1>, <LTP-5, LTP-2>, <LTP-5, LTP-4>, <LTP-4, LTP-1>, <LTP-3, LTP-2>}.

3.8. Список локальных соединений TTP (LLCL)

Список локальных соединений TTP (Local Link Connectivity List или LLCL) – это список каналов TE, завершаемых на узле TE, содержащем TTP, с которыми точка TTP может быть соединена. С точки зрения потенциального соединения пути TE список LLCL содержит действительные каналы TE, на который путь TE должен начинаться или заканчиваться для успешного завершения TTP.

На рисунке 1 список LLCL узла Node-1 имеет вид {<TTP-1, LTP-5>, <TTP-1, LTP-2>, <TTP-2, LTP-3>, <TTP-2, LTP-4>}.

3.9. Путь TE

Путь TE – это упорядоченный список каналов и узлов TE в графе топологии TE. Этот путь соединяет пару TTP для использования потенциальным соединением. Например, путь TE может быть результатом успешного расчёта пути для данного транспортно сервиса.

На рисунке 1 путь TE для TE-Tunnel-1 имеет вид {Node-1:TTP-1, Link-12, Node-2, Link-23, Node-3:TTP-1}.

3.10. Блокировка между уровнями TE

Блокировка между уровнями TE – это концепция моделирования, описывающая адаптационные взаимосвязи между уровнями клиентов и сервером, что важно для многоуровневой организации трафика. Это объединение M клиентских LTP и N серверных TTP, в котором данные, приходящие на любую з клиентских точек LTP, могут быть направлены в любую из серверных точек TTP. Межуровневая блокировка TE указывается идентификатором, который уникален среди всех топологий TE, предоставляемых одним провайдером. Идентификатор служит для аннотирования LTP клиентского уровня и TTP серверного уровня, связанных с данной межуровневой блокировкой TE.

                   | +---+          __
                   | |   | Узел TE  \/ TTP  o LTP
                   | +---+
                   |
                   | ----- Канал TE
                   | ***** Локальная связность TTP
                   o----------------------------------

(IL-1) C-LTP-1 +------------+   C-LTP-2 (IL-1)
       --------O   (IL-1)   O--------
(IL-1) C-LTP-3 |   S-TTP-1  |   C-LTP-4 (IL-1)
       --------O     __     0--------
(IL-1) C-LTP-5 |    *\/*    |   C-LTP-6 (IL-1)
       --------O   *    *   O--------
               |  *(IL-1)*  |
       S-LTP-3 | * S-TTP-2* |   S-LTP-4
       --------o*    __    *o--------
               |    *\/*    |
               |   *    *   |
               +--o------o--+
       S-LTP-1 |      | S-LTP-2

Рисунок . Ассоциации идентификатора межуровневой блокировки TE.


На рисунке 3 межуровневая блокировка TE с идентификатором IL-1 связывает 6 LTP клиентского уровня (C-LTP-1 – C-LTP-6) с двумя TTP серверного уровня (S-TTP-1 и S-TTP-2). Они имеют общий атрибут – идентификатор межуровневой блокировки IL-1, который является единственным индикатором связи. В данном случае LTP может (не обязательно) иметь один или несколько идентификаторов межуровневых блокировок. Наличие нескольких идентификаторов означает, что приходящие на LTP данные могут направляться в любую из точек TTP, связанных с этими межуровневыми блокировками. Например, C-LTP-1 может иметь два идентификатора (IL-1 и IL-2). Это будет означать, что C-LTP-1 может использовать для адаптации не только TTP, связанные с блокировкой IL-1 (S-TTP-1 и S-TTP-2), но и любые TTP, связанные с блокировкой IL-2. Точка TTP тоже может иметь один или несколько идентификаторов блокировки, означающих, что она может предложить нескольку услуг адаптации для LTP клиентского уровня, чьи идентификаторы межуровневой блокировки совпадают с её идентификатором. У каждой точки TTP имеется атрибут незарезервированной пропускной способности, указывающий оставшиеся ресурсы адаптации для всех потенциальных LTP клиентского уровня.

LTP и TTP, связанные с одной межуровневой блокировкой, могут размещаться на одном (гибридом, многоуровневом) или разных узлах TE, находящихся в одной или разных топологиях TE. Второй случай особенно важен, поскольку топологии TE разных уровней сети могут моделироваться с использованием разных дополнений к базовой (общей для всех уровней) модели топологии TE.

3.11. Базовая топология TE

Базовой топологией TE считается топология TE, служащая основой для создания наложенных топологий TE.

3.12. Наложенная топология TE

Наложенной топологией TE счиается топология TE, созданная на основе одной или нескольких базовых топологий TE. Каждый узел наложенной топологии TE представляет сегмент базовой топологии TE, каждый канал TE – путь TE в одной из базовых топологий TE. Наложенная и базовые топологии TE могут представлять разные уровни сети (например, OTN/ODUk и WDM/OCh) или размещаться на одном уровне.

3.13. Абстрактная топология TE

Абстрактной топологией TE является топология, содержащая абстрактные элементы (узлы, каналы, TTP). Абстрактная топология TE – это наложенная топология TE, созданная поставщиком топологии и настроенная им для своего клиента на основе одной или нескольких естественных топологий TE (базовые топологии TE), правил провайдера и предпочтений клиента. Например, провайдер топологии первого уровня (такой как контроллер домена) может создать абстрактную топологию TE для своего клиента (такого как многодоменный координатор услуг) на основе одной или нескольких естественных топологий TE у провайдера, локальных правил и профилей, запросов клиента для настройки топологии TE. Пример абстрактной топологии TE приведён на рисунке 4.

                           | +---+
                           | |   | Узел TE
                           | +---+
                           | ----- Канал TE
                           o----------------------------------

+---+              +---+
|S3 |              |S5 |
+---+\           / +---+
      \         /
       \       /
        \+---+/                +---+
        /|AN1|\----------------|S8 |
       / +---+ \               +---+
+---+ /         \ +---+
|S9 |             |S11|
+---+             +---+
      Абстрактная топология TE

       +---+                    +---+
       |S1 |--------------------|S2 |
       +---+                    +---+
        /                          \
       /                            \
+---+ /                  +---+       \ +---+
|S3 |--------------------|S4 |---------|S5 |
+---+\                   +---+         +---+
      \                      \             \
       \                      \             \
        \+---+                 +---+         +---+
        /|S6 |\                |S7 |---------|S8 |
       / +---+ \               +---+\       /+---+
+---+ /         \ +---+              +---+ /
|S9 |-------------|S10|--------------|S11|/
+---+             +---+              +---+
      Естественная топология TE

Рисунок . Абстрактная топология TE.


4. Применимость модели

4.1. Естественная топология TE

Рассматриваемая в этом документе модель подходит для представления и извлечения естественных топологий TE данной системы TE. Рассмотрим топологию сети, представленную на рисунке 5, где узлы R1 .. R9 представляют маршрутизаторы. Пеализация может создать топологию Native TE, используя все узлы и каналы, представленные в данной базе TED, как показано на рисунке 6. Заданную в этом документе модель данных можно использовать для представления и извлечения этой топологии TE.


                           | +---+
                           | |   | Узел TE
                           | +---+
                           | ----- Канал TE
                           o----------------------------------

+---+       +---+        +---+         +---+         +---+
| R1|-------| R2|--------| R3|---------| R4|---------| R5|
+---+       +---+        +---+         +---+         +---+
  |                      /   \         /   \         /
  |                     /     \       /     \       /
  |                    /       \     /       \     /
  |                   /         \   /         \   /
  |                  /           \ /           \ /
+---+             +---+         +---+         +---+
| R6|-------------| R7|         | R8|---------| R9|
+---+             +---+         +---+         +---+

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

    ---------------
    | Естественная|                   |  [ ] Узел TE
    | топология TE|                   |  +++ Канал TE
    ---------------                   o--------------

[R1] ++++ [R2] ++++ [R3] ++++ [R4] ++++ [R5]
  +                +    +    +    +    +
  +               +      +  +      +  +
  +              +        ++        ++
[R6] +++++++++ [R7]      [R8] ++++ [R9]

Рисунок . Естественная топология TE с точки зрения узла R3.


Рассмотрим случай расщепления топологии, когда одни узлы используют OSPF-TE, другие ISIS-TE (рисунок 7). Реализация может создать отдельные топологии TE на основе источника информации. Естественные топологии TE, построенные с использованием лишь узлов и связей, узнанных из конкретного источника, показаны на рисунке 8. Заданную в этом документе модель данных можно использовать для представления и извлечения таких топологий TE.


                           :
Сведения TE от ISIS-TE     : Сведения TE от OSPF-TE
                           :
+---+       +---+        +---+         +---+         +---+
| R1|-------| R2|--------| R3|---------| R4|---------| R5|
+---+       +---+        +---+         +---+         +---+
  |                      / : \         /   \         /
  |                     /  :  \       /     \       /
  |                    /   :   \     /       \     /
  |                   /    :    \   /         \   /
  |                  /     :     \ /           \ /
+---+             +---+    :    +---+         +---+
| R6|-------------| R7|    :    | R8|---------| R9|
+---+             +---+    :    +---+         +---+
                           :

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

-----------------------   :  -----------------------
|Естеств. топология TE|   :  |Естеств. топология TE|
|источник: ISIS-TE    |   :  |источник: OSPF-TE    |
-----------------------   :  -----------------------
                          :
 [R1] ++++ [R2] ++++ [R3] : [R3'] ++++ [R4] ++++ [R5]
  +                +      :      +    +    +    +
  +               +       :       +  +      +  +
  +              +        :        ++        ++
 [R6] +++++++++ [R7]      :       [R8] ++++ [R9]

Рисунок . Естественные топологии TE с точки зрения узла R3.


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

4.2. Настраиваемая топология TE

Настраиваемая топология TE – это топология, измененная провайдером в соответствии с потребностями и предпочтениями отдельного клиента. Представленная в этом документе модель подходит для создания, изменения и извлечения топологий Customized TE. Модель позволяет провайдеру представить сеть для клиента абстрактными элементами TE. These customized topologies contain sufficient information for the client to compute and select paths according to its policies.

Рассмотрим топологию сети, представленную на рисунке 9. Это типичная оптическая транспортная сеть для пакетов, где домен уровня WDM служит серверным доменом для обеспечения транспортной связности домена пакетного уровня (домен клиентов). Узлы R1, R2, R3, R4 являются маршрутизаторами IP, соединёнными через оптическую транспортну. Сеть WDM. A, B, C, D, E, F – узлы WDM, образующие домен серверной сети.

                             | +---+            /-\
                             | |   | Узел      (   ) Узел
                             | +---+ маршрутиз. \-/  WDM
                             |
                             o----------------------------

+---+        /-\          /-\           /-\          +---+
| R1|-------( A )--------( C )---------( E )---------| R3|
+---+        \-/          \-/           \-/          +---+
                         /   \         /   \
                        /     \       /     \
                       /       \     /       \
                      /         \   /         \
                     /           \ /           \
    +---+          /-\           /-\           /-\          +---+
    | R2|---------( B )---------( D )---------( F )---------| R4|
    +---+          \-/           \-/           \-/          +---+

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


Цель состоит в дополнении клиентской топологии TE топологией Customized TE, полученной из сети WDM. С учётом доступности путей A-E, B-F, B-E (рисунок 10) клиенту представляется топология Customized TE, показанная на рисунке 11. Эта топология сливается с клиентской топологией Native TE, создавая в топологию, показанную на рисунке 12.


                                       | ***** путь WDM B-F 
                                       | @@@@@ путь WDM B-E
                                       | $$$$$ путь WDM A-E 
                                       o--------------------

+---+        /-\ $$$$$$$$ /-\ $$$$$$$$$ /-\          +---+
| R1|-------( A )--------( C )---------( E )---------| R3|
+---+        \-/         @\-/ @@@@@@@@@ \-/          +---+
                        @/   \         /   \
                       @/     \       /     \
                      @/       \     /       \
                     @/         \   /         \
                    @/           \ /           \
    +---+          /-\ ********* /-\ ********* /-\          +---+
    | R2|---------( B )---------( D )---------( F )---------| R4|
    +---+          \-/           \-/           \-/          +---+

Рисунок .Пути в домене провайдера.


++++++++ [A] ++++++++++++++++++++ [E] +++++++++
                             +++++
                         ++++
                     ++++
                 ++++
             ++++
++++++++ [B] ++++++++++++++++++++ [F] +++++++++

Рисунок .Настраиваемая топология TE для клиента.

[R1] ++++++++ [A] ++++++++++++++++++++ [E] +++++++++ [R3]
                                  +++++
                              ++++
                          ++++
                      ++++
                  ++++
[R2] ++++++++ [B] ++++++++++++++++++++ [F] +++++++++ [R4]

Рисунок .Слияние настроенной топологии TE с естественной топологией клиента.


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

Настраиваемая топология TE не обязательно является абстрактной топологией TE. Провайдер может создать, например, абстрактную топологию TE того или иного типа (один абстрактный узел с матрицей связности, граничные узлы, соединённые через многосвязную топологию абстрактных каналов) и раскрыть её некоторым или всем клиентам, предполагая, что те будут использовать её без настройки. С другой стороны, клиент может запросить настроенный вариант провайдерской топологии Native TE (например, попросив удалить каналы TE, принадлежащие определенным уровням, слишком медленные, незащищённые или имеющие определённую близость). Результирующая топология TE не будет абстрактной (нет абстрактных элементов), но будет настроенной (изменённой по запросу клиента).

Поле идентификатора клиента в идентификаторе топологии (параграф 5.4) указывает, для какого клиента настроена топология. Хотя уполномоченный клиент может получить топологию TE с идентификатором другого клиента, он сможет использовать лишь топологии TE со своим идентификатором или значением 0. Если клиент начинает реконфигурацию топологии, его идентификатор будет автоматически помещаться в в поле идентификатора топологии для всех будущих настроек и обновлений данной топологии.

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

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

4.3. Слияние топологий TE от нескольких провайдеров

Клиент может получать топологии TE от нескольких провайдеров, каждый из которых поддерживает свой домен многодоменной сети. Для применения этих топологий клиенту нужно слить в одну или несколько своих топологий Native TE, однородно представляющих многодоменную сеть. Это позволит клиенту выбирать сквозные пути TE для служб, проходящих через несколько доменов. На практике процесс слияния топологий TE включает:

  • идентификацию соседних доменов и соединение их топологий по горизонтали путём соединения с их междоменными каналами TE с открытым концом;

  • замена идентификаторов узлов и каналов TE, а также SRLG идентификаторами из отдельного пространства имён (это требуется по причине того, что технологии TE считаются независимыми и возможны конфликты между указанными идентификаторами);

  • соединение по вертикали топологий TE, связанных с сетями разных уровней, в соответствии с представленными межуровневыми блокировками (это делается для облегчения расчёте межуровневых путей через несколько топологий, предоставленных одним провайдером).

На рисунке 13 представлен пример слияния клиентом топологий TE, полученных от провайдеров.

/---\      +---+    +---+      +---+    +---+      /---\
|C11|------|S13|----|S15|------|S23|----|S25|------|C21|
\---/      +---+\   +---+      +---+   /+---+      \---/
                 \                    /
                  \                  /
                   \+---+      +---+/   +---+      /---\
                    |S18|------|S24|    |S28|------|C22|
                    +---+      +---+\  /+---+      \---/
                                     \/
                                     /\
/---\      +---+    +---+      +---+/  \+---+      /---\
|C12|------|S19|----|S17|------|S29|----|S27|------|C23|
\---/      +---+    +---+      +---+    +---+      \---/

   Топология TE домена 1            Топология TE домена 2

        +---+    +---+                  +---+    +---+
   -----|S13|----|S15|----          ----|S23|----|S25|----
        +---+\   +---+                  +---+   /+---+
              \                                /
               \                              /
                \+---+                  +---+/   +---+
                 |S18|----          ----|S24|    |S28|----
                 +---+                  +---+\  /+---+
                                              \/
                                              /\
        +---+    +---+                  +---+/  \+---+
   -----|S19|----|S17|----          ----|S29|----|S27|----
        +---+    +---+                  +---+    +---+

Рисунок . Пример слияния топологий доменов TE.


На рисунке 13 каждый из двух провайдеров предосталяет клиенту топологию TE (абстрактную или истественную), описывающую контролируемый провайдером домен сети. Клиент, сверяясь с атрибутами междоменных каналов TE, такими как идентификаторы стыков между доменами или идентификаторы удалённых узлов/каналов TE (как указано в топологии TE), способен определить, что:

  1. домены являются смежными и соединены междоменными каналами TE;

  2. каждый домен подключён к отдельному сайту клиента, домен слева на рисунке соединён с клиентскими устройствами C11 и C12, домен справа – с C21, C22, C23.

Клиент соединяет каналы TE с открытым концом, как показано в верхней части рисунка.

Как уже упоминалось, одним из способов соединения междоменных каналов TE с открытым концом из разных доменов является обязательное указание провайдерами отрибута удалённого узла/канала в предоставляемых междоменных каналах TE. Однако это может оказаться недостаточно гибким, например, провайдеры могут не значть соответствующих идентификаторов удалённых узлов/каналов. Ещё важнее то, что этот вариант не позволяет клиенту смешивать и сопоставлять несколько топологий (более 1) от одного провайдера (см. параграф 4.4). Более гибким вариантом соединения междоменных каналов TE с открытым концом является их аннотирование атрибутом идентификатора междоменного стыка, который уникален в масштабе сети и указывает в сети соединение, поддерживающее данный междоменный канал TE. Вместо указания идентификатора удалённого узла/канала междоменный канал TE может предоставлять ненулевой идентификатор междоменного стыка (plug). Предполагается, что топологии TE двух соседних доменов (от разных провайдеров) будут иметь хотя ба по одному междоменному каналу TE с открытым концом, имеющему идентификатор медоменного стыка, соответствующий идентификатору, предоставленному соседом. Например, междоменный канал TE, начинающийся на узле S15 топологии TE домена 1 (рисунок 13), и междоменный канал TE, начинающийся на узле S23 топологии TE домена 2, могут указывать совпадающие идентификаторы веждоменных стыков ID (например, 175344). Это позволяет клиенту идентифицировать смежные узлы в раздельных соседних топологиях TE и распознавать соединяющие их междоменные каналы TE, независимо от соответствующих идетификаторов каналов/узлов (которые, как было отмечено выше, могут выделяться из независимых пространств). Идентификаторы междоменных стыков могут назначаться и поддерживаться центральным органом сети, а также автоматически обнаруживаться в динамическом режиме, например, по протоколу управления каналами (Link Management Protocol или LMP).

Кроме того, клиент переименовывает узлы и каналы TE, а также группы SRLG, представленные в абстрактных топологиях, назначая им идентификаторы, выделенные из поддерживаемого клиентом пространства имён. Такое переименование требуется потому, что две абстрактные топологии TE могут иметь свои пространства имён, которые в общем случае независимы одно от другого, поэтому идентификаторы могут конфликтовать между собой. Например, в обеих топологиях TE могут быть узлы TE с именем S7, которые после переименования получат в слитой топологии TE имена S17 и S27.

По завершении процесса слияния клиент может использовать полученную в результате топологию TE для расчёта путей через оба домена, например, пути TE от C11 к C23.

4.4. Несколько абстрактных топологий TE от одного провайдера

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

Абстрактная топология TE 1 домена 1  Абстрактная топология TE 1 домена 2

     +---+    +---+                      +---+    +---+
-----|S13|----|S15|----              ----|S23|----|S25|----
     +---+\   +---+                      +---+   /+---+
           \                                    /
            \                                  /
             \+---+                      +---+/   +---+
              |S18|----              ----|S24|    |S28|----
              +---+                      +---+\  /+---+
                                               \/
                                               /\
     +---+    +---+                      +---+/  \+---+
-----|S19|----|S17|----              ----|S29|----|S27|----
     +---+    +---+                      +---+    +---+

Абстрактная топология TE 2 домена 1  Абстрактная топология TE 2 домена 2

     +------------+                      +------------+
-----|            |----              ----|            |----
     |            |                      |            |
     |    AN1     |----              ----|    AN1     |----
     |            |                      |            |
-----|            |----              ----|            |----
     +------------+                      +------------+

Рисунок . Пример слияния топологий доменов TE.


Клиенту следует самостоятельно (на основе локальной конфигурации и правил, переданных клиенту его клиентами) определять, как смешивать и сопоставлять топологии TE, предоставленные провайдерами, а также как сливать их в свои естественные топологии TE. Клиент также определяет число слитых топологий TE, которые ему нужно создать и поддерживать. Например, в дополнение к слитой топологии TE, показанной в врехней части рисунка 13, клиент может слить абстрактные топологии TE, полученные от двух провайдеров (см. рисунок 14), в свои дополнительные топологии Native TE, как показано на рисунке 15.

           Слитая клиентом топология TE 2

/---\      +------------+      +------------+      /---\
|C11|------|            |------|            |------|C21|
\---/      |            |      |            |      \---/
           |            |      |            |
           |            |      |            |
           |            |      |            |      /---\
           |    AN11    |------|    AN21    |------|C22|
           |            |      |            |      \---/
           |            |      |            |
           |            |      |            |
/---\      |            |      |            |      /---\
|C12|------|            |------|            |------|C23|
\---/      +------------+      +------------+      \---/

           Слитая клиентом топология TE 3

/---\      +------------+      +---+    +---+      /---\
|C11|------|            |------|S23|----|S25|------|C21|
\---/      |            |      +---+   /+---+      \---/
           |            |             /
           |            |            /
           |            |      +---+/   +---+      /---\
           |    AN11    |------|S24|    |S28|------|C22|
           |            |      +---+\  /+---+      \---/
           |            |            \/
           |            |            /\
/---\      |            |      +---+/  \+---+      /---\
|C12|------|            |------|S29|----|S27|------|C23|
\---/      +------------+      +---+    +---+      \---/

Рисунок . Несколько естественных (слитых) клиентских топологий TE.


Отметим, что разрешение клиенту смешивать и сопоставлять несколько топологий TE предполагает использование идентификаторов междоменных стыков (а не удалённых узлов/каналов) для идентификации соседних доменов и распознавания междоменного канала.

Важно отметить, что каждая из трёх естественных (слитых) топологий TE может применяться клиентом при расчёте путей TE для люьых междоменных служб. Выбор используемой топологии зависит от параметров и требований сервиса, стиля топологии и критериев оптимизации, а также от уровня детализации.

5. Вопросы моделирования

5.1. Элементы топологии сети

Блоки построения топологии сети рассмотрены в [RFC8345]. Заданная в этом документе модель топологии TE использует и дополняет модуль ietf-network-topology, заданный в [RFC8345].

+------------------------+
| Модель топологии сети  |
| (ietf-network-topology)|
+------------------------+
             |
             |
             V
+------------------------+
|         Модель         |
|      топологии TE      |
+------------------------+

Рисунок . Дополнение модели топологии сети.


5.2. Независимая от технологии модель топологии TE

Заданная в этом документе модель топологии TE не зависит от сетевой технологии и модели для конкретных технологий могут дополнять её, как показано на рисунке 17.

             +-----------------------------+
             |      Модель топологии TE    |
             +-----------------------------+
                            |
       +-------------+-------------+-------------+
       |             |             |             |
       V             V             V             V
+----------------+                        +----------------+
| Зависящая от   |                        | Зависящая от   | 
| технологии     | ...................... | технологии     |
| модель         |                        | модель         |
| топологии TE 1 |                        | топологии TE n |
+----------------+                        +----------------+

Рисунок . Дополнение независимой от технологии модели топологии TE.


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

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

   module: ietf-te-topology
     augment /nw:networks/nw:network/nw:network-types:
       +--rw te-topology!

     augment /nw:networks:
       +--rw te!
          +--rw templates
             +--rw node-template* [name] {template}?
             |  ............
             +--rw link-template* [name] {template}?
                ............

     augment /nw:networks/nw:network:
       +--rw te-topology-identifier
       |  +--rw provider-id?   te-global-id
       |  +--rw client-id?     te-global-id
       |  +--rw topology-id?   te-topology-id
       +--rw te!
          |  ............

     augment /nw:networks/nw:network/nw:node:
       +--rw te-node-id?   te-types:te-node-id
       +--rw te!
          |  ............
          +--rw tunnel-termination-point* [tunnel-tp-id]
             +--rw tunnel-tp-id    binary
             |  ............
             +--rw supporting-tunnel-termination-point*
                     [node-ref tunnel-tp-ref]
                |  ............

     augment /nw:networks/nw:network/nt:link:
       +--rw te!
          |  ..........

     augment /nw:networks/nw:network/nw:node/nt:termination-point:
       +--rw te-tp-id?   te-types:te-tp-id
       +--rw te!
          |  ............

5.4. Идентификаторы топологии

Топология TE однозначно указывается ключом, состоящим из трёх компонентов – topology-id, provider-id, client-id. Сочетание provider-id и topology-id однозначно указывает топологию Native TE для данного провайдера, client-id применяется лишь вместе с настраиваемыми топологиями TE, а client-id = 0 указывает топологию Native TE.

     augment /nw:networks/nw:network:
       +--rw te-topology-identifier
       |  +--rw provider-id?   te-global-id
       |  +--rw client-id?     te-global-id
       |  +--rw topology-id?   te-topology-id
       +--rw te!
          |  ............

5.5. Базовые атрибуты канала TE

Модель охватывает определения базовых атрибутов канала TE – пропускной способности, административных групп, SRLG, возможностей коммутации, расширений показателей TE и т. п.

     +--rw te-link-attributes
        .....................
        +--rw admin-status?                     te-admin-status
        |  .....................
        +--rw link-index?                       uint64
        +--rw administrative-group?             te-types:admin-groups
        +--rw link-protection-type?             enumeration
        +--rw max-link-bandwidth?               te-bandwidth
        +--rw max-resv-link-bandwidth?          te-bandwidth
        +--rw unreserved-bandwidth* [priority]
        |  .....................
        +--rw te-default-metric?                uint32
        |  .....................
        +--rw te-srlgs
        +--rw te-nsrlgs {nsrlg}?        .....................

5.6. Базовые атрибуты узла TE

Модель охватывает определения базовых атрибутов узла TE. Определение матрицы связности приведено ниже.

     +--rw te-node-attributes
        ...........
        +--rw connectivity-matrices
        ...........
        |  +--rw connectivity-matrix* [id]
        |  |  +--rw id            uint32
        |  |  +--rw from
        |  |  |  +--rw tp-ref?        leafref
        |  |  |  +--rw label-restrictions
        |  |  +--rw to
        |  |  |  +--rw tp-ref?        leafref
        |  |  |  +--rw label-restrictions
        |  |  +--rw is-allowed?   boolean
        ...........
        |  |  +--rw underlay! {te-topology-hierarchy}?
        ...........
        |  |  +--rw path-constraints
        ...........
        |  |  +--rw optimizations
        ...........
        |  |  +--ro path-properties
        ...........

Ниже дано определение списка локальной связности каналов точки TTP.

     +--rw tunnel-termination-point* [tunnel-tp-id]
        +--rw tunnel-tp-id               binary
        +--rw admin-status?              te-types:te-admin-status
        +--rw name?                      string
        +--rw switching-capability?      identityref
        +--rw encoding?                  identityref
        +--rw inter-layer-lock-id*       uint32
        +--rw protection-type?           identityref
        +--rw client-layer-adaptation
        ...........
        +--rw local-link-connectivities
        ...........
        |  +--rw local-link-connectivity* [link-tp-ref]
        |     +--rw link-tp-ref                leafref
        |     +--rw label-restrictions
        ...........
        |     +--rw is-allowed?                 boolean
        |     +--rw underlay {te-topology-hierarchy}?
        ...........
        |     +--rw path-constraints
        ...........
        |     +--rw optimizations
        ...........
        |     +--ro path-properties
        ...........
        +--rw supporting-tunnel-termination-point*
                [node-ref tunnel-tp-ref]
           +--rw node-ref         inet:uri
           +--rw tunnel-tp-ref    binary

Атрибуты, размещённые непосредственно под контейнером connectivity-matrices, являются принятыми по умолчанию для всех записей матрицы связности, когда соответствующие атрибуты для записей не заданы. При задании таких атрибутов они переопределяют атрибуты, размещённые непосредственно под контейнером connectivity-matrices. Такие же правила применяются к атрибутам, размещённым непосредственно под контейнером local-link-connectivities.

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

5.7. Источники данных TED

Модель позволяет каждому топологическому элементу TE иметь несколько источников сведений TE (OSPF-TE, ISIS-TE, BGP-LS5, пользовательские, системные и др.), с каждым из которых связывает уровень предпочтений доверия, указывающий приоритет. Когда настраиваемая тпология TE сливается в клиентскую топологию Native TE, объединённые элементы топологии указывают как источник сведений соответствующую топологию Customized TE.

     augment /nw:networks/nw:network/nw:node:
       +--rw te!
          ...........
          +--ro information-source?            te-info-source
          +--ro information-source-instance?   string
          +--ro information-source-state
          |  +--ro credibility-preference?    uint16
          |  +--ro logical-network-element?   string
          |  +--ro network-instance?          string
          |  +--ro topology
          |     +--ro node-ref?      leafref
          |     +--ro network-ref?   leafref
          +--ro information-source-entry*
          |       [information-source information-source-instance]
          |  +--ro information-source             te-info-source
          |  +--ro information-source-instance    string
                ............

     augment /nw:networks/nw:network/nt:link:
       +--rw te!
          ...........
          +--ro information-source?            te-info-source
          +--ro information-source-instance?   string
          +--ro information-source-state
          |  +--ro credibility-preference?    uint16
          |  +--ro logical-network-element?   string
          |  +--ro network-instance?          string
          |  +--ro topology
          |     +--ro link-ref?      leafref
          |     +--ro network-ref?   leafref
          +--ro information-source-entry*
          |       [information-source information-source-instance]
          |  +--ro information-source                te-info-source
          |  +--ro information-source-instance       string
                ............

5.8. Базовые и наложенные узлы и каналы

Модель отражает взаимоотношения «базовый-наложенный» для узлов и каналов TE. Например, в сети с иерархией нескольких топологий TE эта модель позволяет пользователю начать с конкретного элемента в топологии верхнего уровня и пройти вниз по иерархии до поддерживающих элементов топологии. Эти взаимоотношения указываются в поле underlay-topology для узла и через поле underlay для канала. Использовать эти поля не обязательно и эта функциональность помечена как feature (te-topology-hierarchy).

     augment /nw:networks/nw:network/nw:node:
       +--rw te-node-id?   te-types:te-node-id
       +--rw te!
          +--rw te-node-template*           leafref {template}?
          +--rw te-node-attributes
          |  +--rw admin-status?            te-types:te-admin-status
          |  |  ....................
          |  +--rw underlay-topology {te-topology-hierarchy}?
          |     +--rw network-ref?   leafref

     augment /nw:networks/nw:network/nt:link:
       +--rw te!
          +--rw te-link-attributes
          |  ....................
          |  +--rw underlay {te-topology-hierarchy}?
          |  |  +--rw enabled?                     boolean
          |  |  +--rw primary-path
          |  |  |  +--rw network-ref?    leafref
          |  |  |     ....................
          |  |  +--rw backup-path* [index]
          |  |  |  +--rw index           uint32
          |  |  |  +--rw network-ref?    leafref
          |  |  |     ....................
          |  |  +--rw protection-type?             identityref
          |  |  +--rw tunnel-termination-points
          |  |  |  +--rw source?        binary
          |  |  |  +--rw destination?   binary
          |  |  +--rw tunnels
          |  |  |  ....................

5.9. Шаблоны

Модель данных позволяет пользователю задавать шаблоны и применять их для настройки каналов и узлов. Применение шаблонов не обязательно и они помечены как feature (template).

     augment /nw:networks/nw:network/nw:node:
       +--rw te-node-id?   te-types:te-node-id
       +--rw te!
          +--rw te-node-template*
          |       -> ../../../../te/templates/node-template/name
          |       {template}?

     augment /nw:networks/nw:network/nt:link:
       +--rw te!
          +--rw te-link-template*
          |       -> ../../../../te/templates/link-template/name
          |       {template}?

     augment /nw:networks:
       +--rw te!
          +--rw templates
             +--rw node-template* [name] {template}?
             |  +--rw name
             |  |       te-types:te-template-name
             |  +--rw priority?                  uint16
             |  +--rw reference-change-policy?   enumeration
             |  +--rw te-node-attributes
                ..........
             +--rw link-template* [name] {template}?
                +--rw name
                |       te-types:te-template-name
                +--rw priority?                  uint16
                +--rw reference-change-policy?   enumeration
                +--rw te-link-attributes
                ..........

Для элемента конфигурации можно задать несколько шаблонов. Если два или более шаблона задают значение одного конфигурационного поля, устанавливается значение из шаблона с более высоким приоритетом. Приоритет указывается целым числом от 0 до 65535 и ментшее значение указывает более высокий приоритет. Параметр reference-change-policy задаёт действие, которое нужно выполнить при изменении шаблона для элемента конфигурации, ссылающегося на этот шаблон. Варианты включают отсутствие действий, отклонение изменения шаблона и применение изменения к соответствующей конфигурации.

5.10. Параметры планирования

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

Модель данных YANG для планирования конфигурации, заданная в [YANG-CFG-SCHED], позволяет задать расписание конфигурации без влияния на описываемую здесь модель данных.

5.11. Уведомления

Уведомления являются важными компонентами любой модели данных топологии. В [RFC8639] и [RFC8641] задан механизм подписки и выталкивания сообщений для хранилищ YANG. Этот механизм позволяет пользователю:

  • подписаться на уведомления по клиентам;

  • задать фильтры субдеревьев или XPath6 для указания желаемого содержимого;

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

6. Рекомендации по созданию связанных с технологией дополнений

Заданная в этом документе модель топологии TE не зависит от технологии, поскольку она определяет концепции, абстракции и атрибуты, которые являются общими для разных сетевых технологий. Предполагается широкое применение этой базовой модели для определения связанных с технологией моделей топологии TE на разных уровнях. [YANG-WSON], [YANG-OTN], [YANG-L3] являются примерами зависящих от технологии моделей TE. Создателям таких моделей рекомендуется дополнять контейнеры базовой модели топологии TE, такие как топологии, узлы и каналы TE, точки завершения каналов (LTP) и туннелей (TTP), пропускная способность и метки, связанными с уровнем атрибутами вместо создания новых контейнеров.

Рассмотрим связанную с технологией модель example-topology.

   module: example-topology
     augment /nw:networks/nw:network/nw:network-types/tet:te-topology:
       +--rw example-topology!
     augment /nw:networks/nw:network/tet:te:
       +--rw attributes
          +--rw attribute-1?   uint8
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes:
       +--rw attributes
          +--rw attribute-2?   uint8
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices:
       +--rw attributes
          +--rw attribute-3?   uint8
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix:
       +--rw attributes
          +--rw attribute-3?   uint8
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point:
       +--rw attributes
          +--rw attribute-4?   uint8
     augment /nw:networks/nw:network/nw:node/nt:termination-point
               /tet:te:
       +--rw attributes
          +--rw attribute-5?   uint8
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes:
       +--rw attributes
          +--rw attribute-6?   uint8

Зависящую от технологии пропускную способность TE в этом примере можно задать с помощью приведённых ниже дополнений (операторы augment).

     augment /nw:networks/tet:te/tet:templates/tet:link-template
               /tet:te-link-attributes
               /tet:interface-switching-capability/tet:max-lsp-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/tet:te/tet:templates/tet:link-template
               /tet:te-link-attributes/tet:max-link-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/tet:te/tet:templates/tet:link-template
               /tet:te-link-attributes/tet:max-resv-link-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/tet:te/tet:templates/tet:link-template
               /tet:te-link-attributes/tet:unreserved-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:path-constraints/tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:path-constraints
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:path-constraints/tet:te-bandwidth/tet:technology:
       +--:(example)
          +--ro example
             +--ro bandwidth-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:path-constraints
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--ro example
             +--ro bandwidth-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point/tet:client-layer-adaptation
               /tet:switching-capability/tet:te-bandwidth
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities/tet:path-constraints
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities
               /tet:local-link-connectivity/tet:path-constraints
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes
               /tet:interface-switching-capability/tet:max-lsp-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes/tet:max-link-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes/tet:max-resv-link-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:information-source-entry
               /tet:interface-switching-capability/tet:max-lsp-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--ro example
             +--ro bandwidth-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:information-source-entry/tet:max-link-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--ro example
             +--ro bandwidth-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:information-source-entry/tet:max-resv-link-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--ro example
             +--ro bandwidth-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:information-source-entry/tet:unreserved-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--ro example
             +--ro bandwidth-1?   uint32
     augment /nw:networks/nw:network/nw:node/nt:termination-point/tet:te
               /tet:interface-switching-capability/tet:max-lsp-bandwidth
               /tet:te-bandwidth/tet:technology:
       +--:(example)
          +--rw example
             +--rw bandwidth-1?   uint32

Зависящие от технологии метки TE в этом примере можно задать с помощью приведённых ниже дополнений.

     augment /nw:networks/tet:te/tet:templates/tet:link-template
               /tet:te-link-attributes/tet:underlay/tet:primary-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/tet:te/tet:templates/tet:link-template
               /tet:te-link-attributes/tet:underlay/tet:backup-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/tet:te/tet:templates/tet:link-template
               /tet:te-link-attributes/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/tet:te/tet:templates/tet:link-template
               /tet:te-link-attributes/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:label-restrictions/tet:label-restriction
               /tet:label-start/tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:label-restrictions/tet:label-restriction
               /tet:label-end/tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:underlay/tet:primary-path/tet:path-element/tet:type
               /tet:label/tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:underlay/tet:backup-path/tet:path-element/tet:type
               /tet:label/tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:path-properties/tet:path-route-objects
               /tet:path-route-object/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:from/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:from/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:to/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:to/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:underlay/tet:primary-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:underlay/tet:backup-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:te-node-attributes/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:path-properties
               /tet:path-route-objects/tet:path-route-object/tet:type
               /tet:label/tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:label-restrictions/tet:label-restriction
               /tet:label-start/tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:label-restrictions/tet:label-restriction
               /tet:label-end/tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:underlay/tet:primary-path/tet:path-element/tet:type
               /tet:label/tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:underlay/tet:backup-path/tet:path-element/tet:type
               /tet:label/tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:path-properties/tet:path-route-objects
               /tet:path-route-object/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:from/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:from/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:to/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:to/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:underlay/tet:primary-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:underlay/tet:backup-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:information-source-entry/tet:connectivity-matrices
               /tet:connectivity-matrix/tet:path-properties
               /tet:path-route-objects/tet:path-route-object/tet:type
               /tet:label/tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities/tet:underlay
               /tet:primary-path/tet:path-element/tet:type/tet:label
               /tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities/tet:underlay
               /tet:backup-path/tet:path-element/tet:type/tet:label
               /tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities/tet:path-properties
               /tet:path-route-objects/tet:path-route-object/tet:type
               /tet:label/tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities
               /tet:local-link-connectivity/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities
               /tet:local-link-connectivity/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities
               /tet:local-link-connectivity/tet:underlay
               /tet:primary-path/tet:path-element/tet:type/tet:label
               /tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities
               /tet:local-link-connectivity/tet:underlay/tet:backup-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nw:node/tet:te
               /tet:tunnel-termination-point
               /tet:local-link-connectivities
               /tet:local-link-connectivity/tet:path-properties
               /tet:path-route-objects/tet:path-route-object/tet:type
               /tet:label/tet:label-hop/tet:te-label/tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes/tet:underlay/tet:primary-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:te-link-attributes/tet:underlay/tet:backup-path
               /tet:path-element/tet:type/tet:label/tet:label-hop
               /tet:te-label/tet:technology:
       +--:(example)
          +--rw example
             +--rw label-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:information-source-entry/tet:label-restrictions
               /tet:label-restriction/tet:label-start/tet:te-label
               /tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32
     augment /nw:networks/nw:network/nt:link/tet:te
               /tet:information-source-entry/tet:label-restrictions
               /tet:label-restriction/tet:label-end/tet:te-label
               /tet:technology:
       +--:(example)
          +--ro example
             +--ro label-1?   uint32

Пример модуля YANG, реализующего описанную выше топологию, представлен в Приложении C.

7. Модуль YANG для топологии TE

Этот модуль упоминает [RFC1195], [RFC3209], [RFC3272], [RFC3471], [RFC3630], [RFC3785], [RFC4201], [RFC4202], [RFC4203], [RFC4206], [RFC4872], [RFC5152], [RFC5212], [RFC5305], [RFC5316], [RFC5392], [RFC6001], [RFC6241], [RFC6991], [RFC7308], [RFC7471], [RFC7579], [RFC7752], [RFC8345], [RFC8776].

   <CODE BEGINS> file "ietf-te-topology@2020-08-06.yang"
   module ietf-te-topology {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology";
     prefix tet;

     import ietf-yang-types {
       prefix yang;
       reference
         "RFC 6991: Common YANG Data Types";
     }
     import ietf-inet-types {
       prefix inet;
       reference
         "RFC 6991: Common YANG Data Types";
     }
     import ietf-te-types {
       prefix te-types;
       reference
         "RFC 8776: Common YANG Data Types for Traffic Engineering";
     }
     import ietf-network {
       prefix nw;
       reference
         "RFC 8345: A YANG Data Model for Network Topologies";
     }
     import ietf-network-topology {
       prefix nt;
       reference
         "RFC 8345: A YANG Data Model for Network Topologies";
     }

     organization
       "IETF Traffic Engineering Architecture and Signaling (TEAS)
        Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/teas/> 
        WG List:  <mailto:teas@ietf.org> 

        Editor:   Xufeng Liu
                  <mailto:xufeng.liu.ietf@gmail.com> 

        Editor:   Igor Bryskin
                  <mailto:i_bryskin@yahoo.com> 

        Editor:   Vishnu Pavan Beeram
                  <mailto:vbeeram@juniper.net> 

        Editor:   Tarek Saad
                  <mailto:tsaad@juniper.net> 

        Editor:   Himanshu Shah
                  <mailto:hshah@ciena.com> 

        Editor:   Oscar Gonzalez de Dios
                  <mailto:oscar.gonzalezdedios@telefonica.com>"; 
     description
       "Этот модуль YANG задаёт модель топологии TE для представления,
        извлечения и манипуляций с независимой от технологии топологией
        TE.

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

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

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

     revision 2020-08-06 {
       description
         "Исходный выпуск.";
       reference
         "RFC 8795: YANG Data Model for Traffic Engineering (TE)
          Topologies";
     }

     /*
      * Свойства
      */

     feature nsrlg {
       description
         "Это свойство указывает, что система поддерживает NSRLG
          (Non-Shared Risk Link Groups).";
     }

     feature te-topology-hierarchy {
       description
         "Это свойство показывает, что система разрешает базовую и/или
          наложенную иерархию топологии TE.";
     }

     feature template {
       description
         "Это свойство указывает, что система поддерживает настройку
          шаблонов.";
     }

     /*
      * Определения типов
      */

     typedef geographic-coordinate-degree {
       type decimal64 {
         fraction-digits 8;
       }
       description
         "Десятичные градусы (DD) служат для указания географических
          координат.";
     }
     // Градусы географических координат

     typedef te-info-source {
       type enumeration {
         enum unknown {
           description
             "Источник неизвестен.";
         }
         enum locally-configured {
           description
             "Настроенный элемент.";
         }
         enum ospfv2 {
           description
             "OSPFv2.";
         }
         enum ospfv3 {
           description
             "OSPFv3.";
         }
         enum isis {
           description
             "IS-IS.";
         }
         enum bgp-ls {
           description
             "BGP-LS.";
           reference
             "RFC 7752: North-Bound Distribution of Link-State and
              Traffic Engineering (TE) Information Using BGP";
         }
         enum system-processed {
           description
             "Обрабатываемый системой элемент.";
         }
         enum other {
           description
             "Иной источник.";
         }
       }
       description
         "Описывает тип источника информации и его достоверность.";
     }
     // te-info-source

     /*
      * Группировки
      */

     grouping connectivity-matrix-entry-path-attributes {
       description
         "Атрибуты записи матрицы связности.";
       leaf is-allowed {
         type boolean;
         description
           "'true' - переключение разрешено;
            'false' - переключение не разрешено.";
       }
       container underlay {
         if-feature "te-topology-hierarchy";
         description
           "Атрибуты базового канала TE.";
         reference
           "RFC 4206: Label Switched Paths (LSP) Hierarchy with
            Generalized Multi-Protocol Label Switching (GMPLS)
            Traffic Engineering (TE)";
         uses te-link-underlay-attributes;
       }
       uses te-types:generic-path-constraints;
       uses te-types:generic-path-optimization;
       uses te-types:generic-path-properties;
     }
     // Атрибуты пути записи матрицы связности

     grouping geolocation-container {
       description
         "Координаты GPS.";
       container geolocation {
         config false;
         description
           "Координаты GPS .";
         leaf altitude {
           type int64;
           units "millimeters";
           description
             "Высота над уровнем моря.";
         }
         leaf latitude {
           type geographic-coordinate-degree {
             range "-90..90";
           }
           description
             "Градусы широты.";
         }
         leaf longitude {
           type geographic-coordinate-degree {
             range "-180..180";
           }
           description
             "Градусы долготы.";
         }
       }
       // Географическое положение
     }
     // Контейнер географического положения

     grouping information-source-state-attributes {
       description
         "Атрибуты источника сведений и его достоверности.";
       leaf credibility-preference {
         type uint16;
         description
           "Значение предпочтительности для расчёта достоверности базы
            данных TE, используемое для выбора источника сведений.
            Большее значение указывает предпочтительность.";
       }
       leaf logical-network-element {
         type string;
         description
           "Имя логического логического элемента сети, от которого
            берутся сведения (когда это применимо).";
       }
       leaf network-instance {
         type string;
         description
           "Имя экземпляра сети, от которого берутся сведения 
            (когда это применимо).";
       }
     }
     // Атрибуты состояния источника сведений

     grouping information-source-per-link-attributes {
       description
         "Контейнер на уровне канала с атрибутами, указывающими
          источник сведений и его достоверность.";
       leaf information-source {
         type te-info-source;
         config false;
         description
           "Тип источника информации.";
       }
       leaf information-source-instance {
         type string;
         config false;
         description
           "Имя, указывающее экземпляр источника сведений.";
       }
       container information-source-state {
         config false;
         description
           "Атрибуты состояния источника сведений.";
         uses information-source-state-attributes;
         container topology {
           description
             "При обработке информации системой атрибуты в этом 
              контейнере указывают, какая топология применяется
              для создания результирующих сведений.";
           uses nt:link-ref;
         }
       }
     }
     // Атрибуты источника по каналам

     grouping information-source-per-node-attributes {
       description
         "Контейнер на уровне узла с атрибутами, указывающими
          источник сведений и его достоверность.";
       leaf information-source {
         type te-info-source;
         config false;
         description
           "Тип источника информации.";
       }
       leaf information-source-instance {
         type string;
         config false;
         description
           "Имя, указывающее экземпляр источника сведений.";
       }
       container information-source-state {
         config false;
         description
           "Атрибуты состояния источника сведений.";
         uses information-source-state-attributes;
         container topology {
           description
             "При обработке информации системой атрибуты в этом 
              контейнере указывают, какая топология применяется
              для создания результирующих сведений.";
           uses nw:node-ref;
         }
       }
     }
     // Атрибуты источника по узлам

     grouping interface-switching-capability-list {
       description
         "Список дескрипторов возможностей коммутации (ISCD).";
       list interface-switching-capability {
         key "switching-capability encoding";
         description
           "Список ISCD для канала.";
         reference
           "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS)
            Signaling Functional Description
            RFC 4203: OSPF Extensions in Support of Generalized
            Multi-Protocol Label Switching (GMPLS)";
         leaf switching-capability {
           type identityref {
             base te-types:switching-capabilities;
           }
           description
             "Возможности коммутации для интерфейса.";
         }
         leaf encoding {
           type identityref {
             base te-types:lsp-encoding-types;
           }
           description
             "Кодирование, поддерживаемое интерфейсом.";
         }
         uses te-link-iscd-attributes;
       }
       // Возможности коммутации на интерфейсе
     }
     // Список возможностей коммутации

     grouping statistics-per-link {
       description
         "Атрибуты статистики на канал TE.";
       leaf discontinuity-time {
         type yang:date-and-time;
         description
           "Время последнего разрыва одного или нескольких счётчиков на
            данном интерфейсе. Если разрывов после предыдущей 
            инициализации локальной подсистемы управления не было, узел
            содержит время инициализации этой подсистемы.";
       }
       /* Административные атрибуты */
       leaf disables {
         type yang:counter32;
         description
           "Число случаев отключения канала.";
       }
       leaf enables {
         type yang:counter32;
         description
           "Число случаев включения канала.";
       }
       leaf maintenance-clears {
         type yang:counter32;
         description
           "Число случаев снятия канала с обслуживания.";
       }
       leaf maintenance-sets {
         type yang:counter32;
         description
           "Число случаев постановки канала на обслуживание.";
       }
       leaf modifies {
         type yang:counter32;
         description
           "Число случаев изменения канала.";
       }
       /* Рабочие атрибуты */
       leaf downs {
         type yang:counter32;
         description
           "Число случаев установки для канала состояния down.";
       }
       leaf ups {
         type yang:counter32;
         description
           "Число случаев установки для канала состояния up.";
       }
       /* Атрибуты восстановления */
       leaf fault-clears {
         type yang:counter32;
         description
           "Число событий очистки отказов на канале.";
       }
       leaf fault-detects {
         type yang:counter32;
         description
           "Число обнаружений отказов на канале.";
       }
       leaf protection-switches {
         type yang:counter32;
         description
           "Число защитных переключений на канале.";
       }
       leaf protection-reverts {
         type yang:counter32;
         description
           "Число возвратных защитных переключений на канале.";
       }
       leaf restoration-failures {
         type yang:counter32;
         description
           "Число отказов при восстановлении на канале.";
       }
       leaf restoration-starts {
         type yang:counter32;
         description
           "Число запусков восстановления на канале.";
       }
       leaf restoration-successes {
         type yang:counter32;
         description
           "Число случаев успешного восстановления на канале.";
       }
       leaf restoration-reversion-failures {
         type yang:counter32;
         description
           "Число отказов при восстановлении на канале.";
       }
       leaf restoration-reversion-starts {
         type yang:counter32;
         description
           "Число случаев запуска восстановления на канале.";
       }
       leaf restoration-reversion-successes {
         type yang:counter32;
         description
           "Число случаев успешного возвратного восстановления 
            на канале.";
       }
     }
     // Статистика по каналам

     grouping statistics-per-node {
       description
         "Атрибуты статистики на узел TE.";
       leaf discontinuity-time {
         type yang:date-and-time;
         description
           "Время последнего разрыва одного или нескольких счётчиков на
            данном интерфейсе. Если разрывов после предыдущей 
            инициализации локальной подсистемы управления не было, узел
            содержит время инициализации этой подсистемы.";
       }
       container node {
         description
           "Атрибуты статистики на уровне узла TE.";
         leaf disables {
           type yang:counter32;
           description
             "Число случаев отключения узла.";
         }
         leaf enables {
           type yang:counter32;
           description
             "Число случаев включения узла.";
         }
         leaf maintenance-sets {
           type yang:counter32;
           description
             "Число случаев перевода узла в обслуживание.";
         }
         leaf maintenance-clears {
           type yang:counter32;
           description
             "Число случаев исключения узла из обслуживания.";
         }
         leaf modifies {
           type yang:counter32;
           description
             "Число случаев изменения узла.";
         }
       }
       // Узел
       container connectivity-matrix-entry {
         description
           "Атрибуты статистики на уровне записи матрицы связности.";
         leaf creates {
           type yang:counter32;
           description
             "Число случаев создания записей матрицы связности.";
           reference
             "RFC 6241: Network Configuration Protocol (NETCONF),
                        Section 7.2, 'create' operation";
         }
         leaf deletes {
           type yang:counter32;
           description
             "Число случаев удаления записей матрицы связности.";
           reference
             "RFC 6241: Network Configuration Protocol (NETCONF),
                        Section 7.2, 'delete' operation";
         }
         leaf disables {
           type yang:counter32;
           description
             "Число случаев отключения записей матрицы связности.";
         }
         leaf enables {
           type yang:counter32;
           description
             "Число случаев включения записей матрицы связности.";
         }
         leaf modifies {
           type yang:counter32;
           description
             "Число случаев изменения записей матрицы связности.";
         }
       }
       // Запись матрицы связности
     }
     // Статистика на узел

     grouping statistics-per-ttp {
       description
         "Атрибуты статистики TE TTP (Tunnel Termination Point).";
       leaf discontinuity-time {
         type yang:date-and-time;
         description
           "Время последнего разрыва одного или нескольких счётчиков на
            данном интерфейсе. Если разрывов после предыдущей 
            инициализации локальной подсистемы управления не было, узел
            содержит время инициализации этой подсистемы.";
       }
       container tunnel-termination-point {
         description
           "Атрибуты статистики на уровне TE TTP.";
         /* Административные атрибуты. */
         leaf disables {
           type yang:counter32;
           description
             "Число случаев отключения TTP.";
         }
         leaf enables {
           type yang:counter32;
           description
             "Число случаев включения TTP.";
         }
         leaf maintenance-clears {
           type yang:counter32;
           description
             "Число случаев вывода TTP из обслуживания.";
         }
         leaf maintenance-sets {
           type yang:counter32;
           description
             "Число случаев ввода TTP в обслуживание.";
         }
         leaf modifies {
           type yang:counter32;
           description
             "Число случаев изменения TTP.";
         }
         /* Рабочие атрибуты. */
         leaf downs {
           type yang:counter32;
           description
             "Число случаев перевода TTP в рабочее состояние down.";
         }
         leaf ups {
           type yang:counter32;
           description
             "Число случаев перевода TTP в рабочее состояние up.";
         }
         leaf in-service-clears {
           type yang:counter32;
           description
             "Число случаев вывода TTP из обслуживания 
              (освобождение туннеля TE).";
         }
         leaf in-service-sets {
           type yang:counter32;
           description
             "Число случаев ввода TTP в обслуживание туннелем TE
              (организация туннеля TE).";
         }
       }
       // Точка завершения туннеля
       container local-link-connectivity {
         description
           "Атрибуты статистики на уровне TE LLCL (Local Link
            Connectivity List).";
         leaf creates {
           type yang:counter32;
           description
             "Число случаев создания записей LLCL.";
           reference
             "RFC 6241: Network Configuration Protocol (NETCONF),
                        Section 7.2, 'create' operation";
         }
         leaf deletes {
           type yang:counter32;
           description
             "Число случаев удаления записей LLCL.";
           reference
             "RFC 6241: Network Configuration Protocol (NETCONF),
                        Section 7.2, 'delete' operation";
         }
         leaf disables {
           type yang:counter32;
           description
             "Число случаев отключения записей LLCL.";
         }
         leaf enables {
           type yang:counter32;
           description
             "Число случаев включения записей LLCL.";
         }
         leaf modifies {
           type yang:counter32;
           description
             "Число случаев изменения записей LLCL.";
         }
       }
       // Связность на локальном канале
     }
     // Статистика по TTP

     grouping te-link-augment {
       description
         "Дополнение для канала TE.";
       uses te-link-config;
       uses te-link-state-derived;
       container statistics {
         config false;
         description
           "Данные статистики.";
         uses statistics-per-link;
       }
     }
     // Дополнение для канала TE.

     grouping te-link-config {
       description
         "Группировка конфигурации канала TE.";
       choice bundle-stack-level {
         description
           "Канал TE может состоять из связанных или композитных
            каналов.";
         case bundle {
           container bundled-links {
             description
               "Набор связанных (bundle) каналов.";
             reference
               "RFC 4201: Link Bundling in MPLS Traffic
                Engineering (TE)";
             list bundled-link {
               key "sequence";
               description
                 "Указывает связанный интерфейс, который делится еще.";
               leaf sequence {
                 type uint32;
                 description
                   "Указывает порядок в связке (bundle).";
               }
             }
           }
         }
         case component {
           container component-links {
             description
               "Набор компонентных каналов.";
             list component-link {
               key "sequence";
               description
                 "Указывает компонентный интерфейс, которого достаточно 
                  для однозначной идентификации соответствующих 
                  ресурсов.";
               leaf sequence {
                 type uint32;
                 description
                   "Указывает порядок в связке (bundle).";
               }
               leaf src-interface-ref {
                 type string;
                 description
                   "Указывает интерфейс композитного канала на 
                    узле-источнике.";
               }
               leaf des-interface-ref {
                 type string;
                 description
                   "Указывает интерфейс композитного канала на 
                    целевом узле.";
               }
             }
           }
         }
       }
       // Уровень связки каналов
       leaf-list te-link-template {
         if-feature "template";
         type leafref {
           path "../../../../te/templates/link-template/name";
         }
         description
           "Ссылка на шаблон канала TE.";
       }
       uses te-link-config-attributes;
     }
     // Конфигурация канала TE.

     grouping te-link-config-attributes {
       description
         "Конфигурационные атрибуты канала в топологии TE.";
       container te-link-attributes {
         description
           "Атрибуты канала в топологии TE.";
         leaf access-type {
           type te-types:te-link-access-type;
           description
             "Тип доступа к каналу (точка-точка или многоточечный.";
         }
         container external-domain {
           description
             "Для междоменного канала задаёт атрибуты удалённого конца
              для упрощения сигнализации на локальном конце.";
           uses nw:network-ref;
           leaf remote-te-node-id {
             type te-types:te-node-id;
             description
               "Идентификатор удалённого узла TE, используемый вместе с
                remote-te-link-tp-id для указания удалённой точки
                завершения канала (LTP) в другом домене.";
           }
           leaf remote-te-link-tp-id {
             type te-types:te-tp-id;
             description
               "Идентификатор удалённой точки TE LTP, используемый 
                вместе с remote-te-node-id для указания удалённой LTP
                в другом домене.";
           }
         }
         leaf is-abstract {
           type empty;
           description
             "Присутствует для абстрактного канала.";
         }
         leaf name {
           type string;
           description
             "Имя канала.";
         }
         container underlay {
           if-feature "te-topology-hierarchy";
           description
             "Атрибуты основы канала TE (underlay).";
           reference
             "RFC 4206: Label Switched Paths (LSP) Hierarchy with
              Generalized Multi-Protocol Label Switching (GMPLS)
              Traffic Engineering (TE)";
           uses te-link-underlay-attributes;
         }
         leaf admin-status {
           type te-types:te-admin-status;
           description
             "Административное состояние канала.";
         }
         uses te-link-info-attributes;
       }
       // Атрибуты канала TE.
     }
     // Атрибуты конфигурации канала TE.

     grouping te-link-info-attributes {
       description
         "Анонсируемые атрибуты сведений TE.";
       leaf link-index {
         type uint64;
         description
           "Идентификатор канала. При использовании OSPF этот объект
            представляет ospfLsdbID, при использовании IS-IS - 
            isisLSPID. При использовании локально настроенного канала
            объект представляет уникальное значение, заданное 
            локально в маршрутизаторе.";
       }
       leaf administrative-group {
         type te-types:admin-groups;
         description
           "Административная группа или цвет канала. Атрибут охватывает
            как административные группы RFC 3630 и RFC 5305, так и
            расширенные административные группы RFC 7308.";
         reference
           "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
            Version 2
            RFC 5305: IS-IS Extensions for Traffic Engineering
            RFC 7308: Extended Administrative Groups in MPLS Traffic
            Engineering (MPLS-TE)";
       }
       uses interface-switching-capability-list;
       uses te-types:label-set-info;
       leaf link-protection-type {
         type identityref {
           base te-types:link-protection-type;
         }
         description
           "Желательный тип защиты для канала.";
         reference
           "RFC 4202: Routing Extensions in Support of
            Generalized Multi-Protocol Label Switching (GMPLS)";
       }
       container max-link-bandwidth {
         uses te-types:te-bandwidth;
         description
           "Максимальная пропускная способность, которую можно видеть на
            канале в этом направлении (байт/сек).";
         reference
           "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
            Version 2
            RFC 5305: IS-IS Extensions for Traffic Engineering";
       }
       container max-resv-link-bandwidth {
         uses te-types:te-bandwidth;
         description
           "Максимальная пропускная способность, которую можно 
            зарезервировать на канале в этом направлении (байт/сек).";
         reference
           "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
            Version 2
            RFC 5305: IS-IS Extensions for Traffic Engineering";
       }
       list unreserved-bandwidth {
         key "priority";
         max-elements 8;
         description
           "Незарезервированная пропускная способность для уровней 
            приоритета 0 - 7 (байт/сек).";
         reference
           "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
            Version 2
            RFC 5305: IS-IS Extensions for Traffic Engineering";
         leaf priority {
           type uint8 {
             range "0..7";
           }
           description
             "Приоритет.";
         }
         uses te-types:te-bandwidth;
       }
       leaf te-default-metric {
         type uint32;
         description
           "Метрика TE.";
         reference
           "RFC 3630: Traffic Engineering (TE) Extensions to OSPF
            Version 2
            RFC 5305: IS-IS Extensions for Traffic Engineering";
       }
       leaf te-delay-metric {
         type uint32;
         description
           "Метрика задержки TE.";
         reference
           "RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions";
       }
       leaf te-igp-metric {
         type uint32;
         description
           "Метрика IGP для TE.";
         reference
           "RFC 3785: Use of Interior Gateway Protocol (IGP) Metric as a
            second MPLS Traffic Engineering (TE) Metric";
       }
       container te-srlgs {
         description
           "Список SRLG.";
         leaf-list value {
           type te-types:srlg;
           description
             "Значение SRLG.";
           reference
             "RFC 4202: Routing Extensions in Support of
              Generalized Multi-Protocol Label Switching (GMPLS)";
         }
       }
       container te-nsrlgs {
         if-feature "nsrlg";
         description
           "Список NSRLG (Non-Shared Risk Link Group). Когда настроен
            абстрактный канал TE, этот список запрашивает, чтобы базовые
            пути TE были взаимно развязаны с другими каналами TE тех же
            групп.";
         leaf-list id {
           type uint32;
           description
             "Уникальный идентификатор NSRLG в рамках топологии.";
           reference
             "RFC 4872: RSVP-TE Extensions in Support of End-to-End
              Generalized Multi-Protocol Label Switching (GMPLS)
              Recovery";
         }
       }
     }
     // Атрибуты сведений о канале TE

     grouping te-link-iscd-attributes {
       description
         "Атрибуты ISCD канала TE.";
       reference
         "RFC 4203: OSPF Extensions in Support of Generalized
          Multi-Protocol Label Switching (GMPLS), Section 1.4";
       list max-lsp-bandwidth {
         key "priority";
         max-elements 8;
         description
           "Максимальная пропускная способность LSP для приоритета
            0-7.";
         leaf priority {
           type uint8 {
             range "0..7";
           }
           description
             "Приоритет.";
         }
         uses te-types:te-bandwidth;
       }
     }
     // Атрибуты ISCD канала TE.

     grouping te-link-state-derived {
       description
         "Атрибуты состояния канала в топологии TE.";
       leaf oper-status {
         type te-types:te-oper-status;
         config false;
         description
           "Текущее рабочее состояние канала.";
       }
       leaf is-transitional {
         type empty;
         config false;
         description
           "Присутствует для временного канала и применяется как
            альтернатива inter-layer-lock-id для расчёта пути в 
            топологии TE охватывающей несколько уровней или областей.";
         reference
           "RFC 5212: Requirements for GMPLS-Based Multi-Region and
            Multi-Layer Networks (MRN/MLN)
            RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
            for Multi-Layer and Multi-Region Networks (MLN/MRN)";
       }
       uses information-source-per-link-attributes;
       list information-source-entry {
         key "information-source information-source-instance";
         config false;
         description
           "Список изученных источников сведений, включая используемые.";
         uses information-source-per-link-attributes;
         uses te-link-info-attributes;
       }
       container recovery {
         config false;
         description
           "Статус процесса восстановления.";
         leaf restoration-status {
           type te-types:te-recovery-status;
           description
             "Статус восстановления.";
         }
         leaf protection-status {
           type te-types:te-recovery-status;
           description
             "Статус защиты.";
         }
       }
       container underlay {
         if-feature "te-topology-hierarchy";
         config false;
         description
           "Атрибуты состояния основы канала TE.";
         leaf dynamic {
           type boolean;
           description
             "true, если основа создана динамически.";
         }
         leaf committed {
           type boolean;
           description
             "true, если основа зафиксирована.";
         }
       }
     }
     // Выведенное состояние канала TE

     grouping te-link-underlay-attributes {
       description
         "Атрибуты основы канала TE.";
       reference
         "RFC 4206: Label Switched Paths (LSP) Hierarchy with
          Generalized Multi-Protocol Label Switching (GMPLS)
          Traffic Engineering (TE)";
       leaf enabled {
         type boolean;
         description
           "true, если основа включена, иначе false.";
       }
       container primary-path {
         description
           "Путь услуги в базовой топологии, поддерживающей канал.";
         uses nw:network-ref;
         list path-element {
           key "path-element-id";
           description
             "Список элементов, описывающих путь услуги.";
           leaf path-element-id {
             type uint32;
             description
               "Идентификатор элемента пути.";
           }
           uses te-path-element;
         }
       }
       // Первичный путь
       list backup-path {
         key "index";
         description
           "Список резервных путей услуги в базовой топологии для защиты
            основного базового пути. Если основной путь не защищён,
            список будет пустым, иначе включает один или несколько
            элементов.";
         leaf index {
           type uint32;
           description
             "Порядковый номер для идентификации резервного пути.";
         }
         uses nw:network-ref;
         list path-element {
           key "path-element-id";
           description
             "Список элементов, описывающих резервный путь услуги.";
           leaf path-element-id {
             type uint32;
             description
               "Идентификатор элемента пути.";
           }
           uses te-path-element;
         }
       }
       // Резервный путь
       leaf protection-type {
         type identityref {
           base te-types:lsp-protection-type;
         }
         description
           "Желательный тип защиты основы для канала.";
       }
       container tunnel-termination-points {
         description
           "Желательные базовые TTP для канала.";
         leaf source {
           type binary;
           description
             "Идентификатор TTP-источника.";
         }
         leaf destination {
           type binary;
           description
             "Идентификатор целевого TTP.";
         }
       }
       container tunnels {
         description
           "Базовые туннели TE, поддерживающие канал TE.";
         leaf sharing {
           type boolean;
           default "true";
           description
             "true, если базовый туннель может разделяться с другими
              каналами TE, false, если базовый туннель выделен для этого
              канала TE. Этот лист принят по умолчанию для всех туннелей
              TE и может быть переопределен на уровне туннеля.";
         }
         list tunnel {
           key "tunnel-name";
           description
             "Туннели TE (возможно 0), поддерживающие этот канал TE.";
           leaf tunnel-name {
             type string;
             description
               "Имя, однозначно указывающее базовый туннель TE, которое
                используется вместе с source-node для канала.";
             reference
               "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels";
           }
           leaf sharing {
             type boolean;
             description
             "true, если базовый туннель может разделяться с другими
              каналами TE, false, если базовый туннель выделен для этого
              канала TE.";
           }
         }
         // Туннель
       }
       // Туннели
     }
     // Атрибуты базового канала TE

     grouping te-node-augment {
       description
         "Дополнение для узла TE.";
       uses te-node-config;
       uses te-node-state-derived;
       container statistics {
         config false;
         description
           "Данные статистики.";
         uses statistics-per-node;
       }
       list tunnel-termination-point {
         key "tunnel-tp-id";
         description
           "Точка завершения может быть окончанием туннеля.";
         leaf tunnel-tp-id {
           type binary;
           description
             "Идентификатор TTP.";
         }
         uses te-node-tunnel-termination-point-config;
         leaf oper-status {
           type te-types:te-oper-status;
           config false;
           description
             "Текущее рабочее состояние TTP.";
         }
         uses geolocation-container;
         container statistics {
           config false;
           description
             "Данные статистики.";
           uses statistics-per-ttp;
         }
         // Связи с другими TTP
         list supporting-tunnel-termination-point {
           key "node-ref tunnel-tp-ref";
           description
             "TTP, от которых зависит эта точка TTP.";
           leaf node-ref {
             type inet:uri;
             description
               "Указывает узел с поддерживающей точкой TTP. 
                Это поддерживающий узел или узел базовой топологии.";
           }
           leaf tunnel-tp-ref {
             type binary;
             description
               "Указывает точку TTP, которая является узлом поддержки
                или базовой топологии.";
           }
         }
         // Точка завершения поддерживающего туннеля
       }
       // Точка завершения туннеля
     }
     // Дополнение узла TE

     grouping te-node-config {
       description
         "Группировка конфигурации узла TE.";
       leaf-list te-node-template {
         if-feature "template";
         type leafref {
           path "../../../../te/templates/node-template/name";
         }
         description
           "Ссылка на шаблон узла TE.";
       }
       uses te-node-config-attributes;
     }
     // Конфигурация узла TE

     grouping te-node-config-attributes {
       description
         "Атрибуты конфигурации узла в топологии TE.";
       container te-node-attributes {
         description
           "Атрибуты узла в топологии TE.";
         leaf admin-status {
           type te-types:te-admin-status;
           description
             "Административное состояние канала.";
         }
         uses te-node-connectivity-matrices;
         uses te-node-info-attributes;
       }
     }
     // Атрибуты конфигурации узла TE.

     grouping te-node-config-attributes-template {
       description
         "Атрибуты конфигурации узла для шаблона в топологии TE.";
       container te-node-attributes {
         description
           "Атрибуты узла в топологии TE.";
         leaf admin-status {
           type te-types:te-admin-status;
           description
             "Административное состояние канала.";
         }
         uses te-node-info-attributes;
       }
     }
     // Шаблон атрибутов конфигурации узла

     grouping te-node-connectivity-matrices {
       description
         "Матрица связности узла TE.";
       container connectivity-matrices {
         description
           "Матрица связности на узле TE.";
         leaf number-of-entries {
           type uint16;
           description
             "Число записей матрицы связности. Если это число задано в
              запросе конфигурации, оно указывает количество запрошенных 
              записей, но в списке могут присутствовать не все. Если оно
              указано в данных состояния, это текущее количество рабочих
              записей.";
         }
         uses te-types:label-set-info;
         uses connectivity-matrix-entry-path-attributes;
         list connectivity-matrix {
           key "id";
           description
             "Ограничения коммутации на узле, т. е. соединения сетевых
              каналов TE через узел.";
           reference
             "RFC 7579: General Network Element Constraint Encoding
              for GMPLS-Controlled Networks";
           leaf id {
             type uint32;
             description
               "Указывает запись матрицы связности.";
           }
         }
         // Матрица связности.
       }
       // Матрицы связности.
     }
     // Матрицы связности узлов TE.

     grouping te-node-connectivity-matrix-attributes {
       description
         "Точка завершения указывает запись матрицы связности.";
       container from {
         description
           "Ссылка на LTP-источник.";
         leaf tp-ref {
           type leafref {
             path "../../../../../../nt:termination-point/nt:tp-id";
           }
           description
             "Относительная ссылка на точку завершения.";
         }
         uses te-types:label-set-info;
       }
       container to {
         description
           "Ссылка на целевую точку LTP.";
         leaf tp-ref {
           type leafref {
             path "../../../../../../nt:termination-point/nt:tp-id";
           }
           description
             "Относительная ссылка на точку завершения.";
         }
         uses te-types:label-set-info;
       }
       uses connectivity-matrix-entry-path-attributes;
     }
     // Атрибуты матрицы связности узла TE.

     grouping te-node-info-attributes {
       description
         "Атрибуты анонсируемых сведений TE.";
       leaf domain-id {
         type uint32;
         description
           "Указывает домен, к которому относится узел и служит для
            поддержки междоменных каналов.";
         reference
           "RFC 5152: A Per-Domain Path Computation Method for
            Establishing Inter-Domain Traffic Engineering (TE)
            Label Switched Paths (LSPs)
            RFC 5316: ISIS Extensions in Support of Inter-Autonomous
            System (AS) MPLS and GMPLS Traffic Engineering
            RFC 5392: OSPF Extensions in Support of Inter-Autonomous
            System (AS) MPLS and GMPLS Traffic Engineering";
       }
       leaf is-abstract {
         type empty;
         description
           "Присутствует лишь для абстрактных (не фактических) узлов.";
       }
       leaf name {
         type string;
         description
           "Имя узла.";
       }
       leaf-list signaling-address {
         type inet:ip-address;
         description
           "Сигнальный адрес узла.";
       }
       container underlay-topology {
         if-feature "te-topology-hierarchy";
         description
           "Когда абстрактный узел инкапсулирует топологию, атрибуты в
            этом контейнере указывают на данную топологию.";
         uses nw:network-ref;
       }
     }
     // Атрибуты сведений узла TE.

     grouping te-node-state-derived {
       description
         "Атрибуты состояния узла в топологии TE.";
       leaf oper-status {
         type te-types:te-oper-status;
         config false;
         description
           "Текущее рабочее состояние узла.";
       }
       uses geolocation-container;
       leaf is-multi-access-dr {
         type empty;
         config false;
         description
           "Наличие этого атрибута указывает, что данный узел TE 
            является псевдоузлом, выбранным в качестве указанного
            (designated) маршрутизатора.";
         reference
           "RFC 1195: Use of OSI IS-IS for Routing in TCP/IP and Dual
            Environments
            RFC 3630: Traffic Engineering (TE) Extensions to OSPF
            Version 2";
       }
       uses information-source-per-node-attributes;
       list information-source-entry {
         key "information-source information-source-instance";
         config false;
         description
           "Список изученных источников информации, включая 
            используемый.";
         uses information-source-per-node-attributes;
         uses te-node-connectivity-matrices;
         uses te-node-info-attributes;
       }
     }
     // Выведенное состояние узла TE.

     grouping te-node-tunnel-termination-point-config {
       description
         "Termination capability of a TTP on a TE node.";
       uses te-node-tunnel-termination-point-config-attributes;
       container local-link-connectivities {
         description
           "LLCL для TTP на узле TE.";
         leaf number-of-entries {
           type uint16;
           description
             "Число записей LLCL. В запросе конфигурации указывает
              число запрошенных записей, но не все могут не включаться
              в список. В данных состояния указывает текущее число 
              рабочих записей .";
         }
         uses te-types:label-set-info;
         uses connectivity-matrix-entry-path-attributes;
       }
     }
     // Конфигурация точки завершения туннеля на узле TE.

     grouping te-node-tunnel-termination-point-config-attributes {
       description
         "Атрибуты конфигурации TTP на узле TE.";
       leaf admin-status {
         type te-types:te-admin-status;
         description
           "Административный статус TTP.";
       }
       leaf name {
         type string;
         description
           "Описательное имя TTP.";
       }
       leaf switching-capability {
         type identityref {
           base te-types:switching-capabilities;
         }
         description
           "Возможности коммутации для интерфейса.";
       }
       leaf encoding {
         type identityref {
           base te-types:lsp-encoding-types;
         }
         description
           "Поддерживаемое интерфейсом кодирование.";
       }
       leaf-list inter-layer-lock-id {
         type uint32;
         description
           "Идентификатор межуровневой блокировки, применяемый для 
            расчёта пути в топологии TE, охватывающей не один уровень
            или область.";
         reference
           "RFC 5212: Requirements for GMPLS-Based Multi-Region and
            Multi-Layer Networks (MRN/MLN)
            RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
            for Multi-Layer and Multi-Region Networks (MLN/MRN)";
       }
       leaf protection-type {
         type identityref {
           base te-types:lsp-protection-type;
         }
         description
           "Тип защиты, поддерживаемой этой точкой TTP.";
       }
       container client-layer-adaptation {
         description
           "Сведения о возможностях для поддержки адаптации клиентского
            уровня в многоуровневой топологии.";
         list switching-capability {
           key "switching-capability encoding";
           description
             "Список поддерживаемых возможностей коммутации.";
           reference
             "RFC 4202: Routing Extensions in Support of
              Generalized Multi-Protocol Label Switching (GMPLS)
              RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
              for Multi-Layer and Multi-Region Networks (MLN/MRN)";
           leaf switching-capability {
             type identityref {
               base te-types:switching-capabilities;
             }
             description
               "Возможность коммутации для адаптации уровня клиента.";
           }
           leaf encoding {
             type identityref {
               base te-types:lsp-encoding-types;
             }
             description
               "Кодирование, поддерживаемое адаптацией уровня клиента.";
           }
           uses te-types:te-bandwidth;
         }
       }
     }
     // Атрибуты конфигурации точки завершения туннеля на узле TE.

     grouping te-node-tunnel-termination-point-llc-list {
       description
         "LLCL точки TTP на узле TE.";
       list local-link-connectivity {
         key "link-tp-ref";
         description
           "Возможности завершения между TTP и LTP. Эти сведения могут
            служить для расчёта пути туннеля. Дескрипторы возможности
            настройки интерфейса (IACD, RFC 6001) на каждой точке LTP
            могут быть выедены из этого списка.";
         reference
           "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
            for Multi-Layer and Multi-Region Networks (MLN/MRN)";
         leaf link-tp-ref {
           type leafref {
             path "../../../../../nt:termination-point/nt:tp-id";
           }
           description
             "LTP.";
         }
         uses te-types:label-set-info;
         uses connectivity-matrix-entry-path-attributes;
       }
     }
     // Список LLC точки завершения туннеля на узле TE.

     grouping te-path-element {
       description
         "Группа атрибутов, определяющих элемент пути TE, таких как
          узел TE, канал TE, неделимый ресурс TE или метка.";
       uses te-types:explicit-route-hop;
     }
     // Элемент пути TE.

     grouping te-termination-point-augment {
       description
         "Дополнение для точки завершения TE.";
       leaf te-tp-id {
         type te-types:te-tp-id;
         description
           "Идентификатор, однозначно указывающий точку завершения TE.";
       }
       container te {
         must '../te-tp-id';
         presence "Поддержка TE.";
         description
           "Указывает поддержку TE.";
         uses te-termination-point-config;
         leaf oper-status {
           type te-types:te-oper-status;
           config false;
           description
             "Текущее рабочее состояние LTP.";
         }
         uses geolocation-container;
       }
     }
     // Дополнение для точки завершения TE.

     grouping te-termination-point-config {
       description
         "Группировка конфигурации точки завершения TE.";
       leaf admin-status {
         type te-types:te-admin-status;
         description
           "Административный статус LTP.";
       }
       leaf name {
         type string;
         description
           "Описательное имя для LTP.";
       }
       uses interface-switching-capability-list;
       leaf inter-domain-plug-id {
         type binary;
         description
           "Уникальное в масштабе сети число, указывающее соединение, 
            которое поддерживает междоменный канал TE. Это более гибкий
            вариант указания remote-te-node-id и remote-te-link-tp-id на
            канале TE, когда провайдеру не известны их значения или 
            нужно обеспечить клиенту гибкость для смешения и 
            сопоставления нескольких топологий.";
       }
       leaf-list inter-layer-lock-id {
         type uint32;
         description
           "Идентификатор межуровневой блокировки, используемый для
            расчёта пути в топологии TE, охватывающей несколько доменов
            или областей.";
         reference
           "RFC 5212: Requirements for GMPLS-Based Multi-Region and
            Multi-Layer Networks (MRN/MLN)
            RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
            for Multi-Layer and Multi-Region Networks (MLN/MRN)";
       }
     }
     // Конфигурация точки завершения TE.

     grouping te-topologies-augment {
       description
         "Дополнения для топологии TE.";
       container te {
         presence "Поддержка TE.";
         description
           "Указывает поддержку TE.";
         container templates {
           description
             "Параметры конфигурации шаблонов, применяемых для
              топологии TE.";
           list node-template {
             if-feature "template";
             key "name";
             leaf name {
               type te-types:te-template-name;
               description
                 "Имя для указания шаблона узла TE.";
             }
             description
               "Список шаблонов узла TE для определения обобществляемых
                и неоднократно используемых атрибутов узла TE.";
             uses template-attributes;
             uses te-node-config-attributes-template;
           }
           // Шаблон узла
           list link-template {
             if-feature "template";
             key "name";
             leaf name {
               type te-types:te-template-name;
               description
                 "Имя для указания шаблона канала TE.";
             }
             description
               "Список шаблонов канала TE для задания обобществляемых
                и неоднократно используемых атрибутов канала TE.";
             uses template-attributes;
             uses te-link-config-attributes;
           }
           // Шаблон канала
         }
         // Шаблоны
       }
       // TE
     }
     // Дополнение топологии TE.

     grouping te-topology-augment {
       description
         "Дополнение топологии TE.";
       uses te-types:te-topology-identifier;
       container te {
         must '../te-topology-identifier/provider-id'
            + ' and ../te-topology-identifier/client-id'
            + ' and ../te-topology-identifier/topology-id';
         presence "Поддержка TE.";
         description
           "Указывает поддержку TE.";
         uses te-topology-config;
         uses geolocation-container;
       }
     }
     // Дополнение топологии TE.

     grouping te-topology-config {
       description
         "Группировка конфигурации топологии TE.";
       leaf name {
         type string;
         description
           "Имя топологии TE. Атрибут не обязателен и может указываться
            оператором для описания топологии TE, полезного, когда 
            network-id (RFC 8345) не является описательным и не можеет
            изменяться, поскольку генерируется системой.";
         reference
           "RFC 8345: A YANG Data Model for Network Topologies";
       }
       leaf preference {
         type uint8 {
           range "1..255";
         }
         description
           "Предпочтение для этой топологии. Меньшее значение более
            предпочтительно.";
       }
       leaf optimization-criterion {
         type identityref {
           base te-types:objective-function-type;
         }
         description
           "Критерии оптимизации, применяемые к топологии.";
         reference
           "RFC 3272: Overview and Principles of Internet Traffic
            Engineering";
       }
       list nsrlg {
         if-feature "nsrlg";
         key "id";
         description
           "Список NSRLG (Non-Shared Risk Link Group).";
         reference
           "RFC 4872: RSVP-TE Extensions in Support of End-to-End
            Generalized Multi-Protocol Label Switching (GMPLS)
            Recovery";
         leaf id {
           type uint32;
           description
             "Указывает запись NSRLG.";
         }
         leaf disjointness {
           type te-types:te-path-disjointness;
           description
             "Тип разделения ресурсов.";
         }
       }
       // NSRLG
     }
     // Конфигурация топологии TE

     grouping template-attributes {
       description
         "Общие для всех шаблонов атрибуты.";
       leaf priority {
         type uint16;
         description
           "Уровень предпочтения для разрешения конфликтов между
            шаблонами. Когда значения атрибута заданы в нескольких
            шаблонах, используется значение из шаблона с высшим
            приоритетом. Меньшее значение указывает более высокий
            приоритет (наивысший 0).";
       }
       leaf reference-change-policy {
         type enumeration {
           enum no-action {
             description
               "При смене атрибута в этом шаблоне узел конфигурации
                со ссылкой на этот шаблон не выполняет действий.";
           }
           enum not-allowed {
             description
               "Когда объект конфигурации имеет ссылку на этот шаблон,
                менять шаблон не разрешается.";
           }
           enum cascade {
             description
               "При смене атрибута в этом шаблоне объект конфигурации,
                ссылающийся на шаблон, применяет новое значение 
                атрибута к соответствующей конфигурации.";
           }
         }
         description
           "Этот атрибут задаёт действие, применяемое к узлу
            конфигурации со ссылкой на этот шаблон.";
       }
     }
     // Атрибуты шаблона

     /*
      * Узлы данных
      */

     augment "/nw:networks/nw:network/nw:network-types" {
       description
         "Вносит новый тип сети для топологии TE.";
       container te-topology {
         presence "Указывает топологию TE.";
         description
           "Присутствие указывает тип топологии TE.";
       }
     }

     augment "/nw:networks" {
       description
         "Параметры дополнения для топологии TE.";
       uses te-topologies-augment;
     }

     augment "/nw:networks/nw:network" {
       when 'nw:network-types/tet:te-topology' {
         description
           "Параметры дополнения, применимые лишь для сетей с типом
            топологии TE.";
       }
       description
         "Параметры конфигурации для топологии TE.";
       uses te-topology-augment;
     }

     augment "/nw:networks/nw:network/nw:node" {
       when '../nw:network-types/tet:te-topology' {
         description
           "Параметры дополнения, применимые лишь для сетей с типом
            топологии TE.";
       }
       description
         "Параметры конфигурации для TE на уровне узла.";
       leaf te-node-id {
         type te-types:te-node-id;
         description
           "Идентификатор узла в топологии TE. Узел специфичен для
            топологии, к которой он относится.";
       }
       container te {
         must '../te-node-id' {
           description
             "te-node-id является обязательным.";
         }
         must 'count(../nw:supporting-node)<=1' {
           description
             "Для узла в топологии TE не может быть более одного
              поддерживающего узла. При абстрагировании нескольких узлов
              используется поле underlay-topology.";
         }
         presence "TE support";
         description
           "Указывает поддержку TE.";
         uses te-node-augment;
       }
     }

     augment "/nw:networks/nw:network/nt:link" {
       when '../nw:network-types/tet:te-topology' {
         description
           "Параметры дополнения, применимые лишь для сетей с типом
            топологии TE.";
       }
       description
         "Параметры конфигурации для TE на уровне канала.";
       container te {
         must 'count(../nt:supporting-link)<=1' {
           description
             "Для канала в топологии TE не может быть более одного
              поддерживающего канала. При абстрагировании нескольких 
              каналов используется базовый.";
         }
         presence "Поддержка TE.";
         description
           "Указывает поддержку TE.";
         uses te-link-augment;
       }
     }

     augment "/nw:networks/nw:network/nw:node/"
           + "nt:termination-point" {
       when '../../nw:network-types/tet:te-topology' {
         description
           "Параметры дополнения, применимые лишь для сетей с типом
            топологии TE.";
       }
       description
         "Cпараметры конфигурации для TE на уровне точки завершения.";
       uses te-termination-point-augment;
     }

     augment "/nw:networks/nw:network/nt:link/te/bundle-stack-level/"
           + "bundle/bundled-links/bundled-link" {
       when '../../../../nw:network-types/tet:te-topology' {
         description
           "Параметры дополнения, применимые лишь для сетей с типом
            топологии TE.";
       }
       description
         "Дополнение для канала-связки TE.";
       leaf src-tp-ref {
         type leafref {
           path "../../../../../nw:node[nw:node-id = "
              + "current()/../../../../nt:source/"
              + "nt:source-node]/"
              + "nt:termination-point/nt:tp-id";
           require-instance true;
         }
         description
           "Ссылка на другую точку завершения TE на том же 
            узле-источнике.";
       }
       leaf des-tp-ref {
         type leafref {
           path "../../../../../nw:node[nw:node-id = "
              + "current()/../../../../nt:destination/"
              + "nt:dest-node]/"
              + "nt:termination-point/nt:tp-id";
           require-instance true;
         }
         description
           "Указывает точку завершение TE на том же целевом узле.";
       }
     }

     augment "/nw:networks/nw:network/nw:node/te/"
           + "information-source-entry/connectivity-matrices/"
           + "connectivity-matrix" {
       when '../../../../../nw:network-types/tet:te-topology' {
         description
           "Параметры дополнения, применимые лишь для сетей с типом
            топологии TE.";
       }
       description
         "Дополнение для матрицы связности узла TE.";
       uses te-node-connectivity-matrix-attributes;
     }

     augment "/nw:networks/nw:network/nw:node/te/te-node-attributes/"
           + "connectivity-matrices/connectivity-matrix" {
       when '../../../../../nw:network-types/tet:te-topology' {
         description
           "Параметры дополнения, применимые лишь для сетей с типом
            топологии TE.";
       }
       description
         "Дополнение для матрицы связности узла TE.";
       uses te-node-connectivity-matrix-attributes;
     }

     augment "/nw:networks/nw:network/nw:node/te/"
           + "tunnel-termination-point/local-link-connectivities" {
       when '../../../../nw:network-types/tet:te-topology' {
         description
           "Параметры дополнения, применимые лишь для сетей с типом
            топологии TE.";
       }
       description
         "Дополнение для TTP LLC узла TE.";
       uses te-node-tunnel-termination-point-llc-list;
     }
   }
   <CODE ENDS>

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

Заданный этим документом модуль 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 и содержимого.

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

/nw:networks/nw:network/nw:network-types/tet:te-topology

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

/nw:networks/tet:te

Эта ветвь задаёт шаблоны узлов и каналов TE. Изменение конфигурации в этой ветви может менять соответствующие конфигурации TE в будущем. Внося такие изменения, злоумышленник может изменить возможности TE, запланированные на будущее и вызвать тем самым повреждение или ложную маршрутизацию трафика.

/nw:networks/nw:network

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

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

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

/nw:networks/nw:network/nt:link/tet:te

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

/nw:networks/nw:network/nw:node/nt:termination-point

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

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

/nw:networks/nw:network/nw:network-types/tet:te-topology

Несанкционированный доступ к этой ветви может раскрывать тип топологии TE.

/nw:networks/tet:te

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

/nw:networks/nw:network

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

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

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

/nw:networks/nw:network/nt:link/tet:te

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

/nw:networks/nw:network/nw:node/nt:termination-point

Несанкционированный доступ к этой ветви может раскрывать сведения о рабочем состоянии точек TE LTP.

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

Агентство IANA зарегистрировало приведённые ниже URI в субреестре ns реестра IETF XML [RFC3688].

   URI:  urn:ietf:params:xml:ns:yang:ietf-te-topology
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.

   URI:  urn:ietf:params:xml:ns:yang:ietf-te-topology-state
   Registrant Contact:  The IESG.
   XML:  N/A; the requested URI is an XML namespace.

   IANA has registered the following YANG modules in the "YANG Module
   Names" subregistry [RFC6020] within the "YANG Parameters" registry.

   Name:  ietf-te-topology
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-te-topology
   Prefix:  tet
   Reference:  RFC 8795

   Name:  ietf-te-topology-state
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-te-topology-state
   Prefix:  tet-s
   Reference:  RFC 8795

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

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

[RFC3945] Mannie, E., Ed., “Generalized Multi-Protocol Label Switching (GMPLS) Architecture”, RFC 3945, DOI 10.17487/RFC3945, October 2004, <https://www.rfc-editor.org/info/rfc3945>.

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

[RFC7926] Farrel, A., Ed., Drake, J., Bitar, N., Swallow, G., Ceccarelli, D., and X. Zhang, “Problem Statement and Architecture for Information Exchange between Interconnected Traffic-Engineered Networks”, BCP 206, RFC 7926, DOI 10.17487/RFC7926, July 2016, <https://www.rfc-editor.org/info/rfc7926>.

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

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

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

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

[RFC8776] Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, “Common YANG Data Types for Traffic Engineering”, RFC 8776, DOI 10.17487/RFC8776, June 2020, <https://www.rfc-editor.org/info/rfc8776>.

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

[G.709] ITU-T, “Interfaces for the optical transport network”, ITU-T Recommendation G.709, June 2020, <https://www.itu.int/rec/T-REC-G.709/>.

[G.805] ITU-T, “Generic functional architecture of transport networks”, ITU-T Recommendation G.805, March 2000, <https://www.itu.int/rec/T-REC-G.805/en>.

[G.8080] ITU-T, “Architecture for the automatically switched optical network”, ITU-T Recommendation G.8080, February 2012, <https://www.itu.int/rec/T-REC-G.8080/en>.

[G.872] ITU-T, “Architecture of optical transport networks”, ITU-T Recommendation G.872, December 2019, <https://www.itu.int/rec/T-REC-G.872/en>.

[RFC1195] Callon, R., “Use of OSI IS-IS for routing in TCP/IP and dual environments”, RFC 1195, DOI 10.17487/RFC1195, December 1990, <https://www.rfc-editor.org/info/rfc1195>.

[RFC2702] Awduche, D., Malcolm, J., Agogbua, J., O’Dell, M., and J. McManus, “Requirements for Traffic Engineering Over MPLS”, RFC 2702, DOI 10.17487/RFC2702, September 1999, <https://www.rfc-editor.org/info/rfc2702>.

[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., and G. Swallow, “RSVP-TE: Extensions to RSVP for LSP Tunnels”, RFC 3209, DOI 10.17487/RFC3209, December 2001, <https://www.rfc-editor.org/info/rfc3209>.

[RFC3272] Awduche, D., Chiu, A., Elwalid, A., Widjaja, I., and X. Xiao, “Overview and Principles of Internet Traffic Engineering”, RFC 3272, DOI 10.17487/RFC3272, May 2002, <https://www.rfc-editor.org/info/rfc3272>.

[RFC3471] Berger, L., Ed., “Generalized Multi-Protocol Label Switching (GMPLS) Signaling Functional Description”, RFC 3471, DOI 10.17487/RFC3471, January 2003, <https://www.rfc-editor.org/info/rfc3471>.

[RFC3630] Katz, D., Kompella, K., and D. Yeung, “Traffic Engineering (TE) Extensions to OSPF Version 2”, RFC 3630, DOI 10.17487/RFC3630, September 2003, <https://www.rfc-editor.org/info/rfc3630>.

[RFC3785] Le Faucheur, F., Uppili, R., Vedrenne, A., Merckx, P., and T. Telkamp, “Use of Interior Gateway Protocol (IGP) Metric as a second MPLS Traffic Engineering (TE) Metric”, BCP 87, RFC 3785, DOI 10.17487/RFC3785, May 2004, <https://www.rfc-editor.org/info/rfc3785>.

[RFC4201] Kompella, K., Rekhter, Y., and L. Berger, “Link Bundling in MPLS Traffic Engineering (TE)”, RFC 4201, DOI 10.17487/RFC4201, October 2005, <https://www.rfc-editor.org/info/rfc4201>.

[RFC4202] Kompella, K., Ed. and Y. Rekhter, Ed., “Routing Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)”, RFC 4202, DOI 10.17487/RFC4202, October 2005, <https://www.rfc-editor.org/info/rfc4202>.

[RFC4203] Kompella, K., Ed. and Y. Rekhter, Ed., “OSPF Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)”, RFC 4203, DOI 10.17487/RFC4203, October 2005, <https://www.rfc-editor.org/info/rfc4203>.

[RFC4206] Kompella, K. and Y. Rekhter, “Label Switched Paths (LSP) Hierarchy with Generalized Multi-Protocol Label Switching (GMPLS) Traffic Engineering (TE)”, RFC 4206, DOI 10.17487/RFC4206, October 2005, <https://www.rfc-editor.org/info/rfc4206>.

[RFC4872] Lang, J.P., Ed., Rekhter, Y., Ed., and D. Papadimitriou, Ed., “RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) Recovery”, RFC 4872, DOI 10.17487/RFC4872, May 2007, <https://www.rfc-editor.org/info/rfc4872>.

[RFC5152] Vasseur, JP., Ed., Ayyangar, A., Ed., and R. Zhang, “A Per-Domain Path Computation Method for Establishing Inter-Domain Traffic Engineering (TE) Label Switched Paths (LSPs)”, RFC 5152, DOI 10.17487/RFC5152, February 2008, <https://www.rfc-editor.org/info/rfc5152>.

[RFC5212] Shiomoto, K., Papadimitriou, D., Le Roux, JL., Vigoureux, M., and D. Brungard, “Requirements for GMPLS-Based Multi-Region and Multi-Layer Networks (MRN/MLN)”, RFC 5212, DOI 10.17487/RFC5212, July 2008, <https://www.rfc-editor.org/info/rfc5212>.

[RFC5305] Li, T. and H. Smit, “IS-IS Extensions for Traffic Engineering”, RFC 5305, DOI 10.17487/RFC5305, October 2008, <https://www.rfc-editor.org/info/rfc5305>.

[RFC5316] Chen, M., Zhang, R., and X. Duan, “ISIS Extensions in Support of Inter-Autonomous System (AS) MPLS and GMPLS Traffic Engineering”, RFC 5316, DOI 10.17487/RFC5316, December 2008, <https://www.rfc-editor.org/info/rfc5316>.

[RFC5392] Chen, M., Zhang, R., and X. Duan, “OSPF Extensions in Support of Inter-Autonomous System (AS) MPLS and GMPLS Traffic Engineering”, RFC 5392, DOI 10.17487/RFC5392, January 2009, <https://www.rfc-editor.org/info/rfc5392>.

[RFC6001] Papadimitriou, D., Vigoureux, M., Shiomoto, K., Brungard, D., and JL. Le Roux, “Generalized MPLS (GMPLS) Protocol Extensions for Multi-Layer and Multi-Region Networks (MLN/MRN)”, RFC 6001, DOI 10.17487/RFC6001, October 2010, <https://www.rfc-editor.org/info/rfc6001>.

[RFC7308] Osborne, E., “Extended Administrative Groups in MPLS Traffic Engineering (MPLS-TE)”, RFC 7308, DOI 10.17487/RFC7308, July 2014, <https://www.rfc-editor.org/info/rfc7308>.

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

[RFC7579] Bernstein, G., Ed., Lee, Y., Ed., Li, D., Imajuku, W., and J. Han, “General Network Element Constraint Encoding for GMPLS-Controlled Networks”, RFC 7579, DOI 10.17487/RFC7579, June 2015, <https://www.rfc-editor.org/info/rfc7579>.

[RFC7752] Gredler, H., Ed., Medved, J., Previdi, S., Farrel, A., and S. Ray, “North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP”, RFC 7752, DOI 10.17487/RFC7752, March 2016, <https://www.rfc-editor.org/info/rfc7752>.

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

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

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

[TEAS-TOPO] Bryskin, I., Beeram, V., Saad, T., and X. Liu, “TE Topology and Tunnel Modeling for Transport Networks”, Work in Progress, Internet-Draft, draft-ietf-teas-te-topo-and-tunnel-modeling-06, 12 July 2020, <https://tools.ietf.org/html/draft-ietf-teas-te-topo-and-tunnel-modeling-06>.

[YANG-CFG-SCHED] Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and O. Gonzalez de Dios, “A YANG Data Model for Configuration Scheduling”, Work in Progress, Internet-Draft, draft-liu-netmod-yang-schedule-05, 1 March 2018, <https://tools.ietf.org/html/draft-liu-netmod-yang-schedule-05>.

[YANG-L3] Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and O. Gonzalez de Dios, “YANG Data Model for Layer 3 TE Topologies”, Work in Progress, Internet-Draft, draft-ietf-teas-yang-l3-te-topo-08, 12 July 2020, <https://tools.ietf.org/html/draft-ietf-teas-yang-l3-te-topo-08>.

[YANG-OTN] Zheng, H., Busi, I., Liu, X., Belotti, S., and O. Gonzalez de Dios, “A YANG Data Model for Optical Transport Network Topology”, Work in Progress, Internet-Draft, draft-ietf-ccamp-otn-topo-yang-10, 9 March 2020, <https://tools.ietf.org/html/draft-ietf-ccamp-otn-topo-yang-10>.

[YANG-WSON] Zheng, H., Lee, Y., Guo, A., Lopez, V., and D. King, “A YANG Data Model for WSON (Wavelength Switched Optical Networks)”, Work in Progress7, Internet-Draft, draft-ietf-ccamp-wson-yang-25, 19 May 2020, <https://tools.ietf.org/html/draft-ietf-ccamp-wson-yang-25>.

Приложение A. Полное дерево модели

   module: ietf-te-topology
     augment /nw:networks/nw:network/nw:network-types:
       +--rw te-topology!
     augment /nw:networks:
       +--rw te!
          +--rw templates
             +--rw node-template* [name] {template}?
             |  +--rw name
             |  |       te-types:te-template-name
             |  +--rw priority?                  uint16
             |  +--rw reference-change-policy?   enumeration
             |  +--rw te-node-attributes
             |     +--rw admin-status?        te-types:te-admin-status
             |     +--rw domain-id?           uint32
             |     +--rw is-abstract?         empty
             |     +--rw name?                string
             |     +--rw signaling-address*   inet:ip-address
             |     +--rw underlay-topology {te-topology-hierarchy}?
             |        +--rw network-ref?
             |                -> /nw:networks/network/network-id
             +--rw link-template* [name] {template}?
                +--rw name
                |       te-types:te-template-name
                +--rw priority?                  uint16
                +--rw reference-change-policy?   enumeration
                +--rw te-link-attributes
                   +--rw access-type?
                   |       te-types:te-link-access-type
                   +--rw external-domain
                   |  +--rw network-ref?
                   |  |       -> /nw:networks/network/network-id
                   |  +--rw remote-te-node-id?      te-types:te-node-id
                   |  +--rw remote-te-link-tp-id?   te-types:te-tp-id
                   +--rw is-abstract?                      empty
                   +--rw name?                             string
                   +--rw underlay {te-topology-hierarchy}?
                   |  +--rw enabled?                     boolean
                   |  +--rw primary-path
                   |  |  +--rw network-ref?
                   |  |  |       -> /nw:networks/network/network-id
                   |  |  +--rw path-element* [path-element-id]
                   |  |     +--rw path-element-id              uint32
                   |  |     +--rw (type)?
                   |  |        +--:(numbered-node-hop)
                   |  |        |  +--rw numbered-node-hop
                   |  |        |     +--rw node-id     te-node-id
                   |  |        |     +--rw hop-type?   te-hop-type
                   |  |        +--:(numbered-link-hop)
                   |  |        |  +--rw numbered-link-hop
                   |  |        |     +--rw link-tp-id    te-tp-id
                   |  |        |     +--rw hop-type?     te-hop-type
                   |  |        |     +--rw direction?
                   |  |        |             te-link-direction
                   |  |        +--:(unnumbered-link-hop)
                   |  |        |  +--rw unnumbered-link-hop
                   |  |        |     +--rw link-tp-id    te-tp-id
                   |  |        |     +--rw node-id       te-node-id
                   |  |        |     +--rw hop-type?     te-hop-type
                   |  |        |     +--rw direction?
                   |  |        |             te-link-direction
                   |  |        +--:(as-number)
                   |  |        |  +--rw as-number-hop
                   |  |        |     +--rw as-number    inet:as-number
                   |  |        |     +--rw hop-type?    te-hop-type
                   |  |        +--:(label)
                   |  |           +--rw label-hop
                   |  |              +--rw te-label
                   |  |                 +--rw (technology)?
                   |  |                 |  +--:(generic)
                   |  |                 |     +--rw generic?
                   |  |                 |             rt-types:generalized-label
                   |  |                 +--rw direction?
                   |  |                         te-label-direction
                   |  +--rw backup-path* [index]
                   |  |  +--rw index           uint32
                   |  |  +--rw network-ref?
                   |  |  |       -> /nw:networks/network/network-id
                   |  |  +--rw path-element* [path-element-id]
                   |  |     +--rw path-element-id              uint32
                   |  |     +--rw (type)?
                   |  |        +--:(numbered-node-hop)
                   |  |        |  +--rw numbered-node-hop
                   |  |        |     +--rw node-id     te-node-id
                   |  |        |     +--rw hop-type?   te-hop-type
                   |  |        +--:(numbered-link-hop)
                   |  |        |  +--rw numbered-link-hop
                   |  |        |     +--rw link-tp-id    te-tp-id
                   |  |        |     +--rw hop-type?     te-hop-type
                   |  |        |     +--rw direction?
                   |  |        |             te-link-direction
                   |  |        +--:(unnumbered-link-hop)
                   |  |        |  +--rw unnumbered-link-hop
                   |  |        |     +--rw link-tp-id    te-tp-id
                   |  |        |     +--rw node-id       te-node-id
                   |  |        |     +--rw hop-type?     te-hop-type
                   |  |        |     +--rw direction?
                   |  |        |             te-link-direction
                   |  |        +--:(as-number)
                   |  |        |  +--rw as-number-hop
                   |  |        |     +--rw as-number    inet:as-number
                   |  |        |     +--rw hop-type?    te-hop-type
                   |  |        +--:(label)
                   |  |           +--rw label-hop
                   |  |              +--rw te-label
                   |  |                 +--rw (technology)?
                   |  |                 |  +--:(generic)
                   |  |                 |     +--rw generic?
                   |  |                 |             rt-types:generalized-label
                   |  |                 +--rw direction?
                   |  |                         te-label-direction
                   |  +--rw protection-type?             identityref
                   |  +--rw tunnel-termination-points
                   |  |  +--rw source?        binary
                   |  |  +--rw destination?   binary
                   |  +--rw tunnels
                   |     +--rw sharing?   boolean
                   |     +--rw tunnel* [tunnel-name]
                   |        +--rw tunnel-name    string
                   |        +--rw sharing?       boolean
                   +--rw admin-status?
                   |       te-types:te-admin-status
                   +--rw link-index?                       uint64
                   +--rw administrative-group?
                   |       te-types:admin-groups
                   +--rw interface-switching-capability*
                   |       [switching-capability encoding]
                   |  +--rw switching-capability    identityref
                   |  +--rw encoding                identityref
                   |  +--rw max-lsp-bandwidth* [priority]
                   |     +--rw priority        uint8
                   |     +--rw te-bandwidth
                   |        +--rw (technology)?
                   |           +--:(generic)
                   |              +--rw generic?   te-bandwidth
                   +--rw label-restrictions
                   |  +--rw label-restriction* [index]
                   |     +--rw restriction?    enumeration
                   |     +--rw index           uint32
                   |     +--rw label-start
                   |     |  +--rw te-label
                   |     |     +--rw (technology)?
                   |     |     |  +--:(generic)
                   |     |     |     +--rw generic?
                   |     |     |             rt-types:generalized-label
                   |     |     +--rw direction?       te-label-direction
                   |     +--rw label-end
                   |     |  +--rw te-label
                   |     |     +--rw (technology)?
                   |     |     |  +--:(generic)
                   |     |     |     +--rw generic?
                   |     |     |             rt-types:generalized-label
                   |     |     +--rw direction?       te-label-direction
                   |     +--rw label-step
                   |     |  +--rw (technology)?
                   |     |     +--:(generic)
                   |     |        +--rw generic?   int32
                   |     +--rw range-bitmap?   yang:hex-string
                   +--rw link-protection-type?             identityref
                   +--rw max-link-bandwidth
                   |  +--rw te-bandwidth
                   |     +--rw (technology)?
                   |        +--:(generic)
                   |           +--rw generic?   te-bandwidth
                   +--rw max-resv-link-bandwidth
                   |  +--rw te-bandwidth
                   |     +--rw (technology)?
                   |        +--:(generic)
                   |           +--rw generic?   te-bandwidth
                   +--rw unreserved-bandwidth* [priority]
                   |  +--rw priority        uint8
                   |  +--rw te-bandwidth
                   |     +--rw (technology)?
                   |        +--:(generic)
                   |           +--rw generic?   te-bandwidth
                   +--rw te-default-metric?                uint32
                   +--rw te-delay-metric?                  uint32
                   +--rw te-igp-metric?                    uint32
                   +--rw te-srlgs
                   |  +--rw value*   te-types:srlg
                   +--rw te-nsrlgs {nsrlg}?
                      +--rw id*   uint32
     augment /nw:networks/nw:network:
       +--rw te-topology-identifier
       |  +--rw provider-id?   te-global-id
       |  +--rw client-id?     te-global-id
       |  +--rw topology-id?   te-topology-id
       +--rw te!
          +--rw name?                     string
          +--rw preference?               uint8
          +--rw optimization-criterion?   identityref
          +--rw nsrlg* [id] {nsrlg}?
          |  +--rw id              uint32
          |  +--rw disjointness?   te-types:te-path-disjointness
          +--ro geolocation
             +--ro altitude?    int64
             +--ro latitude?    geographic-coordinate-degree
             +--ro longitude?   geographic-coordinate-degree
     augment /nw:networks/nw:network/nw:node:
       +--rw te-node-id?   te-types:te-node-id
       +--rw te!
          +--rw te-node-template*
          |       -> ../../../../te/templates/node-template/name
          |       {template}?
          +--rw te-node-attributes
          |  +--rw admin-status?            te-types:te-admin-status
          |  +--rw connectivity-matrices
          |  |  +--rw number-of-entries?     uint16
          |  |  +--rw label-restrictions
          |  |  |  +--rw label-restriction* [index]
          |  |  |     +--rw restriction?    enumeration
          |  |  |     +--rw index           uint32
          |  |  |     +--rw label-start
          |  |  |     |  +--rw te-label
          |  |  |     |     +--rw (technology)?
          |  |  |     |     |  +--:(generic)
          |  |  |     |     |     +--rw generic?
          |  |  |     |     |             rt-types:generalized-label
          |  |  |     |     +--rw direction?       te-label-direction
          |  |  |     +--rw label-end
          |  |  |     |  +--rw te-label
          |  |  |     |     +--rw (technology)?
          |  |  |     |     |  +--:(generic)
          |  |  |     |     |     +--rw generic?
          |  |  |     |     |             rt-types:generalized-label
          |  |  |     |     +--rw direction?       te-label-direction
          |  |  |     +--rw label-step
          |  |  |     |  +--rw (technology)?
          |  |  |     |     +--:(generic)
          |  |  |     |        +--rw generic?   int32
          |  |  |     +--rw range-bitmap?   yang:hex-string
          |  |  +--rw is-allowed?            boolean
          |  |  +--rw underlay {te-topology-hierarchy}?
          |  |  |  +--rw enabled?                     boolean
          |  |  |  +--rw primary-path
          |  |  |  |  +--rw network-ref?
          |  |  |  |  |       -> /nw:networks/network/network-id
          |  |  |  |  +--rw path-element* [path-element-id]
          |  |  |  |     +--rw path-element-id              uint32
          |  |  |  |     +--rw (type)?
          |  |  |  |        +--:(numbered-node-hop)
          |  |  |  |        |  +--rw numbered-node-hop
          |  |  |  |        |     +--rw node-id     te-node-id
          |  |  |  |        |     +--rw hop-type?   te-hop-type
          |  |  |  |        +--:(numbered-link-hop)
          |  |  |  |        |  +--rw numbered-link-hop
          |  |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |  |        |     +--rw hop-type?     te-hop-type
          |  |  |  |        |     +--rw direction?    te-link-direction
          |  |  |  |        +--:(unnumbered-link-hop)
          |  |  |  |        |  +--rw unnumbered-link-hop
          |  |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |  |        |     +--rw node-id       te-node-id
          |  |  |  |        |     +--rw hop-type?     te-hop-type
          |  |  |  |        |     +--rw direction?    te-link-direction
          |  |  |  |        +--:(as-number)
          |  |  |  |        |  +--rw as-number-hop
          |  |  |  |        |     +--rw as-number    inet:as-number
          |  |  |  |        |     +--rw hop-type?    te-hop-type
          |  |  |  |        +--:(label)
          |  |  |  |           +--rw label-hop
          |  |  |  |              +--rw te-label
          |  |  |  |                 +--rw (technology)?
          |  |  |  |                 |  +--:(generic)
          |  |  |  |                 |     +--rw generic?
          |  |  |  |                 |             rt-types:generalized-label
          |  |  |  |                 +--rw direction?
          |  |  |  |                         te-label-direction
          |  |  |  +--rw backup-path* [index]
          |  |  |  |  +--rw index           uint32
          |  |  |  |  +--rw network-ref?
          |  |  |  |  |       -> /nw:networks/network/network-id
          |  |  |  |  +--rw path-element* [path-element-id]
          |  |  |  |     +--rw path-element-id              uint32
          |  |  |  |     +--rw (type)?
          |  |  |  |        +--:(numbered-node-hop)
          |  |  |  |        |  +--rw numbered-node-hop
          |  |  |  |        |     +--rw node-id     te-node-id
          |  |  |  |        |     +--rw hop-type?   te-hop-type
          |  |  |  |        +--:(numbered-link-hop)
          |  |  |  |        |  +--rw numbered-link-hop
          |  |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |  |        |     +--rw hop-type?     te-hop-type
          |  |  |  |        |     +--rw direction?    te-link-direction
          |  |  |  |        +--:(unnumbered-link-hop)
          |  |  |  |        |  +--rw unnumbered-link-hop
          |  |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |  |        |     +--rw node-id       te-node-id
          |  |  |  |        |     +--rw hop-type?     te-hop-type
          |  |  |  |        |     +--rw direction?    te-link-direction
          |  |  |  |        +--:(as-number)
          |  |  |  |        |  +--rw as-number-hop
          |  |  |  |        |     +--rw as-number    inet:as-number
          |  |  |  |        |     +--rw hop-type?    te-hop-type
          |  |  |  |        +--:(label)
          |  |  |  |           +--rw label-hop
          |  |  |  |              +--rw te-label
          |  |  |  |                 +--rw (technology)?
          |  |  |  |                 |  +--:(generic)
          |  |  |  |                 |     +--rw generic?
          |  |  |  |                 |             rt-types:generalized-label
          |  |  |  |                 +--rw direction?
          |  |  |  |                         te-label-direction
          |  |  |  +--rw protection-type?             identityref
          |  |  |  +--rw tunnel-termination-points
          |  |  |  |  +--rw source?        binary
          |  |  |  |  +--rw destination?   binary
          |  |  |  +--rw tunnels
          |  |  |     +--rw sharing?   boolean
          |  |  |     +--rw tunnel* [tunnel-name]
          |  |  |        +--rw tunnel-name    string
          |  |  |        +--rw sharing?       boolean
          |  |  +--rw path-constraints
          |  |  |  +--rw te-bandwidth
          |  |  |  |  +--rw (technology)?
          |  |  |  |     +--:(generic)
          |  |  |  |        +--rw generic?   te-bandwidth
          |  |  |  +--rw link-protection?          identityref
          |  |  |  +--rw setup-priority?           uint8
          |  |  |  +--rw hold-priority?            uint8
          |  |  |  +--rw signaling-type?           identityref
          |  |  |  +--rw path-metric-bounds
          |  |  |  |  +--rw path-metric-bound* [metric-type]
          |  |  |  |     +--rw metric-type    identityref
          |  |  |  |     +--rw upper-bound?   uint64
          |  |  |  +--rw path-affinities-values
          |  |  |  |  +--rw path-affinities-value* [usage]
          |  |  |  |     +--rw usage    identityref
          |  |  |  |     +--rw value?   admin-groups
          |  |  |  +--rw path-affinity-names
          |  |  |  |  +--rw path-affinity-name* [usage]
          |  |  |  |     +--rw usage            identityref
          |  |  |  |     +--rw affinity-name* [name]
          |  |  |  |        +--rw name    string
          |  |  |  +--rw path-srlgs-lists
          |  |  |  |  +--rw path-srlgs-list* [usage]
          |  |  |  |     +--rw usage     identityref
          |  |  |  |     +--rw values*   srlg
          |  |  |  +--rw path-srlgs-names
          |  |  |  |  +--rw path-srlgs-name* [usage]
          |  |  |  |     +--rw usage    identityref
          |  |  |  |     +--rw names*   string
          |  |  |  +--rw disjointness?             te-path-disjointness
          |  |  +--rw optimizations
          |  |  |  +--rw (algorithm)?
          |  |  |     +--:(metric) {path-optimization-metric}?
          |  |  |     |  +--rw optimization-metric* [metric-type]
          |  |  |     |  |  +--rw metric-type
          |  |  |     |  |  |       identityref
          |  |  |     |  |  +--rw weight?
          |  |  |     |  |  |       uint8
          |  |  |     |  |  +--rw explicit-route-exclude-objects
          |  |  |     |  |  |  +--rw route-object-exclude-object*
          |  |  |     |  |  |          [index]
          |  |  |     |  |  |     +--rw index
          |  |  |     |  |  |     |       uint32
          |  |  |     |  |  |     +--rw (type)?
          |  |  |     |  |  |        +--:(numbered-node-hop)
          |  |  |     |  |  |        |  +--rw numbered-node-hop
          |  |  |     |  |  |        |     +--rw node-id     te-node-id
          |  |  |     |  |  |        |     +--rw hop-type?   te-hop-type
          |  |  |     |  |  |        +--:(numbered-link-hop)
          |  |  |     |  |  |        |  +--rw numbered-link-hop
          |  |  |     |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |     |  |  |        |     +--rw hop-type?
          |  |  |     |  |  |        |     |       te-hop-type
          |  |  |     |  |  |        |     +--rw direction?
          |  |  |     |  |  |        |             te-link-direction
          |  |  |     |  |  |        +--:(unnumbered-link-hop)
          |  |  |     |  |  |        |  +--rw unnumbered-link-hop
          |  |  |     |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |     |  |  |        |     +--rw node-id
          |  |  |     |  |  |        |     |       te-node-id
          |  |  |     |  |  |        |     +--rw hop-type?
          |  |  |     |  |  |        |     |       te-hop-type
          |  |  |     |  |  |        |     +--rw direction?
          |  |  |     |  |  |        |             te-link-direction
          |  |  |     |  |  |        +--:(as-number)
          |  |  |     |  |  |        |  +--rw as-number-hop
          |  |  |     |  |  |        |     +--rw as-number
          |  |  |     |  |  |        |     |       inet:as-number
          |  |  |     |  |  |        |     +--rw hop-type?
          |  |  |     |  |  |        |             te-hop-type
          |  |  |     |  |  |        +--:(label)
          |  |  |     |  |  |        |  +--rw label-hop
          |  |  |     |  |  |        |     +--rw te-label
          |  |  |     |  |  |        |        +--rw (technology)?
          |  |  |     |  |  |        |        |  +--:(generic)
          |  |  |     |  |  |        |        |     +--rw generic?
          |  |  |     |  |  |        |        |             rt-types:generalized-label
          |  |  |     |  |  |        |        +--rw direction?
          |  |  |     |  |  |        |                te-label-direction
          |  |  |     |  |  |        +--:(srlg)
          |  |  |     |  |  |           +--rw srlg
          |  |  |     |  |  |              +--rw srlg?   uint32
          |  |  |     |  |  +--rw explicit-route-include-objects
          |  |  |     |  |     +--rw route-object-include-object*
          |  |  |     |  |             [index]
          |  |  |     |  |        +--rw index
          |  |  |     |  |        |       uint32
          |  |  |     |  |        +--rw (type)?
          |  |  |     |  |           +--:(numbered-node-hop)
          |  |  |     |  |           |  +--rw numbered-node-hop
          |  |  |     |  |           |     +--rw node-id     te-node-id
          |  |  |     |  |           |     +--rw hop-type?   te-hop-type
          |  |  |     |  |           +--:(numbered-link-hop)
          |  |  |     |  |           |  +--rw numbered-link-hop
          |  |  |     |  |           |     +--rw link-tp-id    te-tp-id
          |  |  |     |  |           |     +--rw hop-type?
          |  |  |     |  |           |     |       te-hop-type
          |  |  |     |  |           |     +--rw direction?
          |  |  |     |  |           |             te-link-direction
          |  |  |     |  |           +--:(unnumbered-link-hop)
          |  |  |     |  |           |  +--rw unnumbered-link-hop
          |  |  |     |  |           |     +--rw link-tp-id    te-tp-id
          |  |  |     |  |           |     +--rw node-id
          |  |  |     |  |           |     |       te-node-id
          |  |  |     |  |           |     +--rw hop-type?
          |  |  |     |  |           |     |       te-hop-type
          |  |  |     |  |           |     +--rw direction?
          |  |  |     |  |           |             te-link-direction
          |  |  |     |  |           +--:(as-number)
          |  |  |     |  |           |  +--rw as-number-hop
          |  |  |     |  |           |     +--rw as-number
          |  |  |     |  |           |     |       inet:as-number
          |  |  |     |  |           |     +--rw hop-type?
          |  |  |     |  |           |             te-hop-type
          |  |  |     |  |           +--:(label)
          |  |  |     |  |              +--rw label-hop
          |  |  |     |  |                 +--rw te-label
          |  |  |     |  |                    +--rw (technology)?
          |  |  |     |  |                    |  +--:(generic)
          |  |  |     |  |                    |     +--rw generic?
          |  |  |     |  |                    |             rt-types:generalized-label
          |  |  |     |  |                    +--rw direction?
          |  |  |     |  |                            te-label-direction
          |  |  |     |  +--rw tiebreakers
          |  |  |     |     +--rw tiebreaker* [tiebreaker-type]
          |  |  |     |        +--rw tiebreaker-type    identityref
          |  |  |     +--:(objective-function)
          |  |  |              {path-optimization-objective-function}?
          |  |  |        +--rw objective-function
          |  |  |           +--rw objective-function-type?   identityref
          |  |  +--ro path-properties
          |  |  |  +--ro path-metric* [metric-type]
          |  |  |  |  +--ro metric-type           identityref
          |  |  |  |  +--ro accumulative-value?   uint64
          |  |  |  +--ro path-affinities-values
          |  |  |  |  +--ro path-affinities-value* [usage]
          |  |  |  |     +--ro usage    identityref
          |  |  |  |     +--ro value?   admin-groups
          |  |  |  +--ro path-affinity-names
          |  |  |  |  +--ro path-affinity-name* [usage]
          |  |  |  |     +--ro usage            identityref
          |  |  |  |     +--ro affinity-name* [name]
          |  |  |  |        +--ro name    string
          |  |  |  +--ro path-srlgs-lists
          |  |  |  |  +--ro path-srlgs-list* [usage]
          |  |  |  |     +--ro usage     identityref
          |  |  |  |     +--ro values*   srlg
          |  |  |  +--ro path-srlgs-names
          |  |  |  |  +--ro path-srlgs-name* [usage]
          |  |  |  |     +--ro usage    identityref
          |  |  |  |     +--ro names*   string
          |  |  |  +--ro path-route-objects
          |  |  |     +--ro path-route-object* [index]
          |  |  |        +--ro index                        uint32
          |  |  |        +--ro (type)?
          |  |  |           +--:(numbered-node-hop)
          |  |  |           |  +--ro numbered-node-hop
          |  |  |           |     +--ro node-id     te-node-id
          |  |  |           |     +--ro hop-type?   te-hop-type
          |  |  |           +--:(numbered-link-hop)
          |  |  |           |  +--ro numbered-link-hop
          |  |  |           |     +--ro link-tp-id    te-tp-id
          |  |  |           |     +--ro hop-type?     te-hop-type
          |  |  |           |     +--ro direction?    te-link-direction
          |  |  |           +--:(unnumbered-link-hop)
          |  |  |           |  +--ro unnumbered-link-hop
          |  |  |           |     +--ro link-tp-id    te-tp-id
          |  |  |           |     +--ro node-id       te-node-id
          |  |  |           |     +--ro hop-type?     te-hop-type
          |  |  |           |     +--ro direction?    te-link-direction
          |  |  |           +--:(as-number)
          |  |  |           |  +--ro as-number-hop
          |  |  |           |     +--ro as-number    inet:as-number
          |  |  |           |     +--ro hop-type?    te-hop-type
          |  |  |           +--:(label)
          |  |  |              +--ro label-hop
          |  |  |                 +--ro te-label
          |  |  |                    +--ro (technology)?
          |  |  |                    |  +--:(generic)
          |  |  |                    |     +--ro generic?
          |  |  |                    |             rt-types:generalized-label
          |  |  |                    +--ro direction?
          |  |  |                            te-label-direction
          |  |  +--rw connectivity-matrix* [id]
          |  |     +--rw id                  uint32
          |  |     +--rw from
          |  |     |  +--rw tp-ref?               leafref
          |  |     |  +--rw label-restrictions
          |  |     |     +--rw label-restriction* [index]
          |  |     |        +--rw restriction?    enumeration
          |  |     |        +--rw index           uint32
          |  |     |        +--rw label-start
          |  |     |        |  +--rw te-label
          |  |     |        |     +--rw (technology)?
          |  |     |        |     |  +--:(generic)
          |  |     |        |     |     +--rw generic?
          |  |     |        |     |             rt-types:generalized-label
          |  |     |        |     +--rw direction?
          |  |     |        |             te-label-direction
          |  |     |        +--rw label-end
          |  |     |        |  +--rw te-label
          |  |     |        |     +--rw (technology)?
          |  |     |        |     |  +--:(generic)
          |  |     |        |     |     +--rw generic?
          |  |     |        |     |             rt-types:generalized-label
          |  |     |        |     +--rw direction?
          |  |     |        |             te-label-direction
          |  |     |        +--rw label-step
          |  |     |        |  +--rw (technology)?
          |  |     |        |     +--:(generic)
          |  |     |        |        +--rw generic?   int32
          |  |     |        +--rw range-bitmap?   yang:hex-string
          |  |     +--rw to
          |  |     |  +--rw tp-ref?               leafref
          |  |     |  +--rw label-restrictions
          |  |     |     +--rw label-restriction* [index]
          |  |     |        +--rw restriction?    enumeration
          |  |     |        +--rw index           uint32
          |  |     |        +--rw label-start
          |  |     |        |  +--rw te-label
          |  |     |        |     +--rw (technology)?
          |  |     |        |     |  +--:(generic)
          |  |     |        |     |     +--rw generic?
          |  |     |        |     |             rt-types:generalized-label
          |  |     |        |     +--rw direction?
          |  |     |        |             te-label-direction
          |  |     |        +--rw label-end
          |  |     |        |  +--rw te-label
          |  |     |        |     +--rw (technology)?
          |  |     |        |     |  +--:(generic)
          |  |     |        |     |     +--rw generic?
          |  |     |        |     |             rt-types:generalized-label
          |  |     |        |     +--rw direction?
          |  |     |        |             te-label-direction
          |  |     |        +--rw label-step
          |  |     |        |  +--rw (technology)?
          |  |     |        |     +--:(generic)
          |  |     |        |        +--rw generic?   int32
          |  |     |        +--rw range-bitmap?   yang:hex-string
          |  |     +--rw is-allowed?         boolean
          |  |     +--rw underlay {te-topology-hierarchy}?
          |  |     |  +--rw enabled?                     boolean
          |  |     |  +--rw primary-path
          |  |     |  |  +--rw network-ref?
          |  |     |  |  |       -> /nw:networks/network/network-id
          |  |     |  |  +--rw path-element* [path-element-id]
          |  |     |  |     +--rw path-element-id              uint32
          |  |     |  |     +--rw (type)?
          |  |     |  |        +--:(numbered-node-hop)
          |  |     |  |        |  +--rw numbered-node-hop
          |  |     |  |        |     +--rw node-id     te-node-id
          |  |     |  |        |     +--rw hop-type?   te-hop-type
          |  |     |  |        +--:(numbered-link-hop)
          |  |     |  |        |  +--rw numbered-link-hop
          |  |     |  |        |     +--rw link-tp-id    te-tp-id
          |  |     |  |        |     +--rw hop-type?     te-hop-type
          |  |     |  |        |     +--rw direction?
          |  |     |  |        |             te-link-direction
          |  |     |  |        +--:(unnumbered-link-hop)
          |  |     |  |        |  +--rw unnumbered-link-hop
          |  |     |  |        |     +--rw link-tp-id    te-tp-id
          |  |     |  |        |     +--rw node-id       te-node-id
          |  |     |  |        |     +--rw hop-type?     te-hop-type
          |  |     |  |        |     +--rw direction?
          |  |     |  |        |             te-link-direction
          |  |     |  |        +--:(as-number)
          |  |     |  |        |  +--rw as-number-hop
          |  |     |  |        |     +--rw as-number    inet:as-number
          |  |     |  |        |     +--rw hop-type?    te-hop-type
          |  |     |  |        +--:(label)
          |  |     |  |           +--rw label-hop
          |  |     |  |              +--rw te-label
          |  |     |  |                 +--rw (technology)?
          |  |     |  |                 |  +--:(generic)
          |  |     |  |                 |     +--rw generic?
          |  |     |  |                 |             rt-types:generalized-label
          |  |     |  |                 +--rw direction?
          |  |     |  |                         te-label-direction
          |  |     |  +--rw backup-path* [index]
          |  |     |  |  +--rw index           uint32
          |  |     |  |  +--rw network-ref?
          |  |     |  |  |       -> /nw:networks/network/network-id
          |  |     |  |  +--rw path-element* [path-element-id]
          |  |     |  |     +--rw path-element-id              uint32
          |  |     |  |     +--rw (type)?
          |  |     |  |        +--:(numbered-node-hop)
          |  |     |  |        |  +--rw numbered-node-hop
          |  |     |  |        |     +--rw node-id     te-node-id
          |  |     |  |        |     +--rw hop-type?   te-hop-type
          |  |     |  |        +--:(numbered-link-hop)
          |  |     |  |        |  +--rw numbered-link-hop
          |  |     |  |        |     +--rw link-tp-id    te-tp-id
          |  |     |  |        |     +--rw hop-type?     te-hop-type
          |  |     |  |        |     +--rw direction?
          |  |     |  |        |             te-link-direction
          |  |     |  |        +--:(unnumbered-link-hop)
          |  |     |  |        |  +--rw unnumbered-link-hop
          |  |     |  |        |     +--rw link-tp-id    te-tp-id
          |  |     |  |        |     +--rw node-id       te-node-id
          |  |     |  |        |     +--rw hop-type?     te-hop-type
          |  |     |  |        |     +--rw direction?
          |  |     |  |        |             te-link-direction
          |  |     |  |        +--:(as-number)
          |  |     |  |        |  +--rw as-number-hop
          |  |     |  |        |     +--rw as-number    inet:as-number
          |  |     |  |        |     +--rw hop-type?    te-hop-type
          |  |     |  |        +--:(label)
          |  |     |  |           +--rw label-hop
          |  |     |  |              +--rw te-label
          |  |     |  |                 +--rw (technology)?
          |  |     |  |                 |  +--:(generic)
          |  |     |  |                 |     +--rw generic?
          |  |     |  |                 |             rt-types:generalized-label
          |  |     |  |                 +--rw direction?
          |  |     |  |                         te-label-direction
          |  |     |  +--rw protection-type?             identityref
          |  |     |  +--rw tunnel-termination-points
          |  |     |  |  +--rw source?        binary
          |  |     |  |  +--rw destination?   binary
          |  |     |  +--rw tunnels
          |  |     |     +--rw sharing?   boolean
          |  |     |     +--rw tunnel* [tunnel-name]
          |  |     |        +--rw tunnel-name    string
          |  |     |        +--rw sharing?       boolean
          |  |     +--rw path-constraints
          |  |     |  +--rw te-bandwidth
          |  |     |  |  +--rw (technology)?
          |  |     |  |     +--:(generic)
          |  |     |  |        +--rw generic?   te-bandwidth
          |  |     |  +--rw link-protection?          identityref
          |  |     |  +--rw setup-priority?           uint8
          |  |     |  +--rw hold-priority?            uint8
          |  |     |  +--rw signaling-type?           identityref
          |  |     |  +--rw path-metric-bounds
          |  |     |  |  +--rw path-metric-bound* [metric-type]
          |  |     |  |     +--rw metric-type    identityref
          |  |     |  |     +--rw upper-bound?   uint64
          |  |     |  +--rw path-affinities-values
          |  |     |  |  +--rw path-affinities-value* [usage]
          |  |     |  |     +--rw usage    identityref
          |  |     |  |     +--rw value?   admin-groups
          |  |     |  +--rw path-affinity-names
          |  |     |  |  +--rw path-affinity-name* [usage]
          |  |     |  |     +--rw usage            identityref
          |  |     |  |     +--rw affinity-name* [name]
          |  |     |  |        +--rw name    string
          |  |     |  +--rw path-srlgs-lists
          |  |     |  |  +--rw path-srlgs-list* [usage]
          |  |     |  |     +--rw usage     identityref
          |  |     |  |     +--rw values*   srlg
          |  |     |  +--rw path-srlgs-names
          |  |     |  |  +--rw path-srlgs-name* [usage]
          |  |     |  |     +--rw usage    identityref
          |  |     |  |     +--rw names*   string
          |  |     |  +--rw disjointness?
          |  |     |          te-path-disjointness
          |  |     +--rw optimizations
          |  |     |  +--rw (algorithm)?
          |  |     |     +--:(metric) {path-optimization-metric}?
          |  |     |     |  +--rw optimization-metric* [metric-type]
          |  |     |     |  |  +--rw metric-type
          |  |     |     |  |  |       identityref
          |  |     |     |  |  +--rw weight?
          |  |     |     |  |  |       uint8
          |  |     |     |  |  +--rw explicit-route-exclude-objects
          |  |     |     |  |  |  +--rw route-object-exclude-object*
          |  |     |     |  |  |          [index]
          |  |     |     |  |  |     +--rw index
          |  |     |     |  |  |     |       uint32
          |  |     |     |  |  |     +--rw (type)?
          |  |     |     |  |  |        +--:(numbered-node-hop)
          |  |     |     |  |  |        |  +--rw numbered-node-hop
          |  |     |     |  |  |        |     +--rw node-id
          |  |     |     |  |  |        |     |       te-node-id
          |  |     |     |  |  |        |     +--rw hop-type?
          |  |     |     |  |  |        |             te-hop-type
          |  |     |     |  |  |        +--:(numbered-link-hop)
          |  |     |     |  |  |        |  +--rw numbered-link-hop
          |  |     |     |  |  |        |     +--rw link-tp-id
          |  |     |     |  |  |        |     |       te-tp-id
          |  |     |     |  |  |        |     +--rw hop-type?
          |  |     |     |  |  |        |     |       te-hop-type
          |  |     |     |  |  |        |     +--rw direction?
          |  |     |     |  |  |        |             te-link-direction
          |  |     |     |  |  |        +--:(unnumbered-link-hop)
          |  |     |     |  |  |        |  +--rw unnumbered-link-hop
          |  |     |     |  |  |        |     +--rw link-tp-id
          |  |     |     |  |  |        |     |       te-tp-id
          |  |     |     |  |  |        |     +--rw node-id
          |  |     |     |  |  |        |     |       te-node-id
          |  |     |     |  |  |        |     +--rw hop-type?
          |  |     |     |  |  |        |     |       te-hop-type
          |  |     |     |  |  |        |     +--rw direction?
          |  |     |     |  |  |        |             te-link-direction
          |  |     |     |  |  |        +--:(as-number)
          |  |     |     |  |  |        |  +--rw as-number-hop
          |  |     |     |  |  |        |     +--rw as-number
          |  |     |     |  |  |        |     |       inet:as-number
          |  |     |     |  |  |        |     +--rw hop-type?
          |  |     |     |  |  |        |             te-hop-type
          |  |     |     |  |  |        +--:(label)
          |  |     |     |  |  |        |  +--rw label-hop
          |  |     |     |  |  |        |     +--rw te-label
          |  |     |     |  |  |        |        +--rw (technology)?
          |  |     |     |  |  |        |        |  +--:(generic)
          |  |     |     |  |  |        |        |     +--rw generic?
          |  |     |     |  |  |        |        |             rt-types:generalized-label
          |  |     |     |  |  |        |        +--rw direction?
          |  |     |     |  |  |        |                te-label-direction
          |  |     |     |  |  |        +--:(srlg)
          |  |     |     |  |  |           +--rw srlg
          |  |     |     |  |  |              +--rw srlg?   uint32
          |  |     |     |  |  +--rw explicit-route-include-objects
          |  |     |     |  |     +--rw route-object-include-object*
          |  |     |     |  |             [index]
          |  |     |     |  |        +--rw index
          |  |     |     |  |        |       uint32
          |  |     |     |  |        +--rw (type)?
          |  |     |     |  |           +--:(numbered-node-hop)
          |  |     |     |  |           |  +--rw numbered-node-hop
          |  |     |     |  |           |     +--rw node-id
          |  |     |     |  |           |     |       te-node-id
          |  |     |     |  |           |     +--rw hop-type?
          |  |     |     |  |           |             te-hop-type
          |  |     |     |  |           +--:(numbered-link-hop)
          |  |     |     |  |           |  +--rw numbered-link-hop
          |  |     |     |  |           |     +--rw link-tp-id
          |  |     |     |  |           |     |       te-tp-id
          |  |     |     |  |           |     +--rw hop-type?
          |  |     |     |  |           |     |       te-hop-type
          |  |     |     |  |           |     +--rw direction?
          |  |     |     |  |           |             te-link-direction
          |  |     |     |  |           +--:(unnumbered-link-hop)
          |  |     |     |  |           |  +--rw unnumbered-link-hop
          |  |     |     |  |           |     +--rw link-tp-id
          |  |     |     |  |           |     |       te-tp-id
          |  |     |     |  |           |     +--rw node-id
          |  |     |     |  |           |     |       te-node-id
          |  |     |     |  |           |     +--rw hop-type?
          |  |     |     |  |           |     |       te-hop-type
          |  |     |     |  |           |     +--rw direction?
          |  |     |     |  |           |             te-link-direction
          |  |     |     |  |           +--:(as-number)
          |  |     |     |  |           |  +--rw as-number-hop
          |  |     |     |  |           |     +--rw as-number
          |  |     |     |  |           |     |       inet:as-number
          |  |     |     |  |           |     +--rw hop-type?
          |  |     |     |  |           |             te-hop-type
          |  |     |     |  |           +--:(label)
          |  |     |     |  |              +--rw label-hop
          |  |     |     |  |                 +--rw te-label
          |  |     |     |  |                    +--rw (technology)?
          |  |     |     |  |                    |  +--:(generic)
          |  |     |     |  |                    |     +--rw generic?
          |  |     |     |  |                    |             rt-types:generalized-label
          |  |     |     |  |                    +--rw direction?
          |  |     |     |  |                            te-label-direction
          |  |     |     |  +--rw tiebreakers
          |  |     |     |     +--rw tiebreaker* [tiebreaker-type]
          |  |     |     |        +--rw tiebreaker-type    identityref
          |  |     |     +--:(objective-function)
          |  |     |              {path-optimization-objective-function}?
          |  |     |        +--rw objective-function
          |  |     |           +--rw objective-function-type?
          |  |     |                   identityref
          |  |     +--ro path-properties
          |  |        +--ro path-metric* [metric-type]
          |  |        |  +--ro metric-type           identityref
          |  |        |  +--ro accumulative-value?   uint64
          |  |        +--ro path-affinities-values
          |  |        |  +--ro path-affinities-value* [usage]
          |  |        |     +--ro usage    identityref
          |  |        |     +--ro value?   admin-groups
          |  |        +--ro path-affinity-names
          |  |        |  +--ro path-affinity-name* [usage]
          |  |        |     +--ro usage            identityref
          |  |        |     +--ro affinity-name* [name]
          |  |        |        +--ro name    string
          |  |        +--ro path-srlgs-lists
          |  |        |  +--ro path-srlgs-list* [usage]
          |  |        |     +--ro usage     identityref
          |  |        |     +--ro values*   srlg
          |  |        +--ro path-srlgs-names
          |  |        |  +--ro path-srlgs-name* [usage]
          |  |        |     +--ro usage    identityref
          |  |        |     +--ro names*   string
          |  |        +--ro path-route-objects
          |  |           +--ro path-route-object* [index]
          |  |              +--ro index                        uint32
          |  |              +--ro (type)?
          |  |                 +--:(numbered-node-hop)
          |  |                 |  +--ro numbered-node-hop
          |  |                 |     +--ro node-id     te-node-id
          |  |                 |     +--ro hop-type?   te-hop-type
          |  |                 +--:(numbered-link-hop)
          |  |                 |  +--ro numbered-link-hop
          |  |                 |     +--ro link-tp-id    te-tp-id
          |  |                 |     +--ro hop-type?     te-hop-type
          |  |                 |     +--ro direction?
          |  |                 |             te-link-direction
          |  |                 +--:(unnumbered-link-hop)
          |  |                 |  +--ro unnumbered-link-hop
          |  |                 |     +--ro link-tp-id    te-tp-id
          |  |                 |     +--ro node-id       te-node-id
          |  |                 |     +--ro hop-type?     te-hop-type
          |  |                 |     +--ro direction?
          |  |                 |             te-link-direction
          |  |                 +--:(as-number)
          |  |                 |  +--ro as-number-hop
          |  |                 |     +--ro as-number    inet:as-number
          |  |                 |     +--ro hop-type?    te-hop-type
          |  |                 +--:(label)
          |  |                    +--ro label-hop
          |  |                       +--ro te-label
          |  |                          +--ro (technology)?
          |  |                          |  +--:(generic)
          |  |                          |     +--ro generic?
          |  |                          |             rt-types:generalized-label
          |  |                          +--ro direction?
          |  |                                  te-label-direction
          |  +--rw domain-id?               uint32
          |  +--rw is-abstract?             empty
          |  +--rw name?                    string
          |  +--rw signaling-address*       inet:ip-address
          |  +--rw underlay-topology {te-topology-hierarchy}?
          |     +--rw network-ref?   -> /nw:networks/network/network-id
          +--ro oper-status?                   te-types:te-oper-status
          +--ro geolocation
          |  +--ro altitude?    int64
          |  +--ro latitude?    geographic-coordinate-degree
          |  +--ro longitude?   geographic-coordinate-degree
          +--ro is-multi-access-dr?            empty
          +--ro information-source?            te-info-source
          +--ro information-source-instance?   string
          +--ro information-source-state
          |  +--ro credibility-preference?    uint16
          |  +--ro logical-network-element?   string
          |  +--ro network-instance?          string
          |  +--ro topology
          |     +--ro node-ref?      leafref
          |     +--ro network-ref?   -> /nw:networks/network/network-id
          +--ro information-source-entry*
          |       [information-source information-source-instance]
          |  +--ro information-source             te-info-source
          |  +--ro information-source-instance    string
          |  +--ro information-source-state
          |  |  +--ro credibility-preference?    uint16
          |  |  +--ro logical-network-element?   string
          |  |  +--ro network-instance?          string
          |  |  +--ro topology
          |  |     +--ro node-ref?      leafref
          |  |     +--ro network-ref?
          |  |             -> /nw:networks/network/network-id
          |  +--ro connectivity-matrices
          |  |  +--ro number-of-entries?     uint16
          |  |  +--ro label-restrictions
          |  |  |  +--ro label-restriction* [index]
          |  |  |     +--ro restriction?    enumeration
          |  |  |     +--ro index           uint32
          |  |  |     +--ro label-start
          |  |  |     |  +--ro te-label
          |  |  |     |     +--ro (technology)?
          |  |  |     |     |  +--:(generic)
          |  |  |     |     |     +--ro generic?
          |  |  |     |     |             rt-types:generalized-label
          |  |  |     |     +--ro direction?       te-label-direction
          |  |  |     +--ro label-end
          |  |  |     |  +--ro te-label
          |  |  |     |     +--ro (technology)?
          |  |  |     |     |  +--:(generic)
          |  |  |     |     |     +--ro generic?
          |  |  |     |     |             rt-types:generalized-label
          |  |  |     |     +--ro direction?       te-label-direction
          |  |  |     +--ro label-step
          |  |  |     |  +--ro (technology)?
          |  |  |     |     +--:(generic)
          |  |  |     |        +--ro generic?   int32
          |  |  |     +--ro range-bitmap?   yang:hex-string
          |  |  +--ro is-allowed?            boolean
          |  |  +--ro underlay {te-topology-hierarchy}?
          |  |  |  +--ro enabled?                     boolean
          |  |  |  +--ro primary-path
          |  |  |  |  +--ro network-ref?
          |  |  |  |  |       -> /nw:networks/network/network-id
          |  |  |  |  +--ro path-element* [path-element-id]
          |  |  |  |     +--ro path-element-id              uint32
          |  |  |  |     +--ro (type)?
          |  |  |  |        +--:(numbered-node-hop)
          |  |  |  |        |  +--ro numbered-node-hop
          |  |  |  |        |     +--ro node-id     te-node-id
          |  |  |  |        |     +--ro hop-type?   te-hop-type
          |  |  |  |        +--:(numbered-link-hop)
          |  |  |  |        |  +--ro numbered-link-hop
          |  |  |  |        |     +--ro link-tp-id    te-tp-id
          |  |  |  |        |     +--ro hop-type?     te-hop-type
          |  |  |  |        |     +--ro direction?    te-link-direction
          |  |  |  |        +--:(unnumbered-link-hop)
          |  |  |  |        |  +--ro unnumbered-link-hop
          |  |  |  |        |     +--ro link-tp-id    te-tp-id
          |  |  |  |        |     +--ro node-id       te-node-id
          |  |  |  |        |     +--ro hop-type?     te-hop-type
          |  |  |  |        |     +--ro direction?    te-link-direction
          |  |  |  |        +--:(as-number)
          |  |  |  |        |  +--ro as-number-hop
          |  |  |  |        |     +--ro as-number    inet:as-number
          |  |  |  |        |     +--ro hop-type?    te-hop-type
          |  |  |  |        +--:(label)
          |  |  |  |           +--ro label-hop
          |  |  |  |              +--ro te-label
          |  |  |  |                 +--ro (technology)?
          |  |  |  |                 |  +--:(generic)
          |  |  |  |                 |     +--ro generic?
          |  |  |  |                 |             rt-types:generalized-label
          |  |  |  |                 +--ro direction?
          |  |  |  |                         te-label-direction
          |  |  |  +--ro backup-path* [index]
          |  |  |  |  +--ro index           uint32
          |  |  |  |  +--ro network-ref?
          |  |  |  |  |       -> /nw:networks/network/network-id
          |  |  |  |  +--ro path-element* [path-element-id]
          |  |  |  |     +--ro path-element-id              uint32
          |  |  |  |     +--ro (type)?
          |  |  |  |        +--:(numbered-node-hop)
          |  |  |  |        |  +--ro numbered-node-hop
          |  |  |  |        |     +--ro node-id     te-node-id
          |  |  |  |        |     +--ro hop-type?   te-hop-type
          |  |  |  |        +--:(numbered-link-hop)
          |  |  |  |        |  +--ro numbered-link-hop
          |  |  |  |        |     +--ro link-tp-id    te-tp-id
          |  |  |  |        |     +--ro hop-type?     te-hop-type
          |  |  |  |        |     +--ro direction?    te-link-direction
          |  |  |  |        +--:(unnumbered-link-hop)
          |  |  |  |        |  +--ro unnumbered-link-hop
          |  |  |  |        |     +--ro link-tp-id    te-tp-id
          |  |  |  |        |     +--ro node-id       te-node-id
          |  |  |  |        |     +--ro hop-type?     te-hop-type
          |  |  |  |        |     +--ro direction?    te-link-direction
          |  |  |  |        +--:(as-number)
          |  |  |  |        |  +--ro as-number-hop
          |  |  |  |        |     +--ro as-number    inet:as-number
          |  |  |  |        |     +--ro hop-type?    te-hop-type
          |  |  |  |        +--:(label)
          |  |  |  |           +--ro label-hop
          |  |  |  |              +--ro te-label
          |  |  |  |                 +--ro (technology)?
          |  |  |  |                 |  +--:(generic)
          |  |  |  |                 |     +--ro generic?
          |  |  |  |                 |             rt-types:generalized-label
          |  |  |  |                 +--ro direction?
          |  |  |  |                         te-label-direction
          |  |  |  +--ro protection-type?             identityref
          |  |  |  +--ro tunnel-termination-points
          |  |  |  |  +--ro source?        binary
          |  |  |  |  +--ro destination?   binary
          |  |  |  +--ro tunnels
          |  |  |     +--ro sharing?   boolean
          |  |  |     +--ro tunnel* [tunnel-name]
          |  |  |        +--ro tunnel-name    string
          |  |  |        +--ro sharing?       boolean
          |  |  +--ro path-constraints
          |  |  |  +--ro te-bandwidth
          |  |  |  |  +--ro (technology)?
          |  |  |  |     +--:(generic)
          |  |  |  |        +--ro generic?   te-bandwidth
          |  |  |  +--ro link-protection?          identityref
          |  |  |  +--ro setup-priority?           uint8
          |  |  |  +--ro hold-priority?            uint8
          |  |  |  +--ro signaling-type?           identityref
          |  |  |  +--ro path-metric-bounds
          |  |  |  |  +--ro path-metric-bound* [metric-type]
          |  |  |  |     +--ro metric-type    identityref
          |  |  |  |     +--ro upper-bound?   uint64
          |  |  |  +--ro path-affinities-values
          |  |  |  |  +--ro path-affinities-value* [usage]
          |  |  |  |     +--ro usage    identityref
          |  |  |  |     +--ro value?   admin-groups
          |  |  |  +--ro path-affinity-names
          |  |  |  |  +--ro path-affinity-name* [usage]
          |  |  |  |     +--ro usage            identityref
          |  |  |  |     +--ro affinity-name* [name]
          |  |  |  |        +--ro name    string
          |  |  |  +--ro path-srlgs-lists
          |  |  |  |  +--ro path-srlgs-list* [usage]
          |  |  |  |     +--ro usage     identityref
          |  |  |  |     +--ro values*   srlg
          |  |  |  +--ro path-srlgs-names
          |  |  |  |  +--ro path-srlgs-name* [usage]
          |  |  |  |     +--ro usage    identityref
          |  |  |  |     +--ro names*   string
          |  |  |  +--ro disjointness?             te-path-disjointness
          |  |  +--ro optimizations
          |  |  |  +--ro (algorithm)?
          |  |  |     +--:(metric) {path-optimization-metric}?
          |  |  |     |  +--ro optimization-metric* [metric-type]
          |  |  |     |  |  +--ro metric-type
          |  |  |     |  |  |       identityref
          |  |  |     |  |  +--ro weight?
          |  |  |     |  |  |       uint8
          |  |  |     |  |  +--ro explicit-route-exclude-objects
          |  |  |     |  |  |  +--ro route-object-exclude-object*
          |  |  |     |  |  |          [index]
          |  |  |     |  |  |     +--ro index
          |  |  |     |  |  |     |       uint32
          |  |  |     |  |  |     +--ro (type)?
          |  |  |     |  |  |        +--:(numbered-node-hop)
          |  |  |     |  |  |        |  +--ro numbered-node-hop
          |  |  |     |  |  |        |     +--ro node-id     te-node-id
          |  |  |     |  |  |        |     +--ro hop-type?   te-hop-type
          |  |  |     |  |  |        +--:(numbered-link-hop)
          |  |  |     |  |  |        |  +--ro numbered-link-hop
          |  |  |     |  |  |        |     +--ro link-tp-id    te-tp-id
          |  |  |     |  |  |        |     +--ro hop-type?
          |  |  |     |  |  |        |     |       te-hop-type
          |  |  |     |  |  |        |     +--ro direction?
          |  |  |     |  |  |        |             te-link-direction
          |  |  |     |  |  |        +--:(unnumbered-link-hop)
          |  |  |     |  |  |        |  +--ro unnumbered-link-hop
          |  |  |     |  |  |        |     +--ro link-tp-id    te-tp-id
          |  |  |     |  |  |        |     +--ro node-id
          |  |  |     |  |  |        |     |       te-node-id
          |  |  |     |  |  |        |     +--ro hop-type?
          |  |  |     |  |  |        |     |       te-hop-type
          |  |  |     |  |  |        |     +--ro direction?
          |  |  |     |  |  |        |             te-link-direction
          |  |  |     |  |  |        +--:(as-number)
          |  |  |     |  |  |        |  +--ro as-number-hop
          |  |  |     |  |  |        |     +--ro as-number
          |  |  |     |  |  |        |     |       inet:as-number
          |  |  |     |  |  |        |     +--ro hop-type?
          |  |  |     |  |  |        |             te-hop-type
          |  |  |     |  |  |        +--:(label)
          |  |  |     |  |  |        |  +--ro label-hop
          |  |  |     |  |  |        |     +--ro te-label
          |  |  |     |  |  |        |        +--ro (technology)?
          |  |  |     |  |  |        |        |  +--:(generic)
          |  |  |     |  |  |        |        |     +--ro generic?
          |  |  |     |  |  |        |        |             rt-types:generalized-label
          |  |  |     |  |  |        |        +--ro direction?
          |  |  |     |  |  |        |                te-label-direction
          |  |  |     |  |  |        +--:(srlg)
          |  |  |     |  |  |           +--ro srlg
          |  |  |     |  |  |              +--ro srlg?   uint32
          |  |  |     |  |  +--ro explicit-route-include-objects
          |  |  |     |  |     +--ro route-object-include-object*
          |  |  |     |  |             [index]
          |  |  |     |  |        +--ro index
          |  |  |     |  |        |       uint32
          |  |  |     |  |        +--ro (type)?
          |  |  |     |  |           +--:(numbered-node-hop)
          |  |  |     |  |           |  +--ro numbered-node-hop
          |  |  |     |  |           |     +--ro node-id     te-node-id
          |  |  |     |  |           |     +--ro hop-type?   te-hop-type
          |  |  |     |  |           +--:(numbered-link-hop)
          |  |  |     |  |           |  +--ro numbered-link-hop
          |  |  |     |  |           |     +--ro link-tp-id    te-tp-id
          |  |  |     |  |           |     +--ro hop-type?
          |  |  |     |  |           |     |       te-hop-type
          |  |  |     |  |           |     +--ro direction?
          |  |  |     |  |           |             te-link-direction
          |  |  |     |  |           +--:(unnumbered-link-hop)
          |  |  |     |  |           |  +--ro unnumbered-link-hop
          |  |  |     |  |           |     +--ro link-tp-id    te-tp-id
          |  |  |     |  |           |     +--ro node-id
          |  |  |     |  |           |     |       te-node-id
          |  |  |     |  |           |     +--ro hop-type?
          |  |  |     |  |           |     |       te-hop-type
          |  |  |     |  |           |     +--ro direction?
          |  |  |     |  |           |             te-link-direction
          |  |  |     |  |           +--:(as-number)
          |  |  |     |  |           |  +--ro as-number-hop
          |  |  |     |  |           |     +--ro as-number
          |  |  |     |  |           |     |       inet:as-number
          |  |  |     |  |           |     +--ro hop-type?
          |  |  |     |  |           |             te-hop-type
          |  |  |     |  |           +--:(label)
          |  |  |     |  |              +--ro label-hop
          |  |  |     |  |                 +--ro te-label
          |  |  |     |  |                    +--ro (technology)?
          |  |  |     |  |                    |  +--:(generic)
          |  |  |     |  |                    |     +--ro generic?
          |  |  |     |  |                    |             rt-types:generalized-label
          |  |  |     |  |                    +--ro direction?
          |  |  |     |  |                            te-label-direction
          |  |  |     |  +--ro tiebreakers
          |  |  |     |     +--ro tiebreaker* [tiebreaker-type]
          |  |  |     |        +--ro tiebreaker-type    identityref
          |  |  |     +--:(objective-function)
          |  |  |              {path-optimization-objective-function}?
          |  |  |        +--ro objective-function
          |  |  |           +--ro objective-function-type?   identityref
          |  |  +--ro path-properties
          |  |  |  +--ro path-metric* [metric-type]
          |  |  |  |  +--ro metric-type           identityref
          |  |  |  |  +--ro accumulative-value?   uint64
          |  |  |  +--ro path-affinities-values
          |  |  |  |  +--ro path-affinities-value* [usage]
          |  |  |  |     +--ro usage    identityref
          |  |  |  |     +--ro value?   admin-groups
          |  |  |  +--ro path-affinity-names
          |  |  |  |  +--ro path-affinity-name* [usage]
          |  |  |  |     +--ro usage            identityref
          |  |  |  |     +--ro affinity-name* [name]
          |  |  |  |        +--ro name    string
          |  |  |  +--ro path-srlgs-lists
          |  |  |  |  +--ro path-srlgs-list* [usage]
          |  |  |  |     +--ro usage     identityref
          |  |  |  |     +--ro values*   srlg
          |  |  |  +--ro path-srlgs-names
          |  |  |  |  +--ro path-srlgs-name* [usage]
          |  |  |  |     +--ro usage    identityref
          |  |  |  |     +--ro names*   string
          |  |  |  +--ro path-route-objects
          |  |  |     +--ro path-route-object* [index]
          |  |  |        +--ro index                        uint32
          |  |  |        +--ro (type)?
          |  |  |           +--:(numbered-node-hop)
          |  |  |           |  +--ro numbered-node-hop
          |  |  |           |     +--ro node-id     te-node-id
          |  |  |           |     +--ro hop-type?   te-hop-type
          |  |  |           +--:(numbered-link-hop)
          |  |  |           |  +--ro numbered-link-hop
          |  |  |           |     +--ro link-tp-id    te-tp-id
          |  |  |           |     +--ro hop-type?     te-hop-type
          |  |  |           |     +--ro direction?    te-link-direction
          |  |  |           +--:(unnumbered-link-hop)
          |  |  |           |  +--ro unnumbered-link-hop
          |  |  |           |     +--ro link-tp-id    te-tp-id
          |  |  |           |     +--ro node-id       te-node-id
          |  |  |           |     +--ro hop-type?     te-hop-type
          |  |  |           |     +--ro direction?    te-link-direction
          |  |  |           +--:(as-number)
          |  |  |           |  +--ro as-number-hop
          |  |  |           |     +--ro as-number    inet:as-number
          |  |  |           |     +--ro hop-type?    te-hop-type
          |  |  |           +--:(label)
          |  |  |              +--ro label-hop
          |  |  |                 +--ro te-label
          |  |  |                    +--ro (technology)?
          |  |  |                    |  +--:(generic)
          |  |  |                    |     +--ro generic?
          |  |  |                    |             rt-types:generalized-label
          |  |  |                    +--ro direction?
          |  |  |                            te-label-direction
          |  |  +--ro connectivity-matrix* [id]
          |  |     +--ro id                  uint32
          |  |     +--ro from
          |  |     |  +--ro tp-ref?               leafref
          |  |     |  +--ro label-restrictions
          |  |     |     +--ro label-restriction* [index]
          |  |     |        +--ro restriction?    enumeration
          |  |     |        +--ro index           uint32
          |  |     |        +--ro label-start
          |  |     |        |  +--ro te-label
          |  |     |        |     +--ro (technology)?
          |  |     |        |     |  +--:(generic)
          |  |     |        |     |     +--ro generic?
          |  |     |        |     |             rt-types:generalized-label
          |  |     |        |     +--ro direction?
          |  |     |        |             te-label-direction
          |  |     |        +--ro label-end
          |  |     |        |  +--ro te-label
          |  |     |        |     +--ro (technology)?
          |  |     |        |     |  +--:(generic)
          |  |     |        |     |     +--ro generic?
          |  |     |        |     |             rt-types:generalized-label
          |  |     |        |     +--ro direction?
          |  |     |        |             te-label-direction
          |  |     |        +--ro label-step
          |  |     |        |  +--ro (technology)?
          |  |     |        |     +--:(generic)
          |  |     |        |        +--ro generic?   int32
          |  |     |        +--ro range-bitmap?   yang:hex-string
          |  |     +--ro to
          |  |     |  +--ro tp-ref?               leafref
          |  |     |  +--ro label-restrictions
          |  |     |     +--ro label-restriction* [index]
          |  |     |        +--ro restriction?    enumeration
          |  |     |        +--ro index           uint32
          |  |     |        +--ro label-start
          |  |     |        |  +--ro te-label
          |  |     |        |     +--ro (technology)?
          |  |     |        |     |  +--:(generic)
          |  |     |        |     |     +--ro generic?
          |  |     |        |     |             rt-types:generalized-label
          |  |     |        |     +--ro direction?
          |  |     |        |             te-label-direction
          |  |     |        +--ro label-end
          |  |     |        |  +--ro te-label
          |  |     |        |     +--ro (technology)?
          |  |     |        |     |  +--:(generic)
          |  |     |        |     |     +--ro generic?
          |  |     |        |     |             rt-types:generalized-label
          |  |     |        |     +--ro direction?
          |  |     |        |             te-label-direction
          |  |     |        +--ro label-step
          |  |     |        |  +--ro (technology)?
          |  |     |        |     +--:(generic)
          |  |     |        |        +--ro generic?   int32
          |  |     |        +--ro range-bitmap?   yang:hex-string
          |  |     +--ro is-allowed?         boolean
          |  |     +--ro underlay {te-topology-hierarchy}?
          |  |     |  +--ro enabled?                     boolean
          |  |     |  +--ro primary-path
          |  |     |  |  +--ro network-ref?
          |  |     |  |  |       -> /nw:networks/network/network-id
          |  |     |  |  +--ro path-element* [path-element-id]
          |  |     |  |     +--ro path-element-id              uint32
          |  |     |  |     +--ro (type)?
          |  |     |  |        +--:(numbered-node-hop)
          |  |     |  |        |  +--ro numbered-node-hop
          |  |     |  |        |     +--ro node-id     te-node-id
          |  |     |  |        |     +--ro hop-type?   te-hop-type
          |  |     |  |        +--:(numbered-link-hop)
          |  |     |  |        |  +--ro numbered-link-hop
          |  |     |  |        |     +--ro link-tp-id    te-tp-id
          |  |     |  |        |     +--ro hop-type?     te-hop-type
          |  |     |  |        |     +--ro direction?
          |  |     |  |        |             te-link-direction
          |  |     |  |        +--:(unnumbered-link-hop)
          |  |     |  |        |  +--ro unnumbered-link-hop
          |  |     |  |        |     +--ro link-tp-id    te-tp-id
          |  |     |  |        |     +--ro node-id       te-node-id
          |  |     |  |        |     +--ro hop-type?     te-hop-type
          |  |     |  |        |     +--ro direction?
          |  |     |  |        |             te-link-direction
          |  |     |  |        +--:(as-number)
          |  |     |  |        |  +--ro as-number-hop
          |  |     |  |        |     +--ro as-number    inet:as-number
          |  |     |  |        |     +--ro hop-type?    te-hop-type
          |  |     |  |        +--:(label)
          |  |     |  |           +--ro label-hop
          |  |     |  |              +--ro te-label
          |  |     |  |                 +--ro (technology)?
          |  |     |  |                 |  +--:(generic)
          |  |     |  |                 |     +--ro generic?
          |  |     |  |                 |             rt-types:generalized-label
          |  |     |  |                 +--ro direction?
          |  |     |  |                         te-label-direction
          |  |     |  +--ro backup-path* [index]
          |  |     |  |  +--ro index           uint32
          |  |     |  |  +--ro network-ref?
          |  |     |  |  |       -> /nw:networks/network/network-id
          |  |     |  |  +--ro path-element* [path-element-id]
          |  |     |  |     +--ro path-element-id              uint32
          |  |     |  |     +--ro (type)?
          |  |     |  |        +--:(numbered-node-hop)
          |  |     |  |        |  +--ro numbered-node-hop
          |  |     |  |        |     +--ro node-id     te-node-id
          |  |     |  |        |     +--ro hop-type?   te-hop-type
          |  |     |  |        +--:(numbered-link-hop)
          |  |     |  |        |  +--ro numbered-link-hop
          |  |     |  |        |     +--ro link-tp-id    te-tp-id
          |  |     |  |        |     +--ro hop-type?     te-hop-type
          |  |     |  |        |     +--ro direction?
          |  |     |  |        |             te-link-direction
          |  |     |  |        +--:(unnumbered-link-hop)
          |  |     |  |        |  +--ro unnumbered-link-hop
          |  |     |  |        |     +--ro link-tp-id    te-tp-id
          |  |     |  |        |     +--ro node-id       te-node-id
          |  |     |  |        |     +--ro hop-type?     te-hop-type
          |  |     |  |        |     +--ro direction?
          |  |     |  |        |             te-link-direction
          |  |     |  |        +--:(as-number)
          |  |     |  |        |  +--ro as-number-hop
          |  |     |  |        |     +--ro as-number    inet:as-number
          |  |     |  |        |     +--ro hop-type?    te-hop-type
          |  |     |  |        +--:(label)
          |  |     |  |           +--ro label-hop
          |  |     |  |              +--ro te-label
          |  |     |  |                 +--ro (technology)?
          |  |     |  |                 |  +--:(generic)
          |  |     |  |                 |     +--ro generic?
          |  |     |  |                 |             rt-types:generalized-label
          |  |     |  |                 +--ro direction?
          |  |     |  |                         te-label-direction
          |  |     |  +--ro protection-type?             identityref
          |  |     |  +--ro tunnel-termination-points
          |  |     |  |  +--ro source?        binary
          |  |     |  |  +--ro destination?   binary
          |  |     |  +--ro tunnels
          |  |     |     +--ro sharing?   boolean
          |  |     |     +--ro tunnel* [tunnel-name]
          |  |     |        +--ro tunnel-name    string
          |  |     |        +--ro sharing?       boolean
          |  |     +--ro path-constraints
          |  |     |  +--ro te-bandwidth
          |  |     |  |  +--ro (technology)?
          |  |     |  |     +--:(generic)
          |  |     |  |        +--ro generic?   te-bandwidth
          |  |     |  +--ro link-protection?          identityref
          |  |     |  +--ro setup-priority?           uint8
          |  |     |  +--ro hold-priority?            uint8
          |  |     |  +--ro signaling-type?           identityref
          |  |     |  +--ro path-metric-bounds
          |  |     |  |  +--ro path-metric-bound* [metric-type]
          |  |     |  |     +--ro metric-type    identityref
          |  |     |  |     +--ro upper-bound?   uint64
          |  |     |  +--ro path-affinities-values
          |  |     |  |  +--ro path-affinities-value* [usage]
          |  |     |  |     +--ro usage    identityref
          |  |     |  |     +--ro value?   admin-groups
          |  |     |  +--ro path-affinity-names
          |  |     |  |  +--ro path-affinity-name* [usage]
          |  |     |  |     +--ro usage            identityref
          |  |     |  |     +--ro affinity-name* [name]
          |  |     |  |        +--ro name    string
          |  |     |  +--ro path-srlgs-lists
          |  |     |  |  +--ro path-srlgs-list* [usage]
          |  |     |  |     +--ro usage     identityref
          |  |     |  |     +--ro values*   srlg
          |  |     |  +--ro path-srlgs-names
          |  |     |  |  +--ro path-srlgs-name* [usage]
          |  |     |  |     +--ro usage    identityref
          |  |     |  |     +--ro names*   string
          |  |     |  +--ro disjointness?
          |  |     |          te-path-disjointness
          |  |     +--ro optimizations
          |  |     |  +--ro (algorithm)?
          |  |     |     +--:(metric) {path-optimization-metric}?
          |  |     |     |  +--ro optimization-metric* [metric-type]
          |  |     |     |  |  +--ro metric-type
          |  |     |     |  |  |       identityref
          |  |     |     |  |  +--ro weight?
          |  |     |     |  |  |       uint8
          |  |     |     |  |  +--ro explicit-route-exclude-objects
          |  |     |     |  |  |  +--ro route-object-exclude-object*
          |  |     |     |  |  |          [index]
          |  |     |     |  |  |     +--ro index
          |  |     |     |  |  |     |       uint32
          |  |     |     |  |  |     +--ro (type)?
          |  |     |     |  |  |        +--:(numbered-node-hop)
          |  |     |     |  |  |        |  +--ro numbered-node-hop
          |  |     |     |  |  |        |     +--ro node-id
          |  |     |     |  |  |        |     |       te-node-id
          |  |     |     |  |  |        |     +--ro hop-type?
          |  |     |     |  |  |        |             te-hop-type
          |  |     |     |  |  |        +--:(numbered-link-hop)
          |  |     |     |  |  |        |  +--ro numbered-link-hop
          |  |     |     |  |  |        |     +--ro link-tp-id
          |  |     |     |  |  |        |     |       te-tp-id
          |  |     |     |  |  |        |     +--ro hop-type?
          |  |     |     |  |  |        |     |       te-hop-type
          |  |     |     |  |  |        |     +--ro direction?
          |  |     |     |  |  |        |             te-link-direction
          |  |     |     |  |  |        +--:(unnumbered-link-hop)
          |  |     |     |  |  |        |  +--ro unnumbered-link-hop
          |  |     |     |  |  |        |     +--ro link-tp-id
          |  |     |     |  |  |        |     |       te-tp-id
          |  |     |     |  |  |        |     +--ro node-id
          |  |     |     |  |  |        |     |       te-node-id
          |  |     |     |  |  |        |     +--ro hop-type?
          |  |     |     |  |  |        |     |       te-hop-type
          |  |     |     |  |  |        |     +--ro direction?
          |  |     |     |  |  |        |             te-link-direction
          |  |     |     |  |  |        +--:(as-number)
          |  |     |     |  |  |        |  +--ro as-number-hop
          |  |     |     |  |  |        |     +--ro as-number
          |  |     |     |  |  |        |     |       inet:as-number
          |  |     |     |  |  |        |     +--ro hop-type?
          |  |     |     |  |  |        |             te-hop-type
          |  |     |     |  |  |        +--:(label)
          |  |     |     |  |  |        |  +--ro label-hop
          |  |     |     |  |  |        |     +--ro te-label
          |  |     |     |  |  |        |        +--ro (technology)?
          |  |     |     |  |  |        |        |  +--:(generic)
          |  |     |     |  |  |        |        |     +--ro generic?
          |  |     |     |  |  |        |        |             rt-types:generalized-label
          |  |     |     |  |  |        |        +--ro direction?
          |  |     |     |  |  |        |                te-label-direction
          |  |     |     |  |  |        +--:(srlg)
          |  |     |     |  |  |           +--ro srlg
          |  |     |     |  |  |              +--ro srlg?   uint32
          |  |     |     |  |  +--ro explicit-route-include-objects
          |  |     |     |  |     +--ro route-object-include-object*
          |  |     |     |  |             [index]
          |  |     |     |  |        +--ro index
          |  |     |     |  |        |       uint32
          |  |     |     |  |        +--ro (type)?
          |  |     |     |  |           +--:(numbered-node-hop)
          |  |     |     |  |           |  +--ro numbered-node-hop
          |  |     |     |  |           |     +--ro node-id
          |  |     |     |  |           |     |       te-node-id
          |  |     |     |  |           |     +--ro hop-type?
          |  |     |     |  |           |             te-hop-type
          |  |     |     |  |           +--:(numbered-link-hop)
          |  |     |     |  |           |  +--ro numbered-link-hop
          |  |     |     |  |           |     +--ro link-tp-id
          |  |     |     |  |           |     |       te-tp-id
          |  |     |     |  |           |     +--ro hop-type?
          |  |     |     |  |           |     |       te-hop-type
          |  |     |     |  |           |     +--ro direction?
          |  |     |     |  |           |             te-link-direction
          |  |     |     |  |           +--:(unnumbered-link-hop)
          |  |     |     |  |           |  +--ro unnumbered-link-hop
          |  |     |     |  |           |     +--ro link-tp-id
          |  |     |     |  |           |     |       te-tp-id
          |  |     |     |  |           |     +--ro node-id
          |  |     |     |  |           |     |       te-node-id
          |  |     |     |  |           |     +--ro hop-type?
          |  |     |     |  |           |     |       te-hop-type
          |  |     |     |  |           |     +--ro direction?
          |  |     |     |  |           |             te-link-direction
          |  |     |     |  |           +--:(as-number)
          |  |     |     |  |           |  +--ro as-number-hop
          |  |     |     |  |           |     +--ro as-number
          |  |     |     |  |           |     |       inet:as-number
          |  |     |     |  |           |     +--ro hop-type?
          |  |     |     |  |           |             te-hop-type
          |  |     |     |  |           +--:(label)
          |  |     |     |  |              +--ro label-hop
          |  |     |     |  |                 +--ro te-label
          |  |     |     |  |                    +--ro (technology)?
          |  |     |     |  |                    |  +--:(generic)
          |  |     |     |  |                    |     +--ro generic?
          |  |     |     |  |                    |             rt-types:generalized-label
          |  |     |     |  |                    +--ro direction?
          |  |     |     |  |                            te-label-direction
          |  |     |     |  +--ro tiebreakers
          |  |     |     |     +--ro tiebreaker* [tiebreaker-type]
          |  |     |     |        +--ro tiebreaker-type    identityref
          |  |     |     +--:(objective-function)
          |  |     |              {path-optimization-objective-function}?
          |  |     |        +--ro objective-function
          |  |     |           +--ro objective-function-type?
          |  |     |                   identityref
          |  |     +--ro path-properties
          |  |        +--ro path-metric* [metric-type]
          |  |        |  +--ro metric-type           identityref
          |  |        |  +--ro accumulative-value?   uint64
          |  |        +--ro path-affinities-values
          |  |        |  +--ro path-affinities-value* [usage]
          |  |        |     +--ro usage    identityref
          |  |        |     +--ro value?   admin-groups
          |  |        +--ro path-affinity-names
          |  |        |  +--ro path-affinity-name* [usage]
          |  |        |     +--ro usage            identityref
          |  |        |     +--ro affinity-name* [name]
          |  |        |        +--ro name    string
          |  |        +--ro path-srlgs-lists
          |  |        |  +--ro path-srlgs-list* [usage]
          |  |        |     +--ro usage     identityref
          |  |        |     +--ro values*   srlg
          |  |        +--ro path-srlgs-names
          |  |        |  +--ro path-srlgs-name* [usage]
          |  |        |     +--ro usage    identityref
          |  |        |     +--ro names*   string
          |  |        +--ro path-route-objects
          |  |           +--ro path-route-object* [index]
          |  |              +--ro index                        uint32
          |  |              +--ro (type)?
          |  |                 +--:(numbered-node-hop)
          |  |                 |  +--ro numbered-node-hop
          |  |                 |     +--ro node-id     te-node-id
          |  |                 |     +--ro hop-type?   te-hop-type
          |  |                 +--:(numbered-link-hop)
          |  |                 |  +--ro numbered-link-hop
          |  |                 |     +--ro link-tp-id    te-tp-id
          |  |                 |     +--ro hop-type?     te-hop-type
          |  |                 |     +--ro direction?
          |  |                 |             te-link-direction
          |  |                 +--:(unnumbered-link-hop)
          |  |                 |  +--ro unnumbered-link-hop
          |  |                 |     +--ro link-tp-id    te-tp-id
          |  |                 |     +--ro node-id       te-node-id
          |  |                 |     +--ro hop-type?     te-hop-type
          |  |                 |     +--ro direction?
          |  |                 |             te-link-direction
          |  |                 +--:(as-number)
          |  |                 |  +--ro as-number-hop
          |  |                 |     +--ro as-number    inet:as-number
          |  |                 |     +--ro hop-type?    te-hop-type
          |  |                 +--:(label)
          |  |                    +--ro label-hop
          |  |                       +--ro te-label
          |  |                          +--ro (technology)?
          |  |                          |  +--:(generic)
          |  |                          |     +--ro generic?
          |  |                          |             rt-types:generalized-label
          |  |                          +--ro direction?
          |  |                                  te-label-direction
          |  +--ro domain-id?                     uint32
          |  +--ro is-abstract?                   empty
          |  +--ro name?                          string
          |  +--ro signaling-address*             inet:ip-address
          |  +--ro underlay-topology {te-topology-hierarchy}?
          |     +--ro network-ref?   -> /nw:networks/network/network-id
          +--ro statistics
          |  +--ro discontinuity-time?          yang:date-and-time
          |  +--ro node
          |  |  +--ro disables?             yang:counter32
          |  |  +--ro enables?              yang:counter32
          |  |  +--ro maintenance-sets?     yang:counter32
          |  |  +--ro maintenance-clears?   yang:counter32
          |  |  +--ro modifies?             yang:counter32
          |  +--ro connectivity-matrix-entry
          |     +--ro creates?    yang:counter32
          |     +--ro deletes?    yang:counter32
          |     +--ro disables?   yang:counter32
          |     +--ro enables?    yang:counter32
          |     +--ro modifies?   yang:counter32
          +--rw tunnel-termination-point* [tunnel-tp-id]
             +--rw tunnel-tp-id                           binary
             +--rw admin-status?
             |       te-types:te-admin-status
             +--rw name?                                  string
             +--rw switching-capability?                  identityref
             +--rw encoding?                              identityref
             +--rw inter-layer-lock-id*                   uint32
             +--rw protection-type?                       identityref
             +--rw client-layer-adaptation
             |  +--rw switching-capability*
             |          [switching-capability encoding]
             |     +--rw switching-capability    identityref
             |     +--rw encoding                identityref
             |     +--rw te-bandwidth
             |        +--rw (technology)?
             |           +--:(generic)
             |              +--rw generic?   te-bandwidth
             +--rw local-link-connectivities
             |  +--rw number-of-entries?         uint16
             |  +--rw label-restrictions
             |  |  +--rw label-restriction* [index]
             |  |     +--rw restriction?    enumeration
             |  |     +--rw index           uint32
             |  |     +--rw label-start
             |  |     |  +--rw te-label
             |  |     |     +--rw (technology)?
             |  |     |     |  +--:(generic)
             |  |     |     |     +--rw generic?
             |  |     |     |             rt-types:generalized-label
             |  |     |     +--rw direction?       te-label-direction
             |  |     +--rw label-end
             |  |     |  +--rw te-label
             |  |     |     +--rw (technology)?
             |  |     |     |  +--:(generic)
             |  |     |     |     +--rw generic?
             |  |     |     |             rt-types:generalized-label
             |  |     |     +--rw direction?       te-label-direction
             |  |     +--rw label-step
             |  |     |  +--rw (technology)?
             |  |     |     +--:(generic)
             |  |     |        +--rw generic?   int32
             |  |     +--rw range-bitmap?   yang:hex-string
             |  +--rw is-allowed?                boolean
             |  +--rw underlay {te-topology-hierarchy}?
             |  |  +--rw enabled?                     boolean
             |  |  +--rw primary-path
             |  |  |  +--rw network-ref?
             |  |  |  |       -> /nw:networks/network/network-id
             |  |  |  +--rw path-element* [path-element-id]
             |  |  |     +--rw path-element-id              uint32
             |  |  |     +--rw (type)?
             |  |  |        +--:(numbered-node-hop)
             |  |  |        |  +--rw numbered-node-hop
             |  |  |        |     +--rw node-id     te-node-id
             |  |  |        |     +--rw hop-type?   te-hop-type
             |  |  |        +--:(numbered-link-hop)
             |  |  |        |  +--rw numbered-link-hop
             |  |  |        |     +--rw link-tp-id    te-tp-id
             |  |  |        |     +--rw hop-type?     te-hop-type
             |  |  |        |     +--rw direction?    te-link-direction
             |  |  |        +--:(unnumbered-link-hop)
             |  |  |        |  +--rw unnumbered-link-hop
             |  |  |        |     +--rw link-tp-id    te-tp-id
             |  |  |        |     +--rw node-id       te-node-id
             |  |  |        |     +--rw hop-type?     te-hop-type
             |  |  |        |     +--rw direction?    te-link-direction
             |  |  |        +--:(as-number)
             |  |  |        |  +--rw as-number-hop
             |  |  |        |     +--rw as-number    inet:as-number
             |  |  |        |     +--rw hop-type?    te-hop-type
             |  |  |        +--:(label)
             |  |  |           +--rw label-hop
             |  |  |              +--rw te-label
             |  |  |                 +--rw (technology)?
             |  |  |                 |  +--:(generic)
             |  |  |                 |     +--rw generic?
             |  |  |                 |             rt-types:generalized-label
             |  |  |                 +--rw direction?
             |  |  |                         te-label-direction
             |  |  +--rw backup-path* [index]
             |  |  |  +--rw index           uint32
             |  |  |  +--rw network-ref?
             |  |  |  |       -> /nw:networks/network/network-id
             |  |  |  +--rw path-element* [path-element-id]
             |  |  |     +--rw path-element-id              uint32
             |  |  |     +--rw (type)?
             |  |  |        +--:(numbered-node-hop)
             |  |  |        |  +--rw numbered-node-hop
             |  |  |        |     +--rw node-id     te-node-id
             |  |  |        |     +--rw hop-type?   te-hop-type
             |  |  |        +--:(numbered-link-hop)
             |  |  |        |  +--rw numbered-link-hop
             |  |  |        |     +--rw link-tp-id    te-tp-id
             |  |  |        |     +--rw hop-type?     te-hop-type
             |  |  |        |     +--rw direction?    te-link-direction
             |  |  |        +--:(unnumbered-link-hop)
             |  |  |        |  +--rw unnumbered-link-hop
             |  |  |        |     +--rw link-tp-id    te-tp-id
             |  |  |        |     +--rw node-id       te-node-id
             |  |  |        |     +--rw hop-type?     te-hop-type
             |  |  |        |     +--rw direction?    te-link-direction
             |  |  |        +--:(as-number)
             |  |  |        |  +--rw as-number-hop
             |  |  |        |     +--rw as-number    inet:as-number
             |  |  |        |     +--rw hop-type?    te-hop-type
             |  |  |        +--:(label)
             |  |  |           +--rw label-hop
             |  |  |              +--rw te-label
             |  |  |                 +--rw (technology)?
             |  |  |                 |  +--:(generic)
             |  |  |                 |     +--rw generic?
             |  |  |                 |             rt-types:generalized-label
             |  |  |                 +--rw direction?
             |  |  |                         te-label-direction
             |  |  +--rw protection-type?             identityref
             |  |  +--rw tunnel-termination-points
             |  |  |  +--rw source?        binary
             |  |  |  +--rw destination?   binary
             |  |  +--rw tunnels
             |  |     +--rw sharing?   boolean
             |  |     +--rw tunnel* [tunnel-name]
             |  |        +--rw tunnel-name    string
             |  |        +--rw sharing?       boolean
             |  +--rw path-constraints
             |  |  +--rw te-bandwidth
             |  |  |  +--rw (technology)?
             |  |  |     +--:(generic)
             |  |  |        +--rw generic?   te-bandwidth
             |  |  +--rw link-protection?          identityref
             |  |  +--rw setup-priority?           uint8
             |  |  +--rw hold-priority?            uint8
             |  |  +--rw signaling-type?           identityref
             |  |  +--rw path-metric-bounds
             |  |  |  +--rw path-metric-bound* [metric-type]
             |  |  |     +--rw metric-type    identityref
             |  |  |     +--rw upper-bound?   uint64
             |  |  +--rw path-affinities-values
             |  |  |  +--rw path-affinities-value* [usage]
             |  |  |     +--rw usage    identityref
             |  |  |     +--rw value?   admin-groups
             |  |  +--rw path-affinity-names
             |  |  |  +--rw path-affinity-name* [usage]
             |  |  |     +--rw usage            identityref
             |  |  |     +--rw affinity-name* [name]
             |  |  |        +--rw name    string
             |  |  +--rw path-srlgs-lists
             |  |  |  +--rw path-srlgs-list* [usage]
             |  |  |     +--rw usage     identityref
             |  |  |     +--rw values*   srlg
             |  |  +--rw path-srlgs-names
             |  |  |  +--rw path-srlgs-name* [usage]
             |  |  |     +--rw usage    identityref
             |  |  |     +--rw names*   string
             |  |  +--rw disjointness?             te-path-disjointness
             |  +--rw optimizations
             |  |  +--rw (algorithm)?
             |  |     +--:(metric) {path-optimization-metric}?
             |  |     |  +--rw optimization-metric* [metric-type]
             |  |     |  |  +--rw metric-type
             |  |     |  |  |       identityref
             |  |     |  |  +--rw weight?
             |  |     |  |  |       uint8
             |  |     |  |  +--rw explicit-route-exclude-objects
             |  |     |  |  |  +--rw route-object-exclude-object*
             |  |     |  |  |          [index]
             |  |     |  |  |     +--rw index
             |  |     |  |  |     |       uint32
             |  |     |  |  |     +--rw (type)?
             |  |     |  |  |        +--:(numbered-node-hop)
             |  |     |  |  |        |  +--rw numbered-node-hop
             |  |     |  |  |        |     +--rw node-id     te-node-id
             |  |     |  |  |        |     +--rw hop-type?   te-hop-type
             |  |     |  |  |        +--:(numbered-link-hop)
             |  |     |  |  |        |  +--rw numbered-link-hop
             |  |     |  |  |        |     +--rw link-tp-id    te-tp-id
             |  |     |  |  |        |     +--rw hop-type?
             |  |     |  |  |        |     |       te-hop-type
             |  |     |  |  |        |     +--rw direction?
             |  |     |  |  |        |             te-link-direction
             |  |     |  |  |        +--:(unnumbered-link-hop)
             |  |     |  |  |        |  +--rw unnumbered-link-hop
             |  |     |  |  |        |     +--rw link-tp-id    te-tp-id
             |  |     |  |  |        |     +--rw node-id
             |  |     |  |  |        |     |       te-node-id
             |  |     |  |  |        |     +--rw hop-type?
             |  |     |  |  |        |     |       te-hop-type
             |  |     |  |  |        |     +--rw direction?
             |  |     |  |  |        |             te-link-direction
             |  |     |  |  |        +--:(as-number)
             |  |     |  |  |        |  +--rw as-number-hop
             |  |     |  |  |        |     +--rw as-number
             |  |     |  |  |        |     |       inet:as-number
             |  |     |  |  |        |     +--rw hop-type?
             |  |     |  |  |        |             te-hop-type
             |  |     |  |  |        +--:(label)
             |  |     |  |  |        |  +--rw label-hop
             |  |     |  |  |        |     +--rw te-label
             |  |     |  |  |        |        +--rw (technology)?
             |  |     |  |  |        |        |  +--:(generic)
             |  |     |  |  |        |        |     +--rw generic?
             |  |     |  |  |        |        |             rt-types:generalized-label
             |  |     |  |  |        |        +--rw direction?
             |  |     |  |  |        |                te-label-direction
             |  |     |  |  |        +--:(srlg)
             |  |     |  |  |           +--rw srlg
             |  |     |  |  |              +--rw srlg?   uint32
             |  |     |  |  +--rw explicit-route-include-objects
             |  |     |  |     +--rw route-object-include-object*
             |  |     |  |             [index]
             |  |     |  |        +--rw index
             |  |     |  |        |       uint32
             |  |     |  |        +--rw (type)?
             |  |     |  |           +--:(numbered-node-hop)
             |  |     |  |           |  +--rw numbered-node-hop
             |  |     |  |           |     +--rw node-id     te-node-id
             |  |     |  |           |     +--rw hop-type?   te-hop-type
             |  |     |  |           +--:(numbered-link-hop)
             |  |     |  |           |  +--rw numbered-link-hop
             |  |     |  |           |     +--rw link-tp-id    te-tp-id
             |  |     |  |           |     +--rw hop-type?
             |  |     |  |           |     |       te-hop-type
             |  |     |  |           |     +--rw direction?
             |  |     |  |           |             te-link-direction
             |  |     |  |           +--:(unnumbered-link-hop)
             |  |     |  |           |  +--rw unnumbered-link-hop
             |  |     |  |           |     +--rw link-tp-id    te-tp-id
             |  |     |  |           |     +--rw node-id
             |  |     |  |           |     |       te-node-id
             |  |     |  |           |     +--rw hop-type?
             |  |     |  |           |     |       te-hop-type
             |  |     |  |           |     +--rw direction?
             |  |     |  |           |             te-link-direction
             |  |     |  |           +--:(as-number)
             |  |     |  |           |  +--rw as-number-hop
             |  |     |  |           |     +--rw as-number
             |  |     |  |           |     |       inet:as-number
             |  |     |  |           |     +--rw hop-type?
             |  |     |  |           |             te-hop-type
             |  |     |  |           +--:(label)
             |  |     |  |              +--rw label-hop
             |  |     |  |                 +--rw te-label
             |  |     |  |                    +--rw (technology)?
             |  |     |  |                    |  +--:(generic)
             |  |     |  |                    |     +--rw generic?
             |  |     |  |                    |             rt-types:generalized-label
             |  |     |  |                    +--rw direction?
             |  |     |  |                            te-label-direction
             |  |     |  +--rw tiebreakers
             |  |     |     +--rw tiebreaker* [tiebreaker-type]
             |  |     |        +--rw tiebreaker-type    identityref
             |  |     +--:(objective-function)
             |  |              {path-optimization-objective-function}?
             |  |        +--rw objective-function
             |  |           +--rw objective-function-type?   identityref
             |  +--ro path-properties
             |  |  +--ro path-metric* [metric-type]
             |  |  |  +--ro metric-type           identityref
             |  |  |  +--ro accumulative-value?   uint64
             |  |  +--ro path-affinities-values
             |  |  |  +--ro path-affinities-value* [usage]
             |  |  |     +--ro usage    identityref
             |  |  |     +--ro value?   admin-groups
             |  |  +--ro path-affinity-names
             |  |  |  +--ro path-affinity-name* [usage]
             |  |  |     +--ro usage            identityref
             |  |  |     +--ro affinity-name* [name]
             |  |  |        +--ro name    string
             |  |  +--ro path-srlgs-lists
             |  |  |  +--ro path-srlgs-list* [usage]
             |  |  |     +--ro usage     identityref
             |  |  |     +--ro values*   srlg
             |  |  +--ro path-srlgs-names
             |  |  |  +--ro path-srlgs-name* [usage]
             |  |  |     +--ro usage    identityref
             |  |  |     +--ro names*   string
             |  |  +--ro path-route-objects
             |  |     +--ro path-route-object* [index]
             |  |        +--ro index                        uint32
             |  |        +--ro (type)?
             |  |           +--:(numbered-node-hop)
             |  |           |  +--ro numbered-node-hop
             |  |           |     +--ro node-id     te-node-id
             |  |           |     +--ro hop-type?   te-hop-type
             |  |           +--:(numbered-link-hop)
             |  |           |  +--ro numbered-link-hop
             |  |           |     +--ro link-tp-id    te-tp-id
             |  |           |     +--ro hop-type?     te-hop-type
             |  |           |     +--ro direction?    te-link-direction
             |  |           +--:(unnumbered-link-hop)
             |  |           |  +--ro unnumbered-link-hop
             |  |           |     +--ro link-tp-id    te-tp-id
             |  |           |     +--ro node-id       te-node-id
             |  |           |     +--ro hop-type?     te-hop-type
             |  |           |     +--ro direction?    te-link-direction
             |  |           +--:(as-number)
             |  |           |  +--ro as-number-hop
             |  |           |     +--ro as-number    inet:as-number
             |  |           |     +--ro hop-type?    te-hop-type
             |  |           +--:(label)
             |  |              +--ro label-hop
             |  |                 +--ro te-label
             |  |                    +--ro (technology)?
             |  |                    |  +--:(generic)
             |  |                    |     +--ro generic?
             |  |                    |             rt-types:generalized-label
             |  |                    +--ro direction?
             |  |                            te-label-direction
             |  +--rw local-link-connectivity* [link-tp-ref]
             |     +--rw link-tp-ref
             |     |       -> ../../../../../nt:termination-point/tp-id
             |     +--rw label-restrictions
             |     |  +--rw label-restriction* [index]
             |     |     +--rw restriction?    enumeration
             |     |     +--rw index           uint32
             |     |     +--rw label-start
             |     |     |  +--rw te-label
             |     |     |     +--rw (technology)?
             |     |     |     |  +--:(generic)
             |     |     |     |     +--rw generic?
             |     |     |     |             rt-types:generalized-label
             |     |     |     +--rw direction?       te-label-direction
             |     |     +--rw label-end
             |     |     |  +--rw te-label
             |     |     |     +--rw (technology)?
             |     |     |     |  +--:(generic)
             |     |     |     |     +--rw generic?
             |     |     |     |             rt-types:generalized-label
             |     |     |     +--rw direction?       te-label-direction
             |     |     +--rw label-step
             |     |     |  +--rw (technology)?
             |     |     |     +--:(generic)
             |     |     |        +--rw generic?   int32
             |     |     +--rw range-bitmap?   yang:hex-string
             |     +--rw is-allowed?           boolean
             |     +--rw underlay {te-topology-hierarchy}?
             |     |  +--rw enabled?                     boolean
             |     |  +--rw primary-path
             |     |  |  +--rw network-ref?
             |     |  |  |       -> /nw:networks/network/network-id
             |     |  |  +--rw path-element* [path-element-id]
             |     |  |     +--rw path-element-id              uint32
             |     |  |     +--rw (type)?
             |     |  |        +--:(numbered-node-hop)
             |     |  |        |  +--rw numbered-node-hop
             |     |  |        |     +--rw node-id     te-node-id
             |     |  |        |     +--rw hop-type?   te-hop-type
             |     |  |        +--:(numbered-link-hop)
             |     |  |        |  +--rw numbered-link-hop
             |     |  |        |     +--rw link-tp-id    te-tp-id
             |     |  |        |     +--rw hop-type?     te-hop-type
             |     |  |        |     +--rw direction?
             |     |  |        |             te-link-direction
             |     |  |        +--:(unnumbered-link-hop)
             |     |  |        |  +--rw unnumbered-link-hop
             |     |  |        |     +--rw link-tp-id    te-tp-id
             |     |  |        |     +--rw node-id       te-node-id
             |     |  |        |     +--rw hop-type?     te-hop-type
             |     |  |        |     +--rw direction?
             |     |  |        |             te-link-direction
             |     |  |        +--:(as-number)
             |     |  |        |  +--rw as-number-hop
             |     |  |        |     +--rw as-number    inet:as-number
             |     |  |        |     +--rw hop-type?    te-hop-type
             |     |  |        +--:(label)
             |     |  |           +--rw label-hop
             |     |  |              +--rw te-label
             |     |  |                 +--rw (technology)?
             |     |  |                 |  +--:(generic)
             |     |  |                 |     +--rw generic?
             |     |  |                 |             rt-types:generalized-label
             |     |  |                 +--rw direction?
             |     |  |                         te-label-direction
             |     |  +--rw backup-path* [index]
             |     |  |  +--rw index           uint32
             |     |  |  +--rw network-ref?
             |     |  |  |       -> /nw:networks/network/network-id
             |     |  |  +--rw path-element* [path-element-id]
             |     |  |     +--rw path-element-id              uint32
             |     |  |     +--rw (type)?
             |     |  |        +--:(numbered-node-hop)
             |     |  |        |  +--rw numbered-node-hop
             |     |  |        |     +--rw node-id     te-node-id
             |     |  |        |     +--rw hop-type?   te-hop-type
             |     |  |        +--:(numbered-link-hop)
             |     |  |        |  +--rw numbered-link-hop
             |     |  |        |     +--rw link-tp-id    te-tp-id
             |     |  |        |     +--rw hop-type?     te-hop-type
             |     |  |        |     +--rw direction?
             |     |  |        |             te-link-direction
             |     |  |        +--:(unnumbered-link-hop)
             |     |  |        |  +--rw unnumbered-link-hop
             |     |  |        |     +--rw link-tp-id    te-tp-id
             |     |  |        |     +--rw node-id       te-node-id
             |     |  |        |     +--rw hop-type?     te-hop-type
             |     |  |        |     +--rw direction?
             |     |  |        |             te-link-direction
             |     |  |        +--:(as-number)
             |     |  |        |  +--rw as-number-hop
             |     |  |        |     +--rw as-number    inet:as-number
             |     |  |        |     +--rw hop-type?    te-hop-type
             |     |  |        +--:(label)
             |     |  |           +--rw label-hop
             |     |  |              +--rw te-label
             |     |  |                 +--rw (technology)?
             |     |  |                 |  +--:(generic)
             |     |  |                 |     +--rw generic?
             |     |  |                 |             rt-types:generalized-label
             |     |  |                 +--rw direction?
             |     |  |                         te-label-direction
             |     |  +--rw protection-type?             identityref
             |     |  +--rw tunnel-termination-points
             |     |  |  +--rw source?        binary
             |     |  |  +--rw destination?   binary
             |     |  +--rw tunnels
             |     |     +--rw sharing?   boolean
             |     |     +--rw tunnel* [tunnel-name]
             |     |        +--rw tunnel-name    string
             |     |        +--rw sharing?       boolean
             |     +--rw path-constraints
             |     |  +--rw te-bandwidth
             |     |  |  +--rw (technology)?
             |     |  |     +--:(generic)
             |     |  |        +--rw generic?   te-bandwidth
             |     |  +--rw link-protection?          identityref
             |     |  +--rw setup-priority?           uint8
             |     |  +--rw hold-priority?            uint8
             |     |  +--rw signaling-type?           identityref
             |     |  +--rw path-metric-bounds
             |     |  |  +--rw path-metric-bound* [metric-type]
             |     |  |     +--rw metric-type    identityref
             |     |  |     +--rw upper-bound?   uint64
             |     |  +--rw path-affinities-values
             |     |  |  +--rw path-affinities-value* [usage]
             |     |  |     +--rw usage    identityref
             |     |  |     +--rw value?   admin-groups
             |     |  +--rw path-affinity-names
             |     |  |  +--rw path-affinity-name* [usage]
             |     |  |     +--rw usage            identityref
             |     |  |     +--rw affinity-name* [name]
             |     |  |        +--rw name    string
             |     |  +--rw path-srlgs-lists
             |     |  |  +--rw path-srlgs-list* [usage]
             |     |  |     +--rw usage     identityref
             |     |  |     +--rw values*   srlg
             |     |  +--rw path-srlgs-names
             |     |  |  +--rw path-srlgs-name* [usage]
             |     |  |     +--rw usage    identityref
             |     |  |     +--rw names*   string
             |     |  +--rw disjointness?
             |     |          te-path-disjointness
             |     +--rw optimizations
             |     |  +--rw (algorithm)?
             |     |     +--:(metric) {path-optimization-metric}?
             |     |     |  +--rw optimization-metric* [metric-type]
             |     |     |  |  +--rw metric-type
             |     |     |  |  |       identityref
             |     |     |  |  +--rw weight?
             |     |     |  |  |       uint8
             |     |     |  |  +--rw explicit-route-exclude-objects
             |     |     |  |  |  +--rw route-object-exclude-object*
             |     |     |  |  |          [index]
             |     |     |  |  |     +--rw index
             |     |     |  |  |     |       uint32
             |     |     |  |  |     +--rw (type)?
             |     |     |  |  |        +--:(numbered-node-hop)
             |     |     |  |  |        |  +--rw numbered-node-hop
             |     |     |  |  |        |     +--rw node-id
             |     |     |  |  |        |     |       te-node-id
             |     |     |  |  |        |     +--rw hop-type?
             |     |     |  |  |        |             te-hop-type
             |     |     |  |  |        +--:(numbered-link-hop)
             |     |     |  |  |        |  +--rw numbered-link-hop
             |     |     |  |  |        |     +--rw link-tp-id
             |     |     |  |  |        |     |       te-tp-id
             |     |     |  |  |        |     +--rw hop-type?
             |     |     |  |  |        |     |       te-hop-type
             |     |     |  |  |        |     +--rw direction?
             |     |     |  |  |        |             te-link-direction
             |     |     |  |  |        +--:(unnumbered-link-hop)
             |     |     |  |  |        |  +--rw unnumbered-link-hop
             |     |     |  |  |        |     +--rw link-tp-id
             |     |     |  |  |        |     |       te-tp-id
             |     |     |  |  |        |     +--rw node-id
             |     |     |  |  |        |     |       te-node-id
             |     |     |  |  |        |     +--rw hop-type?
             |     |     |  |  |        |     |       te-hop-type
             |     |     |  |  |        |     +--rw direction?
             |     |     |  |  |        |             te-link-direction
             |     |     |  |  |        +--:(as-number)
             |     |     |  |  |        |  +--rw as-number-hop
             |     |     |  |  |        |     +--rw as-number
             |     |     |  |  |        |     |       inet:as-number
             |     |     |  |  |        |     +--rw hop-type?
             |     |     |  |  |        |             te-hop-type
             |     |     |  |  |        +--:(label)
             |     |     |  |  |        |  +--rw label-hop
             |     |     |  |  |        |     +--rw te-label
             |     |     |  |  |        |        +--rw (technology)?
             |     |     |  |  |        |        |  +--:(generic)
             |     |     |  |  |        |        |     +--rw generic?
             |     |     |  |  |        |        |             rt-types:generalized-label
             |     |     |  |  |        |        +--rw direction?
             |     |     |  |  |        |                te-label-direction
             |     |     |  |  |        +--:(srlg)
             |     |     |  |  |           +--rw srlg
             |     |     |  |  |              +--rw srlg?   uint32
             |     |     |  |  +--rw explicit-route-include-objects
             |     |     |  |     +--rw route-object-include-object*
             |     |     |  |             [index]
             |     |     |  |        +--rw index
             |     |     |  |        |       uint32
             |     |     |  |        +--rw (type)?
             |     |     |  |           +--:(numbered-node-hop)
             |     |     |  |           |  +--rw numbered-node-hop
             |     |     |  |           |     +--rw node-id
             |     |     |  |           |     |       te-node-id
             |     |     |  |           |     +--rw hop-type?
             |     |     |  |           |             te-hop-type
             |     |     |  |           +--:(numbered-link-hop)
             |     |     |  |           |  +--rw numbered-link-hop
             |     |     |  |           |     +--rw link-tp-id
             |     |     |  |           |     |       te-tp-id
             |     |     |  |           |     +--rw hop-type?
             |     |     |  |           |     |       te-hop-type
             |     |     |  |           |     +--rw direction?
             |     |     |  |           |             te-link-direction
             |     |     |  |           +--:(unnumbered-link-hop)
             |     |     |  |           |  +--rw unnumbered-link-hop
             |     |     |  |           |     +--rw link-tp-id
             |     |     |  |           |     |       te-tp-id
             |     |     |  |           |     +--rw node-id
             |     |     |  |           |     |       te-node-id
             |     |     |  |           |     +--rw hop-type?
             |     |     |  |           |     |       te-hop-type
             |     |     |  |           |     +--rw direction?
             |     |     |  |           |             te-link-direction
             |     |     |  |           +--:(as-number)
             |     |     |  |           |  +--rw as-number-hop
             |     |     |  |           |     +--rw as-number
             |     |     |  |           |     |       inet:as-number
             |     |     |  |           |     +--rw hop-type?
             |     |     |  |           |             te-hop-type
             |     |     |  |           +--:(label)
             |     |     |  |              +--rw label-hop
             |     |     |  |                 +--rw te-label
             |     |     |  |                    +--rw (technology)?
             |     |     |  |                    |  +--:(generic)
             |     |     |  |                    |     +--rw generic?
             |     |     |  |                    |             rt-types:generalized-label
             |     |     |  |                    +--rw direction?
             |     |     |  |                            te-label-direction
             |     |     |  +--rw tiebreakers
             |     |     |     +--rw tiebreaker* [tiebreaker-type]
             |     |     |        +--rw tiebreaker-type    identityref
             |     |     +--:(objective-function)
             |     |              {path-optimization-objective-function}?
             |     |        +--rw objective-function
             |     |           +--rw objective-function-type?
             |     |                   identityref
             |     +--ro path-properties
             |        +--ro path-metric* [metric-type]
             |        |  +--ro metric-type           identityref
             |        |  +--ro accumulative-value?   uint64
             |        +--ro path-affinities-values
             |        |  +--ro path-affinities-value* [usage]
             |        |     +--ro usage    identityref
             |        |     +--ro value?   admin-groups
             |        +--ro path-affinity-names
             |        |  +--ro path-affinity-name* [usage]
             |        |     +--ro usage            identityref
             |        |     +--ro affinity-name* [name]
             |        |        +--ro name    string
             |        +--ro path-srlgs-lists
             |        |  +--ro path-srlgs-list* [usage]
             |        |     +--ro usage     identityref
             |        |     +--ro values*   srlg
             |        +--ro path-srlgs-names
             |        |  +--ro path-srlgs-name* [usage]
             |        |     +--ro usage    identityref
             |        |     +--ro names*   string
             |        +--ro path-route-objects
             |           +--ro path-route-object* [index]
             |              +--ro index                        uint32
             |              +--ro (type)?
             |                 +--:(numbered-node-hop)
             |                 |  +--ro numbered-node-hop
             |                 |     +--ro node-id     te-node-id
             |                 |     +--ro hop-type?   te-hop-type
             |                 +--:(numbered-link-hop)
             |                 |  +--ro numbered-link-hop
             |                 |     +--ro link-tp-id    te-tp-id
             |                 |     +--ro hop-type?     te-hop-type
             |                 |     +--ro direction?
             |                 |             te-link-direction
             |                 +--:(unnumbered-link-hop)
             |                 |  +--ro unnumbered-link-hop
             |                 |     +--ro link-tp-id    te-tp-id
             |                 |     +--ro node-id       te-node-id
             |                 |     +--ro hop-type?     te-hop-type
             |                 |     +--ro direction?
             |                 |             te-link-direction
             |                 +--:(as-number)
             |                 |  +--ro as-number-hop
             |                 |     +--ro as-number    inet:as-number
             |                 |     +--ro hop-type?    te-hop-type
             |                 +--:(label)
             |                    +--ro label-hop
             |                       +--ro te-label
             |                          +--ro (technology)?
             |                          |  +--:(generic)
             |                          |     +--ro generic?
             |                          |             rt-types:generalized-label
             |                          +--ro direction?
             |                                  te-label-direction
             +--ro oper-status?
             |       te-types:te-oper-status
             +--ro geolocation
             |  +--ro altitude?    int64
             |  +--ro latitude?    geographic-coordinate-degree
             |  +--ro longitude?   geographic-coordinate-degree
             +--ro statistics
             |  +--ro discontinuity-time?         yang:date-and-time
             |  +--ro tunnel-termination-point
             |  |  +--ro disables?             yang:counter32
             |  |  +--ro enables?              yang:counter32
             |  |  +--ro maintenance-clears?   yang:counter32
             |  |  +--ro maintenance-sets?     yang:counter32
             |  |  +--ro modifies?             yang:counter32
             |  |  +--ro downs?                yang:counter32
             |  |  +--ro ups?                  yang:counter32
             |  |  +--ro in-service-clears?    yang:counter32
             |  |  +--ro in-service-sets?      yang:counter32
             |  +--ro local-link-connectivity
             |     +--ro creates?    yang:counter32
             |     +--ro deletes?    yang:counter32
             |     +--ro disables?   yang:counter32
             |     +--ro enables?    yang:counter32
             |     +--ro modifies?   yang:counter32
             +--rw supporting-tunnel-termination-point*
                     [node-ref tunnel-tp-ref]
                +--rw node-ref         inet:uri
                +--rw tunnel-tp-ref    binary
     augment /nw:networks/nw:network/nt:link:
       +--rw te!
          +--rw (bundle-stack-level)?
          |  +--:(bundle)
          |  |  +--rw bundled-links
          |  |     +--rw bundled-link* [sequence]
          |  |        +--rw sequence      uint32
          |  |        +--rw src-tp-ref?   leafref
          |  |        +--rw des-tp-ref?   leafref
          |  +--:(component)
          |     +--rw component-links
          |        +--rw component-link* [sequence]
          |           +--rw sequence             uint32
          |           +--rw src-interface-ref?   string
          |           +--rw des-interface-ref?   string
          +--rw te-link-template*
          |       -> ../../../../te/templates/link-template/name
          |       {template}?
          +--rw te-link-attributes
          |  +--rw access-type?
          |  |       te-types:te-link-access-type
          |  +--rw external-domain
          |  |  +--rw network-ref?
          |  |  |       -> /nw:networks/network/network-id
          |  |  +--rw remote-te-node-id?      te-types:te-node-id
          |  |  +--rw remote-te-link-tp-id?   te-types:te-tp-id
          |  +--rw is-abstract?                      empty
          |  +--rw name?                             string
          |  +--rw underlay {te-topology-hierarchy}?
          |  |  +--rw enabled?                     boolean
          |  |  +--rw primary-path
          |  |  |  +--rw network-ref?
          |  |  |  |       -> /nw:networks/network/network-id
          |  |  |  +--rw path-element* [path-element-id]
          |  |  |     +--rw path-element-id              uint32
          |  |  |     +--rw (type)?
          |  |  |        +--:(numbered-node-hop)
          |  |  |        |  +--rw numbered-node-hop
          |  |  |        |     +--rw node-id     te-node-id
          |  |  |        |     +--rw hop-type?   te-hop-type
          |  |  |        +--:(numbered-link-hop)
          |  |  |        |  +--rw numbered-link-hop
          |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |        |     +--rw hop-type?     te-hop-type
          |  |  |        |     +--rw direction?    te-link-direction
          |  |  |        +--:(unnumbered-link-hop)
          |  |  |        |  +--rw unnumbered-link-hop
          |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |        |     +--rw node-id       te-node-id
          |  |  |        |     +--rw hop-type?     te-hop-type
          |  |  |        |     +--rw direction?    te-link-direction
          |  |  |        +--:(as-number)
          |  |  |        |  +--rw as-number-hop
          |  |  |        |     +--rw as-number    inet:as-number
          |  |  |        |     +--rw hop-type?    te-hop-type
          |  |  |        +--:(label)
          |  |  |           +--rw label-hop
          |  |  |              +--rw te-label
          |  |  |                 +--rw (technology)?
          |  |  |                 |  +--:(generic)
          |  |  |                 |     +--rw generic?
          |  |  |                 |             rt-types:generalized-label
          |  |  |                 +--rw direction?
          |  |  |                         te-label-direction
          |  |  +--rw backup-path* [index]
          |  |  |  +--rw index           uint32
          |  |  |  +--rw network-ref?
          |  |  |  |       -> /nw:networks/network/network-id
          |  |  |  +--rw path-element* [path-element-id]
          |  |  |     +--rw path-element-id              uint32
          |  |  |     +--rw (type)?
          |  |  |        +--:(numbered-node-hop)
          |  |  |        |  +--rw numbered-node-hop
          |  |  |        |     +--rw node-id     te-node-id
          |  |  |        |     +--rw hop-type?   te-hop-type
          |  |  |        +--:(numbered-link-hop)
          |  |  |        |  +--rw numbered-link-hop
          |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |        |     +--rw hop-type?     te-hop-type
          |  |  |        |     +--rw direction?    te-link-direction
          |  |  |        +--:(unnumbered-link-hop)
          |  |  |        |  +--rw unnumbered-link-hop
          |  |  |        |     +--rw link-tp-id    te-tp-id
          |  |  |        |     +--rw node-id       te-node-id
          |  |  |        |     +--rw hop-type?     te-hop-type
          |  |  |        |     +--rw direction?    te-link-direction
          |  |  |        +--:(as-number)
          |  |  |        |  +--rw as-number-hop
          |  |  |        |     +--rw as-number    inet:as-number
          |  |  |        |     +--rw hop-type?    te-hop-type
          |  |  |        +--:(label)
          |  |  |           +--rw label-hop
          |  |  |              +--rw te-label
          |  |  |                 +--rw (technology)?
          |  |  |                 |  +--:(generic)
          |  |  |                 |     +--rw generic?
          |  |  |                 |             rt-types:generalized-label
          |  |  |                 +--rw direction?
          |  |  |                         te-label-direction
          |  |  +--rw protection-type?             identityref
          |  |  +--rw tunnel-termination-points
          |  |  |  +--rw source?        binary
          |  |  |  +--rw destination?   binary
          |  |  +--rw tunnels
          |  |     +--rw sharing?   boolean
          |  |     +--rw tunnel* [tunnel-name]
          |  |        +--rw tunnel-name    string
          |  |        +--rw sharing?       boolean
          |  +--rw admin-status?
          |  |       te-types:te-admin-status
          |  +--rw link-index?                       uint64
          |  +--rw administrative-group?
          |  |       te-types:admin-groups
          |  +--rw interface-switching-capability*
          |  |       [switching-capability encoding]
          |  |  +--rw switching-capability    identityref
          |  |  +--rw encoding                identityref
          |  |  +--rw max-lsp-bandwidth* [priority]
          |  |     +--rw priority        uint8
          |  |     +--rw te-bandwidth
          |  |        +--rw (technology)?
          |  |           +--:(generic)
          |  |              +--rw generic?   te-bandwidth
          |  +--rw label-restrictions
          |  |  +--rw label-restriction* [index]
          |  |     +--rw restriction?    enumeration
          |  |     +--rw index           uint32
          |  |     +--rw label-start
          |  |     |  +--rw te-label
          |  |     |     +--rw (technology)?
          |  |     |     |  +--:(generic)
          |  |     |     |     +--rw generic?
          |  |     |     |             rt-types:generalized-label
          |  |     |     +--rw direction?       te-label-direction
          |  |     +--rw label-end
          |  |     |  +--rw te-label
          |  |     |     +--rw (technology)?
          |  |     |     |  +--:(generic)
          |  |     |     |     +--rw generic?
          |  |     |     |             rt-types:generalized-label
          |  |     |     +--rw direction?       te-label-direction
          |  |     +--rw label-step
          |  |     |  +--rw (technology)?
          |  |     |     +--:(generic)
          |  |     |        +--rw generic?   int32
          |  |     +--rw range-bitmap?   yang:hex-string
          |  +--rw link-protection-type?             identityref
          |  +--rw max-link-bandwidth
          |  |  +--rw te-bandwidth
          |  |     +--rw (technology)?
          |  |        +--:(generic)
          |  |           +--rw generic?   te-bandwidth
          |  +--rw max-resv-link-bandwidth
          |  |  +--rw te-bandwidth
          |  |     +--rw (technology)?
          |  |        +--:(generic)
          |  |           +--rw generic?   te-bandwidth
          |  +--rw unreserved-bandwidth* [priority]
          |  |  +--rw priority        uint8
          |  |  +--rw te-bandwidth
          |  |     +--rw (technology)?
          |  |        +--:(generic)
          |  |           +--rw generic?   te-bandwidth
          |  +--rw te-default-metric?                uint32
          |  +--rw te-delay-metric?                  uint32
          |  +--rw te-igp-metric?                    uint32
          |  +--rw te-srlgs
          |  |  +--rw value*   te-types:srlg
          |  +--rw te-nsrlgs {nsrlg}?
          |     +--rw id*   uint32
          +--ro oper-status?                   te-types:te-oper-status
          +--ro is-transitional?               empty
          +--ro information-source?            te-info-source
          +--ro information-source-instance?   string
          +--ro information-source-state
          |  +--ro credibility-preference?    uint16
          |  +--ro logical-network-element?   string
          |  +--ro network-instance?          string
          |  +--ro topology
          |     +--ro link-ref?      leafref
          |     +--ro network-ref?   -> /nw:networks/network/network-id
          +--ro information-source-entry*
          |       [information-source information-source-instance]
          |  +--ro information-source                te-info-source
          |  +--ro information-source-instance       string
          |  +--ro information-source-state
          |  |  +--ro credibility-preference?    uint16
          |  |  +--ro logical-network-element?   string
          |  |  +--ro network-instance?          string
          |  |  +--ro topology
          |  |     +--ro link-ref?      leafref
          |  |     +--ro network-ref?
          |  |             -> /nw:networks/network/network-id
          |  +--ro link-index?                       uint64
          |  +--ro administrative-group?
          |  |       te-types:admin-groups
          |  +--ro interface-switching-capability*
          |  |       [switching-capability encoding]
          |  |  +--ro switching-capability    identityref
          |  |  +--ro encoding                identityref
          |  |  +--ro max-lsp-bandwidth* [priority]
          |  |     +--ro priority        uint8
          |  |     +--ro te-bandwidth
          |  |        +--ro (technology)?
          |  |           +--:(generic)
          |  |              +--ro generic?   te-bandwidth
          |  +--ro label-restrictions
          |  |  +--ro label-restriction* [index]
          |  |     +--ro restriction?    enumeration
          |  |     +--ro index           uint32
          |  |     +--ro label-start
          |  |     |  +--ro te-label
          |  |     |     +--ro (technology)?
          |  |     |     |  +--:(generic)
          |  |     |     |     +--ro generic?
          |  |     |     |             rt-types:generalized-label
          |  |     |     +--ro direction?       te-label-direction
          |  |     +--ro label-end
          |  |     |  +--ro te-label
          |  |     |     +--ro (technology)?
          |  |     |     |  +--:(generic)
          |  |     |     |     +--ro generic?
          |  |     |     |             rt-types:generalized-label
          |  |     |     +--ro direction?       te-label-direction
          |  |     +--ro label-step
          |  |     |  +--ro (technology)?
          |  |     |     +--:(generic)
          |  |     |        +--ro generic?   int32
          |  |     +--ro range-bitmap?   yang:hex-string
          |  +--ro link-protection-type?             identityref
          |  +--ro max-link-bandwidth
          |  |  +--ro te-bandwidth
          |  |     +--ro (technology)?
          |  |        +--:(generic)
          |  |           +--ro generic?   te-bandwidth
          |  +--ro max-resv-link-bandwidth
          |  |  +--ro te-bandwidth
          |  |     +--ro (technology)?
          |  |        +--:(generic)
          |  |           +--ro generic?   te-bandwidth
          |  +--ro unreserved-bandwidth* [priority]
          |  |  +--ro priority        uint8
          |  |  +--ro te-bandwidth
          |  |     +--ro (technology)?
          |  |        +--:(generic)
          |  |           +--ro generic?   te-bandwidth
          |  +--ro te-default-metric?                uint32
          |  +--ro te-delay-metric?                  uint32
          |  +--ro te-igp-metric?                    uint32
          |  +--ro te-srlgs
          |  |  +--ro value*   te-types:srlg
          |  +--ro te-nsrlgs {nsrlg}?
          |     +--ro id*   uint32
          +--ro recovery
          |  +--ro restoration-status?   te-types:te-recovery-status
          |  +--ro protection-status?    te-types:te-recovery-status
          +--ro underlay {te-topology-hierarchy}?
          |  +--ro dynamic?     boolean
          |  +--ro committed?   boolean
          +--ro statistics
             +--ro discontinuity-time?                yang:date-and-time
             +--ro disables?                          yang:counter32
             +--ro enables?                           yang:counter32
             +--ro maintenance-clears?                yang:counter32
             +--ro maintenance-sets?                  yang:counter32
             +--ro modifies?                          yang:counter32
             +--ro downs?                             yang:counter32
             +--ro ups?                               yang:counter32
             +--ro fault-clears?                      yang:counter32
             +--ro fault-detects?                     yang:counter32
             +--ro protection-switches?               yang:counter32
             +--ro protection-reverts?                yang:counter32
             +--ro restoration-failures?              yang:counter32
             +--ro restoration-starts?                yang:counter32
             +--ro restoration-successes?             yang:counter32
             +--ro restoration-reversion-failures?    yang:counter32
             +--ro restoration-reversion-starts?      yang:counter32
             +--ro restoration-reversion-successes?   yang:counter32
     augment /nw:networks/nw:network/nw:node/nt:termination-point:
       +--rw te-tp-id?   te-types:te-tp-id
       +--rw te!
          +--rw admin-status?
          |       te-types:te-admin-status
          +--rw name?                             string
          +--rw interface-switching-capability*
          |       [switching-capability encoding]
          |  +--rw switching-capability    identityref
          |  +--rw encoding                identityref
          |  +--rw max-lsp-bandwidth* [priority]
          |     +--rw priority        uint8
          |     +--rw te-bandwidth
          |        +--rw (technology)?
          |           +--:(generic)
          |              +--rw generic?   te-bandwidth
          +--rw inter-domain-plug-id?             binary
          +--rw inter-layer-lock-id*              uint32
          +--ro oper-status?
          |       te-types:te-oper-status
          +--ro geolocation
             +--ro altitude?    int64
             +--ro latitude?    geographic-coordinate-degree
             +--ro longitude?   geographic-coordinate-degree

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

Модуль YANG ietf-te-topology, заданный в разделе 7, предназначен для использования с реализациями, поддерживающими архитектуру хранилищ данных управления сетью (Network Management Datastore Architecture или NMDA), определённую в [RFC8342]. Чтобы модель могли использовать реализации без поддержки NMDA, ниже определён модуль ietf-te-topology-state в качестве модели состояния, отражающей модуль ietf-te-topology. Однако все узлы данных в модели ietf-te-topology-state являются не настраиваемыми, они приведены для представления применённой конфигурации или производных рабочих состояний.

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

Структура модуль ietf-te-topology-state отражает структуру ietf-te-topology, поэтому дерево YANG для модуля ietf-te-topology-state не приведено.

B.1.Модуль YANG для состояния топологии TE

Модуль ссылается на [RFC6001], [RFC8345], [RFC8776].

   <CODE BEGINS> file "ietf-te-topology-state@2020-08-06.yang"
   module ietf-te-topology-state {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-state";
     prefix tet-s;

     import ietf-te-types {
       prefix te-types;
       reference
         "RFC 8776: Common YANG Data Types for Traffic Engineering";
     }
     import ietf-te-topology {
       prefix tet;
       reference
         "RFC 8795: YANG Data Model for Traffic Engineering (TE)
          Topologies";
     }
     import ietf-network-state {
       prefix nw-s;
       reference
         "RFC 8345: A YANG Data Model for Network Topologies";
     }
     import ietf-network-topology-state {
       prefix nt-s;
       reference
         "RFC 8345: A YANG Data Model for Network Topologies";
     }

     organization
       "IETF Traffic Engineering Architecture and Signaling (TEAS)
        Working Group";
     contact
       "WG Web:   <https://datatracker.ietf.org/wg/teas/> 
        WG List:  <mailto:teas@ietf.org> 

        Editor:   Xufeng Liu
                  <mailto:xufeng.liu.ietf@gmail.com> 

        Editor:   Igor Bryskin
                  <mailto:i_bryskin@yahoo.com> 

        Editor:   Vishnu Pavan Beeram
                  <mailto:vbeeram@juniper.net> 

        Editor:   Tarek Saad
                  <mailto:tsaad@juniper.net> 

        Editor:   Himanshu Shah
                  <mailto:hshah@ciena.com> 

        Editor:   Oscar Gonzalez de Dios
                  <mailto:oscar.gonzalezdedios@telefonica.com>"; 
     description
       "Этот модуль YANG задаёт модель состояния топологии TE.

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

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

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

     revision 2020-08-06 {
       description
         "Исходный выпуск.";
       reference
         "RFC 8795: YANG Data Model for Traffic Engineering (TE)
          Topologies";
     }

     /*
      * Группировки
      */

     grouping te-node-connectivity-matrix-attributes {
       description
         "Ссылки на точку завершения в записи матрицы связности.";
       container from {
         description
           "Ссылка на LTP источника.";
         leaf tp-ref {
           type leafref {
             path "../../../../../../nt-s:termination-point/nt-s:tp-id";
           }
           description
             "Относительная ссылка на точку завершения.";
         }
         uses te-types:label-set-info;
       }
       container to {
         description
           "Ссылка LTP назначения.";
         leaf tp-ref {
           type leafref {
             path "../../../../../../nt-s:termination-point/nt-s:tp-id";
           }
           description
             "Относительная ссылка на точку завершения.";
         }
         uses te-types:label-set-info;
       }
       uses tet:connectivity-matrix-entry-path-attributes;
     }
     // Атрибуты матрицы связности узла TE.

     grouping te-node-tunnel-termination-point-llc-list {
       description
         "Список связности по локальным каналам (LLCL) точки завершения
          туннеля (TTP) на узле TE.";
       list local-link-connectivity {
         key "link-tp-ref";
         description
           "Возможности завершения между TTP и LTP. Эти сведения могут
            служить для расчёта пути туннеля. Дескрипторы настройки
            возможностей (IACD, RFC 6001) на каждом LTP можно вывести
            из этого списка.";
         reference
           "RFC 6001: Generalized MPLS (GMPLS) Protocol Extensions
            for Multi-Layer and Multi-Region Networks (MLN/MRN)";
         leaf link-tp-ref {
           type leafref {
             path "../../../../../nt-s:termination-point/nt-s:tp-id";
           }
           description
             "LTP.";
         }
         uses te-types:label-set-info;
         uses tet:connectivity-matrix-entry-path-attributes;
       }
       // Связность по локальным каналам.
     }
     // Список LLCL точки завершения туннеля на узле TE.

     /*
      * Узлы данных
      */

     augment "/nw-s:networks/nw-s:network/nw-s:network-types" {
       description
         "Новый тип сети для топологии TE.";
       container te-topology {
         presence "Топология TE.";
         description
           "Присутствие указывает тип топологии TE.";
       }
     }

     augment "/nw-s:networks" {
       description
         "Параметры дополнения для топологий TE.";
       uses tet:te-topologies-augment;
     }

     augment "/nw-s:networks/nw-s:network" {
       when 'nw-s:network-types/tet-s:te-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с типом топологии TE.";
       }
       description
         "Параметры конфигурации для топологии TE.";
       uses tet:te-topology-augment;
     }

     augment "/nw-s:networks/nw-s:network/nw-s:node" {
       when '../nw-s:network-types/tet-s:te-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с типом топологии TE.";
       }
       description
         "Параметры конфигурации для TE на уровне узла.";
       leaf te-node-id {
         type te-types:te-node-id;
         description
           "Идентификатор узла в топологии TE. Узел специфичен для
            топологии, к которой он относится.";
       }
       container te {
         must '../te-node-id' {
           description
             "Узел te-node-id является обязательным.";
         }
         must 'count(../nw-s:supporting-node)<=1' {
           description
             "Для узла в топологии TE не может быть более одного 
              поддерживающего узла. При абстрагировании нескольких
              узлов используется поле underlay-topology.";
         }
         presence "Поддержка TE.";
         description
           "Указывает поддержку TE.";
         uses tet:te-node-augment;
       }
     }

     augment "/nw-s:networks/nw-s:network/nt-s:link" {
       when '../nw-s:network-types/tet-s:te-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с типом топологии TE.";
       }
       description
         "Конфигурационные параметры TE на уровне канала.";
       container te {
         must 'count(../nt-s:supporting-link)<=1' {
           description
             "Для канала в топологии TE не может быть более одного
              поддерживающего канала. Если абстрагируется несколько 
              путей, применяется базовый канал.";
         }
         presence "Поддержка TE.";
         description
           "Указывает поддержку TE.";
         uses tet:te-link-augment;
       }
     }

     augment "/nw-s:networks/nw-s:network/nw-s:node/"
           + "nt-s:termination-point" {
       when '../../nw-s:network-types/tet-s:te-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с типом топологии TE.";
       }
       description
         "Конфигурационные параметры TE на уровне точки завершения.";
       uses tet:te-termination-point-augment;
     }

     augment "/nw-s:networks/nw-s:network/nt-s:link/te/"
           + "bundle-stack-level/bundle/bundled-links/bundled-link" {
       when '../../../../nw-s:network-types/tet-s:te-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с типом топологии TE.";
       }
       description
         "Augmentation for a TE bundled link.";
       leaf src-tp-ref {
         type leafref {
           path "../../../../../nw-s:node[nw-s:node-id = "
              + "current()/../../../../nt-s:source/"
              + "nt-s:source-node]/"
              + "nt-s:termination-point/nt-s:tp-id";
           require-instance true;
         }
         description
           "Ссылка на другую точку завершения TE на том же
            узле-источнике.";
       }
       leaf des-tp-ref {
         type leafref {
           path "../../../../../nw-s:node[nw-s:node-id = "
              + "current()/../../../../nt-s:destination/"
              + "nt-s:dest-node]/"
              + "nt-s:termination-point/nt-s:tp-id";
           require-instance true;
         }
         description
           "Ссылка на другую точку завершения TE на том же
            узле-источнике.";
       }
     }

     augment "/nw-s:networks/nw-s:network/nw-s:node/te/"
           + "information-source-entry/connectivity-matrices/"
           + "connectivity-matrix" {
       when '../../../../../nw-s:network-types/tet-s:te-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с типом топологии TE.";
       }
       description
         "Дополнение для матрицы связности узла TE.";
       uses te-node-connectivity-matrix-attributes;
     }

     augment "/nw-s:networks/nw-s:network/nw-s:node/te/"
           + "te-node-attributes/connectivity-matrices/"
           + "connectivity-matrix" {
       when '../../../../../nw-s:network-types/tet-s:te-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с типом топологии TE.";
       }
       description
         "Дополнение для матрицы связности узла TE.";
       uses te-node-connectivity-matrix-attributes;
     }

     augment "/nw-s:networks/nw-s:network/nw-s:node/te/"
           + "tunnel-termination-point/local-link-connectivities" {
       when '../../../../nw-s:network-types/tet-s:te-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с типом топологии TE.";
       }
       description
         "Дополнение для связности узла TE по локальным каналам 
          TTP LLC.";
       uses te-node-tunnel-termination-point-llc-list;
     }
   }
   <CODE ENDS>

Приложение C. Пример для связанного с технологией дополнения

В этом приложении представлен пример модуля YANG, определяющего связанную с технологией модель топологии TE для примера топологии, описанного в разделе 6.

Модуль ссылается на [RFC8345].

   module example-topology {
     yang-version 1.1;
     namespace "https://example.com/example-topology";
     prefix ex-topo;

     import ietf-network {
       prefix nw;
       reference
         "RFC 8345: A YANG Data Model for Network Topologies";
     }
     import ietf-network-topology {
       prefix nt;
       reference
         "RFC 8345: A YANG Data Model for Network Topologies";
     }
     import ietf-te-topology {
       prefix tet;
       reference
         "RFC 8795: YANG Data Model for Traffic Engineering (TE)
          Topologies";
     }

     organization
       "Пример организации";
     contact
       "Editor: Автор примера";
     description
       "Этот модуль определяет модель данных топологии для примера
        технологии.";

     revision 2020-06-29 {
       description
         "Исходный выпуск.";
       reference
         "Ссылка на пример";
     }

     /*
      * Узлы данных
      */

     augment "/nw:networks/nw:network/nw:network-types/"
           + "tet:te-topology" {
       description
         "Дополнение для типов сетей с целью задания типа
          примера топологии.";
       container example-topology {
         presence "Добавляет новый тип сети для примера топологии.";
         description
           "Присутствие указывает тип примера топологии.";
       }
     }

     augment "/nw:networks/nw:network/tet:te" {
       when '../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       description
         "Дополнение для топологии сети.";
       container attributes {
         description
           "Атрибуты для примера технологии.";
         leaf attribute-1 {
           type uint8;
           description
             "Атрибут 1 для примера технологии.";
         }
       }
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes" {
       when '../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       description
         "Дополнение для атрибутов узла.";
       container attributes {
         description
           "Атрибуты для примера технологии.";
         leaf attribute-2 {
           type uint8;
           description
             "Атрибут 2 для примера технологии.";
         }
       }
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices" {
       when '../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       description
         "Дополнение для матриц связности узла.";
       container attributes {
         description
           "Атрибуты для примера технологии.";
         leaf attribute-3 {
           type uint8;
           description
             "Атрибут 3 для примера технологии.";
         }
       }
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix" {
       when '../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       description
         "Дополнение для матриц связности узла.";
       container attributes {
         description
           "Атрибуты для примера технологии.";
         leaf attribute-3 {
           type uint8;
           description
             "Атрибут 3 для примера технологии.";
         }
       }
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point" {
       when '../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       description
         " Дополнение для TTP.";
       container attributes {
         description
           "Атрибуты для примера технологии.";
         leaf attribute-4 {
           type uint8;
           description
             "Атрибут 4 для примера технологии.";
         }
       }
     }

     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
           + "tet:te" {
       when '../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       description
         "Дополнение для LTP.";
       container attributes {
         description
           "Атрибуты для примера технологии.";
         leaf attribute-5 {
           type uint8;
           description
             "Атрибут 5 для примера технологии.";
         }
       }
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:te-link-attributes" {
       when '../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       description
         "Дополнение для атрибутов канала.";
       container attributes {
         description
           "Атрибуты для примера технологии.";
         leaf attribute-6 {
           type uint8;
           description
             "Атрибут 6 для примера технологии.";
         }
       }
     }

     /*
      * Дополнения для пропускной способности TE.
      */

     augment "/nw:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:max-link-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:max-resv-link-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:unreserved-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
       when '../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/"
           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
       when '../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
       when '../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/"
           + "tet:path-constraints/tet:te-bandwidth/tet:technology" {
       when '../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:client-layer-adaptation/tet:switching-capability/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/tet:path-constraints/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/"
           + "tet:local-link-connectivity/tet:path-constraints/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:te-link-attributes/"
           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:te-link-attributes/"
           + "tet:max-link-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:te-link-attributes/"
           + "tet:max-resv-link-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:information-source-entry/"
           + "tet:interface-switching-capability/tet:max-lsp-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:information-source-entry/"
           + "tet:max-link-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:information-source-entry/"
           + "tet:max-resv-link-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:information-source-entry/"
           + "tet:unreserved-bandwidth/"
           + "tet:te-bandwidth/tet:technology" {
       when '../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
           + "tet:te/tet:interface-switching-capability/"
           + "tet:max-lsp-bandwidth/tet:te-bandwidth/tet:technology" {
       when '../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf bandwidth-1 {
             type uint32;
             description
               "Пропускная способность 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для пропускной способности TE.";
     }

     /*
      * Дополнения для метки TE.
      */

     augment "/nw:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-start/tet:te-label/tet:technology" {
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-end/tet:te-label/tet:technology" {
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     /* Ниже атрибутов и матриц связности узла TE. */

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-start/tet:te-label/tet:technology" {
       when '../../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-end/tet:te-label/tet:technology" {
       when '../../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:path-properties/tet:path-route-objects/"
           + "tet:path-route-object/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     /* Under te-node-attributes/.../connectivity-matrix */

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/tet:from/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-start/"
           + "tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/tet:from/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-end/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/tet:to/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-start/"
           + "tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/tet:to/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-end/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/"
           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/"
           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/"
           + "tet:path-properties/tet:path-route-objects/"
           + "tet:path-route-object/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     /* Ниже записи источника инаформации и матриц связности */

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-start/tet:te-label/tet:technology" {
       when '../../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-end/tet:te-label/tet:technology" {
       when '../../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:path-properties/tet:path-route-objects/"
           + "tet:path-route-object/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     /* Under information-source-entry/.../connectivity-matrix */

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/tet:from/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-start/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/tet:from/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-end/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/tet:to/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-start/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/tet:to/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-end/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/"
           + "tet:underlay/tet:primary-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/"
           + "tet:underlay/tet:backup-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix/"
           + "tet:path-properties/tet:path-route-objects/"
           + "tet:path-route-object/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     /* Ниже точки завершения туннеля и связности локального канала */

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-start/tet:te-label/"
           + "tet:technology" {
       when '../../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-end/"
           + "tet:te-label/tet:technology" {
       when '../../../../../../../../nw:network-types/tet:te-topology/'
          + 'ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/tet:underlay/"
           + "tet:primary-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/tet:underlay/"
           + "tet:backup-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/tet:path-properties/"
           + "tet:path-route-objects/tet:path-route-object/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     /* Ниже точки завершения туннеля, ..., связности  локального канала */

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/"
           + "tet:local-link-connectivity/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-start/"
           + "tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/"
           + "tet:local-link-connectivity/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-end/"
           + "tet:te-label/tet:technology" {
       when '../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/"
           + "tet:local-link-connectivity/tet:underlay/"
           + "tet:primary-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/"
           + "tet:local-link-connectivity/tet:underlay/"
           + "tet:backup-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nw:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/"
           + "tet:local-link-connectivity/tet:path-properties/"
           + "tet:path-route-objects/tet:path-route-object/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     /* Under te-link-attributes */

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:te-link-attributes/"
           + "tet:label-restrictions/tet:label-restriction/"
           + "tet:label-start/tet:te-label/tet:technology" {
       when '../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:te-link-attributes/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-end/"
           + "tet:te-label/tet:technology" {
       when '../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:te-link-attributes/tet:underlay/"
           + "tet:primary-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:te-link-attributes/tet:underlay/"
           + "tet:backup-path/tet:path-element/tet:type/"
           + "tet:label/tet:label-hop/tet:te-label/tet:technology" {
       when '../../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     /* Ниже записи источника сведений для канала TE */

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:information-source-entry/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-start/"
           + "tet:te-label/tet:technology" {
       when '../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }

     augment "/nw:networks/nw:network/nt:link/tet:te/"
           + "tet:information-source-entry/tet:label-restrictions/"
           + "tet:label-restriction/tet:label-end/"
           + "tet:te-label/tet:technology" {
       when '../../../../../../../nw:network-types/'
          + 'tet:te-topology/ex-topo:example-topology' {
         description
           "Параметры дополнения применяются лишь для сетей
            с примером типа топологии TE.";
       }
       case example {
         container example {
           description
             "Атрибуты для примера технологии.";
           leaf label-1 {
             type uint32;
             description
               "Метка 1 для примера технологии.";
           }
         }
       }
       description
         "Дополнение для метки TE.";
     }
   }

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

Авторы благодарны Lou Berger, Sue Hares, Mazen Khaddam, Cyril Margaria, Zafar Ali за дискуссии по разработке и полезные предложения.

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

Sergio Belotti
Nokia
Email: sergio.belotti@nokia.com
 
Dieter Beller
Nokia
Email: Dieter.Beller@nokia.com
 
Carlo Perocchio
Ericsson
Email: carlo.perocchio@ericsson.com
 
Italo Busi
Huawei Technologies
Email: Italo.Busi@huawei.com

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

Xufeng Liu
Volta Networks
Email: xufeng.liu.ietf@gmail.com
 
Igor Bryskin
Futurewei Technologies, Inc.
Email: i_bryskin@yahoo.com
 
Vishnu Pavan Beeram
Juniper Networks
Email: vbeeram@juniper.net
 
Tarek Saad
Juniper Networks
Email: tsaad@juniper.net
 
Himanshu Shah
Ciena
Email: hshah@ciena.com
 
Oscar Gonzalez de Dios
Telefonica
Email: oscar.gonzalezdedios@telefonica.com

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

nmalykh@protokols.ru


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

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

3Shared Risk Link Group – группа общего риска.

4Wavelength Division Multiplexing – мультиплексирование по длине волны.

5Border Gateway Protocol – Link State – протокол граничного шлюза – состояние канала.

6XML Path Language – язык путей XML.

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

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

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