RFC 7911 Advertisement of Multiple Paths in BGP

Internet Engineering Task Force (IETF)                         D. Walton
Request for Comments: 7911                              Cumulus Networks
Category: Standards Track                                      A. Retana
ISSN: 2070-1721                                                  E. Chen
                                                     Cisco Systems, Inc.
                                                              J. Scudder
                                                        Juniper Networks
                                                               July 2016

Advertisement of Multiple Paths in BGP

Анонсирование множества путей в BGP

PDF

Аннотация

Этот документ определяет расширение BGP, позволяющее анонсировать множество путей к одному адресному префиксу без неявной замены имеющихся путей новыми. Суть расширения заключается в том, что каждый путь указывается идентификатором пути (Path Identifier) в дополнение к адресному префиксу.

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

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

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

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

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

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

Спецификация BGP [RFC4271] определяет процесс передачи обновлений (Update-Send) для анонсирования маршрутов, выбранных процессом принятия решений (Decision Process) для других узлов BGP. Способов анонсирования множества путей для одного адресного префикса или NLRI3 спецификация не предусматривает. Фактически маршрут с тем же NLRI, что уже был анонсирован, неявно заменяет предыдущий анонс.

Этот документ определяет расширение BGP, позволяющее анонсировать множество путей к одному адресному префиксу без неявной замены старых путей новыми. Суть расширения заключается в том, что каждый путь указывается идентификатором пути (Path Identifier) в дополнение к адресному префиксу.

Наличие дополнительных путей может помочь в снижении или предотвращении постоянных осцилляций маршрутов [RFC3345]. Это также может способствовать оптимальной маршрутизации и ускорению схождения в сетях за счет предоставления дополнительных или резервных путей, соответственно.

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

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

2. Указание пути

Как определено [RFC4271], путь представляется информацией, указанной в поле Path Attribute сообщения UPDATE. Поскольку процедуры, указанные в [RFC4271], позволяют анонсировать лишь один путь к конкретному адресному префиксу, для пути к адресному префиксу от партнера BGP этот префикс может служить ключом.

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

Назначение Path Identifier для пути узел BGP выполняет локально. Однако значения Path Identifier должны выделяться так, чтобы узел BGP мог применять пару (Prefix, Path Identifier) для однозначной идентификации пути, анонсируемого соседу. Узел BGP при дальнейшем анонсировании маршрута должен создавать свой идентификатор Path Identifier, связанный с анонсируемым маршрутом. Узел BGP, получающий маршрут, не должен предполагать какую-либо конкретную семантику идентификатора пути.

3. Кодирование расширенных NLRI

Для передачи идентификатора пути в сообщениях UPDATE кодирование NLRI должно быть расширено путем добавления перед ним поля Path Identifier, состоящего из 4 октетов.

Например, заданное в [RFC4271] кодирование NLRI расширяется, как показано на рисунке.

+--------------------------------+
| Path Identifier (4 октета)     |
+--------------------------------+
| Length (1 октет)               |
+--------------------------------+
| Prefix (переменный размер)     |
+--------------------------------+

Использование расширенного кодирования NLRI описано в разделе 5.

4. Возможность ADD-PATH

ADD-PATH Capability представляет собой возможность BGP [RFC5492] с кодом (Capability Code) 69. Поле Capability Length является переменным, а Capability Value включает одну или более показанных на рисунке групп полей.

+------------------------------------------------+
| Address Family Identifier (2 октета)           |
+------------------------------------------------+
| Subsequent Address Family Identifier (1 октет) |
+------------------------------------------------+
| Send/Receive (1 октет)                         |
+------------------------------------------------+

Address Family Identifier (AFI) – идентификатор семейства адресов

Это поле имеет такой же смысл как в [RFC4760].

Subsequent Address Family Identifier (SAFI) – идентификатор следующего семейства адресов

Это поле имеет такой же смысл как в [RFC4760].

Send/Receive

Это поле показывает, что отправитель (a) способен принимать от партнера множество путей (1), (b) способен передавать партнерам множество путей (value 2) или (c) способен принимать и передавать (3) для <AFI, SAFI>.

При получении иного значения эту возможность следует считать не понятой и игнорировать [RFC5492].

Узел BGP, желающий указать поддержку для множества AFI/SAFI, должен делать это путем включения информации в один экземпляр ADD-PATH Capability.

5. Работа расширения

Поле Path Identifier, заданное в разделе 3, может применяться для анонсирования множества путей к одному префиксу без замены имеющихся путей новыми. Помимо добавления такой возможности, правила анонсирования маршрутов [RFC4271] не изменились. В частности, новый анонс для данного префикса с данным Path Identifier будет заменять прежний анонс для той же комбинации префикса и идентификатора пути. Если узел BGP получает сообщение для отзыва префикса с Path Identifier, который он не получал, такое сообщение следует просто игнорировать.

Для того, чтобы узел BGP мог передавать своему партнеру множество путей, этот узел BGP должен анонсировать ADD-PATH Capability с полем Send/Receive, имеющим значение 2 или 3, и должен получить от своего партнера ADD-PATH Capability с полем Send/Receive, имеющим значение 1 или 3, для соответствующей пары <AFI, SAFI>.

Узел BGP должен следовать процедурам [RFC4271] при генерации сообщений UPDATE для конкретной пары <AFI, SAFI> своему партнеру, пока не анонсировал тому ADD-PATH Capability с указанием возможности передавать множество путей для <AFI, SAFI> и не получил от этого партнера ADD-PATH Capability с указанием возможности принимать множество путей для <AFI, SAFI>. Если же партнеры согласовали между собой анонсы множества путей узел должен генерировать обновление маршрута для <AFI, SAFI> на основе комбинации адресного префикса и Path Identifier, а также использовать расширенное кодирование NLRI, описанное выше. Партнеру нужно выполнять соответствующие действия при обработке сообщений UPDATE, относящихся к определенным <AFI, SAFI>.

Узлу BGP следует включать лучший маршрут [RFC4271] при анонсировании соседу множества путей, если путь не был получен от данного соседа.

Идентификаторы пути назначаются локально и могут (но не обязаны) сохраняться при перезапуске уровня управления на узле BGP. Реализациям следует применять специальные меры, чтобы работа базового уровня пересылки на приемном узле ([RFC4724]) не нарушалась при аккуратном перезапуске сессии BGP.

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

Предложенное в этом документе расширение обеспечивает узлам BGP механизм для анонсирования множества путей в одной сессии BGP. При развертывании следует соблюдать осторожность для обеспечения согласованности маршрутизации и пересылки в сети [ADDPATH].

Единственным явным свидетельством применения кодирования, описанного в разделе 3, для конкретной сессии BGP является обмен возможностями, описанный в разделе 4. Если этот обмен прошел успешно [RFC5492], узлы BGP смогут корректно обрабатывать все сообщения BGP UPDATES, как описано в разделе 5. Однако, при использовании, например, анализатора пакетов в линии он не сможет корректно декодировать сообщения BGP UPDATE поскольку не будет иметь информации об обмене возможностями.

При развертывании на краевом маршрутизаторе провайдера или «пиринговом» маршрутизаторе, которые взаимодействуют с внешними соседями, узел BGP обычно анонсирует не более одного пути к внутренним соседям в сети. При настройке узла на анонсирование множества путей и необходимости дополнительной информации для приложения узел может применять атрибуты типа Edge_Discriminator [FAST]. Использование таких атрибутов выходит за рамки документа.

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

Агентство IANA назначило значение 69 для возможности ADD-PATH Capability, описанной в этом документе с внесением его в реестр «Capability Codes».

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

Этот документ определяет расширение BGP, позволяющее анонсировать множество путей к адресному префиксу без неявной замены имеющихся путей новыми. В результате множество путей для большого числа префиксов, получаемых узлом BGP, может поглощать ресурсы памяти узла и даже вызывать нестабильность сети, что может рассматриваться как атака на отказ служб. Отметим, что эта уязвимость не является новой и отмечена в базовой спецификации BGP [RFC4272].

Использование ADD-PATH Capability рассчитано на решение конкретных задач, относящихся, например, к предотвращению осцилляций маршрутов, вызываемых атрибутом MULTI_EXIT_DISC (MED) [STOP-OSC]. Хотя описание применений возможности ADD-PATH выходит за рамки документа, пользователям настоятельно рекомендуется проверить поведение этой возможности и ее влияние в соответствии с документом [ADDPATH].

Применимы также вопросы безопасности, относящиеся к базовой работе BGP [RFC4271].

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

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

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

[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., «A Border Gateway Protocol 4 (BGP-4)», RFC 4271, DOI 10.17487/RFC4271, January 2006, <http://www.rfc-editor.org/info/rfc4271>.

[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, «Multiprotocol Extensions for BGP-4», RFC 4760, DOI 10.17487/RFC4760, January 2007, <http://www.rfc-editor.org/info/rfc4760>.

[RFC5492] Scudder, J. and R. Chandra, «Capabilities Advertisement with BGP-4», RFC 5492, DOI 10.17487/RFC5492, February 2009, <http://www.rfc-editor.org/info/rfc5492>.

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

[ADDPATH] Uttaro, J., Francois, P., Patel, K., Haas, J., Simpson, A., and R. Fragassi, «Best Practices for Advertisement of Multiple Paths in IBGP», Work in Progress, draft-ietf-idr-add-paths-guidelines-08, April 2016.

[FAST] Mohapatra, P., Fernando, R., Filsfils, C., and R. Raszuk, «Fast Connectivity Restoration Using BGP Add-path», Work in Progress, draft-pmohapat-idr-fast-conn-restore-03, January 2013.

[RFC3345] McPherson, D., Gill, V., Walton, D., and A. Retana, «Border Gateway Protocol (BGP) Persistent Route Oscillation Condition», RFC 3345, DOI 10.17487/RFC3345, August 2002, <http://www.rfc-editor.org/info/rfc3345>.

[RFC4272] Murphy, S., «BGP Security Vulnerabilities Analysis», RFC 4272, DOI 10.17487/RFC4272, January 2006, <http://www.rfc-editor.org/info/rfc4272>.

[RFC4724] Sangli, S., Chen, E., Fernando, R., Scudder, J., and Y. Rekhter, «Graceful Restart Mechanism for BGP», RFC 4724, DOI 10.17487/RFC4724, January 2007, <http://www.rfc-editor.org/info/rfc4724>.

[STOP-OSC] Walton, D., Retana, A., Chen, E., and J. Scudder, «BGP Persistent Route Oscillation Solutions», Work in Progress, draft-ietf-idr-route-oscillation-stop-034, April 2016.

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

Авторы признательны David Cook и Naiming Shen за вклад в идею и разработку этого расширения.

Множество людей внесли полезные замечания и предложения, включая Rex Fernando, Eugene Kim, Danny McPherson, Dave Meyer, Pradosh Mohapatra, Keyur Patel, Robert Raszuk, Eric Rosen, Srihari Sangli, Dan Tappan, Mark Turner, Jeff Haas, Jay Borkenhagen, Mach Chen, Denis Ovsienko, Carlos Pignataro, Meral Shirazipour и Kathleen Moriarty.

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

Daniel Walton

Cumulus Networks

185 E. Dana Street

Mountain View, CA 94041

United States of America

Email: dwalton@cumulusnetworks.com

Alvaro Retana

Cisco Systems, Inc.

Kit Creek Rd.

Research Triangle Park, NC 27709

United States of America

Email: aretana@cisco.com

Enke Chen

Cisco Systems, Inc.

170 W. Tasman Dr.

San Jose, CA 95134

United States of America

Email: enkechen@cisco.com

John Scudder

Juniper Networks

1194 N. Mathilda Ave

Sunnyvale, CA 94089

United States of America

Email: jgs@juniper.net


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

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

nmalykh@protokols.ru

1Internet Engineering Task Force.

2Internet Engineering Steering Group.

3Network Layer Reachability Information — информация о доступности на сетевом уровне.

4Работа опубликована в RFC 7964. Прим. перев.

Рубрика: RFC | Комментарии к записи RFC 7911 Advertisement of Multiple Paths in BGP отключены

RFC 7915 IP/ICMP Translation Algorithm

Internet Engineering Task Force (IETF)                            C. Bao
Request for Comments: 7915                                         X. Li
Obsoletes: 6145                        CERNET Center/Tsinghua University
Category: Standards Track                                       F. Baker
ISSN: 2070-1721                                            Cisco Systems
                                                             T. Anderson
                                                          Redpill Linpro
                                                                 F. Gont
                                                     Huawei Technologies
                                                               June 2016

Алгоритм трансляции IP/ICMP

IP/ICMP Translation Algorithm

PDF

Аннотация

Этот документ описывает алгоритм SIIT1, который служит для преобразования между заголовками пакетов IPv4 и IPv6 (включая заголовки ICMP). Данный документ отменяет действие RFC 6145.

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

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

Документ является результатом работы Internet Engineering Task Force (IETF) и представляет согласованную точку зрения сообщества IETF. Документ был представлен к публичному рассмотрению и одобрен для публикации Internet Engineering Steering Group (IESG). Дополнительная информация о стандартах Internet представлена в разделе 2 RFC 7841.

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

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

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

Данный документ отменяет действие [RFC6145].

Предполагается, что читатели данного документа изучили и поняли модель, описанную в [RFC6144]. Реализации описанной здесь трансляции IPv4/IPv6 должны поддерживать хотя бы один алгоритм отображения адресов, как описано в разделе 6.

1.1. Модель трансляции IPv4-IPv6

Модель трансляции включает не менее двух сетевых доменов, соединенных через один или множество трансляторов IP/ICMP (XLAT), как показано на рисунке 1.

     ---------          ---------
   //        \\       //         \\
 /             +----+              \
|              |XLAT|               | XLAT - транслятор IP/ICMP
|  Домен       +----+  Домен        |
|  IPv4        |    |  IPv6         |
|              |    |               |
 \             |    |              /
  \\         //      \\          //
     --------          ---------

Рисунок 1. Модель трансляции IPv4-IPv6


Сценарии работы модели трансляции рассмотрены в [RFC6144].

1.2. Применимость и ограничения

В этом документе описаны алгоритмы преобразований пакетов между протоколами IPv4 и IPv6.

Как и в [RFC6145], функция преобразования, заданная в этом документе, не транслирует никаких опций IPv4, а также расширенных заголовков IPv6, за исключением Fragment Header.

Проблемы и алгоритмы трансляции дейтаграмм с сегментами TCP описаны в [RFC5382].

Фрагментированные пакеты IPv4 UDP, которые не включают контрольной суммы UDP (т. е., поле контрольной суммы имеет значение 0), нечасто используются в Internet и в общем случае не преобразуются транслятором IP/ICMP (параграф 4.5). Однако, если транслятор настроен на пересылку пакетов без контрольной суммы UDP, фрагментированные пакеты IPv4 UDP будет транслироваться.

Фрагментированные пакеты ICMP/ICMPv6 не будут преобразовываться трансляторами IP/ICMP.

Трансляция заголовков IP/ICMP, описанная в этом документе, совместима с требованиями к групповым заголовкам IP/ICMP. Однако групповые адреса IPv4 [RFC5771] не могут быть отображены на групповые адреса IPv6 [RFC3307] на основе правила отображения индивидуальных адресов [RFC6052]. Пример экспериментов с с отображением групповых адресом рассмотрен в [RFC6219].

1.3. Режимы с учетом и без учета состояния

Транслятор IP/ICMP может работать в двух режимах — без учета состояния (stateless) и с его учетом (stateful) [RFC6144]. В обоих случаях предполагается, что система (узел или приложение), имеющая адрес IPv4, но не имеющая адреса IPv6, взаимодействует с системой, у которой есть адрес IPv6, но нет адреса IPv4, две системы не имеют непрерывной маршрутной связности или взаимодействуют с применением маскирования адресов (hairpinning) [RFC4787] и, следовательно, требуется применять трансляцию.

В режиме, не учитывающем состояний, транслятор IP/ICMP будет преобразовывать адреса IPv4 в адреса IPv6 и наоборот, основываясь на своих конфигурационных параметрах и содержащейся в транслируемых пакетах информации. Например, для определенного в [RFC6052] транслятора по умолчанию некий заданный диапазон адресов IPv6 будет представлять системы IPv4 (преобразованные в IPv4 адреса), а системы IPv6 используют адреса (преобразуемые в IPv4 адреса), которые могут алгоритмически отображаться на подмножество адресов IPv4 из блока сервис-провайдера. В разделе 6 определены другие механизмы трансляции без учета состояний. Не учитывающий состояний транслятор не сохраняет информации о сессиях и привязках, поэтому в данном случае не требуется, чтобы все пакеты одной сессии или потока проходили через один транслятор.

В режиме с учетом состояний системы IPv4 обычно представляет конкретный диапазон адресов IPv6 (состоящий из преобразуемых в IPv4 адресов IPv6). Узлы IPv6 могут использовать любые адреса IPv6 [RFC4291], за исключением этого диапазона. Учитывающий состояния транслятор IP/ICMP постоянно поддерживает таблицу преобразований, содержащую привязки между адресами IPv4 и IPv6, а также идентификаторы транспортного уровня, используемые при трансляции пакетов. Конкретное преобразование адресов для любого данного пакета будет зависеть от привязки этого пакета к сессии или потоку. По этой причине для такой трансляции требуется прохождение всех пакетов одной сессии или потока через один транслятор.

Для успешного преобразования пакетов между протоколами IPv4 и IPv6 транслятор должен поддерживать алгоритм отображения адресов. Данный документ не задает такого алгоритма, но в разделе 6 упомянуты некоторые из возможных алгоритмов отображения.

1.4. Определение Path MTU и фрагментация

По причине различия в размерах заголовков IPv4 и IPv6 (20 и более и 40 октетов, соответственно), обработка пакетов максимального размера имеет критически важное значение для работы трансляторов IPv4/IPv6. Существует три варианта решения этой задачи — определение MTU на пути (PMTUD), фрагментация и согласование на транспортном уровне (типа опции TCP MSS2 [RFC6691]). Отметим, что транслятор должен вести себя, как маршрутизатор, т. е. должен передавать сообщения Packet Too Big в случаях, когда размер пакета превышает значение MTU на интерфейсе следующего интервала.

Работа с фрагментами и обработка сообщений ICMP Packet Too Big рассмотрены в разделах 4 и 5 данного документа. Сборка фрагментов в трансляторах с учетом соединений рассмотрена в [RFC6146].

2. Отличия от RFC 6145

Отличия данного документа от RFC 6145 включают:

  1. добавление примечаний об обработке расширенных заголовков IPv6 [Err3059], [Err3060], [Err3061] и [Err4090];

  2. исключен алгоритм, генерирующий атомарные фрагменты IPv6, по результатам анализа [ATOMIC] и спецификации [IPv6];

  3. добавлены примечания по отображению адресов без учета состояний для пакетов ICMPv6 [RFC6791];

  4. добавлены новые алгоритмы отображения адресов и обсуждение таких алгоритмов перенесено в раздел 6.

3. Соглашения

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

4. Трансляция IPv4 в IPv6

Когда транслятор IP/ICMP получает дейтаграмму IPv4, направленную получателю из домена IPv6, он преобразует в этом пакете заголовок IPv4 в заголовок IPv6. Исходный заголовок IPv4 удаляется из пакета и вместо него размещается заголовок IPv6, контрольные суммы для транспортного уровня при необходимости пересчитываются, если данный транспорт поддерживается транслятором. Данные в пакете сохраняются в неизменном виде. После этого транслятор IP/ICMP пересылает пакет в соответствии с адресом получателя IPv6.

+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|    IPv4     |                 |    IPv6     |
+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|транспортного|      ===>       |  фрагмента  |
|   уровня    |                 | (если нужен)|
+-------------+                 +-------------+
|             |                 |  Заголовок  |
~   Данные    ~                 |транспортного|
|             |                 |   уровня    |
+-------------+                 +-------------+
                                |             |
                                ~   Данные    ~
                                |             |
                                +-------------+

Рисунок 2. Трансляция IPv4 в IPv6


Механизм определения Path MTU является обязательным для IPv6, но не обязателен в IPv4. Маршрутизаторы IPv6 никогда не фрагментируют пакеты, это может делать только отправитель.

Когда узел IPv4 определяет значение MTU для пути (устанавливая флаг DF3 в заголовке), процедура может быть сквозной (т. е., включающей транслятор). В таких случаях любой из маршрутизаторов IPv4 и IPv6 (включая транслятор) может передать отправителю сообщение ICMP Packet Too Big. Если такое сообщение передает маршрутизатор IPv6, оно будет проходить через транслятор, который преобразует сообщение об ошибке ICMPv6 в понятную отправителю IPv4 форму. Благодаря этому, заголовок IPv6 Fragment Header включается только в тех случаях, когда пакет IPv4 уже был фрагментирован.

Однако в тех случаях, когда отправитель IPv4 не устанавливает бит DF, трянслятор должен гарантировать, что размер пакета не превышает MTU на стороне IPv6. Это выполняется путем фрагментирования пакетов IPv4 (с добавлением заголовков Fragment Header) так, чтобы фрагменты помещались в 1280-байтовые пакеты IPv6 (минимальное значение IPv6 MTU). Было показано, что заголовки IPv6 Fragment Header могут вызывать сложности при работе по причине ограниченной поддержки фрагментации на межсетевых экранах и т. п. В средах, где сеть и транслятор принадлежат (обслуживаются) одной организации, трансляторы должны обеспечивать сетевым администраторам возможность настройки порогового значения минимума для IPv6 MTU в соответствии с реальным IPv6 MTU в сети (больше 1280 байтов). Это позволит снизить вероятность применения заголовков Fragment Header.

Если отправитель IPv4 не устанавливает флаг DF, транслятору недопустимо включать заголовок Fragment Header для нефрагментированных пакетов IPv6.

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

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

Трансляторам следует обеспечивать передачу пакетов одного потока в соответствии с порядком их поступления на данный транслятор.

4.1. Трансляция заголовков IPv4 в заголовки IPv6

Если бит DF не установлен в пакете IPv4 и размер транслированного пакета IPv6 превышает заданное пользователем значение (обычно называемое lowest-ipv6-mtu, которое по умолчанию составляет 1280 байтов), пакет следует фрагментировать так, чтобы получаемые в результате пакеты IPv6 (с заголовком Fragment Header для каждого фрашмента) не превышали в размере lowest-ipv6-mtu. Например, если пакеты фрагментируются до трансляции, размер фрагментов IPv4 вместе с их заголовками не должен превышать 1232 байтов (1280 минус 40 байтов на заголовок IPv6 и 8 байтов для Fragment Header). Транслятор должен обеспечивать возможность настройки порогового значения IPv6 MTU для установки значений более 1280 в тех случаях, когда администратору известно реальное значение IPv6 MTU. После этого фрагменты транслируются независимо с использованием описанной ниже логики.

Если бит DF установлен и значение MTU на интерфейсе следующего интервала меньше общего размера пакета IPv4 + 20, транслятор должен передать сообщение ICMPv4 Fragmentation Needed по адресу отправителя IPv4.

Для полей IPv6 значения устанавливаются, как описано ниже.

Version

6.

Traffic Class

По умолчанию копируется из октета IP TOS4. В соответствии с [RFC2474] значение битов этого поля идентично в IPv4 и IPv6. Однако в некоторых средах IPv4 поле типа обслуживания использует старую семантику Type Of Service and Precedence. Реализациям трансляторов следует поддерживать опцию для игнорирования IPv4 TOS и установки с поле IPv6 TC5 значения 0. Кроме того, для трансляторов на административных границах могут применяться фильтры и изменения [RFC2475].

Flow Label

0 (все биты равны 0).

Payload Length

Значение общего размера из заголовка IPv4 за вычетом размера самого заголовка IPv4 и опций (при их наличии).

Next Header

Для ICMPv4 (1) значение меняется на ICMPv6 (58), в остальных случаях должно включать значение поля протокола из заголовка IPv4.

Hop Limit

Предельное число интервалов пересылки определяется по значению TTL в заголовке IPv4. Поскольку транслятор является маршрутизатором при пересылке пакетов от него требуется уменьшить на 1 значение IPv4 TTL (до трансляции) или IPv6 Hop Limit (после трансляции). В процессе декрементирования TTL или Hop Limit транслятор (как любой маршрутизатор) должен проверить отличие значения поля и передать сообщение об ошибке ICMPv4 TTL Exceeded или ICMPv6 Hop Limit Exceeded, если значение окажется нулевым.

Source Address

Отображается на адрес IPv6 с использованием алгоритмов, представленных в разделе 6.

Если транслятор получает пакет с недопустимым адресом отправителя (например, 0.0.0.0, 127.0.0.1 и т. п.), ему следует отбросить такой пакет без уведомления отправителя (как описано в параграфе 5.3.7 [RFC1812]). Отметим, что при трансляции сообщений ICMPv4 об ошибках ICMPv6 недопустимые адреса будут преобразовываться в целях поиска неполадок.

Destination Address

Отображается на адрес IPv6 с использованием алгоритмов, представленных в разделе 6.

При наличии в пакете каких-либо опций IPv4, транслятор должен игнорировать их и выполнять обычную обработку пакетов без попыток трансляции опций. Однако при получении пакета с действующей опцией source route такой пакет должен отбрасываться, а его отправителю следует возвращать сообщение ICMPv4 адресат не доступен, Source Route Failed (Type 3, Code 5).

Если требуется добавление заголовка Fragment Header (пакет является фрагментом или флаг DF не установлен, а размер пакета превышает минимальное значение IPv6 MTU, заданное в конфигурации транслятора), при установке полей используется ряд исключений, описанных ниже.

Поля IPv6

Payload Length

Значение общего размера пакета из заголовка IPv4 за вычетом размера самого заголовка IPv4 и опций (при их наличии) + 8 байтов для Fragment Header.

Next Header

Fragment Header (44).

Поля Fragment Header

Next Header

Для ICMPv4 (1) значение меняется на ICMPv6 (58), в остальных случаях должно включать значение поля протокола из заголовка IPv4.

Fragment Offset

Копируется значение поля Fragment Offset из заголовка IPv4.

M flag

Копируется бит More Fragments из заголовка IPv4.

Identification

Младшие 16 битов копируются из поля Identification в заголовке IPv4, а старшие 16 битов устанавливаются в 0.

4.2. Трансляция заголовков ICMPv4 в заголовки ICMPv6

При трансляции сообщений ICMPv4 требуется расчет контрольной суммы ICMPv6, поскольку в ICMPv6, в отличие от ICMPv4, используется контрольная сумма псевдо-заголовка, как в UDP и TCP.

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

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

Запросы ICMPv4

Echo и Echo Reply (Type 8 и Type 0)

Значения Type меняются на 128 и 129, соответственно, а контрольная сумма пересчитывается заново для учета изменения типа и добавления псевдо-заголовка ICMPv6.

Information Request/Reply (Type 15 и Type 16)

Не используется в ICMPv6. Отбрасывание без уведомления.

Timestamp and Timestamp Reply (Type 13 and Type 14)

Не используется в ICMPv6. Отбрасывание без уведомления.

Address Mask Request/Reply (Type 17 and Type 18)

Не используется в ICMPv6. Отбрасывание без уведомления.

ICMP Router Advertisement (Type 9)

Сообщение single-hop6. Отбрасывание без уведомления.

ICMP Router Solicitation (Type 10)

Сообщение single-hop. Отбрасывание без уведомления.

Unknown ICMPv4 types

Отбрасывание без уведомления.

Сообщения IGMP

Хотя сообщения MLD7, определенные в [RFC2710], [RFC3590] и [RFC3810] являются логическими копиями IPv6 для сообщений IPv4 IGMP, все «нормальные» сообщения IGMP относятся к типу single-hop и трансляторам следует отбрасывать их без уведомления. Другие сообщения IGMP могут применяться протоколами групповой маршрутизации и, поскольку попытки организации отношений смежности между маршрутизаторами через транслятор IP/ICMP говорят о конфигурационных ошибках, такие пакеты следует отбрасывать без уведомления.

Сообщения ICMPv4 об ошибках

Destination Unreachable (Type 3)

Транслируется значение Code, как описано ниже, устанавливается Type = 1 и корректируется контрольная сумма ICMP для учета изменений типа и кода, а также добавления псевдо-заголовка ICMPv6.

Значения кода транслируются следующим образом:

Code 0, 1 (Net Unreachable, Host Unreachable)

Устанавливается Code = 0 (нет маршрута к адресату).

Code 2 (Protocol Unreachable)

Преобразуется в ICMPv6 Parameter Problem (Type 4, Code 1) и устанавливается указатель (Pointer) на поле IPv6 Next Header.

Code 3 (Port Unreachable)

Устанавливается Code = 4 (порт не доступен).

Code 4 (Fragmentation Needed and DF was Set)

Преобразуется в сообщение ICMPv6 Packet Too Big (Type 2) с Code = 0. Значение MTU должно корректироваться с учетом разницы размеров заголовков IPv4 и IPv6, но недопустимо устанавливать значения меньше минимального IPv6 MTU (1280 байтов). Т. е., для этого поля следует выбирать большее из значений: 1280, minimum((MTU в сообщении Packet Too Big) + 20, MTU_of_IPv6_nexthop, (MTU_of_IPv4_nexthop) + 20)).

Отметим, что если маршрутизатор IPv4 установил MTU = 0 (т. е., он не поддерживает [RFC1191]), транслятор должен использовать заданные в [RFC1191] значения для определения MTU на пути и включить Path MTU в пакет ICMPv6 (следует использовать большее из значений, которое не превышает значения поля Total Length, но не меньше 1280).

См. также требования раздела 7.

Code 5 (Source Route Failed)

Устанавливается Code = 0 (нет маршрута к адресату). Отметим, что такие сообщения маловероятны, поскольку заданные отправителем маршруты (source route) не транслируются.

Code 6, 7, 8

Устанавливается Code = 0 (нет маршрута к адресату).

Code 9, 10 (Communication with Destination Host Administratively Prohibited)

Устанавливается Code = 1 (связь с адресатом запрещена административно).

Code 11, 12

Устанавливается Code = 0 (нет маршрута к адресату).

Code 13 (Communication Administratively Prohibited)

Устанавливается Code = 1 (связь с адресатом запрещена административно).

Code 14 (Host Precedence Violation)

Отбрасывание без уведомления.

Code 15 (Precedence cutoff in effect)

Устанавливается Code = 1 (связь с адресатом запрещена административно).

Другие значения кодов

Отбрасывание без уведомления.

Redirect (Type 5)

Сообщение single-hop. Отбрасывание без уведомления.

Alternative Host Address (Type 6)

Отбрасывание без уведомления.

Source Quench (Type 4)

Не используется в ICMPv6. Отбрасывание без уведомления.

Time Exceeded (Type 11)

Устанавливается Type = 3 и пересчитывается контрольная сумма ICMP с учетом изменений и добавлением псевдо-заголовка ICMPv6. Значение Code не меняется.

Parameter Problem (Type 12)

Устанавливается Type = 4 и пересчитывается контрольная сумма ICMP с учетом изменений и добавлением псевдо-заголовка ICMPv6.

Значение Code меняется следующим образом:

Code 0 (Pointer indicates the error)

Устанавливается Code = 0 (ошибка в поле заголовка) и обновляется указатель, как показано на рисунке 3 (если исходное значение IPv4 Pointer не указано или для преобразованного IPv6 Pointer указано «-», пакет отбрасывается без уведомления).

Code 1 (Missing a required option)

Отбрасывание без уведомления.

Code 2 (Bad length)

Устанавливается Code = 0 (ошибка в поле заголовка) и обновляется указатель, как показано на рисунке 3 (если исходное значение IPv4 Pointer не указано или для преобразованного IPv6 Pointer указано «-», пакет отбрасывается без уведомления).

Другие значения кодов

Отбрасывание без уведомления.

Неизвестные типы ICMPv4

Отбрасывание без уведомления.

Исходное значение IPv4 Pointer

Транслированное значение IPv6 Pointer

0

Version/IHL

0

Version/Traffic Class

1

Type Of Service

1

Traffic Class/Flow Label

2,3

Total Length

4

Payload Length

4,5

Identification

6

Flags/Fragment Offset

7

Fragment Offset

8

Time to Live

7

Hop Limit

9

Protocol

6

Next Header

10,11

Header Checksum

12-15

Source Address

8

Source Address

16-19

Destination Address

24

Destination Address

Рисунок 3. Значения указателей для трансляции IPv4 в IPv6


Данные в сообщениях ICMP об ошибках

Если принятый пакет ICMPv4 содержит ICMPv4 Extension [RFC4884], при трансляции размер пакета ICMPv6 изменится. В таких случаях атрибут ICMPv6 Extension должен быть соответственно изменен (т. е., увеличен при трансляции из IPv4 в IPv6). Если расширение ICMPv4 Extension ведет к превышению максимального размера сообщения ICMPv6 на выходном интерфейсе, расширение ICMPv4 следует просто укорачивать. Расширения, не определенные в [RFC4884], транслятор пропускает без обработки (как строку битов), что может вызывать проблемы при обработке таких расширений ICMP.

4.3. Трансляция сообщений ICMPv4 об ошибках в сообщения ICMPv6

Как указано выше, имеются некоторые различия между форматами сообщений об ошибках в ICMPv4 и ICMPv6. Сообщения ICMP об ошибках, содержащие связанный с ошибкой пакет, должны транслироваться подобно обычным пакетам IP (за исключением значения TTL во вложенном пакете IPv4/IPv6). Если при трансляции «пакета с ошибкой» меняется размер дейтаграммы, поле Total Length внешнего заголовка IPv6 должно быть изменено.

+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|    IPv4     |                 |    IPv6     |
+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|   ICMPv4    |                 |   ICMPv6    |
+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|    IPv4     |      ===>       |    IPv6     |
+-------------+                 +-------------+
|  Частичный  |                 |  Частичный  |
|  заголовок  |                 |  заголовок  |
|транспортного|                 |транспортного|
|   уровня    |                 |   уровня    |
+-------------+                 +-------------+

Рисунок 4. Трансляция сообщений ICMP об ошибках из IPv4 в IPv6

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

4.4. Генерация сообщений ICMPv4 об ошибках

При отбрасывании пакетов IPv4 транслятору следует обеспечивать возможность передачи отправителю такого пакета сообщения ICMPv4 об ошибке, если отброшенный пакет сам не является сообщением ICMPv4 об ошибке. Если передается сообщение ICMPv4 об ошибке, в нем указывается Type = 3 (адресат не доступен) и Code = 13 (связь запрещена административно), если в [RFC6146] не указано иное. Трансляторам следует обеспечивать администратору возможность задания параметров отправки сообщений ICMPv4 об ошибках (ограничение частоты передачи или отказ от передачи).

4.5. Трансляция заголовков транспортного уровня

Если алгоритм трансляции оказывает влияние на поля, используемые в контрольной сумме (см. параграф 4.1 в [RFC6052]), требуется заново рассчитать и обновить заголовки транспортного уровня, включающие псевдо-заголовки. Трансляторы должны делать это для пакетов TCP и ICMP, а также пакетов UDP с контрольной суммой (отличной от 0).

Для пакетов UDP без контрольной суммы (нулевое значение поля) трансляторам следует поддерживать функцию, позволяющую настроить:

  1. отбрасывание пакетов и генерацию системных событий, указывающих по крайней мере адреса и номера портов из пакета;

  2. расчет контрольной суммы IPv6 для пакета и его пересылка (влияет на производительность).

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

Для трансляторов с учетом состояний обработка фрагментированных пакетов UDP IPv4 с нулевым значением контрольной суммы рассмотрена в параграфе 3.4 [RFC6146].

Поддержка других транспортных протоколов (например, DCCP8) является необязательной. Для упрощения отладки и поиска неполадок трансляторы должны пересылать все транспортные протоколы, как указано для поля Next Header в параграфе 4.1.

4.6. Когда нужна трансляция

Если транслятор IP/ICMP поддерживает также функции обычной пересылки и целевой адрес IPv4 доступен по более специфичному маршруту без преобразования, транслятор должен переслать пакет по такому маршруту, не преобразуя его. В остальных случаях когда транслятор IP/ICMP получает дейтаграмму IPv4, адресованную получателю IPv4, представляющему хост в домене IPv6, пакет должен транслироваться в IPv6.

5. Трансляция IPv6 в IPv4

Когда транслятор IP/ICMP получает дейтаграмму IPv6, адресованную в домен IPv4, он преобразует заголовок IPv6 принятого пакета в заголовок IPv4. Исходный заголовок IPv6 удаляется из пакета и взамен помещается заголовок IPv4. Поскольку заголовки ICMPv6 [RFC4443], TCP [RFC793], UDP [RFC768] и DCCP [RFC4340] содержат контрольную сумму, учитывающую и заголовок IP, если алгоритм отображения меняет поля, учитываемые в контрольной сумме, эта сумма должна рассчитываться заново, а после этого должен обновляться заголовок ICMP или транспортного уровня. Данные в пакете сохраняются без изменений. После этого транслятор IP/ICMP пересылает пакет получателю IPv4.

+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|    IPv6     |                 |    IPv4     |
+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|  фрагмента  |      ===>       |транспортного|
| (если есть) |                 |   уровня    |
+-------------+                 +-------------+
|  Заголовок  |                 |             |
|транспортного|                 ~   Данные    ~
|   уровня    |                 |             |
+-------------+                 +-------------+
|             |
~   Данные    ~
|             |
+-------------+

Рисунок 5. Трансляция IPv6 в IPv4

Между IPv6 и IPv4 имеются некоторые различия (в части фрагментации и минимального значения MTU), оказывающие влияние на трансляцию. На каналах IPv6 значение MTU не может быть меньше 1280 байтов, а для каналов IPv4 соответствующий порог составляет 68 байтов. Определение Path MTU через транслятор опирается на сообщения ICMP Packet Too Big, получаемые и обрабатываемые хостами IPv6.

Различия в минимальных значениях MTU для IPv4 и IPv6 преоболеваются следующим образом:

  • При трансляции пакетов ICMPv4 Fragmentation Needed значение MTU в результирующем пакете ICMPv6 Packet Too Big всегда будет не меньше 1280. Это означает, что узлы IPv6 никогда не будут сталкиваться со значениями Path MTU меньше минимального IPv6 MTU в 1280 байтов. См. также параграф 4.2.

  • Если размер результирующего пакета IPv4 не превышает 1260 байтов, транслятор должен передать пакет без флага DF. В остальных случаях флаг запрета фрагментации (DF) должен устанавливаться. См. также параграф 5.1.

Эта модель обеспечивает возможность сквозного использования механизма Path MTU Discovery на путях с MTU не меньше минимального IPv6 MTU в 1280 байтов (соответствует MTU в 1260 байтов для домена IPv4). На путях с каналами IPv4, где MTU < 1260, подключенные к таким каналам маршрутизаторы IPv4 будут фрагментировать пакеты в соответствии с параграфом 2.3 [RFC791].

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

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

5.1. Трансляция заголовков IPv6 в заголовки IPv4

Если заголовка IPv6 Fragment Header не используется, поля заголовка IPv4 устанавливаются в соответствии с приведенным ниже описанием.

Version

4.

Internet Header Length

5 (без опций IPv4).

Type of Service (TOS) Octet

По умолчанию копируется значение поля IPv6 Traffic Class (все 8 битов). Согласно [RFC2474], значение битов одинаково в IPv4 и IPv6. Однако в некоторых средах IPv4 для этих битов используется старая семантика Type Of Service and Precedence. Реализациям трансляторов следует поддерживать возможность игнорировать класс трафика IPv6 и всегда устанавливать для поля IPv4 TOS заданное значение. Кроме того, на административных границах может применяться фильтрация и смена типа обслуживания, как описано в [RFC2475].

Total Length

Значение Payload length из заголовка IPv6, к которому добавлен размер заголовка IPv4.

Identification

Устанавливается в соответствии с генератором значений Fragment Identification на трансляторе.

Flags

Для флага More Fragments устанавливается нулевое значение. Если размер транслированного пакета IPv4 не превышает 1260 байтов, для флага DF устанавливается значение 0, в остальных случаях — 1.

Fragment Offset

Все нули.

Time to Live

Значение поля TTL определяется на основе значения поля Hop Limit в заголовке IPv6. Поскольку транслятор является маршрутизатором, он должен декрементировать значение поля IPv6 Hop Limit (до трансляции) или IPv4 TTL (после трансляции). При декрементировании TTL или Hop Limit транслятор (как любой маршрутизатор) должен проверить значение поля и отправить сообщение об ошибке ICMPv4 TTL Exceeded или ICMPv6 Hop Limit Exceeded при достижении нуля.

Protocol

Обработка заголовков IPv6-Frag (44) описана в параграфе 5.1.1. ICMPv6 (58) заменяется на ICMPv4 (1), а данные пакета транслируются в соответствии с параграфом 5.2. Заголовки IPv6 HOPOPT (0), IPv6-Route (43) и IPv6-Opts (60) опускаются при обработке, поскольку они не имеют смысла в IPv4. Для первого Next Header, не относящегося к приведенным выше случаям, значение Next Header (которое соответствует номеру транспортного протокола) копируется в поле протокола заголовка IPv4. Это означает трансляцию всех протоколов транспортного уровня.

Примечание. В некоторых случаях трансляция протоколов будет приводить к отказам — у одних отказы будут возникать при трансляции (например, IPsec Authentication Header (51)), а у других не пройдет проверка контрольной суммы, если алгоритм трансляции будет изменять учитываемые в контрольной сумме поля [RFC6052], а транслятор не обновит контрольную сумму транспортного протокола (поскольку расчет контрольной суммы для этого протокола не поддерживается, как отмечено в параграфе 5.5).

Header Checksum

Рассчитывается после создания заголовка IPv4.

Source Address

Отображается на адрес IPv4 в соответствии с одним из алгоритмов, указанных в разделе 6.

Если транслятор получает пакет с неприемлемым адресом отправителя (например, ::1), такой пакет следует отбросить без уведомления отправителя.

Destination Address

Отображается на адрес IPv4 в соответствии с одним из алгоритмов, указанных в разделе 6.

Если в пакете IPv6 присутствует заголовок Hop-by-Hop Options, Destination Options или Routing с Segments Left = 0, такой заголовок должен игнорироваться (без попытки его трансляции), а остальная часть пакета обрабатываться обычным путем. Однако значения полей Total Length и Protocol должны корректироваться с учетом пропущенных заголовков.

При наличии заголовка Routing с отличным от 0 полем Segments Left, трансляция пакета недопустима и отправителю следует возвращать сообщение об ощибке ICMPv6 Parameter problem/erroneous header field encountered (Type 4, Code 0) с полем Pointer, указывающим на первый байт поля Segments Left.

5.1.1. Обработка фрагментов IPv6

Если пакет IPv6 содержит заголовок Fragment Header, поля заголовка транслируются с учетом перечисленных ниже исключений.

Total Length

Если поле Next Header в заголовке Fragment Header указывает на расширенный заголовок (исключая ESP, но включая AH), пакет следует отбросить с внесением записи в системный журнал. В иных случаях в поле Total Length должно устанавливаться значение Payload Length из заголовка IPv6 за вычетом размера заголовков расширения до Fragmentation Header, а также 8 байтов Fragment Header и с добавлением размера заголовка IPv4.

Identification

Копируется из младших 16 битов поля Identification в заголовке Fragment Header.

Flags

Флаг IPv4 MF9 копируется из флага M в заголовке IPv6 Fragment Header. Флаг IPv4 DF сбрасывается для обеспечения возможности дальнейшей фрагментации на маршрутизаторах IPv4.

Fragment Offset

Если поле Next Header в заголовке Fragment Header не указывает на расширенный заголовок (за исключением ESP), значение Fragment Offset должно копироваться из поля Fragment Offset в заголовке IPv6 Fragment Header. Если поле Next Header в заголовке Fragment Header указывает расширенный заголовок (за исключением ESP), пакет следует отбросив, записав информацию об этом в системный журнал.

Protocol

Для ICMPv6 (58) значение заменяется на ICMPv4 (1), в остальных случаях заголовки расширения пропускаюия и копируется значение поля Next Header из последнего заголовка IPv6.

Если размер пакета IPv6 не превышает 1280 байтов, но размер пакета IPv4 (после трансляции) больше значения MTU на интерфейсе следующего интервала, транслятор должен фрагментировать пакет IPv4 для его передачи через канал с ограниченным размером пакетов.

5.2. Трансляция заголовков ICMPv6 в заголовки ICMPv4

При использовании оказывающей влияние на контрольные суммы трансляции адресов в сообщениях ICMPv6 должна обновляться контрольная сумма ICMPv4 в процессе трансляции, поскольку ICMPv6 (в отличие от ICMPv4) включает в контрольную сумму псевдо-заголовок, как UDP и TCP.

В дополнение к этому для всех пакетов ICMP должны транслироваться значения Type, а для сообщений ICMP об ошибках — еще и включенный в сообщение заголовок IP.

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

Информационные сообщения ICMPv6

Echo Request и Echo Reply (Type 128 и 129)

Установить для поля Type значение 8 и 0, соответственно, а также пересчитать контрольную сумму с учетом смены значения и исключения псевдо-заголовка ICMPv6.

MLD Multicast Listener Query/Report/Done (Type 130, 131, 132)

Сообщение Single-hop. Отбрасывание без уведомления.

Neighbor Discover messages (Type 133 137)

Сообщение Single-hop. Отбрасывание без уведомления.

Неизвестные информационные сообщения

Отбрасывание без уведомления.

Сообщения ICMPv6 об ошибках

Destination Unreachable (Type 1)

Устанавливается Type = 3 и пересчитывается контрольная сумма ICMP с учетом изменений и добавлением псевдо-заголовка ICMPv6.

Поле Code транслируется следующим образом:

Code 0 (No route to destination)

Устанавливается Code = 1 (хост не доступен).

Code 1 (Communication with destination administratively prohibited)

Устанавливается Code = 10 (связь с хостом запрещена административно).

Code 2 (Beyond scope of source address)

Устанавливается Code = 1 (хост не доступен). Отметим, что такая ошибка маловероятна, поскольку транслируемые адреса IPv4 обычно имеют глобальную значимость.

Code 3 (Address unreachable)

Устанавливается Code = 1 (хост не доступен).

Code 4 (Port unreachable)

Устанавливается Code = 3 (порт не доступен).

Другие коды

Отбрасывание без уведомления.

Packet Too Big (Type 2)

Трансляция в ICMPv4 Destination Unrechable (Type 3) с Code 4 и пересчитывается контрольная сумма ICMP с учетом изменений и исключением псевдо-заголовка ICMPv6. Значение поля MTU должно быть изменено с учетом разницы размеров заголовков IPv4 и IPv6, а также наличия в содержащемся внутри сообщения заголовке расширенного заголовка Fragment Header. Для MTU устанавливается меньшее из значений ((MTU в сообщении Packet Too Big Message)-20, MTU_of_IPv4_nexthop, (MTU_of_IPv6_nexthop)-20).

См. также требования раздела 7.

Time Exceeded (Type 3)

Устанавливается Type = 11 и пересчитывается контрольная сумма ICMP с учетом изменений и исключением псевдо-заголовка ICMPv6. Значение Code не меняется.

Parameter Problem (Type 4)

Транслируются значения Type и Code как описано ниже и пересчитывается контрольная сумма ICMP с учетом изменений и исключением псевдо-заголовка ICMPv6.

Трансляция значения Code:

Code 0 (Erroneous header field encountered)

Устанавливается Type 12, Code 0 и обновляется указатель в соответствии с рисунком 6 (если исходное значение IPv6 Pointer не указано в таблице или для транслированного IPv4 Pointer указано «-», пакет отбрасывается без уведомления).

Code 1 (Unrecognized Next Header type encountered)

Транслируется в сообщение ICMPv4 Protocol Unreachable (Type 3, Code 2).

Code 2 (Unrecognized IPv6 option encountered)

Отбрасывание без уведомления.

Неизвестные сообщения об ошибках

Отбрасывание без уведомления.

Исходное значение IPv6 Pointer

Транслированное значение IPv4 Pointer

0

Version/Traffic Class

0

Version/IHL, Type Of Ser

1

Traffic Class/Flow Label

1

Type Of Service

2,3

Flow Label

4,5

Payload Length

2

Total Length

6

Next Header

9

Protocol

7

Hop Limit

8

Time to Live

08 — 23

Source Address

12

Source Address

24 — 39

Destination Address

16

Destination Address

Рисунок 6. Значения указателей для трансляции IPv6 в IPv4


Данные сообщений ICMP об ошибках

если принятый пакет ICMPv6 содержит расширение ICMPv6 [RFC4884], трансляция будет вызывать изменение размера пакета ICMPv4. В таких случаях атрибут размера ICMPv6 Extension должен быть соответствующим образом изменен (например, уменьшен при трансляции IPv6 в IPv4). Расширения, не определенные в [RFC4884], транслятор пропускает как битовые строки и все содержащиеся в них адреса IPv6 не будет преобразовываться в адреса IPv4, что может вызывать проблемы при последующей обработке таких расширений ICMP.

5.3. Трансляция сообщений ICMPv6 об ошибках в ICMPv4

Как было отмечено выше, форматы сообщений об ошибках в ICMPv4 и ICMPv6 несколько различаются. В сообщениях ICMP с содержащимися в них пакетами, которые связаны с ошибкой, эти вложенные пакеты должны транслироваться как обычные пакеты IP (однако значения TTL/Hop Limit во вложенных пакетах IPv4/IPv6 при этом не декрементируются). Очевидно, что при трансляции вложенного «ошибочного» пакета общий размер дейтаграммы может измениться, поэтому поле Total Length во внешнем заголовке IPv4 также должно быть изменено.

+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|    IPv6     |                 |    IPv4     |
+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|   ICMPv6    |                 |   ICMPv4    |
+-------------+                 +-------------+
|  Заголовок  |                 |  Заголовок  |
|    IPv6     |      ===>       |    IPv4     |
+-------------+                 +-------------+
|  Частичный  |                 |  Частичный  |
|  заголовок  |                 |  заголовок  |
|транспортного|                 |транспортного|
|   уровня    |                 |   уровня    |
+-------------+                 +-------------+

Рисунок 7. Трансляция сообщений ICMP об ошибках из IPv6 в IPv4

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

5.4. Генерация сообщений ICMPv6 об ошибках

При отбрасывании пакета IPv6 транслятору следует вернуть его отправителю сообщение ICMPv6 об ошибке, если отбрасываемый пакет сам не являлся таким сообщением.

В сообщении ICMPv6 должен указываться Type = 1 (адресат не доступен) и Code = 1 (связь запрещена административно), если иное не задано в данном документе или [RFC6146]. Трансляторам следует обеспечивать администратору возможность управления отправкой сообщений ICMPv6 об ошибках (события, частота передачи).

5.5. Трансляция заголовков транспортного уровня

Если при алгоритм трансляции меняет поля, учитываемые контрольной суммой (см. параграф 4.1 в [RFC6052]), требуется заново рассчитать контрольную сумму и обновить заголовки транспортного уровня, содержащие псевдо-заголовки. Транслятор должен делать это для протоколов TCP, UDP и ICMP.

Поддержка других транспортных протоколов (например, DCCP) является не обязательной. Для упрощения отладки и поиска неполадок транслятор должен пересылать все транспортные протоколы, как указано для поля Protocol в параграфе 5.1.

5.6. Когда нужна трансляция

Если транслятор IP/ICMP поддерживает также обычную пересылку пакетов и адресат доступен по более специфичному маршруту без преобразования, маршрутизатор должен переслать такой пакет без трансляции. Когда транслятор IP/ICMP получает дейтаграмму IPv6, направленную по адресу IPv6, представляющему хост в домене IPv4, пакет IPv6 должен транслироваться в IPv4.

6. Отображение адресов IP

Транслятор должен поддерживать алгоритм отображения адресов без учета состояний [RFC6052], который используется по умолчанию. Пример работы с использованием этого алгоритма показан в Приложении A. Отметим, что [RFC7136] обновляет документ [RFC4291], позволяя использовать индивидуальные адреса без бита u, если они не были созданы на базе адресов IEEE MAC. Следовательно, алгоритм отображения адресов, определенный в [RFC6219], также соответствует архитектуре адресации IPv6.

Трансляторам без учета состояний следует поддерживать алгоритм явного отображения адресов [RFC7757].

Трансляторам без учета состояний следует поддерживать [RFC6791] для обработки пакетов ICMP/ICMPv6.

Реализации могут поддерживать трансляцию как с учетом состояний, так и без него (например, трансляцию адресов и протоколов от клиентов IPv6 к серверам IPv4 (NAT64) [RFC6146]).

Реализации могут поддерживать не учитывающую состояний функцию NAT64 (например, MAP-T Customer Edge (CE) или MAP-T Border Relay (BR) [RFC7599]).

7. Особый случай ICMPv6 Packet Too Big

Множество исследований показало [ATOMIC], что нет ничего необычного в отбрасывании сетями сообщений ICMPv6 Packet Too Big. Отбрасывание таких пакетов приводит к возникновению «черных дыр» PMTUD [RFC2923], которые можно предотвратить только с помощью PLPMTUD10 [RFC4821].

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

Использование трансляторов IP/ICMP не создает каких-либо проблем безопасности в дополнение к тем, которые уже присущи IPv4 и IPv6, а также протоколам маршрутизации, применяемым для доставки пакетов транслятору.

Могут возникать проблемы, связанные с определением адресов IPv4 по адресам IPv6, — в частности появление адресов типа широковещательных или петлевых, а также наличие не преобразуемых в IPv4 адресов IPv6 и т. п. Эти вопросы рассмотрены в [RFC6052].

IPsec Authentication Header [RFC4302] не может применяться с NAT44 или NAT64.

Как и при трансляции адресов IPv4, пакеты ESP11 могут быть преобразованы, поскольку туннельный режим ESP не зависит от полей заголовков, расположенных перед заголовком ESP. Однако в транспортном режиме ESP трансляция из IPv6 в IPv4 будет приводить к отказам, если не используются «нейтральные к контрольным суммам адреса» (checksum-neutral addresses). В обоих случаях конечные точки IPsec ESP обычно могут обнаруживать присутствие транслятора и инкапсулировать ESP в пакеты UDP [RFC3948].

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

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

[RFC768] Postel, J., «User Datagram Protocol», STD 6, RFC 768, DOI 10.17487/RFC0768, August 1980, <http://www.rfc-editor.org/info/rfc768>.

[RFC791] Postel, J., «Internet Protocol», STD 5, RFC 791, DOI 10.17487/RFC0791, September 1981, <http://www.rfc-editor.org/info/rfc791>.

[RFC793] Postel, J., «Transmission Control Protocol», STD 7, RFC 793, DOI 10.17487/RFC0793, September 1981, <http://www.rfc-editor.org/info/rfc793>.

[RFC1812] Baker, F., Ed., «Requirements for IP Version 4 Routers», RFC 1812, DOI 10.17487/RFC1812, June 1995, <http://www.rfc-editor.org/info/rfc1812>.

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

[RFC3948] Huttunen, A., Swander, B., Volpe, V., DiBurro, L., and M. Stenberg, «UDP Encapsulation of IPsec ESP Packets», RFC 3948, DOI 10.17487/RFC3948, January 2005, <http://www.rfc-editor.org/info/rfc3948>.

[RFC4291] Hinden, R. and S. Deering, «IP Version 6 Addressing Architecture», RFC 4291, DOI 10.17487/RFC4291, February 2006, <http://www.rfc-editor.org/info/rfc4291>.

[RFC4340] Kohler, E., Handley, M., and S. Floyd, «Datagram Congestion Control Protocol (DCCP)», RFC 4340, DOI 10.17487/RFC4340, March 2006, <http://www.rfc-editor.org/info/rfc4340>.

[RFC4443] Conta, A., Deering, S., and M. Gupta, Ed., «Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification», RFC 4443, DOI 10.17487/RFC4443, March 2006, <http://www.rfc-editor.org/info/rfc4443>.

[RFC4884] Bonica, R., Gan, D., Tappan, D., and C. Pignataro, «Extended ICMP to Support Multi-Part Messages», RFC 4884, DOI 10.17487/RFC4884, April 2007, <http://www.rfc-editor.org/info/rfc4884>.

[RFC5382] Guha, S., Ed., Biswas, K., Ford, B., Sivakumar, S., and P. Srisuresh, «NAT Behavioral Requirements for TCP», BCP 142, RFC 5382, DOI 10.17487/RFC5382, October 2008, <http://www.rfc-editor.org/info/rfc5382>.

[RFC5771] Cotton, M., Vegoda, L., and D. Meyer, «IANA Guidelines for IPv4 Multicast Address Assignments», BCP 51, RFC 5771, DOI 10.17487/RFC5771, March 2010, <http://www.rfc-editor.org/info/rfc5771>.

[RFC6052] Bao, C., Huitema, C., Bagnulo, M., Boucadair, M., and X. Li, «IPv6 Addressing of IPv4/IPv6 Translators», RFC 6052, DOI 10.17487/RFC6052, October 2010, <http://www.rfc-editor.org/info/rfc6052>.

[RFC6145] Li, X., Bao, C., and F. Baker, «IP/ICMP Translation Algorithm», RFC 6145, DOI 10.17487/RFC6145, April 2011, <http://www.rfc-editor.org/info/rfc6145>.

[RFC6146] Bagnulo, M., Matthews, P., and I. van Beijnum, «Stateful NAT64: Network Address and Protocol Translation from IPv6 Clients to IPv4 Servers», RFC 6146, DOI 10.17487/RFC6146, April 2011, <http://www.rfc-editor.org/info/rfc6146>.

[RFC6791] Li, X., Bao, C., Wing, D., Vaithianathan, R., and G. Huston, «Stateless Source Address Mapping for ICMPv6 Packets», RFC 6791, DOI 10.17487/RFC6791, November 2012, <http://www.rfc-editor.org/info/rfc6791>.

[RFC7757] Anderson, T. and A. Leiva Popper, «Explicit Address Mappings for Stateless IP/ICMP Translation», RFC 7757, DOI 10.17487/RFC7757, February 2016, <http://www.rfc-editor.org/info/rfc7757>.

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

[ATOMIC] Gont, F., LIU, S., and T. Anderson, «Generation of IPv6 Atomic Fragments Considered Harmful», Work in Progress, draft-ietf-6man-deprecate-atomfrag-generation-06, April 2016.

[Err3059] RFC Errata, Erratum ID 3059, RFC 6145.

[Err3060] RFC Errata, Erratum ID 3060, RFC 6145.

[Err3061] RFC Errata, Erratum ID 3061, RFC 6145.

[Err4090] RFC Errata, Erratum ID 4090, RFC 6145.

[IPv6] Deering, S. and R. Hinden, «Internet Protocol, Version 6 (IPv6) Specification», Work in Progress, draft-ietf-6man-rfc2460bis-04, March 2016.

[RFC1191] Mogul, J. and S. Deering, «Path MTU discovery», RFC 1191, DOI 10.17487/RFC1191, November 1990, <http://www.rfc-editor.org/info/rfc1191>.

[RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black, «Definition of the Differentiated Services Field (DS Field) in the IPv4 and IPv6 Headers», RFC 2474, DOI 10.17487/RFC2474, December 1998, <http://www.rfc-editor.org/info/rfc2474>.

[RFC2475] Blake, S., Black, D., Carlson, M., Davies, E., Wang, Z., and W. Weiss, «An Architecture for Differentiated Services», RFC 2475, DOI 10.17487/RFC2475, December 1998, <http://www.rfc-editor.org/info/rfc2475>.

[RFC2710] Deering, S., Fenner, W., and B. Haberman, «Multicast Listener Discovery (MLD) for IPv6», RFC 2710, DOI 10.17487/RFC2710, October 1999, <http://www.rfc-editor.org/info/rfc2710>.

[RFC2923] Lahey, K., «TCP Problems with Path MTU Discovery», RFC 2923, DOI 10.17487/RFC2923, September 2000, <http://www.rfc-editor.org/info/rfc2923>.

[RFC3307] Haberman, B., «Allocation Guidelines for IPv6 Multicast Addresses», RFC 3307, DOI 10.17487/RFC3307, August 2002, <http://www.rfc-editor.org/info/rfc3307>.

[RFC3590] Haberman, B., «Source Address Selection for the Multicast Listener Discovery (MLD) Protocol», RFC 3590, DOI 10.17487/RFC3590, September 2003, <http://www.rfc-editor.org/info/rfc3590>.

[RFC3810] Vida, R., Ed. and L. Costa, Ed., «Multicast Listener Discovery Version 2 (MLDv2) for IPv6», RFC 3810, DOI 10.17487/RFC3810, June 2004, <http://www.rfc-editor.org/info/rfc3810>.

[RFC3849] Huston, G., Lord, A., and P. Smith, «IPv6 Address Prefix Reserved for Documentation», RFC 3849, DOI 10.17487/RFC3849, July 2004, <http://www.rfc-editor.org/info/rfc3849>.

[RFC4302] Kent, S., «IP Authentication Header», RFC 4302, DOI 10.17487/RFC4302, December 2005, <http://www.rfc-editor.org/info/rfc4302>.

[RFC4787] Audet, F., Ed. and C. Jennings, «Network Address Translation (NAT) Behavioral Requirements for Unicast UDP», BCP 127, RFC 4787, DOI 10.17487/RFC4787, January 2007, <http://www.rfc-editor.org/info/rfc4787>.

[RFC4821] Mathis, M. and J. Heffner, «Packetization Layer Path MTU Discovery», RFC 4821, DOI 10.17487/RFC4821, March 2007, <http://www.rfc-editor.org/info/rfc4821>.

[RFC5737] Arkko, J., Cotton, M., and L. Vegoda, «IPv4 Address Blocks Reserved for Documentation», RFC 5737, DOI 10.17487/RFC5737, January 2010, <http://www.rfc-editor.org/info/rfc5737>.

[RFC6144] Baker, F., Li, X., Bao, C., and K. Yin, «Framework for IPv4/IPv6 Translation», RFC 6144, DOI 10.17487/RFC6144, April 2011, <http://www.rfc-editor.org/info/rfc6144>.

[RFC6219] Li, X., Bao, C., Chen, M., Zhang, H., and J. Wu, «The China Education and Research Network (CERNET) IVI Translation Design and Deployment for the Ipv4/IPv6 Coexistence and Transition», RFC 6219, DOI 10.17487/RFC6219, May 2011, <http://www.rfc-editor.org/info/rfc6219>.

[RFC6691] Borman, D., «TCP Options and Maximum Segment Size (MSS)», RFC 6691, DOI 10.17487/RFC6691, July 2012, <http://www.rfc-editor.org/info/rfc6691>.

[RFC7136] Carpenter, B. and S. Jiang, «Significance of IPv6 Interface Identifiers», RFC 7136, DOI 10.17487/RFC7136, February 2014, <http://www.rfc-editor.org/info/rfc7136>.

[RFC7599] Li, X., Bao, C., Dec, W., Ed., Troan, O., Matsushima, S., and T. Murakami, «Mapping of Address and Port using Translation (MAP-T)», RFC 7599, DOI 10.17487/RFC7599, July 2015, <http://www.rfc-editor.org/info/rfc7599>.

Приложение A. Пример трансляции без учета состояний

Пример трансляции без учета состояний показан на рисунке. В примере используются адреса из блоков, предназначенных для документации 2001:db8::/32 [RFC3849], 192.0.2.0/24 и 198.51.100.0/24 [RFC5737].

+--------------+                   +--------------+
| Сеть IPv4    |                   | Сеть IPv6    |
|              |     +-------+     |              |
|   +----+     |-----| XLAT  |---- |  +----+      |
|   | H4 |-----|     +-------+     |--| H6 |      |
|   +----+     |                   |  +----+      |
+--------------+                   +--------------+

Рисунок 8. Трансляция без учета состояний

Транслятор (XLAT) соединяет сеть IPv6 с сетью IPv4. XLAT использует префикс NSP12 2001:db8:100::/40, определенный в [RFC6052], для представления адресов IPv4 в адресном пространстве IPv6 (преобразованные в IPv4 адреса) и для представления адресов IPv6 (транслируемые в IPv4 адреса) в адресном пространстве IPv4. В этом примере блок адресов 192.0.2.0/24 соответствует преобразуемым в IPv4 адресам.

На основе правила отображения адресов узел IPv6 H6 имеет преобразуемый в IPv4 адрес IPv6 2001:db8:1c0:2:21:: (отображение для адреса 192.0.2.33). Узел IPv4 H4 имеет адрес 198.51.100.2.

Маршрутизация IPv6 настроена так, что пакеты IPv6, адресованные получателям из блока 2001:db8:100::/40, пересылаются на интерфейс IPv6 транслятора XLAT.

Маршрутизация IPv4 настроена так, что пакеты IPv4, адресованные получателям из блока 192.0.2.0/24, пересылаются на интерфейс IPv4 транслятора XLAT.

A.1. H6 организует связь с H4

Узел H6 организует связь с узлом H4.

  1. H6 выполняет отображение адресов так, что преобразуемый в IPv4 адрес 2001:db8:1c6:3364:2:: формируется из 198.51.100.2 с использованием алгоритма отображения [RFC6052].

  2. H6 передает пакет узлу H4. Пакет отправляется с адреса 2001:db8:1c0:2:21:: по адресу 2001:db8:1c6:3364:2::.

  3. Пакет пересылается на интерфейс IPv6 транслятора XLAT (в соответствии с маршрутизацией IPv6).

  4. XLAT принимает пакет и выполняет трансляцию:

  • заголовок IPv6 преобразуется в заголовок IPv4 с использованием алгоритма IP/ICMP Translation Algorithm, определенного в этом документе;

  • XLAT указывает 192.0.2.33 в качестве адреса отправителя пакета, а 198.51.100.2 — в качестве адреса получателя. Отметим, что адреса 192.0.2.33 и 198.51.100.2 напрямую извлекаются из адреса отправителя IPv6 2001:db8:1c0:2:21:: (транслируемый в IPv4 адрес) и получателя IPv6 2001:db8:1c6:3364:2:: (преобразованный в IPv4 адрес) в принятом для трансляции пакете.

  1. XLAT передает транслированный пакет через свой интерфейс IPv4 и пакет прибывает на узел H4.

  2. H4 отвечает на принятый пакет своим пакетом с адресом получателя 192.0.2.33 и адресом отправителя 198.51.100.2.

  3. Пакет пересылается на интерфейс IPv4 транслятора XLAT (в соответствии с маршрутизацией IPv4). XLAT выполняет трансляцию:

  • заголовок IPv4 преобразуется в заголовок IPv6 с использованием алгоритма IP/ICMP Translation Algorithm, определенного в этом документе;

  • XLAT указывает 2001:db8:1c0:2:21:: в качестве адреса получателя, а 2001:db8:1c6:3364:2:: — в качестве адреса отправителя преобразованного пакета. Отметим, что адреса 2001:db8:1c0:2:21:: и 2001:db8:1c6:3364:2:: формируются непосредственно из адресов IPv4 для получателя (192.0.2.33) и отправителя (198.51.100.2) в заголовке принятого для трансляции пакета.

  1. Транслированный пакет передается через интерфейс IPv6 узлу H6.

Обмен пакетами между узлами H6 и H4 продолжается до завершения сессии.

A.2. H4 организует связь с H6

Узел H4 организует связь с узлом H6.

  1. H4 выполняет отображение для адреса получателя так, что формируется адрес 192.0.2.33 из транслируемого в IPv4 адреса 2001:db8:1c0:2:21:: на основе алгоритма отображения адресов [RFC6052].

  2. H4 отправляет пакет узлу H6. Пакет передается с адреса 198.51.100.2 по адресу 192.0.2.33.

  3. Пакет приходит на интерфейс IPv4 транслятора XLAT (в соответствии с маршрутизацией IPv4).

  4. XLAT принимает пакет и выполняет трансляцию:

  • заголовок IPv4 преобразуется в заголовок IPv6 с использованием алгоритма IP/ICMP Translation Algorithm, определенного в этом документе;

  • XLAT включает в пакет адрес отправителя 2001:db8:1c6:3364:2:: и адрес получателя 2001:db8:1c0:2:21::. Отметим, что адреса 2001:db8:1c6:3364:2:: (преобразованный в IPv4 адрес) и 2001:db8:1c0:2:21:: (транслируемый в IPv4 адрес) получаются непосредственно из адресов IPv4 для отправителя (198.51.100.2) и получателя (192.0.2.33) из заголовка транслируемого пакета IPv4.

  1. XLAT передает пакет через интерфейс IPv6 и пакет прибывает на узел H6.

  2. Узел H6 отвечает на принятый пакет своим пакетом с адресом получателя 2001:db8:1c6:3364:2:: и адресом отправителя 2001:db8:1c0:2:21::.

  3. Пакте пересылается на интерфейс IPv6 транслятора XLAT (в соответствии с маршрутизацией IPv6). XLAT выполняет трансляцию:

  • заголовок IPv6 преобразуется в IPv4 с использованием алгоритма IP/ICMP Translation Algorithm, определенного в этом документе;

  • XLAT указывает адрес получателя 198.51.100.2 и адрес отправителя 192.0.2.33. Отметим, что адреса 198.51.100.2 и 192.0.2.33 формируются непосредственно из адресов получателя IPv6 2001:db8:1c6:3364:2:: и отправителя IPv6 2001:db8:1c0:2:21:: в заголовке транслируемого пакета IPv6.

  1. Транслированный пакет передается через интерфейс IPv4 узлу H4.

Обмен пакетами между узлами H4 и H6 продолжается до завершения сессии.

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

Gandhar Gokhale, Wesley Eddy и Fernando Gont отметили ошибки и обработали их [RFC6145]. Fernando Gont, Will (Shucheng) Liu и Tore Anderson выполнили анализ безопасности и предложили обновления, относящиеся к атомарным фрагментам. В дополнение к этому Tore Anderson и Alberto Leiva предложили алгоритм EAM13.

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

Congxiao Bao

CERNET Center/Tsinghua University

Room 225, Main Building, Tsinghua University

Beijing 100084

China

Phone: +86 10-62785983

Email: congxiao@cernet.edu.cn

Xing Li

CERNET Center/Tsinghua University

Room 225, Main Building, Tsinghua University

Beijing 100084

China

Phone: +86 10-62785983

Email: xing@cernet.edu.cn

Fred Baker

Cisco Systems

Santa Barbara, California 93117

United States

Phone: +1-408-526-4257

Email: fred@cisco.com

Tore Anderson

Redpill Linpro

Vitaminveien 1A

0485 Oslo

Norway

Phone: +47 959 31 212

Email: tore@redpill-linpro.com

URI: http://www.redpill-linpro.com

Fernando Gont

Huawei Technologies

Evaristo Carriego 2644

Haedo, Provincia de Buenos Aires 1706

Argentina

Phone: +54 11 4650 8472

Email: fgont@si6networks.com

URI: http://www.si6networks.com

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

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

nmalykh@gmail.com


1Stateless IP/ICMP Translation Algorithm — алгоритм трансляции IP/ICMP без учета состояний.

2Maximum Segment Size — максимальный размер сегмента.

3Don’t Fragment — не фрагментировать.

4Type Of Service — тип обслуживания.

5Traffic Class — класс трафика.

6Передается на один интервал маршрутизации.

7Multicast Listener Discovery — обнаружение получателей группового трафика.

8Datagram Congestion Control Protocol.

9More Fragments — имеются другие фрагменты.

10Packetization Layer Path MTU Discovery — определение MTU на уровне пакетизации.

11Encapsulating Security Payload — инкапсулированные защищенные данные.

12Network-Specific Prefix — специфический для сети префикс.

13Explicit Address Mapping — явное отображение адресов.

Рубрика: RFC | Комментарии к записи RFC 7915 IP/ICMP Translation Algorithm отключены

RFC 7921 An Architecture for the Interface to the Routing System

Internet Engineering Task Force (IETF)                          A. Atlas
Request for Comments: 7921                              Juniper Networks
Category: Informational                                       J. Halpern
ISSN: 2070-1721                                                 Ericsson
                                                                S. Hares
                                                                  Huawei
                                                                 D. Ward
                                                           Cisco Systems
                                                               T. Nadeau
                                                                 Brocade
                                                               June 2016

An Architecture for the Interface to the Routing System

Архитектура интерфейса с системой маршрутизации

PDF

Аннотация

Этот документ описывает архитектуру IETF1 для стандартного программного интерфейса для переноса состояний в систему маршрутизации Internet и из неё. Документ описывает архитектуру, её блоки и интерфейсы на высоком уровне, уделяя особое внимание элементам, которые должны быть стандартизованы как часть интерфейса с системой маршрутизации (Interface to the Routing System или I2RS).

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

Документ не относится к категории Internet Standards Track и публикуется лишь для информации.

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

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

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

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

Маршрутизаторы, формирующие инфраструктуру маршрутизации Internet, поддерживают состояние с различными уровнями детализации и функциями. Например, типичный маршрутизатор поддерживает базу маршрутных данных (Routing Information Base или RIB) и реализует протоколы маршрутизации, такие как OSPF, IS-IS, BGP, для обмена сведениями о доступности, топологии, состояния протоколов и другой информацией о состоянии сети с другими маршрутизаторами. Маршрутизаторы преобразуют все эти данные в записи пересылки, служащие для передачи пакетов и потоков между элементами сети. Плоскость пересылки и записи пересылки содержат сведения об активном состоянии, описывающие ожидаемое и наблюдаемое поведение маршрутизатора, которые нужны сетевым приложениям. Ориентированным на сеть приложениям нужен простой доступ к этой информации, чтобы знать топологию сети, проверять установку запрограммированного состояния в плоскости пересылки, измерять поведение различных потоков, маршрутов и элементов пересылки, а также понимать настроенные и активные состояния маршрутизаторов. Таким приложениям также нужен простой доступ к интерфейсам, позволяющим программировать и контролировать состояния, связанные с пересылкой.

Этот документ задаёт архитектуру базового, основанного на стандартах интерфейса для этой информации. Интерфейс с системой маршрутизации (I2RS) облегчает контроль и наблюдение за связанным с маршрутизацией состоянием (например, состоянием менеджера RIB в элементе маршрутизации), а также позволяет создавать ориентированные на сеть приложения для современных маршрутизируемых сетей. I2RS — это программный асинхронный интерфейс для обмена состояниями в системе маршрутизации Internet. Эта архитектура I2RS признает, что система маршрутизации и операционная система (Operating System или OS) маршрутизатора предоставляют полезные сведения, которые приложения могут использовать для достижения своих целей. Эти ориентированные на сети приложения могут применять программный интерфейс I2RS для создания новых способов комбинированного извлечения данных маршрутизации Internet, анализа этих данных и установки состояний маршрутизаторов.

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

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

Безопасность важна для нового интерфейса I2RS, поэтому в разделе 4 приведён обзор вопросов безопасности для архитектуры I2RS. Детальные требования к безопасности протокола I2RS заданы в [I2RS-PROT-SEC], а требования для сред, в которых работает протокол I2RS, в [I2RS-ENV-SEC].

1.1. Мотивы создания архитектуры I2RS

Имеется 4 основных мотива создания архитектуры I2RS. Во-первых, это потребность в программно, асинхронном интерфейсе, обеспечивающем быстрый интерактивный доступ к элементарным (atomic) операциям. Во-вторых, это доступ к структурированным сведениям и состоянию, которые часто невозможно напрямую настроить или промоделировать в имеющихся реализациях и протоколах настройки. В-третьих, это возможность подписки на структурируемые, фильтруемые уведомления о событиях от маршрутизаторов. В-четвёртых, работа I2RS должна основываться на моделях данных для возможности расширения и предоставления стандартных моделей данных, которые будут применять сетевые приложения.

I2RS описывается как асинхронный программный интерфейс, основные свойства которого представлены в разделе 5 [RFC7920].

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

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

1.2. Обзор архитектуры

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

Рисунок 1 поход на рисунок 1 из [RFC7920], но здесь показаны дополнительные детали использования приложениями клиентов I2RS для взаимодействия с агентами I2RS. Дано также логическое представления моделей данных, связанных с системой маршрутизации, а не функциональное представление (RIB, FIB3, топологии, политике, протоколах маршрутизации и сигнализации и т. п.).

На рисунке 1 каждый из клиентов A и B обеспечивает доступ к одному приложению (A и B, соответственно), а клиент P предоставляет доступ к нескольким приложениям.

    ******************   *****************  *****************
    *  Приложение C  *   * Приложение D  *  * Приложение E  *
    ******************   *****************  *****************
             ^                  ^                   ^
             |--------------|   |    |--------------|
                            |   |    |
                            v   v    v
                          ***************
                          *  Клиент P   *
                          ***************
                               ^     ^
                               |     |-------------------------|
     ***********************   |      ***********************  |
     *    Приложение A     *   |      *    Приложение B     *  |
     *                     *   |      *                     *  |
     *  +----------------+ *   |      *  +----------------+ *  |
     *  |   Клиент A     | *   |      *  |   Клиент B     | *  |
     *  +----------------+ *   |      *  +----------------+ *  |
     ******* ^ *************   |      ***** ^ ****** ^ ******  |
             |                 |            |        |         |
             |   |-------------|            |        |   |-----|
             |   |   -----------------------|        |   |
             |   |   |                               |   |
************ v * v * v *********   ***************** v * v ********
*  +---------------------+     *   *  +---------------------+     *
*  |     Агент 1         |     *   *  |    Агент 2          |     *
*  +---------------------+     *   *  +---------------------+     *
*     ^        ^  ^   ^        *   *     ^        ^  ^   ^        *
*     |        |  |   |        *   *     |        |  |   |        *
*     v        |  |   v        *   *     v        |  |   v        *
* +---------+  |  | +--------+ *   * +---------+  |  | +--------+ *
* |Маршрутиз|  |  | |Локальн.| *   * |Маршрутиз|  |  | |Локальн.| *
* |    и    |  |  | |настрой.| *   * |    и    |  |  | |настрой.| *
* |сигнализ.|  |  | +--------+ *   * |сигнализ.|  |  | +--------+ *
* +---------+  |  |         ^  *   * +---------+  |  |         ^  *
*    ^         |  |         |  *   *    ^         |  |         |  *
*    |    |----|  |         |  *   *    |    |----|  |         |  *
*    v    |       v         v  *   *    v    |       v         v  *
*  +----------+ +------------+ *   *  +----------+ +------------+ *
*  |Динамическ| |Статическое | *   *  |Динамическ| |Статическое | *
*  |состояние | | состояние  | *   *  |состояние | | состояние  | *
*  |системы   | | системы    | *   *  |системы   | | системы    | *
*  +----------+ +------------+ *   *  +----------+ +------------+ *
*                              *   *                              *
*  Элемент маршрутизации 1     *   *  Элемент маршрутизации 2     *
********************************   ********************************

Рисунок 1. Архитектура клиентов и агентов I2RS.


Приложения могут обращаться к службам I2RS через локальных или удалённых клиентов. Локальный клиент работает на одном устройстве с системой маршрутизации, удалённый — через сеть. На рисунке приложения A и B получают услуги I2RS через локальных клиентов, C, D, E — через удалённого. Детали взаимодействия приложений с удаленным клиентом выходят за рамки I2RS.

Клиент I2RS может иметь доступ к 1 или нескольким агентам I2RS. На рисунке 1 клиенты B и P обращаются к агентам I2RS 1 и 2. Агент I2RS может обслуживать 1 или множество клиентов. На рисунке 1 агент I2RS 1 предоставляет услуги клиентам A, B и P, а агент 2 — клиентам B и P.

Агенты и клиенты I2RS взаимодействуют по асинхронному протоколу, поэтому один клиент может передавать несколько одновременных запросов одному или нескольким агентам. Агент может обрабатывать одновременно множество запросов от одного или множества клиентов.

Агент I2RS обеспечивает доступ для чтения и записи выбранных данных на элементе маршрутизации, организованных в службы I2RS. В разделе 4 описано управление доступом через механизмы аутентификации и контроля доступа. На рисунке 1 показано, как агенты I2RS могут записывать статическое эфемерное состояние (например, записи RIB) и считывать данные динамического состояния (например, MPLS LSP-ID4 или число активных партнёров BGP).

В дополнение к доступу для чтения и записи агент I2RS позволяет клиентам подписываться на различные типы уведомлений о событиях, влияющих на разные экземпляры объектов. Одним из примеров уведомления о таком событии (не связанном с созданием, изменением или удалением объекта) является распознавание nexthop в RIB, позволяющее менеджеру RIB установить его на уровне пересылки как часть конкретного маршрута. Детали этого описаны в параграфах 7.6. Уведомления и 7.7. Сбор сведений.

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

Routing Element — элемент маршрутизации

Routing Element реализует то или иное подмножество системы маршрутизации. Элемент не обязательно связан с плоскостью пересылки. Примеры Routing Element включают:
  • маршрутизаторы с плоскостью пересылки и менеджером RIB, работающим с протоколом IS-IS, OSPF, BGP, PIM и т. п.;
  • узлы BGP, действующие как рефлекторы маршрутов (Route Reflector);
  • маршрутизаторы с коммутацией по меткам (Label Switching Router или LSR), реализующие RSVP-TE, OSPF-TE, протокол обмена с элементами расчёта пути (Path Computation Element или PCE) и имеет плоскость пересылки и связанный менеджер RIB;
  • серверы, на которых работают протоколы IS-IS, OSPF, BGP и применяется протокол разделения элементов управления и пересылки (Forwarding and Control Element Separation или ForCES) для управления удалённой плоскостью пересылки.
Элементом маршрутизации можно управлять локально через командный интерфейс (command-line interface или CLI), по протоколу SNMP или протокола управления сетью (Network Configuration Protocol или NETCONF).

Routing and Signaling — маршрутизация и сигнализация

Этот блок представляет часть элемента маршрутизации, участвующую в системе маршрутизации Internet. Это включает не только стандартизованные протоколы (например, IS-IS, OSPF, BGP, PIM, RSVP-TE, LDP и т. п.), но и уровень менеджера RIB.

Local Configuration — локальная конфигурация

Поведение «черного ящика» во взаимодействии между эфемерным состоянием, которое I2RS устанавливает в элементе маршрутизации. Локальная конфигурация определяется этим документом, а поведение задаёт протокол I2RS.

Dynamic System State — динамическое состояние системы

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

Static System State — статическое состояние системы

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

I2RS agent — агент I2RS

См. определение в разделе 2.

Application — приложение

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

I2RS client — клиент I2RS

См. определение в разделе 2.

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

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

Хотя нескольким клиентам I2RS может потребоваться предоставить данные в один список (например, список префиксов или фильтров), это не является ошибкой и должно корректно обрабатываться. Нюансы обработки конфликтов при записи следует обрабатывать в информационной модели.

Целью архитектуры I2RS является обеспечение предсказуемого поведения при таких ошибках и предоставление отчётов заинтересованным клиентам. Детали соответствующей политики рассмотрены в параграфе 7.8. Управление из нескольких мест. Такой же механизм правил (приоритет для клиента I2RS) применяется к взаимодействиям агента I2RS с CLI/SNMP/NETCONF, как описано в параграфе 6.3. Взаимодействие с локальной конфигурацией.

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

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

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

agent или I2RS agent — агент (I2RS)

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

client или I2RS client — клиент (I2RS)

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

service или I2RS service — служба (I2RS)

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

read scope — область чтения

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

notification scope — область уведомлений

Областью уведомления является набор событий и связанных с ними сведений, для которых клиент I2RS может запросить выталкивание (push) агентом I2RS. Клиенты I2RS имеют возможность регистрироваться для конкретных событий и потоков информации, но должны ограничиваться в соответствии с правами доступа, связанными с их областью уведомлений.

write scope — область записи

Областью записи является набор значений полей, для которых клиенту I2RS разрешена запись (добавление, изменение, удаление). Этот доступ может быть ограничивать набор изменяемых или создаваемых данных, а также наборы устанавливаемых значений.

scope — область действия

Когда не указан тип области (чтение, запись, уведомления), термин «область действия» относится ко всем.

resources — ресурсы

Ресурсами считаются связанные с I2RS расход памяти, хранилища или исполнения, которые разрешено клиенту для выполнения операций I2RS. Размер каждого ресурса, доступного клиенту в контексте конкретного агента, может ограничиваться на основе роли клиента в плане безопасности. Примером ресурса является число уведомлений, на которые клиент может зарегистрироваться. Имеются ресурсы, относящиеся к протоколу и сети.

role или security role — роль (роль в безопасности)

Роль в безопасности задаёт область действия, ресурсы, приоритеты и т. п., которые имеет клиент или агент. Если с идентификатором связано несколько ролей в системе безопасности, разрешены все операции, разрешённые в какой-либо из этих ролей. Несколько идентификаторов могут использовать одну роль в безопасности.

identity — идентификатор (отождествление)

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

identity and scope — идентификатор и область действия

С идентификатором может быть связано несколько ролей, каждая из которых имеет свою область действия, и такой идентификатор может использовать комбинацию этих областей. Каждый идентификатор имеет:
  • область чтения — логическое объединение (OR — или) областей чтения всех ролей;
  • область записи — логическое объединение (OR — или) областей записи всех ролей;
  • область уведомления — логическое объединение (OR — или) областей уведомления всех ролей.

secondary identity — вторичный идентификатор

Клиент I2RS может предоставлять вторичный необрабатываемый (opaque) идентификатор, который агент I2RS не интерпретирует. Примером применения такого идентификатора является случай, когда клиент I2RS является посредником для нескольких приложений и нужно отслеживать, какое из них запросило конкретную операцию.

ephemeral data — эфемерные данные

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

group — группа

В модели управления доступом NETCONF [RFC6536] группой называется административная группа, в которой чётко разделяются учётная запись root и пользовательские учётные записи с меньшими привилегиями. Группой считается также одно отождествление (например, root), применяемое группой пользователей.

routing system/subsystem — система (подсистема) маршрутизации

Системой или подсистемой маршрутизации является набор программ и/или оборудования, определяющего, куда пересылать пакеты. Агент I2RS является частью системы маршрутизации. Пакетами могут называться кадры L1 и L2, пакеты L3. В системе маршрутизации Internet пакетами считаются пакеты IP на уровне L3. Подсистемой маршрутизации называют программы и/или оборудования, являющиеся частью более крупной системы.

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

3. Основные свойства архитектуры

Ниже разъясняются несколько основных свойств архитектуры I2RS (простота, расширяемость, управляемые моделями программные интерфейсы). Такие свойства, как производительность и масштабирование не рассматриваются здесь, поскольку они описаны в [RFC7920] и могут различаться в зависимости от варианта применения.

3.1. Простота

За прошедшие годы было предпринято много усилий по улучшению доступа к сведениям, доступным из системы маршрутизации и пересылки. Удобное представление таких сведений системе управления сетью и приложениям обеспечивает много очевидных преимуществ, однако возникают две взаимосвязанные проблемы. Во-первых, объем и разнообразие потенциально доступных данных очень велико. Во-вторых, различия в структуре данных и типах требуемых операций, как правило, усложняют протокол.

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

Поэтому одной из важнейших целей I2RS является сохранение простоты протокола и архитектуры моделирования.

3.2. Расширяемость

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

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

Рабочая группа I2RS задаёт операции для протокола I2RS. Было бы слишком оптимистично предполагать, что не потребуется что-либо ещё по мере расширения масштабов I2RS. Таким образом, важно учитывать расширяемость не только моделей, но и примитивов, а также операций протокола.

3.3. Программные интерфейсы на основе моделей

Важнейшей частью I2RS являются стандартные модели информации и данных со связанной семантикой. Хотя многие компоненты систем маршрутизации стандартизованы, соответствующие модели данных для них ещё недоступны. Каждый маршрутизатор применяет свою информацию, механизмы и интерфейсы, а также разные CLI, что делает стандартный интерфейс для использования приложениями чрезвычайно громоздким для разработки и поддержки. Есть общеизвестные языки моделирования данных, которые можно применить для создания моделей данных I2RS.

Применение управляемой на основе модели архитектуры и протоколов обеспечит важные преимущества для I2RS. Во-первых, это позволит обрабатывать данные управления на основе модели данных, что обеспечит модульную реализацию клиентов и агентов I2RS. Клиенту I2RS нужно реализовать лишь модели данных, к которым тот имеет доступ, а агенту I2RS — лишь те модели, которые он поддерживает. Во-вторых, инструменты могут автоматизировать проверку и манипуляции с данными, что особо ценно как для расширяемости, так и для простоты манипулирования и проверки фирменных (proprietary) моделей данных.

Различным службам, поддерживаемым I2RS, могут соответствовать разные модели данных. Агент I2RS может указывать поддерживаемые им модели.

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

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

Эта архитектура I2RS описывает интерфейсы, которые явно требуют серьёзного внимания к безопасности. Архитектура I2RS была разработана для использования имеющихся протоколов обмена данными управления сетью. Двумя протоколами, используемыми в I2RS версии 1, являются NETCONF [RFC6241] и RESTCONF [RESTCONF]. В будущих версиях I2RS могут применяться и другие протоколы.

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

Из-за стратегии применения имеющихся протоколов в архитектуре I2RS этот раздел описывает предполагаемую среду защиты для I2RS с дополнительным рассмотрением a) отождествления и проверки подлинности, b) проверки полномочий и c) резервирования клиентов. Каждый протокол, предложенный для включения как протокол I2RS, должен оцениваться в плане ограничений, связанных с безопасностью. Детальные требования к протоколу I2RS и среде защиты I2RS будут заданы в этих глобальных средах защиты.

Требования безопасности для протокола I2RS версии 1 заданы в [I2RS-PROT-SEC], а глобальные требования к среде защиты I2RS — в [I2RS-ENV-SEC].

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

Требуется взаимная проверка подлинности между клиентом и агентом I2RS. Клиент I2RS должен быть способен доверять тому, что агент I2RS подключён к соответствующему элементу маршрутизации для корректного применения операций записи и изменения, а также тому, что он может доверять сведениям, полученным от агента I2RS.

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

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

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

Другие взаимодействия через I2RS могут не требовать защиты целостности и конфиденциальности, а также защиты от повторного использования. Например, если клиент I2RS подписывается на поток сведений об анонсах префиксов от OSPF, ему может быть нужна защита целостности, но скорей всего не потребуется защита конфиденциальности и защита от повторного использования. Точно так же для потока сведений о статистике интерфейса может не требоваться даже гарантий доставки. В параграфе 7.2 рассматриваются дополнительные коммуникационные каналы и их использование. С точки зрения безопасности важно понимать, что агент I2RS может создать новый канал связи на основе сведений от клиента I2RS (как описано в параграфе 7.2). Например, клиент I2RS может запросить уведомления о некоторых событиях и агент будет создавать канал для передачи таких уведомлений. Поэтому для предотвращения косвенных атак такие запросы должны выполняться в контексте клиента, подлинность и полномочия которого проверены и сообщения этого клиента не могут быть изменены.

4.1. Отождествление и проверка подлинности

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

Клиенты I2RS могут работать от имени других приложений. Хотя для идентификаторов этих приложений не требуется проверка подлинности полномочий, каждому приложению следует иметь уникальный неинтерпретируемый (opaque) идентификатор, который может быть предоставлен клиентом I2RS агенту I2RS для отслеживания полномочий приложения при операциях (или информирования по идентификаторам). Такое отслеживание операций поддерживает функциональность I2RS по трассировке действий (для поиска неполадок в маршрутизаторах) и регистрации изменений в сети.

4.2. Предоставление полномочий

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

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

Подходящий или требуемый уровень детализации для области действия может зависеть от конкретной службы I2RS и детализации в реализации. Подход к аналогичной задаче управления доступом определён в модели контроля доступа NETCONF (NETCONF Access Control Model или NACM) [RFC6536] и позволяет задать произвольные права доступа к экземпляру узла данных при определении значимых изменяемых установок, принятых по умолчанию. Идентификатор в NACM [RFC6536] может быть задан для имени пользователя или группы имён пользователей (например, Root) и это имя связывается с политикой области действия, которая содержится в наборе правил управления доступом. Аналогично ожидается, что идентификатор I2RS свяжет роль с политикой области действия, заданной набором правил контроля доступа. Эта политика может быть указана через локальную конфигурацию, раскрываемую как служба I2RS для манипуляция со стороны уполномоченных клиентов или иным способом (например, службой AAA5)

Хотя агент I2RS разрешает доступ на основе политики области действия клиента I2RS, это не означает, что требуется доступ для прибытия по конкретному транспортному протоколу или от конкретного клиента I2RS в соответствии с архитектурой I2RS. Применяемая оператором политика области действия может (но не обязана) ограничивать транспортные соединения или идентификаторы, которые могут иметь доступ к локальному агенту I2RS.

Когда клиент I2RS аутентифицирован, его идентификатор предоставляется агенту I2RS и связывает клиента с ролью, с которой связана политика области действия. С одной ролью может быть связано несколько идентификаторов. Такой ролью может быть, например, мониторинг внутренних маршрутов (Internal-Routes-Monitor), которому разрешено считывать часть I2RS RIB, связанную с префиксами IP, применяемыми для внутренних адресов устройства в AS.

4.3. Резервирование клиента

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

4.4. I2RS в персональных устройствах

Если агент или клиент I2RS тесно связан с человеком (например, агент I2RS работает на телефоне для управления подключением), это может вызывать проблемы приватности в дополнение к обычным проблемам безопасности в I2RS. Одним из примеров взаимодействия I2RS, которое может вызывать проблемы приватности, является возможность отслеживания местоположения телефона. Протоколу I2RS и модели данных следует учитывать возможные проблемы приватности при отмеченном использовании клиентов или агентов.

5. Сетевые приложения и клиент I2RS

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

В простейшей архитектуре с прямым доступом ориентированное на сеть приложение имеет клиент I2RS как библиотеку или драйвер для взаимодействия с элементом маршрутизации. В архитектуре с посредником (broker) несколько сетевых приложений взаимодействуют незаданными способами с приложением-посредником, содержащим клиент I2RS. Такое приложение требует дополнительной функциональности для проверки подлинности и полномочий ориентированных на сеть приложений. Эти функции выходят за рамки I2RS, но к ним применимы соображения, аналогичные указанным в параграфе 4.2. Предоставление полномочий. Как указано в параграфе 4.1. Отождествление и проверка подлинности, клиенту I2RS у посредника следует задавать разные неинтерпретируемые (opaque) идентификаторы для каждого ориентированного на сеть приложения, которое использует его. Клиент I2RS у посредника может передавать соответствующее значение в качестве идентификатора, который может применяться для отслеживания операций.

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

5.1. Пример сетевого приложения — менеджер топологии

Менеджер топологии включает клиент I2RS, который использует модели данных и протокол I2RS для сбора сведений о состоянии сети, взаимодействуя напрямую с одним или множеством агентов I2RS. От этих агентов I2RS менеджер топологии собирает данные настройки маршрутизации и рабочего состояния, такие как интерфейс и сведения о путях LSP. Кроме того, менеджер топологии может несколькими способами собирать сведения о состоянии каналов — от моделей I2RS, партнёров BGP-LS [RFC7752], через прослушивание IGP.

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

6. Роль и функциональность агента I2RS

Агент I2RS является частью элемента маршрутизации, поэтому он взаимодействует с этим элементом в целом и его различными компонентами.

6.1. Взаимоотношения с элементом маршрутизации

Элемент маршрутизации может быть реализован в самых разных вариантах архитектуры — интегрированный маршрутизатор, расщепленная или распределенная архитектура и т. п. Это не должно влиять на базовое поведение агента I2RS.

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

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

6.2. Хранилище состояния I2RS

Запросы на изменение состояния передаются агенту I2RS в элементе маршрутизации клиентами I2RS. Агент I2RS отвечает за применение этих изменений в системе с учётом имеющихся полномочий, как отмечено выше. Агент I2RS будет хранить сведения о внесённых изменениях и клиентах, от чьего имени эти изменения внесены. Агент I2RS будет также хранить активные подписки. Эти наборы данных формируют хранилище I2RS. Данные сохраняются агентом, пока клиент не удалит состояние, оно не будет переопределено какой-либо иной операцией, такой как CLI, или устройство не будет перезагружено. Рекомендуется вести содержательный журнал применения и удаления изменений. Применяемые I2RS изменения в элементе маршрутизации не будут сохраняться при перезагрузке этого элемента. Хранилище I2RS не сохраняется при перезагузке элемента маршрутизации, поэтому агент I2RS не будет пытаться повторить изменения после перезагрузки.

6.2.1. Отказ агента I2RS

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

NOTIFICATION_I2RS_AGENT_TERMINATING

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

NOTIFICATION_I2RS_AGENT_STARTING

Это уведомление сообщает клиентам I2RS, что связанный агент I2RS был запущен. Уведомление включает счётчик загрузок (agent-boot-count), показывающий число перезапусков агента с момента перезагрузки соответствующего элемента маршрутизации. Счётчик позволяет клиенту I2RS определить, был ли агент I2RS перезапущен (отметим, что это уведомление агент I2RS передаёт клиентам I2RS, известным агенту после перезагрузки; способ сохранения агентом I2RS сведений о клиентах I2RS выходит за рамки этой архитектуры).

Возможны два типа отказов, которые различаются своим поведением.

Неожиданный отказ

Агент I2RS даёт неожиданный сбой и не может ни о чем уведомить клиентов. Поскольку I2RS не требует постоянного соединения между клиентом и агентом I2RS, агенту I2RS требуется иметь механизм уведомления клиентов, у которых есть подписка или записанное эфемерное состояние. Таких клиентов I2RS следует кэшировать системе агента I2RS в постоянном хранилище. При запуске агента I2RS ему следует передать уведомление NOTIFICATION_I2RS_AGENT_STARTING каждому кэшированному клиенту.

Аккуратное отключение

В этом случае агент I2RS может выполнять определённую ограниченную работу в рамках отключаемого процесса. Агент I2RS должен передать уведомление NOTIFICATION_I2RS_AGENT_TERMINATING всем своим кэшированным клиентам I2RS. Если агент I2RS перезапускается после аккуратного отключения, он будет передавать уведомление NOTIFICATION_I2RS_AGENT_STARTING каждому кэшированному клиенту.

6.2.2. Начало и завершение

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

6.2.3. Возврат к прежнему состоянию

Агент I2RS может решить, что некое состояние больше не следует применять, а клиент I2RS может указывать агенту удалить состояние, которое клиент применил. В таких случаях будет возвращаться состояние, которое было до взаимодействия между клиентом и агентом I2RS. Обычно это состояние определяется через CLI, NETCONF, SNMP и т. п., агенты I2RS не пытаются сохранить множество альтернативных состояний или определить, к какому из них следует вернуться. Таким образом, модель не похожа на RIB, где хранится множество маршрутов с разным приориетом (сведения о состоянии I2RS при наличии двух клиентов I2RS приведены в параграфах 1.2 и 7.8)

Клиент I2RS может зарегистрироваться на уведомления (в зависимости от своей области действия для уведомлений) о смене состояния или удалении конкретного клиента I2RS.

6.3. Взаимодействие с локальной конфигурацией

Изменения могут исходить от локальной настройки или I2RS. Изменения и данные, хранимые I2RS, отделены от конфигурации локального устройства, но конфликты между ними должны разрешаться детерминированным способом с соблюдением применяемой оператором политики. Детерминированое изменение является результатом применения базовых правил I2RS, правил системы, элементов управления, заданных политикой оператора, и правил, заданных моделью данных YANG (зачастую в MUST и WHEN для зависимостей).

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

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

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

Очень важно, чтобы применялась политика, основанная на источнике, поскольку разрешение не может основываться на времени. Если просто отдать предпочтение последнему состоянию, это может привести к состязанию и финальное состояние может стать неопределенным.

6.3.1. Примеры локальной конфигурации и эфемерной конфигурации I2RS

Для иллюстрации принципов архитектуры полезен набор примеров. Предположим, что имеется 3 маршрутизатора Router A, Router B, Router C. Есть также 2 элемента применяемой оператором политики, которые должны быть у этих маршрутизаторов применительно к эфемерному состоянию:

  • Knob 1 — эфемерная конфигурация переопределяет локальную;

  • Knob 2 — обновление локальной конфигураци замещает и переопределяет эфемерную конфигурацию.

Для Knob 1 маршрутизаторы с агентом I2RS получающим эфемерную запись в модель данных должны понять:

  1. разрешает ли полритика оператора эфемерным изменениям конфигурации переопределять имеющуюся локальную конфигурацию?

  2. есть ли в модели данных YANG какие-либо правила, связанные с эфемерной конфигурацией (такие как правила MUST или WHEN)?

В рассматриваемом примере нет правил MUST или WHEN для записываемых данных. Тогда установки политики будут иметь вид

 Knob 1
 Knob 2
Router A
 Эфемерное состояние имеет приоритет
 Эфемерное состояние имеет приоритет
Router B
 Локальная конфигурация имеет приоритет
 Локальная конфигурация имеет приоритет
Router C
 Эфемерное состояние имеет приоритет
 Локальная конфигурация имеет приоритет

Нормальной политикой оператор для Router A является установка элементами Knob 1 и Knob 2 приоритета эфемерной конфигурации в агенте I2RS. Пусть клиент I2RS передаёт значение для записи в эфемерную конфигурацию через агент I2RS в Router A. Агент I2RS переопределяет значение в соответствующей конфигурации и возвращает подтверждение записи. Если значение изменяется в локальной конфигурации, Router A остаётся в эфемерной конфигурации, записанной клиентом I2RS.

Оператор Router B не желает записывать эфемерную конфигурацию для переопределения локальной, хотя в нем и установлен агент I2RS. Политика Router B отдаёт предпочтение локальной конфигурации над эфеменой. Когда агент I2RS на Router B получает запись от клиента I2RS, он проверяет Knob 1 и возвращает клиенту I2RS отклик, указывающий запрет переопределения локальной конфигурации. Пример с Router B показывает, почему в архитектуре I2RS по умолчанию принята локальная конфигурация. Поскольку функциональность I2RS является новой, оператор должен квлючить её, иначе эфемерная конфигурация I2RS не будет работать. Оператор Router B может установить код I2RS и протестировать отклики, не применяя функцию перезаписи I2RS.

Оператор Router C устанавливает для Knob 1 переопределение клиентом I2RS имеющейся локальной конфигурации, а для Knob 2 задаёт обновление эфемерной конфигурации при изменении локальной. Для понимания причин этого представим, что Router C находится под контролем оператора, у которого есть система back-end, переписывающая локальную конфигурацию всех систем в 23 часа каждые сутки. Любые эфемерные изменения в сети сохраняются лишь до 23 часов, а затем back-end возвращает локальную конфигурацию. Пусть клиент I2RS записывает эфемерные состояния в течение для, а агент I2RS на Router C обновляет значения. В 23 часа back-end обновляет локальную конфигурацию через NETCONF и агент I2RS уведомляется об изменении. Агент I2RS информирует клиента I2RS о переопределении значения локальной настройкой. Клиент I2RS в этом случае является частью приложения, отслеживающего эфемерные изменения, чтобы убедиться в их включении при следующем запуске настройки.

6.4. Компоненты маршрутизации и связанные с ними службы I2RS

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

Исходно включённые в архитектуру I2RS службы показаны на рисунке 2.

***************************     **************    *****************
*      Протокол I2RS      *     *            *    * Динамические  *
*                         *     * Интерфейсы *    *   данные и    *
*  +--------+  +-------+  *     *            *    *  статистика   *
*  | Клиент |  | Агент |  *     **************    *****************
*  +--------+  +-------+  *
*                         *        **************    *************
***************************        *            *    * База      *
                                   *  Шаблоны   *    * шаблонов  *
********************    ********   *  правил    *    * QoS       *
*       +--------+ *    *      *   *            *    *************
*  BGP  | BGP-LS | *    * PIM  *   **************
*       +--------+ *    *      *
********************    ********       ****************************
                                       * MPLS +---------+ +-----+ *
**********************************     *      | RSVP-TE | | LDP | *
*    IGP       +------+ +------+ *     *      +---------+ +-----+ *
*  +--------+  | OSPF | |IS-IS | *     * +--------+               *
*  | Общее  |  +------+ +------+ *     * | Общее  |               *
*  +--------+                    *     * +--------+               *
**********************************     ****************************

**************************************************+************
* Менеджер RIB                                                *
*  +-------------------+  +----------------+   +------------+ *
*  | Индивид./групповые|  |Маршрутизация   |   |Элементы    | *
*  | RIB и LIB         |  |на основе правил|   |управл. RIB | *
*  | экземп. маршрутиз.|  |(ACL и т. п.)   |   +------------+ *
*  +-------------------+  +----------------+                  *
****************************************************+**********

Рисунок 2. Ожидаемые службы I2RS.


Службы I2RS связаны между собой — RIB могут требоваться ссылки на конкретные экземпляры, указание общих составных типов (например, каналы, узлы, адреса IP) или возможность ссылаться на зависящие от реализации функции (например, предопределённые шаблоны для применения к интерфейсам или поведению QoS для трафика). В параграфе 6.4.5. Информационные модели, разные устройства и взаимосвязи информации рассматриваются конструкции моделирования информации и диапазоны применимых типов взаимоотношений.

6.4.1. Базы сведений о маршрутизации и метках

Элементы маршрутизации могут поддерживать одну или несколько информационных баз. Примеры включают RIB, такие как IPv4/IPv6 Unicast или IPv4/IPv6 Multicast. Другим примером служат базы сведений о метках MPLS (Label Information Base или LIB), базы на платформу, интерфейс или контекст. Эта функциональность, раскрываемая через службу I2RS, должна гладко взаимодействовать с теми же механизмами, которые элемент маршрутизации уже использует для обработки ввода в RIB из множества источников. Концептуально это можно сделать через агент I2RS, взаимодействующий с менеджером RIB, как отдельным источником маршрутизации.

Состояние «один с многими» (point-to-multipoint), добавляемое в RIB, не обязательно должно совпадать с установленным состоянием общеизвестного протокола групповой передачи. Агент I2RS может создавать произвольное состояние репликации в RIB в зависимости от анонсированных возможностей элемента маршрутизации.

6.4.2. IGP, BGP и групповые протоколы

Отдельная служба I2RS может представлять каждый протокол маршрутизации на устройстве. Такие службы I2RS могут включать ряд различных операций:

  • чтение различных внутренних RIB протокола маршрутизации часто полезное для понимания состояния сети; прямая запись в связанные с протоколами RIB или базы данных выходит за рамки I2RS;

  • чтение различных частей данных политики, которую конкретный экземпляр протокола применяет для управления своими операциями;

  • запись сведений политики, таких как атрибуты интерфейса, связанные с протоколом маршрутизации, или политика BGP, которые могут косвенно манипулировать атрибутами маршрутов, передаваемых в BGP;

  • запись маршрутов или префиксов, анонсируемых протоколом№

  • присоединение и удаление интерфейсов для групповых деревьев;

  • подписка на потоки информации об изменениях маршрутов;

  • получение уведомлений о включении или отключении партнёров.

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

6.4.3. MPLS

Службы I2RS нужны для раскрытия протоколов, создающих транспортные LSP (например, LDP и RSVP-TE) и протоколы (например, BGP, LDP), обеспечивающие услуги на основе MPLS (например, псевдопровода, L3VPN, L2VPN и т. п.). Это должно включать все локальные сведения о LSP, которые начинаются и завершаются в данном элементе маршрутизации, а также проходят через него (транзит).

6.4.4. Правила и механизмы QoS

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

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

6.4.5. Информационные модели, разные устройства и взаимосвязи информации

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

6.4.5.1. Классы и типы объектов, наследование

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

Базовый класс определяет общие аспекты, поддержка которых ожидается от всех элементов маршрутизации. Отдельные субклассы могут представлять вариации или дополнительные возможности. Когда это применимо, может задаваться несколько уровней уточнения. Затем протокол I2RS может предоставлять механизмы, позволяющие клиенту I2RS определить, какие классы доступны данному агенту I2RS. Клиенты I2RS, которым нужны лишь базовые возможности, могут работать исключительно с базовыми классами, а клиентам, нуждающимся в дополнительных деталях или функциях, могут работать с поддерживаемыми субклассами.

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

6.4.5.2. Необязательные функции

Информационная модель I2RS должна чётко указывать необязательные аспекты. Например, должен ли экземпляр класса всегда включать конкретное поле X и, если так, должен ли клиент предоставить значение X при создании объекта или имеется общеизвестное значение, принятое по умолчанию? С точки зрения элемента маршрутизации в этом примере информационной модели следует предоставлять сведения, относящиеся к следующим аспектам:

  • требуется ли X, чтобы поле данных было воспринято и применено?

  • если X является необязательным, как X взаимодействует с обязательными аспектами поля данных?

  • имеет ли поле данных принятые по умолчанию значения для обязательной и необязательной части?

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

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

6.4.5.3. Шаблоны

Шаблон — это набор сведений для решения проблемы, использующий понятия классов и экземпляров объектов. Шаблон предоставляет набор определённых значений для набора полей и может задавать набор значений, которые должны предоставляться для заполнения шаблона. Гибкая схема шаблона может разрешать перезаписывать некоторые из определённых значений. Например, назначение для трафика определённого класса обслуживания можно выполнить путём задания шаблона очередей с параметром для индикации класса (Gold, Silver, Best Effort). Способ реализации этого не моделируется. Это предполагает, что нужные шаблоны доступны на элементе маршрутизации через отличный от I2RS механизм. Идея состоит в том, что предоставляя подходящие шаблоны для задач, которые нужно выполнить, с шаблонами, по-разному реализованными для различных элементов маршрутизации, клиент легко может взаимодействовать с элементами маршрутизации, не заботясь о вариантах, которые могут обрабатываться включёнными в шаблон значениями.

Шаблоны могут не требоваться, если вариации реализаций можно раскрыть иначе. Однако шаблоны сами могут быть объектами ссылок в сообщениях протокола, при этом элементы маршрутизации нужно настраивать с подходящими шаблонами для выполнения операции. Этот вопрос требует дополнительного обсуждения.

6.4.5.4. Взаимосвязи объектов

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

6.4.5.4.1. Инициализация

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

6.4.5.4.2. Указание корреляций

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

6.4.5.4.3. Ссылки на объекты

Иногда связи между объектами сильнее. Например, действительная запись ARP должна указывать интерфейс, через который она получена. Это классическое использование ссылок на объекты в программировании и его можно применять для взаимоотношений, таких как сдерживание и зависимость. Обычно это представляется явной ссылкой в модели.

6.4.5.4.4. Активные ссылки

Имеются ещё более сильные связи между объектами, когда изменение одного из них всегда отражается в состоянии другого. Например, если при наличии у туннеля MTU (максимальный передаваемый блок) изменение MTU на канале должно незамедлительно отражаться в MTU туннеля, эти значения будут жёстко связаны. Этот вид связывания активных состояний предполагает жёсткое согласования, зачастую представляемое как модель подписки между объектами.

7. Интерфейс между клиентом и агентом I2RS

7.1. Протокол управления и обмена данными

Эта архитектура I2RS подразумевает управляемый на основе модели данных протокол, где модель данных задана в YANG 1.1 [YANG1.1] и связанных базовых документах YANG [RFC6991], [RFC7223], [RFC7224], [RFC7277], [RFC7317]. Двумя протоколами, расширяемыми для поддержки I2RS являются NETCONF [RFC6241] и RESTCONF [RESTCONF]. Это помогает обеспечить простоту и повышает возможности внедрения. Протоколу I2RS может потребоваться использование нескольких вариантов базового транспорта (TCP, SCTP6, DCCP7) с подходящими механизмами проверки подлинности и защиты целостности. Этот различный транспорт может поддерживать разные типы взаимодействия (например, управление, чтение, уведомления, сбор информации) и разные наборы данных. Какой бы транспорт не применялся для обмена данными, он должен поддерживать подходящие механизмы контроля перегрузок. Выбранный транспорт должен быть удобен для оператора и разработчика, чтобы упростить внедрение.

Каждая версия протокола I2RS будет задавать a) транспорт, который может применяться протоколом I2RS, b) обязательный для реализации транспорт и c) необязательный для реализации транспорт.

7.2. Коммуникационные каналы

Требуется множество каналов связи нескольких типов. Может существовать ряд требований (например, к конфиденциальности и надёжности) и для поддержки расширяемости могут быть нужны каналы исходящие от нескольких субкомпонентов элемента маршрутизации и/или разных частей клиента I2RS. Все такие каналы будет использовать один протокол верхнего уровня I2RS (который сочетает защищённый транспорт и контекстную информацию I2RS). Использование дополнительных каналов будет согласовываться между клиентом и агентом I2RS с использованием этого протокола.

Коммуникации протокола I2RS могут обеспечиваться по основному каналу (in-band) плоскости данных системы маршрутизации, а также по отдельному каналу (out-of-band) через интерфейс управления. В зависимости от запрашиваемых операций взаимодействия I2RS могут прерывать работу по основному каналу, делая агент I2RS недоступным по этому каналу связи.

7.3. Согласование возможностей

Поддержка возможностей протокола и служб I2RS может сильно отличаться в разных клиентах I2RS и элементах маршрутизации, поддерживающих агент I2RS. Поскольку каждая служба I2RS должна включать модель возможностей (6.4. Компоненты маршрутизации и связанные с ними службы I2RS), согласование на уровне протокола может быть ограничено его спецификой и набором поддерживаемых услуг I2RS. Согласование возможностей (например, поддержка транспорта сверх обязательного минимума) явно потребуется. Важно сохранить простоту и отказоустойчивость такого согласования, поскольку эти механизмы могут стать причиной сложностей при реализации и внедрении.

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

7.4. Спецификации политики области действия

Как описано в параграфах 4.1 и 4.2, у каждого клиента I2RS имеется уникальный идентификатор и может быть второй идентификатор (см. 2. Терминология) для помощи при устранении неполадок. Как указано в разделе 4, все механизмы проверки подлинности и полномочий основаны на первичном идентификаторе, который связывает роль с областью действия политики для чтения и записи данных, а также для ограничения потребляемых ресурсов. Спецификации области данных политики (для чтения, записи, потребления ресурсов) должны указывать данные, которыми управляет политика и допустимые диапазоны диапазоны значений.

7.5. Связность

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

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

Для многих приложений может быть желательна очистка состояния, если сетевое приложение «умирает» до удаления созданного им состояния. Обычно это решается в части резервирования сетевого приложения. Если нужен более сильный механизм, внешние (не I2RS) механизмы могут позволить управляющему сетевому приложению отслеживать клиентов I2RS и на основе известных ему правил очищать состояние при умирании приложения. Реализация в агенте I2RS более сложных механизмов повысит сложность протокола I2RS, поэтому оставлена для будущей работы. Одним из таких механизмов является запрос клиентом очистки состояния при прерывании конкретной транспортной сессии. Другим является завершение состояния по сроку, заданному в политике, связанной с ролью клиента I2RS. Срок действия состояния может завершаться, когда не удалось создать канал связи или по инициативе клиента I2RS при заданной политикой продолжительности.

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

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

События могут быть интересны многим клиентам I2RS, контролирующим данные, обрабатываемые агентом I2RS, и другим клиентам I2RS, которые собирают сведения без управления. Поэтому архитектура требует для клиентов I2RS возможности регистрации на диапазон уведомлений, а для агентов I2RS — передавать уведомления множеству клиентов. Клиенту I2RS следует иметь возможность фильтровать получаемые уведомления, конкретные типы уведомлений и операций фильтрации могут зависеть от информационной модели и должны указываться в ней.

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

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

7.7. Сбор сведений

Ещё одним важным аспектом I2RS является упрощение сбора информации о состоянии сетевых элементов. Это включает как получение моментальных снимков (snapshot) большого объёма данных о текущем состоянии сети, так и подписку на происходящие изменения набора данных или его части. Это отделено в архитектуре от уведомлений из за различий в объёме и скорости передачи информации.

7.8. Управление из нескольких мест

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

Тем не менее, возникают неожиданные взаимодействия и два (или более) клиента I2RS могут пытаться манипулировать одной и той же частью данных. Это считается ошибкой. Данная архитектура не пытается определить, каким должно быть корректное состояние данных при таких конфликтах. Вместо этого архитектура требует наличия средств, с помощью которых агенты I2RS могут обработать такие конфликты. Механизм обеспечения предсказуемости состоит в назначении каждому клиенту I2RS определённого приоритета и применении изменений, заданных более приоритетным клиентом. При совпадении приоритетов преимущество отдаётся клиенту, который первым запросил действия.

Чтобы такой подход к управлению из разных мест подходил для клиентов I2RS, нужно возможность регистрации клиентов I2RS для получения уведомлений об изменениях, вносимых в данные с разрешённой записью, состояние которых представляет для этого клиента конкретный интерес. Это включено в механизмы событий I2RS. Нужно также применять это к изменениям, вносимым CLI/NETCONF/SNMP в области действия записи агента I2RS, поскольку там применяется тот же механизм приоритета (например, всегда отдаётся предпочтение CLI). После этого клиент I2RS может реагировать на ситуацию по своему усмотрению.

7.9. Транзакции

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

Все или ничего

Эта традиционная семантика SNMP указывает, что клиент при обработке сообщения будет хранить достаточно состояний, чтобы вернуться к исходному состоянию при возникновении ошибки. Будут применены все операции или ни одной из них, а сообщение об ошибке будет указывать единственный отказ, из-за которого операции не были применены. Это полезно, например, при взаимозависимости операций из сообщения.

Выполнение до ошибки

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

Выполнять все, записывая ошибки

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

Для отказоустойчивости и чёткости состояния протокола включается явный отклик на операции изменения и записи даже при отсутствии отказов.

8. Вопросы эксплуатации и управляемости

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

Управляемость является очень важным аспектом I2RS. Некоторые примере приведены ниже.

Ограничение ресурсов

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

Взаимодействие конфигураций

Необходимо чётко определять взаимодействие состояния, установленного через I2RS, и состояния настройки маршрутизатора. Как описано в этом документе, для обеспечения достаточно гибкости применяется простой механизм приоритетов.

Отслеживаемость взаимодействий

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

Служба подписки на уведомления

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

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

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

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

[RFC7920] Atlas, A., Ed., Nadeau, T., Ed., and D. Ward, «Problem Statement for the Interface to the Routing System», RFC 7920, DOI 10.17487/RFC7920, June 2016, <http://www.rfc-editor.org/info/rfc7920>.

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

[I2RS-ENV-SEC] Migault, D., Ed., Halpern, J., and S. Hares, «I2RS Environment Security Requirements», Work in Progress, draft-ietf-i2rs-security-environment-reqs-01, April 2016.

[I2RS-PROT-SEC] Hares, S., Migault, D., and J. Halpern, «I2RS Security Related Requirements», Work in Progress8, draft-ietf-i2rs-protocol-security-requirements-06, May 2016.

[RESTCONF] Bierman, A., Bjorklund, M., and K. Watsen, «RESTCONF Protocol», Work in Progress9, draft-ietf-netconf-restconf-14, June 2016.

[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, <http://www.rfc-editor.org/info/rfc6241>.

[RFC6536] Bierman, A. and M. Bjorklund, «Network Configuration Protocol (NETCONF) Access Control Model», RFC 6536, DOI 10.17487/RFC6536, March 2012, <http://www.rfc-editor.org/info/rfc6536>.

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

[RFC7223] Bjorklund, M., «A YANG Data Model for Interface Management», RFC 7223, DOI 10.17487/RFC7223, May 2014, <http://www.rfc-editor.org/info/rfc7223>.

[RFC7224] Bjorklund, M., «IANA Interface Type YANG Module», RFC 7224, DOI 10.17487/RFC7224, May 2014, <http://www.rfc-editor.org/info/rfc7224>.

[RFC7277] Bjorklund, M., «A YANG Data Model for IP Management», RFC 7277, DOI 10.17487/RFC7277, June 2014, <http://www.rfc-editor.org/info/rfc7277>.

[RFC7317] Bierman, A. and M. Bjorklund, «A YANG Data Model for System Management», RFC 7317, DOI 10.17487/RFC7317, August 2014, <http://www.rfc-editor.org/info/rfc7317>.

[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, <http://www.rfc-editor.org/info/rfc7752>.

[YANG1.1] Bjorklund, M., Ed., «The YANG 1.1 Data Modeling Language», Work in Progress10, draft-ietf-netmod-rfc6020bis-14, June 2016.

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

Значительная часть документа заимствована из Interface to the Routing System Framework (февраль 2013 г.) и A Policy Framework for the Interface to the Routing System (февраль 2013 г.).

Авторы благодарны Nitin Bahadur, Shane Amante, Ed Crabbe, Ken Gray, Carlos Pignataro, Wes George, Ron Bonica, Joe Clarke, Juergen Schoenwalder, Jeff Haas, Jamal Hadi Salim, Scott Brim, Thomas Narten, Dean Bogdanovic, Tom Petch, Robert Raszuk, Sriganesh Kini, John Mattsson, Nancy Cam-Winget, DaCheng Zhang, Qin Wu, Ahmed Abro, Salman Asadullah, Eric Yu, Deborah Brungard, Russ Housley, Russ White, Charlie Kaufman, Benoit Claise, Spencer Dawkins, Stephen Farrell за их предложения и рецензии.

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

Alia Atlas
Juniper Networks
10 Technology Park Drive
Westford, MA 01886
United States
Email: akatlas@juniper.net
 
Joel Halpern
Ericsson
Email: Joel.Halpern@ericsson.com
 
Susan Hares
Huawei
7453 Hickory Hill
Saline, MI 48176
United States
Phone: +1 734-604-0332
Email: shares@ndzh.com
 
Dave Ward
Cisco Systems
Tasman Drive
San Jose, CA 95134
United States
Email: wardd@cisco.com
 
Thomas D. Nadeau
Brocade
Email: tnadeau@lucidvision.com

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

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

nmalykh@protokols.ru

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

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

3Forwarding Information Base — база сведений о пересылке.

4Label Switched Path Identifier — идентификатор пути с коммутацией по меткам.

5Authentication, Authorization, and Accounting — проверка подлинности и полномочий, а также учёт.

6Stream Control Transport Protocol — протокол управления потоковой передачей.

7Datagram Congestion Control Protocol — протокол дейтаграмм с контролем перегрузок.

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

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

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

Рубрика: RFC | Оставить комментарий

RFC 7922 Interface to the Routing System (I2RS) Traceability: Framework and Information Model

Internet Engineering Task Force (IETF)                         J. Clarke
Request for Comments: 7922                                  G. Salgueiro
Category: Informational                                     C. Pignataro
ISSN: 2070-1721                                                    Cisco
                                                               June 2016

Interface to the Routing System (I2RS) Traceability: Framework and Information Model

Интерфейс для отслеживания системы маршрутизации (I2RS) — схема и информационная модель

PDF

Аннотация

Этот документ описывает схему для отслеживания в интерфейсе с системой маршрутизации (Interface to the Routing System или I2RS) и информационную модель для этой схемы. Документ описывает мотивацию, требования и примеры использования, а также задаёт информационную модель для записи взаимодействий между элементами, реализующими протокол I2RS. Схема обеспечивает согласованный интерфейс отслеживания для компонентов, реализующих архитектуру I2RS, для записи сделанного, участников действий и времени. Документ нацелен на улучшение управления реализациями I2RS и может служить для устранения неполадок, аудита, прогнозов и учёта.

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

Документ не относится к категории Internet Standards Track и публикуется лишь для информации.

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

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

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

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

Архитектура I2RS [RFC7921] указывает, что клиенты I2RS, желающие получить или изменить состояние маршрутизации, должны пройти проверку подлинности у агента I2RS. У клиентов I2RS имеются уникальные идентификаторы, которые они предоставляют для аутентификации и им следует иметь другой неанализируемый (opaque) идентификатор для взаимодействующих через них приложений. Программирование состояния маршрутизации будет возвращать код результата конкретной операции и связанные с кодом причины. Эти сведения очень важны для понимания истории взаимодействий I2RS.

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

2. Соглашения и термины

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

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

3. Мотивация

По мере расширения сети и правила становятся все более важной частью плоскости управления, которая создаёт и поддерживает состояние пересылки, а эксплуатационная сложность возрастает. I2RS предлагает детализированный и согласованный контроль над правилами и состоянием плоскости управления, а также удаляет или сокращает область действия политики, которая была применена к плоскости управления на любом отдельном устройстве пересылки. Возможность автоматизировать и абстрагировать даже сложные элементы управления на основе правил подчёркивает потребность в одинаково масштабируемой функции отслеживания для записи на уровне событий деталей изменения системы маршрутизации, соответствующей требованиям I2RS (раздел 5 в [RFC7920]).

4. Применение

Очевидны мотивом для отслеживания I2RS является необходимость устранения неполадок и поиска причин, вызывающих проблемы во все более сложных системах маршрутизации. Например, благодаря наличию в I2RS многоканального полнодуплексного интерфейса с высокой пропускной способностью и скоростью отклика клиенты I2RS могут выполнять большое число операций с агентами I2RS почти одновременно и, вполне возможно, в очень быстрой серии. При внесении многочисленных изменений сеть реагирует соответствующим образом. Эти изменения могут приводить к состязанию (race), проблемам производительности, потере данных или нарушению работы служб. Для поиска первопричины проблем очень важно, чтобы сетевой оператор или администратор видел изменения, внесённые через I2RS в конкретный момент времени.

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

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

  • Мониторинг и устранение неполадок в реальном масштабе времени.

  • Автоматизированное сопоставление ошибок, анализ тенденций и обнаружение аномалий.

  • Автономный (вручную или с помощью инструментов) анализ изменений состояния маршрутизатора по сохраненным журналам отслеживания.

  • Расширенные возможности сетевого аудита, управления и прогнозирования.

  • Улучшенный учёт операций системы маршрутизации.

  • Обеспечение стандартизованного формата отчётов об инцидентах и журналов испытаний.

5. Информационная модель

В этом разделе рассматривается информационная модель трассировки I2RS и детали каждого из сохраняемых полей.

5.1. Схема отслеживания I2RS

В этом разделе описана схема отслеживания I2RS на основе архитектуры I2RS.

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


              +---------------+
         +----------------+   |
         |Приложение      |   |
         |..............  |   |  Необязательные приложения
         | ID приложения  |   +
         +----------------+
                ^
                |
                |
                v
             +-------------+
         +-------------+   |
         |Клиент I2RS  |   |
         |.............|   |  1 или несколько клиентов
         |ID клиента   |   +
         +-------------+
                ^
                |
                |
                v
         +-------------+                 +-----------------------------+
         |Агент I2RS   |---------------->|Журнал отслеживания          |
         |             |                 |.............................|
         +-------------+                 |Log Entry  [1 .. N]          |
               |  ^                      |.............................|
               |  |                      |Event ID                     |
               |  |                      |Starting Timestamp           |
               |  |                      |Request State                |
               |  |                      |Client ID                    |
               |  |                      |Client Priority              |
               |  |                      |Secondary ID                 |
   Операция +  |  | Код результата       |Client Address               |
   её данные   |  |                      |Requested Operation          |
               |  |                      |Applied Operation            |
               |  |                      |Operation Data Present       |
               |  |                      |Requested Operation Data     |
               |  |                      |Applied Operation Data       |
               |  |                      |Transaction ID               |
               |  |                      |Result Code                  |
               |  |                      |Ending Timestamp             |
               |  |                      |Timeout Occurred             |
               v  |                      |End Of Message               |
         +-------------+                 +-----------------------------+
         |Система      |
         |маршрутизации|
         +-------------+

Рисунок 1. Запись журнала трассировки взаимодействия I2RS.

5.2. Поля журнала отслеживания I2RS

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

Приведённый ниже список содержит поля, фиксируемые в журнале трассировки I2RS. Список представляет базовый набор поле, которые должны присутствовать во всех журналах трассировки I2RS. В дополнение к этому реализации агентов I2RS могут записывать другие поля, такие как производитель клиента I2RS или статистика агента (например, расход памяти, параметры производительности и т. п.).

Event ID — идентификатор события

Уникальный идентификатор для каждого события в журнале трассировки I2RS. Событием может быть аутентификация клиента агентом, операция клиента с агентом, отключение клиента от агента. События операций могут записываться неделимо (atomically) по завершению (в этом случае запись имеет обе временных метки Starting и Ending) или в начале каждой смены Request State. Поскольку операции могут происходить от одного клиента в одно время, важно иметь идентификатор, который можно однозначно связать с конкретной записью. Если для операции записывается каждая смена состояния, для каждой записи Request State должен использоваться один идентификатор. За счёт этого запрос легко отследить в журнале трассировки I2RS. Помимо требования уникальности Event ID, конкретный тип и значение задаёт реализация.

Starting Timestamp — временная метка начала

Время, когда операция I2RS вошла в указанное состояние запроса в агенте. Если запись журнала охватывает всю продолжительность запроса, это будет время получения запроса агентом. Это поле должно присутствовать во всех записях, задающих начало смены состояния, а также в записях, сохраняющих всю продолжительность запроса. Время указывается в полном формате временной метки [RFC3339], включая дату и часовой пояс (смещение от UTC3). С учётом того, что многие операции I2RS могут происходить в быстрой серии, должна использоваться дробная часть метки для обеспечения адекватной детализации. Доли секунд следует указывать 3 цифрами после точки (second.microsecond).

Request State — состояние запроса

Состояние данной операции в конечном автомате I2RS в момент, указанные метками начала и завершения. Агенту I2RS следует генерировать запись в момент входа в состояние и выхода из него. При входе в новое состояние запись журнала будет иметь в поле Starting Timestamp время входа а поля Ending Timestamp не будет. При выходе из состояния запись будет иметь в поле Ending Timestamp время выхода и не будет включать поля Starting Timestamp. Прохождение через различные состояние можно привязать с помощью Event ID. Возможные состояния указаны ниже.

PENDING

Запрос получен и помещён в очередь на обработку.

IN PROCESS

Запрос в данный момент обрабатывается агентом I2RS.

COMPLETED

Запрос достиг точки завершения.
Каждое изменение состояния следует записывать, если это не перегружает агента I2RS. Однако записи с Request State COMPLETED должны вноситься для всех операций. Если состояние COMPLETED является единственной записью для данного запроса, оно должно иметь временные метки начала и завершения, указывающие весь период запроса от поступления к агенту до завершения.

Client Identity — идентификатор клиента

Идентификатор клиента I2RS, используемый для проверки его подлинности агентом I2RS.

Client Priority — приоритет клиента

Приоритет клиента I2RS назначенный ему моделью контроля доступа, аутентифицировавшей клиента. Например, это может установить модель управления доступом (Access Control Model или NACM) протокола управления сетью (Network Configuration Protocol или NETCONF), как описано в [RFC6536].

Secondary Identity — второй идентификатор

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

Client Address — адрес клиента

Сетевой адрес клиента, подключённого к агенту, например, адрес IPv4 или IPv6.

Requested Operation — запрошенная операция

Операция I2RS, выполнение которой запрошено. Например, это может быть операция добавления маршрута, если маршрут вставляется в таблицу. Это не обязательно операция, фактически применённая к агенту.
В случае аутентификации клиента агентом запрошенной операцией должна быть CLIENT AUTHENTICATE. При отсоединении клиента от агента запрошенной операцией должна быть CLIENT DISCONNECT.

Applied Operation — примененная операция

Операция I2RS, выполненная фактически. Это может отличаться от Requested Operation в случаях, когда агент не может выполнить Requested Operation. Это поле может не записываться, если Request State имеет значение COMPLETED.

Operation Data Present — присутствуют данные операции

Это логическое поле указывает, имеются дополнительные данные для Operation Data.

Requested Operation Data — данные запрошенной операции

Это поле содержит данные, переданные агенту для завершения желаемой операции. Например, если операцией является добавление маршрута, Operation Data будет включать префикс маршрута, размер префикса и сведения о next-hop для вставки, а также конкретную таблицу маршрутизации, в которую помещается маршрут. При наличии Operation Data поле Operation Data Present должно иметь значение TRUE. Некоторые операции могут не предоставлять данных. В таких случаях поле Operation Data Present должно иметь значение FALSE, а это поле должно быть пустым. Поле может не соответствовать данным, использованным для операции, фактически применённой к агенту.
При аутентификации клиента агентом в Requested Operation Data должен указываться приоритет клиента. Могут записываться другие атрибуты, использованные для аутентификации, такие как свидетельства.

Applied Operation Data — данные примененной операции

Это поле содержит данные, которые были фактически применены как часть Applied Operation. Если агент не может выполнить Requested Operation с Requested Operation Data, это поле может отличаться от Requested Operation Data. Поле остаётся пустым, если не задано Requested Operation Data. Поле может не записываться, если Request State отличается от COMPLETED.

Transaction ID — идентификатор транзакции

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

Result Code — код результата

Это поле содержит результат операции после Request State со значением COMPLETED. Для операций RIB это должен быть код возврата, указанный в разделе 4 [RIBINFO]. Операция может не завершиться с кодом результата, если возникнет тайм-аут. Если при операции возник отказ, должна записываться попытка операции с соответствующим кодом результата.

Timeout Occurred — возник тайм-аут

Это логическое поле указывает, был ли тайм-аут при выполнении операции. При значении этого поля true в Ending Timestamp должно указываться время, когда агент зафиксировал тайм-аут. Это поле может не записываться, если Request State отличается от COMPLETED.

Ending Timestamp — временная метка завершения

Время, когда операция I2RS вышла из указанного состояния Request State в агенте I2RS. Если запись журнала охватывает всю продолжительность запроса, это будет время достижения запросом завершающей точки в агенте. Поле должно присутствовать во всех записях, которые задают завершение смены состояния, а также в записях, которые указывают всю продолжительность запроса. Время указывается полной меткой в формате [RFC3339], включая дату и часовой пояс (смещение от UTC. Описание подходящего формата приведено выше (Starting Timestamp).

End Of Message — конец сообщения

Каждой записи журнала следует включать подходящий индикатор конца сообщения (End Of Message или EOM). Подробности приведены в параграфе 5.3. Маркер конца сообщения.

5.3. Маркер конца сообщения

Из-за изменчивости полей журнала I2RS разработчики должны использовать подходящий для формата идентификатор конца сообщения (End Of Message или EOM), указывающий завершение отдельной записи. Независимо от формата, журнал I2RS должен обеспечивать чёткий способ отделения конца одной записи от начала другой. Например, в журнале с линейным форматом (как в syslog) маркером EOM может служить перевод строки. В журнале с форматом XML схема будет предусматривать теги элементов, указывающих начало и конец записи. В журнале JSON разделение записей обеспечивает синтаксис (вероятно с помощью разделённых запятыми элементов массива).

6. Примеры

В этом разделе приведён образец полей с возможными значениями.

   Event ID:                 1
   Starting Timestamp:       2013-09-03T12:00:01.21+00:00
   Request State:            COMPLETED
   Client ID:                5CEF1870-0326-11E2-A21F-0800200C9A66
   Client Priority:          100
   Secondary ID:             com.example.RoutingApp
   Client Address:           2001:db8:c0c0::2
   Requested Operation:      ROUTE_ADD
   Applied Operation:        ROUTE_ADD
   Operation Data Present:   TRUE
   Requested Operation Data: PREFIX 2001:db8:feed:: PREFIX-LEN 64
                             NEXT-HOP 2001:db8:cafe::1
   Applied Operation Data:   PREFIX 2001:db8:feed:: PREFIX-LEN 64
                             NEXT-HOP 2001:db8:cafe::1
   Transaction ID:           2763461
   Result Code:              SUCCESS(0)
   Timeout Occurred:         FALSE
   Ending Timestamp:         2013-09-03T12:00:01.23+00:00

7. Эксплуатационные рекомендации

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

7.1. Создание журнала отслеживания

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

7.2. Временное хранилище для журнала

Сведения трассировки могут временно храниться в буфере оперативной памяти или в локальном файле у агента. Следует учитывать число операций I2RS, ожидаемых на данном агенте для определения подходящего носителя данных и обеспечения максимальной эффективности журнала при минимальном влиянии на производительность и работоспособность агента. Запросы клиентов могут не всегда обрабатываться синхронно или в ограниченном интервале времени. Поэтому для гарантии попадания полей журнала, таких как Operation и Result Code в одну запись может потребоваться буферизация журнальных записей, которая может привести к дополнительной нагрузке на ресурсы агента и элементы сети.

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

В задачи этого документа не входит указание деталей реализации (размера, пропускной способности, защиты данных и т. п.) физического хранилища журнальных файлов I2RS. В части сохранения данных следует учитывать продолжительность хранения записей трассировки I2RS, если эти данные содержат атрибуты, относящиеся к безопасности или приватности. Чем дольше хранятся такие данные, тем серьёзней будет влияние возможной утечки. Законодательство может устанавливать свои требования к минимальному и/или максимальному сроку хранения некоторых видов данных.

7.3. Ротация файлов журнала

Для предотвращения исчерпания ресурсов агента I2RS или связанного с ним сетевого устройства агентам I2RS рекомендуется реализовать ротацию журналов. Детали этого выходят за рамки документа и остаются за реализацией. Однако следует поддерживать ротацию файлов по времени или размеру текущего журнала. Если поддерживается кольцевая ротация (rollover), рекомендуется сохранять несколько архивных файлов для достижения максимальных преимуществ при устранении неполадок и учёте.

7.4. Поиск журналов

Разработчики могут предоставлять свои фирменные (proprietary) интерфейсы и разрабатывать собственные инструменты для поиска и отображения журналов трассировки I2RS. Это может включать просмотр журналов I2RS на консоли через командный интерфейс (command-line interface или CLI). Однако основная цель определения этой информационной модели заключается в создании независимого от производителей согласованного интерфейса для сбора данных трассировки I2RS. Извлечение данных также должно быть независимым от производителя.

Несмотря на то, что экспорт журнала трассировки I2RS может быть бесценным диагностическим инструментом для автономного (off-box) анализа, недопустимо его влияние на возможности клиента обрабатывать новые входящие операции.

В трёх следующих параграфах рассмотрены возможные способы доступа к журналам трассировки. Поддержка подписки и публикации I2RS (pub/sub) для доступа к журналам обязательна для реализации.

7.4.1. Поиск через Syslog

Протокол syslog [RFC5424] является стандартным способом передачи уведомлений о событиях от хоста к сборщику. Однако этот протокол не задаёт стандартного формата для хранения сообщений, поэтому разработчикам трассировки I2RS приходится создавать свои форматы. Поэтому, несмотря на соответствие данных в сообщении syslog этой информационной модели и возможности их представления человеку, они могут быть малопригодны для машинного анализа. Syslog можно применять как средство извлечения и распространения содержимого журналов трассировки I2RS.

Если syslog применяется для извлечения журналов трассировки, следует использовать имеющуюся инфраструктуру ведения журналов и возможности syslog [RFC5424] без необходимости определять и расширять имеющиеся форматы. Поля, описанные в параграфе 5.2, следует моделировать и кодировать как структурированные элементы данных (Structured Data Element или SD-ELEMENT) в соответствии с параграфом 6.3.1 в [RFC5424].

7.4.2. Извлечение через сбор информации I2RS

В параграфе 7.7 описания архитектуры I2RS [RFC7921] задан механизм для сбора сведений, включающий получение «моментальных снимков» (snapshot) большого объёма данных от элементов сети. Цель I2RS заключается в обеспечении доступности таких данных независимо от разработчика. Поэтому журналы трассировки I2RS следует делать доступными для механизма сбора сведений I2RS в форме моментальных снимков или потока подписки.

7.4.3. Извлечение через подписку и публикацию I2RS

В параграфе 7.6 спецификации архитектуры I2RS [RFC7921] описаны механизмы уведомлений для потока изменений, происходящих на уровне I2RS. Требования к системе подписки и публикации I2RS заданы в [RFC7923]. Агенты I2RS должны поддерживать публикацию сведений из журнала трассировки I2RS в канале, описанном в [RFC7923]. Подписчики будут получать прямую трансляцию взаимодействий I2RS в формате журнала трассировки и смогут гибко выбирать свои действия по сообщениям из журналов. Например, подписчики могут записывать сообщения в хранилище данных, агрегировать и обобщать взаимодействия от одного клиента и т. д. Спектр возможных действий почти безграничен, а детали их выполнения выходят за рамки этого документа.

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

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

В задачи этого документа не входит указание мер защиты хранимых журнальных файлов, но предполагаются адекватные меры предосторожности и проверенные методы защиты, такие как шифрование дисков, подобающее ограничение доступа к файлам и каталогам, физическая защита объектов с журналами, взаимная аутентификация, транспортное шифрование, защита конфиденциальности и целостности при передаче файлов журнала. Кроме того, представляющиеся деликатными сведения в журнальном файле следует должным образом обезличивать или «затемнять» (obfuscate) для обеспечения приватности.

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

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

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

[RFC3339] Klyne, G. and C. Newman, «Date and Time on the Internet: Timestamps», RFC 3339, DOI 10.17487/RFC3339, July 2002, <http://www.rfc-editor.org/info/rfc3339>.

[RFC5424] Gerhards, R., «The Syslog Protocol», RFC 5424, DOI 10.17487/RFC5424, March 2009, <http://www.rfc-editor.org/info/rfc5424>.

[RFC7921] Atlas, A., Halpern, J., Hares, S., Ward, D., and T. Nadeau, «An Architecture for the Interface to the Routing System», RFC 7921, DOI 10.17487/RFC7921, June 2016, <http://www.rfc-editor.org/info/rfc7921>.

[RFC7923] Voit, E., Clemm, A., and A. Gonzalez Prieto, «Requirements for Subscription to YANG Datastores», RFC 7923, DOI 10.17487/RFC7923, June 2016.

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

[RFC6536] Bierman, A. and M. Bjorklund, «Network Configuration Protocol (NETCONF) Access Control Model», RFC 6536, DOI 10.17487/RFC6536, March 2012, <http://www.rfc-editor.org/info/rfc6536>.

[RFC7920] Atlas, A., Ed., Nadeau, T., Ed., and D. Ward, «Problem Statement for the Interface to the Routing System», RFC 7920, DOI 10.17487/RFC7920, June 2016, <http://www.rfc-editor.org/info/rfc7920>.

[RIBINFO] Bahadur, N., Ed., Kini, S., Ed., and J. Medved, «Routing Information Base Info Model», Work in Progress4, draft-ietf-i2rs-rib-info-model-08, October 2015.

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

Авторы благодарны Alia Atlas за исходные отклики и общую поддержку работы. Спасибо Alvaro Retana, Russ White, Matt Birkner, Jeff Haas, Joel Halpern, Dean Bogdanovich, Ignas Bagdonas, Nobo Akiya, Kwang-koog Lee, Sue Hares, Mach Chen, Alex Clemm, Stephen Farrell, Benoit Claise, Les Ginsberg, Suresh Krishnan, Elwyn Davies за их рецензии, текст для документа и предложенные улучшения.

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

Joe Clarke
Cisco Systems, Inc.
7200-12 Kit Creek Road
Research Triangle Park, NC 27709
United States
Phone: +1-919-392-2867
Email: jclarke@cisco.com
 
Gonzalo Salgueiro
Cisco Systems, Inc.
7200-12 Kit Creek Road
Research Triangle Park, NC 27709
United States
Email: gsalguei@cisco.com
 
Carlos Pignataro
Cisco Systems, Inc.
7200-11 Kit Creek Road
Research Triangle Park, NC 27709
United States
Email: cpignata@cisco.com

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

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

nmalykh@protokols.ru

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

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

3Coordinated Universal Time — универсальное координатное время.

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

Рубрика: RFC, Мониторинг и управление | Оставить комментарий

RFC 7920 Problem Statement for the Interface to the Routing System

Internet Engineering Task Force (IETF)                     A. Atlas, Ed.
Request for Comments: 7920                              Juniper Networks
Category: Informational                                   T. Nadeau, Ed.
ISSN: 2070-1721                                                  Brocade
                                                                 D. Ward
                                                           Cisco Systems
                                                               June 2016

Problem Statement for the Interface to the Routing System

Постановка задачи для интерфейса в систему маршрутизации

PDF

Аннотация

Традиционно системы маршрутизации реализуют сигнализацию (например, MPLS) и маршрутизацию для управления трафиком, пересылаемым в сеть. Расчёт маршрутов контролируется относительно статическими правилами, определяющими стоимость каналов и маршрутов или политику импорта-экспорта маршрутов. Появление динамичных сетей центров обработки данных (ЦОД), услуг WAN по запросам, динамического управления трафиком на основе правил, объединения (цепочек) услуг, а также необходимость защиты в реальном масштабе времени для всего трафика и парадигма отделения принятия решений от самих маршрутизаторов вызвали потребности в более динамичном управлении и программировании систем маршрутизации. Это должно разрешить контроль над данными маршрутизации и путями трафика, а также извлечение сведений о сетевой топологии, статистике трафика и другой сетевой аналитики из систем маршрутизации.

В этом документе предлагается реализовать эти потребности через интерфейс с системой маршрутизации (Interface to the Routing System или I2RS).

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

Документ не относится к категории Internet Standards Track и публикуется лишь для информации.

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

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

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

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

Традиционно системы маршрутизации реализуют сигнализацию (например, MPLS) и маршрутизацию для управления трафиком, пересылаемым в сеть. Расчёт маршрутов контролируется относительно статическими правилами, определяющими стоимость каналов и маршрутов или политику импорта-экспорта маршрутов. Появление динамичных сетей центров обработки данных (ЦОД), услуг WAN по запросам, динамического управления трафиком на основе правил, объединения (цепочек) услуг, а также необходимость защиты в реальном масштабе времени для всего трафика и парадигма отделения принятия решений от самих маршрутизаторов вызвали потребности в более динамичном управлении и программировании систем маршрутизации.

Поскольку масштабы и сложность современных сетей продолжают расти, а желаемая политика становится всё сложнее и динамичней, требуется поддержка быстрого контроля и аналитики. Масштабы современных сетей и ЦОД, а также связанные с ними операционные расходы требуют автоматизации даже простейших операций. Возможность быстрого взаимодействия с помощью более сложных операций для поддержки динамических правил ещё важнее.

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

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

Фирменные (proprietary) решения для частичного выполнения означенных требований были разработаны под конкретные ситуации и задачи. Стандартизация интерфейса с системой маршрутизации упростит её интеграцию в сеть. Наличие фирменных частных решений позволяет считать задачу стандартизации общего интерфейса разрешимой.

Следует отметить, что в этом документе термин «приложение» (applications) используется для исполняемых программ того или иного вида, имеющих доступ в сеть (например, IP или MPLS) через систему маршрутизации.

2. Модель I2RS и область задач для IETF

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

 +***************+   +***************+   +***************+
 *  Приложение   *   *  Приложение   *   *  Приложение   *
 +***************+   +***************+   +***************+
 |  Клиент I2RS  |           ^                  ^
 +---------------+           *                  *
          ^                  *   ****************
          |                  *   *
          |                  v   v
          |           +---------------+         +-------------+
          |           |  Клиент I2RS  |<------->| Другие      |
          |           +---------------+         | агенты I2RS |
          |                   ^                 +-------------+
          |________________   |
                           |  |  <== Протокол I2RS
                           |  |
...........................|..|..................................
.                          v  v                                 .
. +*************+     +---------------+      +****************+ .
. * База        *     |               |      *   Протоколы    * .
. * правил      *<***>|  Агент I2RS   |<****>* маршрутизации  * .
. +*************+     |               |      * и сигнализации * .
.                     +---------------+      +****************+ .
.                        ^   ^     ^                  ^         .
. +*************+        *   *     *                  *         .
. * База данных *        *   *     *                  *         .
. * топологии   *<*******+   *     *                  v         .
. +*************+            *     *         +****************+ .
.                            *     +********>*  Менеджер RIB  * .
.                            *               +****************+ .
.                            *                        ^         .
.                            v                        *         .
.                 +*******************+               *         .
.                 * Шаблоны подписки  *               *         .
.                 * и конфигурации    *               v         .
.                 * для измерений,    *      +****************+ .
.                 * событий,          *      * Менеджер FIB и * .
.                 * QoS и т. п.       *      * плоск. данных  * .
.                 +*******************+      +****************+ .
.................................................................

<-->  интерфейсы в области действия протокола I2RS
+--+  объекты в сфере заданного I2RS поведения
<**>  интерфейсы вне области действия протокола I2RS
+**+  объекты вне сферы заданного I2RS поведения
<==   указывает интерфейсы, где будет применяться протокол I2RS
....  граница маршрутизатора, поддерживающего I2RS

Рисунок 1. Модель и область задач I2RS.


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

Модель I2RS и область задач для работы IETF показаны на рисунке 1. В документе применяется терминология из [RFC7921]. Агент I2RS связан с маршрутизирующим элементом, который может быть размещён вместе с плоскостью данных. Клиент I2RS может быть интегрирован в сетевое приложение или контролироваться и применяться одним или несколькими отдельными сетевыми приложениями. Например, клиент I2RS может быть предоставлен контроллером сети или системой оркестровки, которая обеспечивает отличный от I2RS интерфейс для сетевых приложений и интерфейс I2RS с агентами I2RS на управляемых системах. Область действия моделей данных, применяемых I2RS, охватывает всю систему маршрутизации и выбранные протоколы для I2RS.

Как показано на рисунке 1, клиент I2RS и агент I2RS в системе маршрутизации являются объектами области действия I2RS. Выбранные протоколы для I2RS размещаются между клиентом и агентом I2RS. Остальные объекты на рисунке 1 выходят за рамки стандартизации I2RS. Протоколам передачи сообщений между клиентами и агентами I2RS следует поддерживать основные свойства, указанные в разделе 5. Аспекты, рассматриваемые для протокола I2RS.

I2RS будет применять набор значимых моделей данных для информации в системе маршрутизации и базе данных топологии. Каждой модели данных следует описывать назначение и связи моделируемых элементов. Модели данных следует разделять по свойствам управляемых компонентов, иметь версии и поддерживать расширение. Как показано на рисунке 1, I2RS нужно взаимодействовать с несколькими логическими компонентами маршрутизирующего элемента — базой правил, топологической базой, настройкой и подпиской на динамические измерения и события, протоколам маршрутизации и сигнализации и их менеджером RIB. Эти взаимодействия включают как запись (например, в базу правил или менеджер RIB), так и чтение (например, динамические измерения или база данных топологии). Приложению следует иметь возможность комбинировать данные от отдельных элементов маршрутизации для обеспечения моделей данных в масштабе сети.

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

3. Стандартные модели данных состояния маршрутизации

Как указано в разделе 1, необходима возможность точно контролировать состояние маршрутизации и сигнализации на основе правил или внешних мер. Одним из наборов моделей данных, на котором следует сосредоточить I2RS, предназначен для взаимодействия с уровнем RIB (например, RIB, LIB3, групповая RIB, маршрутизация на основе правил) для обеспечения гибкости и абстракций маршрутизации. Например, желаемое состояние маршрутизации и сигнализации может варьироваться от простых статических маршрутов до маршрутизации на основе правил и статической групповой репликации и статуса маршрутизации. Это значит, что для эффективного моделирования следующего узла (nexthop) применяемая модель данных должна обрабатывать косвенность (indirection) nexthop и рекурсию (например, префикс X маршрутизируется аналогично префиксу Y), а также разные типы туннелирования и инкапсуляции.

Усилия по обеспечению такого уровня контроля были сосредоточены на стандартизации моделей данных, описывающих плоскость пересылки (например, ForCES4 [RFC3746]). I2RS признает, что система маршрутизации и ОС маршрутизатора обеспечивают полезные механизмы, которые приложения могут применять для достижения целей на своём уровне. Применение косвенности маршрутов, рекурсии и базовых абстракций маршрутизации (например, туннелей, LSP5 и т. п.) обеспечивает значительную гибкость и функциональность по сравнению с отдельными маршрутами в FIB, которые нужно менять индивидуально при возникновении изменений.

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

4. Изучение сведений от маршрутизаторов

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

Хотя попытки расширить доступную технологическую информацию предпринимаются, даже лучшие из них (например, , BGP-LS [RFC7752]) по-прежнему предоставляют лишь текущее активное состояние, наблюдаемое на уровнях IGP и BGP. Приложениям нужно подробное состояние топологии с большим объёмом информации (например, активные пути и каналы). Примеры отсутствующих сведений включают пути или каналы (например, отключённые административно), которые потенциально доступны или неизвестны (например, партнёры или клиенты) топологии маршрутов.

Чтобы у приложений была обратная связь, осведомленная о соответствующем трафике, приложение должно иметь возможность запросить измерение и своевременные, масштабируемые отчёты о результатах. Хотя такие механизмы, как экспорт сведений о потоке IP (IP Flow Information Export или IPFIX) [RFC5470], могут способствовать доставке данных, важно предоставить приложениям возможность динамически запрашивать у таких механизмов выполнение измерений и доставку данных.

Имеется много событий, которые приложения могут использовать для проверки состояния маршрутизатора до того, как изменится другое состояние сети (например, будет установлен маршрут), и заблаговременно выполнять действия в ответ на изменения соответствующих маршрутов или события в маршрутизаторе (например, включение или выключение канала). Хотя что-то (например, включение или выключение канала) доступно сегодня через уведомления MIB, полный диапазон (например, установка или изменение маршрута, смена основного LSP) остаются недоступными.

5. Аспекты, рассматриваемые для протокола I2RS

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

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

Множество одновременных асинхронных операций

Отдельное приложение должно иметь возможность передать несколько независимых неделимых (atomic) операций через I2RS, не дожидаясь выполнения каждой перед отправкой следующей.

Тонкая детализация блокировки данных для записи

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

Контроль из разных источников

Несколько приложений могут взаимодействовать с одним агентом I2RS при минимальной координации. Нужно, чтобы агент I2RS мог обрабатывать несколько запросов известным способом, определяемым правилами. Записанные данные могут принадлежать разным клиентам I2RS в разные моменты времени, данные могут быть переопределены другим клиентом I2RS. Датели такой обработки рассмотрены в [RFC7921].

Дуплекс

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

Высокая пропускная способность

Агенту I2RS и связанному с ним маршрутизатору следует, по меньшей мере, иметь возможность обработки значительного числа операций в секунду (например, 10000 для обработки множества индивидуальных маршрутов в абонентам, меняющихся одновременно).

Малая задержка

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

Множество каналов

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

Масштабируемый и фильтруемый доступ к информации

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

Защищённое управление и доступ

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

Расширяемость и функциональная совместимость

Протокол и модели I2RS должны быть расширяемыми и совместимыми между разными версиями протокола и моделей.

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

Безопасность является важнейшим аспектом любого протокола, который позволяет задавать состояния и извлекать детали состояния маршрутизатора. Необходимость защищённого управления и доступа отмечена в разделе 5. Большинство архитектурных соображений безопасности рассмотрено в [RFC7921]. Предполагается, что агент I2RS имеет отдельный канал проверки подлинности и полномочий, через который можно проверить отождествление и права клиента I2RS. Требуется взаимное согласование между клиентом и агентом I2RS. С разными аспектами I2RS связаны различные уровни защиты целостности и конфиденциальности, а также предотвращения повторного использования (replay).

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

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

[RFC7921] Atlas, A., Halpern, J., Hares, S., Ward, D., and T. Nadeau, «An Architecture for the Interface to the Routing System», RFC 7921, DOI 10.17487/RFC7921, June 2016, <http://www.rfc-editor.org/info/rfc7921>.

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

[RFC3746] Yang, L., Dantu, R., Anderson, T., and R. Gopal, «Forwarding and Control Element Separation (ForCES) Framework», RFC 3746, DOI 10.17487/RFC3746, April 2004, <http://www.rfc-editor.org/info/rfc3746>.

[RFC5470] Sadasivan, G., Brownlee, N., Claise, B., and J. Quittek, «Architecture for IP Flow Information Export», RFC 5470, DOI 10.17487/RFC5470, March 2009, <http://www.rfc-editor.org/info/rfc5470>.

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

[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, <http://www.rfc-editor.org/info/rfc7752>.

Приложение A. Имеющиеся интерфейсы управления

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

Есть 3 основных способа управления маршрутизаторами. Наиболее популярным является командный интерфейс (command-line interface или CLI), позволяющий настраивать и изучать состояние устройства. Это фирменный (proprietary) интерфейс, напоминающий оболочки UNIX, который позволяет очень селективно настраивать устройство и наблюдать за ним и, что особенно интересно в нашем случае, работать в его системой маршрутизации. Та или иная форма этого интерфейса имеется почти на каждом устройстве (виртуальном или ином). Обработка сведений, возвращаемых в CLI (называется «скоблением» экрана — screen scraping) — обременительное занятие, поскольку данные обычно форматируются для человека, а их схема может меняться от устройства к устройству и от версии к версии. Несмотря на повсеместное распространение, это интерфейс не стандартизован и вряд ли когда-либо будет стандартизован. Стандартизация CLI не рассматривается как возможное решение для I2RS.

Другим распространенным интерфейсом для опроса состояния устройства, статистики и конфигурации является простой протокол сетевого управления (Simple Network Management Protocol или SNMP) с набором стандартизованных и фирменных модулей MIB6. SNMP давно применяется администраторами сетей для сбора сведений о статистике и состояниях устройств, включая системы маршрутизации. Однако SNMP очень редко служит для настройки устройств или каких-либо их систем по причине очень сильной зависимости от оператора сети. К таким причинам относятся сложность, отсутствие желаемой семантики настройки (например, отката конфигурации, «песочниц», версий конфигурации) и сложности применения семантики (или её отсутствия), определённой в модулях MIB, для настройки функций устройств. Поэтому SNMP не рассматривается как возможное решение для I2RS.

Протокол IETF для настройки сети (Network Configuration Protocol или NETCONF) [RFC6241] существенно продвинулся в части преодоления большинства отмеченных ограничений, связанных с настройкой. Однако это новая технология и ещё нет стандартных моделей, поэтому внедрение NETCONF идёт достаточно медленно. При необходимости I2RS будет идентифицировать и определять информацию и модели данных для поддержки приложений I2RS. В NETCONF и/или соответствующие модели данных может потребоваться добавить расширения для управления из нескольких мест.

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

Авторы благодарны Ken Gray, Ed Crabbe, Nic Leymann, Carlos Pignataro, Kwang-koog Lee, Linda Dunbar, Sue Hares, Russ Housley, Eric Grey, Qin Wu, Stephen Kent, Nabil Bitar, Deborah Brungard, Sarah Banks за их предложения и рецензии.

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

Alia Atlas (editor)
Juniper Networks
Email: akatlas@juniper.net
 
Thomas D. Nadeau (editor)
Brocade
Email: tnadeau@lucidvision.com
 
Dave Ward
Cisco Systems
Email: wardd@cisco.com

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

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

nmalykh@protokols.ru

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

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

3Label Information Base — база сведений о метках.

4Forwarding and Control Element Separation — разделение элементов управления и пересылки.

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

6Management Information Base — база информации управления.

Рубрика: RFC | Оставить комментарий

RFC 7923 Requirements for Subscription to YANG Datastores

Internet Engineering Task Force (IETF)                           E. Voit
Request for Comments: 7923                                      A. Clemm
Category: Informational                               A. Gonzalez Prieto
ISSN: 2070-1721                                            Cisco Systems
                                                               June 2016

Requirements for Subscription to YANG Datastores

Требования к подписке на хранилища данных YANG

PDF

Аннотация

Этот документ задаёт требования к службам, позволяющим клиентам подписываться на обновления хранилищ данных YANG. На основе критериев, согласованных в рамках подписки, обновления выталкиваются целевым получателям. Такая возможность избавляет от необходимости периодически опрашивать хранилища данных YANG из приложений и заполняет функциональные пробелы имеющегося транспорта YANG (т. е. NETCONF и RESTCONF). Такие услуги можно охарактеризовать как сервис pub/sub для обновлений хранилищ данных YANG. Кроме набора базовых требований к сервису рассмотрены разные уточнения, включая периодичность обновлений объектов, фильтрацию объектов запрошенной ветви, гарантии QoS при доставке.

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

Документ не относится к категории Internet Standards Track и публикуется лишь для информации.

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

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

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

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

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

1. Введение

Приложениям, взаимодействующим с хранилищами данных YANG, нужны возможности, выходящие за рамки традиционной модели клиент-сервер для настройки сети. Одним из классов таких приложений являются приложения обеспечения услуг, которым требуется непрерывное представление рабочих данных и состояния. Другим классом являются приложения защиты, которые должны непрерывно отслеживать изменения в элементах сети для поддержки соответствия корпоративной политике.

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

В этом документе собраны требования к таким подпискам в разных сценариях развёртывания.

2. Потребности бизнеса

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

Такие механизмы распространения с выталкиванием не заменяют имеющиеся сетевые протоколы,а дополняют их, обеспечивая другие характеристики времени отклика, партнёрства, расширяемости и безопасности.

Push-решения не обеспечат все имеющиеся потребности операционной инфраструктуры. SNMP и базы MIB сохранятся и будут использоваться во многих системах мониторинга, однако некоторые функции могут быть перенесены. Возможно, самым большим недостатком SNMP для приложений является необходимость полагаться на периодические опросы, поскольку это дополнительно нагружает сеть и устройства и не обеспечивает устойчивости к пропускам циклов опроса, а также сложно синхронизируется и калибруется через сеть. Если приложения могут применять лишь опросы хранилищ YANG, аналогичные проблемы возникают и для них.

2.1. Pub/Sub на интерфейсе с системой маршрутизации (I2RS)

Различные документы об интерфейсе с системой маршрутизации (Interface to the Routing System или I2RS) подчёркивают необходимость предоставления возможностей публикации-подписки (pub/sub) между элементами сети. По всему документу присутствуют ссылки на [RFC7921], начиная с параграфа 6.2, примеры которых приведены ниже.

  • В параграфе 7.6 [RFC7921] приведено руководство верхнего уровня для pub/sub (уведомления).

  • В параграфе 6.4.2 [RFC7921] описана подписка на поток сведений об изменениях маршрутизации и получение уведомлений о включении (up) и отключении (down) соседей.

  • В параграфе 6.3 [RFC7921] отмечено, что при вытеснении I2RS локальной конфигурацией могут потребоваться внешние уведомления.

Аналогичные требования указаны в [USECASE] и часть их приведена ниже.

  • L-Data-REQ-12. Интерфейсам I2RS следует поддерживать подписку пользователей на данные с указанием синхронной или асинхронной отправки данных через зарегистированные подписки.

  • L-DATA-REQ-07. Интерфейсу I2RS (протокол и мгновенные сообщения — IM) следует разрешать подписчикам выбор частей модели данных.

  • PI-REQ01. Мониторинг доступных маршрутов в базе маршрутных сведений (Routing Information Base или RIB) каждого устройства пересылки, включая уведомления об установки и удалении маршрутов практически в реальном времени.

  • BGP-REQ10. Клиентам I2RS следует быть способными инструктировать агентов I2RS для уведомления клиента при обнаружении процессами BGP связанной системы маршрутизации изменения маршрутов к конкретному набору префиксов IP и связанных префиксов… Агенту I2RS следует поддерживать возможность уведомления клиентов через механизм публикации или подписки.

  • IGP-REQ-07. Интерфейсу I2RS (протокол и IM) следует поддерживать механизм для подписки клиентов I2RS на уведомления агента I2RS о критических событиях на узлах IGP.

  • MPLS-LDP-REQ-03. Для уведомлений от агента I2RS следует поддерживать для клиентов I2RS возможность подписки на поток изменений состояния, связанных с сессиями LDP или путями с коммутацией по меткам LDP (LDP Label Switched Path или LSP).

  • L-Data-REQ-01. Система I2RS должна быть способна собирать большие наборы данных из сети с высокой частотой и разрешением при минимальном воздействии на процессоры и память устройств.

В параграфе 7.4.3 [RFC7922] также указано требование pub/sub.

  • Агенты I2RS должны поддерживать публикацию сведений журнала трассировки I2RS в канале для подписки как описано [в этом документе]. Подписчики будут получать прямую трансляцию взаимодействий I2RS в формате журнала трассировки и смогут гибко выбирать действия по сообщениям из журнала.

2.2. Варианты Pub/Sub на элементах сети

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

  • Организация групповой топологии перед доставкой содержимого конечным точкам (IGMP, PIM и т. п.).

  • Защищённые автоматизация и непрерывный мониторинг (Secure Automation and Continuous Monitoring или SACM) разрешают подписку на устройства, которые затем могут выталкивать спонтанные изменения в своих аппаратных и программных настройках [SACMREQ].

  • В MPLS VPN [RFC6513] граничные маршрутизаторы клиентов (Customer Edge) обмениваются управляющими сообщениями PIM с граничными устройствами провайдера (Provider Edge или PE) до организации маршрутной смежности [RFC6513].

  • После организации смежности OSPF начинается анонсирование состояний каналов (Link State Advertisement) [RFC2328].

В этих примерах следует отметить разнообразие базового транспорта. Обобщенный механизм публикации и подписки следует структурировать для поддержки разных вариантов транспорта. Еа основе текущих требований I2RS протоколу NETCONF следует быть изначально поддерживаемым транспортом из-за потребности в ориентированных на соединения индивидуальных (unicast) взаимодействий. В конечном итоге потребуется также поддержка групповой и широковещательной подписки на распространение обновлений.

2.3. Имеющиеся обобщённые реализации Pub/Sub

TIBCO, RSS, CORBA3 и другие технологии являются предшественниками pub/sub. Однако имеются новые потребности (4. Требования), которые эти технологии не удовлетворяют, поэтому нужна новая технология.

Есть по меньше мере две широко распространённые реализации pub/sub, которые близки к текущим потребностям, — расширяемый протокол сообщений и присутствия (Extensible Messaging and Presence Protocol или XMPP) [XEP-0060] и служба распространения данных (Data Distribution Service или DDS) [OMG-DDS]. Оба служат подтверждением возможности реализации хорошо расширяемого распределенного хранилища данных, соединяющего миллионы узлов.

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

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

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

Подписчик (Subscriber) делает запросы для наборов объектов данных YANG.

Издатель (Publisher) отвечает за распространение объектов данных YANG в соответствии с условиями подписок. Обычно издатель является владельцем хранилища данных YANG, но которое организуются подписки.

Получатели (Receiver) являются целью выталкивания объектов издателем. Обычно получатель и подписчик являются одной сущностью. Служба подписки (Subscription Service) обеспечивает для них подписки на данные YANG. Служба подписки взаимодействует и издателем данных YANG для предоставления данные в соответствии с подписками.

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

Хранилища данных определены в [RFC6241].

Обновление (Update) представляет изменения объектов, которые произошли в интересующих ветвях YANG. Обновление может включать текущий статус экземпляров узлов данных, для которых фильтры указывают отличие от переданного прежде состояния. Обновление может включать включать связанный набор упорядоченных (последовательных) изменений данного объекта, произошедших с момента предыдущего обновления.

Фильтр содержит критерии соответствия, которые применяются к объектам YANG в рамках подписки. Имеется два типа фильтров — фильтры ветвей (Subtree Filter), указывающие выбранные объекты и узлы, опубликованные в целевом узле данных, и фильтры элементов и атрибутов, которые выбирают лишь объекты, свойства которых соответствуют критериям фильтрации.

4. Требования

Многие требования в этом разделе заимствованы из спецификаций XMPP [XEP-0060] и DDS [OMG-DDS].

4.1. Допущения о поведении подписчиков

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

Подписчикам следует избегать попыток организации нескольких подписок на одни и те же сведения (т. е. из тех же ветвей хранилища YANG). Подписчик может указать критерии качества обслуживания (QoS) службе подписки. Если служба не соответствует этим критериям, организовывать подписку не следует.

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

Подписчик должен быть способен сделать вывод о неактивности службы подписки, когда обновления больше не приходят. Подписчик может проверить службу подписки, чтобы подтвердить её наличие и мониторинг ветвей дерева. Подписчик должен быть способен периодически арендовать и продлевать подписку в Subscription Service.

4.2. Требования к службам подписки

4.2.1. Общие требования

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

Служба подписки должна быть способна be able to support and independently track multiple subscription requests by the same Subscriber.

Служба подписки Служба подписки может быть способна поддерживать добавление, изменение, удаление подписок на несколько ветвей YANG в одном запросе на подписку.

Служба подписки должна поддерживать подписки на рабочие и конфигурационные хранилища данных.

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

Служба подписки может включать фильтры, заданные в запросе на подписку, при этом она должна публиковать лишь узлы данных, соответствующие заданному для подписки фильру.

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

Службе подписки следует поддерживать возможность подписки на уведомления при изменении (on-change), т. е. в случаях изменения объектов данных в подписке. Для частых обновлений при изменении служба подписки должна поддерживать период демпфирования между передаче последовательных обновлений при изменении. Период демпфирования следует делать настраиваемым через запрос подписки.

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

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

Службе подписки следует поддерживать возможность приостановки подписки по запросу клиента.

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

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

4.2.2. Согласование

Служба подписки должна быть способна согласовать условия подписки:

  • политику (периодически или при изменении);

  • интервал при периодической публикации;

  • интервал демпфирования для уведомлений при изменении (если поддерживается политика on-change);

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

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

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

4.2.3. Распространение обновлений

При подписке на изменения служба подписки должна передавать лишь различия (delta) возникшие для объектов, иначе подписчик может не узнать, что изменилось на деле. Обновления для каждого объекта должны указывать, был ли он удалён, создан или изменён.

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

Когда подписка on-change приостановлена, а затем возобновлена, в первое обновление следует включать все изменения, произошедшие за время приостановки указанием текущего значения. Служба подписки должна предоставлять чёткое указание, когда эта возможность не поддерживается (в этом случае клиенту может потребоваться синхронизировать состояние отдельно).

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

Передачу уведомления недопустимо задерживать сверх Push Latency любого из вложенных объектов.

Передачу уведомления недопустимо задерживать сверх интервала демпфирования любого из вложенных объектов.

Уведомления недопустимо передавать до завершения интервала демпфирования любого из вложенных объектов.

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

4.2.4. Транспорт

Обновления от службы подписки могут передаваться с применением разных типов транспорта, таких как NETCONF, RESTCONF, HTTP. Помимо имеющихся транспортных протоколов служба подписки будет применима и для новых транспортных протоколов, таких как заданы в [USECASE]. Транспортная гибкость задаёт ряд требований.

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

  • Службе подписки следует поддерживать разное кодирование содержимого.

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

  • Для ориентированного на соединения транспорта следует прерывать подписку при разрыве соединения. Подписчик может запросить новую подписку.

4.2.5. Требования безопасности

В некоторых случаях служба подписки будет передавать приватные обновления и метаданные. Для таких систем сведения подписки должны быть связаны с защищёнными механизмами транспорта с шифрованием. Например, при использовании транспорта NETCONF решение [RFC7589] обеспечивает приемлемую защиту доставляемой информации. Службы подписки могут также применяться в чувствительном к приватности контексте. Например, системы на основе [USECASE] будут применять эти требования в сочетании с указанными в [I2RS-ENV-SEC] и [I2RS-PROT-SEC] для защиты эфемерных сведений о состоянии сетевых элементов.

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

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

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

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

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

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

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

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

Когда подписчик не совпадает с получателем, последний должен быть способен прервать любую подписку, где объекты доставляются с применением индивидуального (unicast) транспорта.

Службе подписки следует отвергать запросы на подписку, если существует вероятность истощения её ресурсов. Предпочтительно сразу отклонить подписку, чем позднее прерывать её преждевременно.

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

4.2.6. QoS для подписки

Службе подписки следует поддерживать возможность согласования для подписки параметров QoS с подписчиком (демпфирования, надёжность, срок действия, объединение).

Службе подписки следует поддерживать возможность интерпретации параметров QoS для подписки и организовывать подписку лишь при наличии возможности соблюдать запрошенные параметры QoS.

4.2.6.1. Живучесть

Служба подписки должна быть способна отвечать на запросы о живучести (Liveliness) подписки.

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

4.2.6.2. Демпфирование

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

4.2.6.3. Надёжность

Служба подписки может передавать обновления с использованием гарантированного и Best Effort транспорта.

4.2.6.4. Когерентность

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

4.2.6.5. Представление

Служба подписки может поддерживать объединение набора дискретных уведомлений в одно публикуемое обновление для подписки. Группа может включать сведения о разных узлах данных и/или несколько обновлений для одного узла.

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

4.2.6.6. Срок действия

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

4.2.6.7. Задержка выталкивания

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

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

4.2.6.8. Относительный приоритет

Службе подписки следует поддерживать относительную приоритизацию подписок, чтобы выталкивание из очереди и отбрасывание push-уведомлений могло учитывать приоритет при недостатке пропускной способности между издателем и получателем.

4.2.7. Фильтрация

Если критерии фильтрации не заданы или выполнены, обновления для объектов подписки должны выталкиваться в соответствии с параметрами QoS для подписки.

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

  • для символьных свойств объектов — совпадение или несовпадение с указанной строкой, а также её включение;

  • для численных свойств объектов — выражения =, !=, <, <=, >, >=.

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

Следует обеспечивать возможность запроса критериев сопоставления для дополнительных объектов, используемых вместе с критериями фильтрации объектов подписки. (например, если объект A изменён и B=1, то A выталкивается.) Сопоставление с объектами хранилища может выполняться даже при отсутствии таких объектов в подписке при условии, что подписчик имеет доступ к таким объектам.

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

4.2.8. Обеспечение и мониторинг

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

Должна обеспечиваться возможность узнать состояние всех подписок конкретного подписчика.

Должна обеспечиваться возможность узнать состояние список и состояние всех запросов на подписку в интервале времени. Если при этом возникает отказ, это может быть обусловлено несколькими причинами.

  • Представлены некорректные свидетельства защиты (безопасности) для доступа к целевому узлу.

  • Указанного узла не существует.

  • Запрошенный тип подписки не поддерживается для целевого узла.

  • Нехватка или недоступность ресурсов.

  • Неполное согласование с подписчиком.

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

С этим документов не связано вопросов безопасности сверх отмеченных в параграфе 4.2.5.

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

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

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

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

[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, <http://www.rfc-editor.org/info/rfc6241>.

[RFC6513] Rosen, E., Ed. and R. Aggarwal, Ed., «Multicast in MPLS/BGP IP VPNs», RFC 6513, DOI 10.17487/RFC6513, February 2012, <http://www.rfc-editor.org/info/rfc6513>.

[RFC7589] Badra, M., Luchuk, A., and J. Schoenwaelder, «Using the NETCONF Protocol over Transport Layer Security (TLS) with Mutual X.509 Authentication», RFC 7589, DOI 10.17487/RFC7589, June 2015, <http://www.rfc-editor.org/info/rfc7589>.

[RFC7921] Atlas, A., Halpern, J., Hares, S., Ward, D., and T. Nadeau, «An Architecture for the Interface to the Routing System», RFC 7921, DOI 10.17487/RFC7921, June 2016, <http://www.rfc-editor.org/info/rfc7921>.

[RFC7922] Clarke, J., Salgueiro, G., and C. Pignataro, «Interface to the Routing System (I2RS) Traceability: Framework and Information Model», RFC 7922, DOI 10.17487/RFC7922, June 2016, <http://www.rfc-editor.org/info/rfc7922>.

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

[I2RS-ENV-SEC] Migault, D., Ed., Halpern, J., and S. Hares, «I2RS Environment Security Requirements», Work in Progress, draft-ietf-i2rs-security-environment-reqs-01, April 2016.

[I2RS-PROT-SEC] Hares, S., Migault, D., and J. Halpern, «I2RS Security Related Requirements», Work in Progress4, draft-ietf-i2rs-protocol-security-requirements-06, May 2016.

[OMG-DDS] Object Management Group (OMG), «Data Distribution Service for Real-time Systems, Version 1.2», January 2007, <http://www.omg.org/spec/DDS/1.2/>.

[SACMREQ] Nancy, N. and L. Lorenzin, «Security Automation and Continuous Monitoring (SACM) Requirements», Work in Progress5, draft-ietf-sacm-requirements-13, March 2016.

[USECASE] Hares, S. and M. Chen, «Summary of I2RS Use Case Requirements», Work in Progress, draft-ietf-i2rs-usecase-reqs-summary-02, March 2016.

[XEP-0060] Millard, P., Saint-Andre, P., and R. Meijer, «Publish-Subscribe», XSF XEP-0060, July 2010, <http://xmpp.org/extensions/xep-0060.html>.

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

Спасибо Ambika Tripathy и Prabhakara Yellai за полезный вклад, комментарии и предложения, а также Nancy Cam Winget, Ken Beck, David McGrew за полезные сведения о сквозном системном контексте.

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

Eric Voit
Cisco Systems
Email: evoit@cisco.com
 
Alexander Clemm
Cisco Systems
Email: alex@cisco.com
 
Alberto Gonzalez Prieto
Cisco Systems
Email: albertgo@cisco.com

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

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

nmalykh@protokols.ru

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

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

3Common Object Request Broker Architecture.

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

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

Рубрика: RFC | Оставить комментарий

RFC 7895 YANG Module Library

Internet Engineering Task Force (IETF)                        A. Bierman
Request for Comments: 7895                                     YumaWorks
Category: Standards Track                                   M. Bjorklund
ISSN: 2070-1721                                           Tail-f Systems
                                                               K. Watsen
                                                        Juniper Networks
                                                               June 2016

Библиотека модуля YANG

YANG Module Library

PDF

Аннотация

Этот документ описывает библиотеку YANG, которая обеспечивает информацию обо всех модулях YANG, используемых сервером управления сетью (например, NETCONF1). Обеспечиваемые простые механизмы кэширования позволяют клиентам минимизировать усилия при поиске информации.

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

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

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

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

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

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

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

1. Введение

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

Информация библиотеки YANG может быть разной на каждом сервере и может меняться в процессе работы или после перезагрузки сервера.

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

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

  • Name — имя модуля YANG.

  • Revision — каждый модуль и субмодуль YANG в библиотеке имеет номер выпуска, который определяется оператором revision в модуле или субмодуле. Если такого оператора revision нет, строка выпуска для модуля или субмодуля будет пустой (размер 0).

  • Submodule list — должны быть указаны имя и выпуск каждого субмодуля.

  • Feature list — должны быть указаны все возможности YANG, поддерживаемые сервером.

  • Deviation list — должны быть указаны имена каждого модуля YANG, приведенного в операторах deviation.

1.1. Термины

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

Приведенные ниже термины определены в [RFC6241]:

  • client — клиент;

  • server — сервер.

Приведенные ниже термины определены в [YANG1.1]:

  • module — модуль;

  • submodule — субмодуль.

Этот документ определяет один термин.

YANG library – библиотека YANG

Набор модулей и субмодулей YANG, используемых сервером.

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

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

  • Квадратные скобки [ и ] служат для указания ключей списка.

  • Сокращение rw используется для конфигурационных данных (read-write — чтение и запись), а ro — для данных состояния (read-only — только чтение).

  • Символ ? после имени узла указывает необязательный узел, ! Означает контейнер присутствия, а * — list и leaf-list.

  • В скобках указываются узлы choice и case, а узлы case дополнительно помечаются двоеточием (:).

  • Три точки (…) служат для обозначения содержимого субдеревьев, которое не показано.

2. Библиотека модуля YANG

Модуль ietf-yang-library предоставляет информацию о библиотеке YANG, используемой сервером. Этот модуль определен с использованием YANG версии 1, но поддерживает описания модулей YANG, написанные в любой версии YANG.

Ниже приведена диаграмма дерева YANG для модуля ietf-yang-library.

      +--ro modules-state
         +--ro module-set-id    string
         +--ro module* [name revision]
            +--ro name                yang:yang-identifier
            +--ro revision            union
            +--ro schema?             inet:uri
            +--ro namespace           inet:uri
            +--ro feature*            yang:yang-identifier
            +--ro deviation* [name revision]
            |  +--ro name        yang:yang-identifier
            |  +--ro revision    union
            +--ro conformance-type    enumeration
            +--ro submodule* [name revision]
               +--ro name        yang:yang-identifier
               +--ro revision    union
               +--ro schema?     inet:uri

2.1. Контейнер modules-state

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

2.1.1. Лист modules-state/module-set-id

Этот обязательный лист содержит уникальный идентификатор, который связан с конкретной реализацией и представляет текущий набор модулей и субмодулей на конкретном сервере. Значение этого листа должно меняться при изменении набора модулей и субмодулей в библиотеке YANG. Не требуется совпадения значений module-set-id во всех случаях для одного и того же набора.

Этот лист позволяет клиенту считать набор модулей, кэшировать его и обновлять лишь при смене значения листа.

Если значение этого листа меняется, сервер также генерирует уведомление yang-library-change с новым значением module-set-id.

Отметим, что для сервера NETCONF, реализующего YANG 1.1 [YANG1.1], смена значения module-set-id будет приводить к новому значению для возможности :yang-library, определенной в [YANG1.1]. Таким образом, если такой сервер реализует уведомления NETCONF [RFC5277] и генерирует уведомление netconf-capability-change [RFC6470], это уведомление будет создаваться при каждом изменении module-set-id.

2.1.2. Лист modules-state/module

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

2.2. Модуль библиотеки YANG

Модуль ietf-yang-library определяет информацию мониторинга для модулей YANG, используемых сервером.

Модули ietf-yang-types и ietf-inet-types из [RFC6991] используются этим модулем для некоторых определений типов.

   <CODE BEGINS> file "ietf-yang-library@2016-06-21.yang"

   module ietf-yang-library {
     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
     prefix "yanglib";

     import ietf-yang-types {
       prefix yang;
     }
     import ietf-inet-types {
       prefix inet;
     }

     organization
       "IETF NETCONF (Network Configuration) Working Group";

     contact
       "WG Web:   <https://datatracker.ietf.org/wg/netconf/>
        WG List:  <mailto:netconf@ietf.org>

        WG Chair: Mehmet Ersue
                  <mailto:mehmet.ersue@nsn.com>

        WG Chair: Mahesh Jethanandani
                  <mailto:mjethanandani@gmail.com>

        Editor:   Andy Bierman
                  <mailto:andy@yumaworks.com>

        Editor:   Martin Bjorklund
                  <mailto:mbj@tail-f.com>

        Editor:   Kent Watsen
                  <mailto:kwatsen@juniper.net>";

     description
       "Этот модуль содержит информацию мониторинга для модулей и 
        субмодулей YANG, используемых в сервере на базе YANG.

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

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

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

     revision 2016-06-21 {
       description
         "Первоначальный выпуск.";
       reference
         "RFC 7895: YANG Module Library.";
     }

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

     typedef revision-identifier {
       type string {
         pattern '\d{4}-\d{2}-\d{2}';
       }
       description
         "Представляет конкретную дату в формате ГГГГ-ММ-ЧЧ.";
     }

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

     grouping module-list {
       description
         "Структура данных модуля представлена в виде группировки и 
          может использоваться многократно в конфигурационных или 
          иных структурах данных мониторинга.";

       grouping common-leafs {
         description
           "Общие параметры модулей и субмодулей YANG.";

         leaf name {
           type yang:yang-identifier;
           description
             "Имя модуля или субмодуля YANG.";
         }
         leaf revision {
           type union {
             type revision-identifier;
             type string { length 0; }
           }
           description
             "Дата выпуска модуля или субмодуля YANG. Если в модуле
              или субмодуле YANG нет оператора revision, используется
              пустая строка.";
         }
       }

       grouping schema-leaf {
         description
           "Общий параметр листа schema для модулей и субмодулей.";

         leaf schema {
           type inet:uri;
           description
             "Содержит URL, представляющий ресурс со схемой YANG для
              этого модуля или субмодуля.

              Этот лист будет присутствовать лишь при наличии URL
              доступного для извлечения схемы для данной записи.";
         }
       }

       list module {
         key "name revision";
         description
           "Каждая запись представляет один выпуск одного модуля,
            поддерживаемого в данный момент сервером.";

         uses common-leafs;
         uses schema-leaf;

         leaf namespace {
           type inet:uri;
           mandatory true;
           description
             "Идентификатор пространства имен XML для этого модуля.";
         }
         leaf-list feature {
           type yang:yang-identifier;
           description
             "Список имен свойств YANG из данного модуля, которые 
              поддерживаются сервером, независимо от их определения
              в модуле или любом из включенных субмодулей.";
         }
         list deviation {
           key "name revision";
           description
             "Список имен отклонений модулей YANG и выпусков, 
              используемых этим сервером для изменения соответствия
              модуля, связанного с этой записью. Отметим, что один
              и тот же модуль может использоваться для указания 
              отклонений множества модулей, поэтому запись МОЖЕТ
              появляться во множестве записей module.

              Модуль отклонений ДОЛЖЕН присутствовать в списке
              module с тем же именем и выпуском. Значением 
              conformance-type для модуля deviation будет implement.";
           uses common-leafs;
         }
         leaf conformance-type {
           type enumeration {
             enum implement {
               description
                 "Показывает, что сервер реализует один или множество 
                  доступных протоколу объектов, определенных в модуле 
                  YANG, указанном этой записью. Это включает операторы 
                  deviation, определенные в модуле.

                  Для модулей YANG версии 1.1 имеется не более одной
                  записи с типом соответствия implement для конкретного
                  имени модуля, поскольку YANG 1.1 требует реализации
                  не более одного выпуска модуля.

                  Для модулей YANG версии 1 НЕ СЛЕДУЕТ включать более
                  одной записи module для конкретного имени модуля.";
             }
             enum import {
               description
                 "Показывает, что сервер импортирует повторно используемые
                  определения из указанного выпуска модуля, но не реализует
                  каких-либо доступных протоколу объектов из этого выпуска.

                  МОЖЕТ существовать множество записей module для одного 
                  имени модуля. Это может возникать в случаях импорта одного
                  модуля множеством других модулей с разными датами выпуска 
                  в операторах import.";
             }
           }
           mandatory true;
           description
             "Указывает тип соответствия, заявленного сервером для модуля 
              YANG, указанного этой записью.";
         }
         list submodule {
           key "name revision";
           description
             "Каждая запись представляет 1 субмодуль в родительском модуле.";
           uses common-leafs;
           uses schema-leaf;
         }
       }
     }

     /*
      * Узлы данных рабочего состояния
      */

     container modules-state {
       config false;
       description
         "Содержит информацию мониторинга модуля YANG.";

       leaf module-set-id {
         type string;
         mandatory true;
         description
           "Содержит специфический для сервера идентификатор, который
            представляет текущий набор модулей и субмодулей. Сервер
            ДОЛЖЕН менять значение этого листа при изменении данных,
            представленных экземплярами списков module.";
       }

       uses module-list;
     }

     /*
      * Уведомления
      */

     notification yang-library-change {
       description
         "Генерируется при изменении набора модулей и субмодулей,
          поддерживаемых сервером.";
       leaf module-set-id {
         type leafref {
           path "/yanglib:modules-state/yanglib:module-set-id";
         }
         mandatory true;
         description
           "Содержит значение module-set-id, которое представляет
            набор модулей и субмодулей, которые сервер поддерживал в
            момент генерации уведомления.";
       }
     }

   }

   <CODE ENDS>

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

3.1. Реестр модулей YANG

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

     URI: urn:ietf:params:xml:ns:yang:ietf-yang-library
     Registrant Contact: The NETCONF WG of the IETF.
     XML: N/A, the requested URI is an XML namespace.

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

     name:         ietf-yang-library
     namespace:    urn:ietf:params:xml:ns:yang:ietf-yang-library
     prefix:       yanglib
     reference:    RFC 7895

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

Определенный здесь модуль YANG предназначен для доступа по протоколу NETCONF [RFC6241]. Нижним уровнем NETCONF является защищенный транспортный уровень и обязательным для реализации является транспорт SSH [RFC6242]. Модель управления доступом NETCONF [RFC6536] обеспечивает пути предоставления доступа лишь определенному набору пользователей NETCONF к заранее заданному подмножеству всех операций и содержимого протокола NETCONF.

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

/modules-state/module. Список модулей, используемых реализацией сервера, может помочь атакующему при определении возможностей сервера и известных ошибок реализации. Хотя часть такой информации доступна всем пользователям через сообщения NETCONF <hello> (или похожие сообщения других протоколов управления), этот модуль YANG может раскрывать дополнительные детали, способные помочь атакующему. Уязвимости сервера могут относиться к конкретным модулям, версиям возможностям или отклонениям. Эта информация включается в каждую запись module. Например, если конкретная операция с определенным узлом данных может приводить к аварии на сервере или значительно снижать его производительность, информация из списка модулей будет помогать атакующему обнаружить серверы с таким дефектом для организации атаки на службы.

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

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

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

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

[RFC6020] Bjorklund, M., Ed., «YANG — A Data Modeling Language for the Network Configuration Protocol (NETCONF)», RFC 60204, DOI 10.17487/RFC6020, October 2010, <http://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, <http://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, <http://www.rfc-editor.org/info/rfc6242>.

[RFC6536] Bierman, A. and M. Bjorklund, «Network Configuration Protocol (NETCONF) Access Control Model», RFC 6536, DOI 10.17487/RFC6536, March 2012, <http://www.rfc-editor.org/info/rfc6536>.

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

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

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

[RFC6470] Bierman, A., «Network Configuration Protocol (NETCONF) Base Notifications», RFC 6470, DOI 10.17487/RFC6470, February 2012, <http://www.rfc-editor.org/info/rfc6470>.

[YANG1.1] Bjorklund, M., «The YANG 1.1 Data Modeling Language», Work in Progress5, draft-ietf-netmod-rfc6020bis-12, April 2016.

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

Вклад Andy Bierman в этот материал основан на поддержке со стороны Space & Terrestrial Communications Directorate (S&TCD) по контракту № W15P7T-13-C-A616. Любые мнения, вывода, заключения или рекомендации, выраженные в этом материале, принадлежат авторам и не обязательно отражают точку зрения Space & Terrestrial Communications Directorate (S&TCD).

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

Andy Bierman

YumaWorks

Email: andy@yumaworks.com

Martin Bjorklund

Tail-f Systems

Email: mbj@tail-f.com

Kent Watsen

Juniper Networks

Email: kwatsen@juniper.net


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

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

nmalykh@gmail.com

1Network Configuration Protocol — протокол настройки сети.

2Internet Engineering Task Force.

3Internet Engineering Steering Group.

4В RFC 7950 содержится спецификация YANG версии 1.1. Прим. перев.

5Документ опубликован в RFC 7950. Прим. перев.

 

Рубрика: RFC | Комментарии к записи RFC 7895 YANG Module Library отключены

RFC 7799 Active and Passive Metrics and Methods (with Hybrid Types In-Between)

Internet Engineering Task Force (IETF)                         A. Morton
Request for Comments: 7799                                     AT&T Labs
Category: Informational                                         May 2016
ISSN: 2070-1721

Active and Passive Metrics and Methods (with Hybrid Types In-Between)

Активные и пассивные (а также гибридные) показатели и методы

rfc7799

Аннотация

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

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

Документ не относится к категории Internet Standards Track и публикуется лишь для информации.

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

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

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

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

Прилагательные «активный» и «пассивный» применяются много лет для обозначения разных классов измерений производительности Internet. Первая конференция Passive and Active Measurement (PAM) состоялась в 2000 г., на самые ранние из доступных в сети материалов относятся ко второй конференции PAM 2001 г. <https://www.ripe.net/ripe/meetings/pam-2001>.

Понятия «активный» и «пассивный» устоялись и обычно применяются, как указано ниже.

  • Активных показатель (метрика) или метод зависит от потока специализированных измерительных пакетов и наблюдений за этим потоком.

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

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

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

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

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

2. Назначение и область действия

Целью этого документа является описание активных и пассивных вариантов показателей и методов, согласующееся с долговременным использованием этих терминов в сообществе измерений Internet и особенно в IETF. Поскольку опыт измерений расширяется, здесь выделена категория, объединяющая два традиционных варианта (активные и пассивные) и трактующая такую комбинацию как гибридные методы.

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

3. Термины и определения

В этом разделе определены основные термины документа. В некоторых определениях используются слова «интересующий поток» (stream of interest), которые синонимичны словам «интересующая совокупность» (population of interest) в соответствии с параграфом 6.1.1 of ITU-T Recommendation Y.1540 [Y.1540]. Эти определения будут полезны в выполняемых работах, таких как [PASSIVE] (с которыми они хорошо согласуются).

3.1. Показатель производительности

Стандартное определение количественного значения, получаемого при оценке производительности и/или надёжности сети, которое предполагается полезным и тщательно определено, чтобы передать точный смысл измеряемого. Это определение согласуется с определением показателя производительности (Performance Metric) в [RFC2330] и [RFC6390].

3.2. Метод измерения

Процедура или набор операций с целью получить (определить) измеряемое значение или результат измерения.

3.3. Точка наблюдения

Определение точки наблюдения (Observation Point — место в сети, где можно наблюдать за пакетами) дано в разделе 2 [RFC7011] вместе с другими определениями. Сопоставимым термином в документах IETF по активным измерениям является «точка измерения» (Measurement Point, см. параграф 4.1 в [RFC5835]). Оба термина применяются для описания схожих действий в определённой точке сетевого пути.

3.4. Активные методы

Атрибуты активных методов измерения указаны ниже.

  • Метод генерирует поток пакетов. Обычно интересующий поток создаётся в качестве основы измерений. Иногда для таких потоков применяют термин «синтезированный» (synthetic) [Y.1731]. Могут генерироваться также сопутствующие потоки для повышения общего уровня трафика, для которых не проводятся измерения.

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

  • Адреса отправителя и получателя интересующего потока пакетов обычно известны заранее.

  • Характеристики интересующего потока пакетов известны у отправителя (по меньшей мере) и могут передаваться получателю как часть метода. Отметим, что некоторые характеристики пакетов могут меняться в процессе пересылки. Возможны и другие изменения в пути [STDFORM].

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

3.5. Активные показатели

Активный показатель (Active Metric) включает в своём определении один или несколько аспектов активных методов. Например, показатели IETF для производительности IP (разработанные в соответствии с моделью [RFC2330]) включают характеристики потока пакетов у отправителя как входные параметры показателя, определяют тип пакетов (Type-P), а также адреса IP отправителя и получателя (это влияет на обработку потока и интерфейсы, связанные с точками измерения).

3.6. Пассивные методы

Атрибуты пассивных методов измерения указаны ниже.

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

  • Зависят от наличия потоков, представляющих интерес для измерения.

  • Зависят от присутствия интересующих потоков в точках наблюдения.

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

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

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

3.7. Пассивные показатели

Пассивные показатели применяются к наблюдению трафику пакетов (потоки трафика в [RFC7011]).

Пассивные показатели производительности извлекаются независимо от пакетов или потоков трафика исключительно путём наблюдения. Иногда такие оценки называют «внеполосными» (out of band).

Одним из примеров пассивных показателей производительности для пакетов IP приведён в ITU-T Recommendation Y.1540 [Y.1540], где показатели определены на основе эталонных событий, генерируемых при прохождении пакетов через указанные точки. Показатели не различаются на активные и пассивные, когда соответствие пакетов может быть должным образом выведено из наблюдения за интересующим потоком по мере необходимости.

3.8. Гибридные методы и показатели

Гибридными называют методы измерения, использующие комбинацию активных и пассивных методов для оценки активных или пассивных показателей, а также новых показателей на основе известных заранее или наблюдаемых свойствах интересующего потока. В ITU-T Recommendation Y.1540 [Y.1540] определены показатели, применимые и к гибридным категориям, поскольку соответствие пакетов в разных точках наблюдения можно вывести из «полей, которые предназначены для измерения», хотя в остальном методы являются пассивными.

Имеется несколько категорий гибридных методов, приведённых ниже.. Применительно к одному интересующему потоку гибридные методы типа I (Hybrid Type I) образуют континуум (как показано ниже) с точки зрения того, что происходит в источнике (или ближайшей точке наблюдения).

  • Генерация интересующего потока — активный.

  • Дополнение или изменение интересующего потока или реализация методов, меняющих обработку потока — гибридный типа I.

  • Наблюдение интересующего потока — пассивный.

В качестве примера рассмотрим случай, когда метод создаёт нагрузочные потоки трафика и наблюдает имеющийся поток в соответствии с критериями пассивных методов. Поскольку нагрузочные потоки относятся к активным методам, интересующий поток не является «единственно наблюдаемым» и измерения включают интересующий поток, поведение которого изменено наличием дополнительной нагрузки. Следовательно, это будет гибридный метод типа I.

Определим гибридный метод типа II как метод, в котором имеется два и более интересующих потока с тем или иным взаимным влиянием (например, один или несколько активных потоков и один или несколько неизменяемых и ненарушаемых потоков пакетов) для сбора активных и пассивных показателей, а также расширенных характеристик в результате совместного анализа. В [HYBRID] приведена постановка задачи для методов и показателей гибридного типа II. Отметим, что один или несколько гибридных потоков типа I можно заменить активными потоками или ненарушаемыми потоками с взаимным влиянием. Предполагается, что это будут гибридные методы типа II с уникальными гибридными показателями.

Методы, основанные на комбинации одного (генерируемого) активного потока и пассивных наблюдений, которые применяются к интересующему потоку в промежуточной точке наблюдения, также являются гибридными. Однако в [RFC5644] это уже определено как пространственные показатели и методы (Spatial Metrics and Methods). Можно заменить активный поток [RFC5644] гибридным потоком типа I и измерять пространственные показатели (это не предусматривалось при написании [RFC5644]).

В таблице представлена классификация (комбинации включают методы с атрибутами активных и пассивных).

Один поток

Несколько одновременных потоков с разными методами

Один базовый метод

Активный или пассивный

Комбинация базовых методов

Гибридный типа I

Несколько методов

Пространственные показатели [RFC5644]

Гибридный типа II

В некоторых обстоятельствах результаты гибридных методов можно считать эквивалентными результатам пассивных методов. Это понятие указывает на возможность «класса C», где пакеты с разными Type-P одинаково трактуются в сетевой реализации, как указано в разделе 13 [RFC2330], и применяется терминология для путей из раздела 5 в [RFC2330].

Гибридным методам измерения, дополняющим или изменяющим пакеты класса C на хосте, следует возвращать результаты, эквивалентные пассивным методам измерения, когда осуществляющие доступ хосты и транспортирующие пакеты каналы на пути (отличные от выполняющих дополнения/изменения) трактуют пакеты обеих категорий методов (с дополнением/изменением и без него) как один класс C. Пассивные методы измерения представляют «основу веры» (Ground Truth) при сравнении результатов пассивных и гибридных методов и это сравнение следует выполнять для подтверждения трактовки класса C.

4. Обсуждение

В этом разделе приведены иллюстрации к определениям и некоторые примеры.

4.1. Графическое представление

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

Ось Y — влияние измерительных потоков на условия в сети

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

Ось X — заранее известные сведения о потоке

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

В этом пространстве на рисунке показано несколько примеров. Оси можно привязать к опорным точкам.

Ось Y - Влияние измерительного потока на условия в сети
^ Максимум
|* Активное использование потока максимальной ёмкости 
|
|
|
|
|* Активное использование потока с типичной нагрузкой
|
|
|
|* Активное использование очень слабого, случайного потока
|                             * PDM                      Пассивный
| Минимум                                                        *
+----------------------------------------------------------------|
|                                                                |
Параметры  Ось X - заранее известные сведения о потоке   Параметры
потока                                                      потока
полностью                                               неизвестны
известны


На рисунке PDM указывает метод с использованием заголовка опций IPv6 для измерения производительности и диагностики (Option Header for Performance and Diagnostic Measurements), описанный в параграфе 4.2.

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

Например, «влияние интересующего потока на условия в сети» можно классифицировать как:

  1. влияние производительности самого потока, например, выбор маркировки пакетов в поле кода дифференцированного обслуживания (Differentiated Services Code Point или DSCP), приводящий к трактовке потока как real-time (в отличие от принятой по умолчанию обработки best-effort);

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

  3. влияние на условия в сети, приводящее к изменениям в ней, например, мониторинг загрузки и возникновение насыщения в сети могут менять маршрутизацию, перенося некоторые потоки на другие пути для снижения перегрузки.

Мы объединили пп. 1 и 2 на оси Y-axis, поскольку изучение примеров показывает существенную корреляцию эффектов этой пары, а приспособление сети к изменению условий не рассматривается.

Очевидно, что разные методы измерений в сети IP могут давать различные результаты даже при одновременном измерении на одном пути. Две оси графика помогают понять, как результаты могут зависеть от выбора метода. Например, активная оценка пропускной способности может приводить к снижению производительности всех потоков. Однако пассивный метод оценки пропускной способности также может давать ошибки по причине неизвестности ограничений ресурсов на хостах, борьбы за такие ресурсы, ограничений сетевых интерфейсов или частных подсетей, которые не предполагаются на пути и т. п. Гибридные методы могут страдать от обоих типов ошибок. Другой пример связан с ловушками при использовании активного потока в известным смещением (bias), такого как периодический поток [RFC3432]. Сильная сторона моделирования периодических потоков (подобных VoIP) станвится потенциальной слабостью при переносе результатов измерения на другие приложения, потоки которых не являются периодическими. Решением является более точное моделирование потоков для активных методов или принятие рисков и возможных ошибок пассивных методов, отмеченных выше.

4.2. Обсуждение PDM

В [PDMOPTION] описан заголовок опций для измерения производительности и диагностики (IPv6 Option Header for Performance and Diagnostic Measurements или PDM), который добавляется в интересующий поток на тратегических интерфейсах для поддержки измерений производительности. Этот метод обрабатывает поток пользовательского трафика и добавляет поля, предназначенные для измерений (намерение измерений чётко указано в названии опции).

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

  • Измерительный поток имеет неизвестные характеристики, пока он не обработан для добавления заголовка PDM Option. Отметим, что в случае превышения MTU после добавления заголовка намерение оказывать минимальное влияние не реализуется.

Авторы пришли к выводу, что это гибридный метод типа I, имеющий по меньшей мере одну характеристику активного и пассивного метода для одного интересующего потока.

4.3. Обсуждение метода «окрашивания»

[OPSAWG] предлагает «окрашивать» пакеты, переписывая поле в потоке на стратегических интерфейсах для поддержки измерений производительности (отметим, что эта операция сложна на промежуточных точках VPN с шифрованием). Этот метод обрабатывает поток пользовательского трафика и вставляет «поля или значения, предназначенные для измерений»

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

  • Измерительный поток имеет неизвестные характеристики, пока он не обработан для добавления «цвета» в заголовок, и поток может быть измерен с указанием временных меток в процессе измерения.

Отметим, что в [COLORING] предложен метод, похожий на [OPSAWG], как показало обсуждение в почтовой конференции IPPM.

Авторы пришли к выводу, что это гибридный метод типа I, имеющий по меньшей мере одну характеристику активного и пассивного метода для одного интересующего потока.

4.4. Краткое обсуждение методов OAM

Имеется много методов OAM за пределами уровня IP. Например, в [Y.1731] определено несколько методов измерения, классификация которых приведена ниже.

  • Метод измерения потерь (Loss Measurement или LM) иногда внедряет кадры с числом кадров, переданных с момента отправки предыдущего сообщения LM. Авторы относят LM к гибридному типу I, поскольку метод обрабатывает пользовательский поток и дополняет интересыющий поток кадрами, имеющими «поля, предназначенные для измерений».

  • Методы синтетического измерения потерь (Synthetic Loss Measurement или SLM) и задержки (Delay Measurement или DM) внедряют специальные измерительные кадры так, что «интересующий поток генерируется как основа для измерений». Авторы относят методы SLM и DM к активным.

Авторы также признают существование дополнительной терминологии, применяемой в OAM за пределами уровня IP. Читателям рекомендуется обратиться к [RFC6374], где описаны термины для измерения потерь и задержек в MPLS.

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

С точки зрения безопасности и приватности участников измерения и пользователей, чей трафик измеряется, следует учитывать возможность раскрытия конфиденциальных сведений, доступных в точках наблюдения и измерения, описанных выше, а также используемых протоколах. Читателю рекомендуется обратиться к рассмотрению вопросов безопасности и приватности в модели широкомасштабных измерений производительности в широкополосных сетях (Large-Scale Measurement of Broadband Performance или LMAP) [RFC7594], охватывающей активные и пассивные методы измерения и вспомогательные вопросы в контексте измерений.

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

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

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

[RFC2330] Paxson, V., Almes, G., Mahdavi, J., and M. Mathis, «Framework for IP Performance Metrics», RFC 2330, DOI 10.17487/RFC2330, May 1998, <http://www.rfc-editor.org/info/rfc2330>.

[RFC3432] Raisanen, V., Grotefeld, G., and A. Morton, «Network performance measurement with periodic streams», RFC 3432, DOI 10.17487/RFC3432, November 2002, <http://www.rfc-editor.org/info/rfc3432>.

[RFC5644] Stephan, E., Liang, L., and A. Morton, «IP Performance Metrics (IPPM): Spatial and Multicast», RFC 5644, DOI 10.17487/RFC5644, October 2009, <http://www.rfc-editor.org/info/rfc5644>.

[RFC5835] Morton, A., Ed. and S. Van den Berghe, Ed., «Framework for Metric Composition», RFC 5835, DOI 10.17487/RFC5835, April 2010, <http://www.rfc-editor.org/info/rfc5835>.

[RFC6390] Clark, A. and B. Claise, «Guidelines for Considering New Performance Metric Development», BCP 170, RFC 6390, DOI 10.17487/RFC6390, October 2011, <http://www.rfc-editor.org/info/rfc6390>.

[RFC7011] Claise, B., Ed., Trammell, B., Ed., and P. Aitken, «Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of Flow Information», STD 77, RFC 7011, DOI 10.17487/RFC7011, September 2013, <http://www.rfc-editor.org/info/rfc7011>.

[RFC7312] Fabini, J. and A. Morton, «Advanced Stream and Sampling Framework for IP Performance Metrics (IPPM)», RFC 7312, DOI 10.17487/RFC7312, August 2014, <http://www.rfc-editor.org/info/rfc7312>.

[RFC7594] Eardley, P., Morton, A., Bagnulo, M., Burbridge, T., Aitken, P., and A. Akhter, «A Framework for Large-Scale Measurement of Broadband Performance (LMAP)», RFC 7594, DOI 10.17487/RFC7594, September 2015, <http://www.rfc-editor.org/info/rfc7594>.

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

[COLORING] Chen, M., Ed., Zheng, L., Ed., Mirsky, G., Ed., Fioccola, G., Ed., and T. Mizrahi, Ed., «IP Flow Performance Measurement Framework», Work in Progress, draft-chen-ippm-coloring-based-ipfpm-framework-06, March 2016.

[HYBRID] Trammell, B., Zheng, L., Berenguer, S., and M. Bagnulo, «Hybrid Measurement using IPPM Metrics», Work in Progress, draft-trammell-ippm-hybrid-ps-01, February 2014.

[OPSAWG] Capello, A., Cociglio, M., Castaldelli, L., and A. Bonda, «A packet based method for passive performance monitoring», Work in Progress4, draft-tempia-opsawg-p3m-04, February 2014.

[PASSIVE] Zheng, L., Elkins, N., Lingli, D., Ackermann, M., and G. Mirsky, «Framework for IP Passive Performance Measurements», Work in Progress, draft-zheng-ippm-framework-passive-03, February 2015.

[PDMOPTION] Elkins, N. and M. Ackermann, «IPv6 Performance and Diagnostic Metrics (PDM) Destination Option», Work in Progress, draft-ietf-ippm-6man-pdm-option-025, April 2016.

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

[STDFORM] Morton, A., Fabini, J., Elkins, N., Ackermann, M., and V. Hegde, «Updates for IPPM’s Active Metric Framework: Packets of Type-P and Standard-Formed Packets», Work in Progress, draft-morton-ippm-2330-stdform-typep-02, December 2015.

[Y.1540] ITU-T, «Internet protocol data communication service — IP packet transfer and availability performance parameters», March 2011, <https://www.itu.int/rec/T-REC-Y.1540-201103-I/en>.

[Y.1731] ITU-T, «Operation, administration and management (OAM) functions and mechanisms for Ethernet-based networks», August 2015, <https://www.itu.int/rec/T-REC-G.8013-201508-I/en>.

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

Спасибо Mike Ackermann за правильный вопрос и несколько предложений по терминологии. Brian Trammell предоставил основные термины и ссылки для пассивной категории, а также предложил способы расширения описания и типов гибридных измерений. Phil Eardley предложил некоторые гибридные сценарии для классификации в своей рецензии. Tiziano Ionta просмотрел документ и предложил классификацию для измерительного метода с «окрашиванием». Nalini Elkins указала в своей рецензии несколько областей, требующих уточнения. Bill Jouris, Stenio Fernandes и Spencer Dawkins предложили несколько редакторских правок. Tal Mizrahi, Joachim Fabini, Greg Mirsky и Mike Ackermann подняли множество важных вопросов, основанных на обширном опыте измерений, в своих рецензиях в WGLC (Working Group Last Call).

Адрес автора

Al Morton

AT&T Labs

200 Laurel Avenue South

Middletown, NJ

United States

Email: acmorton@att.com


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

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

nmalykh@protokols.ru

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

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

3Существует также понятие усреднения по времени — измерительный поток может оказывать значительное влияние, когда он существует, но этот поток может генерироваться лишь в течение 0,1% по времени. Наблюдения сами по себе не влияют на производительность сети. Для сохранения простоты влияние потока рассматривается лишь при его наличии, но реактивные системы, определённые в [RFC7312] могут сохранять сдвиг условий в течение некоторого времени по завершении потока.

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

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

Рубрика: RFC, Измерения и тестирование | Оставить комментарий

RFC 7787 Distributed Node Consensus Protocol

Internet Engineering Task Force (IETF)                       M. Stenberg
Request for Comments: 7787                                      S. Barth
Category: Standards Track                                    Independent
ISSN: 2070-1721                                               April 2016

Distributed Node Consensus Protocol

Распределенный протокол согласования узлов

PDF

Аннотация

Этот документ описывает распределенный протокол согласования узлов Distributed Node Consensus Protocol или DNCP), обеспечивающий синхронизацию состояний с помощью алгоритма Trickle и хэш-деревьев. DNCP является абстрактным протоколом и должен применяться с конкретным профилем для реализации.

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

Документ содержит проект стандарта Internet (Standards Track).

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

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

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

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

Протокол DNCP предназначен для обеспечения каждому участвующему узлу способа опубликовать небольшой набор триплетов TLV3 (не более 64 Кбайт) и разделяемого общего представления о данных, опубликованных каждым узлом DNCP с двухсторонней доступностью.

Для синхронизации состояний применяется хэш-дерево. Дерево формируется расчётом хэша сначала для набора опубликованных каждым узлом данных (данные узла), затем хеша для хэш-значений узлов. Полученное в результате значение называется хэшем состояния сети и передаётся с использованием алгоритма Trickle [RFC6206], чтобы все узлы имели общее представления текущего состояния опубликованных данных. Использование Trickle лишь с короткими хэшами состояния сети, передаваемыми редко (в установившемся состоянии 1 раз за максимальный интервал Trickle на канал или unicast-соединение), делает DNCP очень экономным при нечастых обновлениях.

Для поддержки живучести топологии и данных в ней применяется комбинация состояния сети (Trickle), keep-alive и «другие» меры. Основная идея состоит в том, что при гарантии каждым узлом присутствия его партнёров транзитивность обеспечивает актуальность состояния всей сети.

1.1. Применимость

Протокол DNCP полезен для таких случаев, как начальная загрузка, обнаружение и согласование встраиваемых сетевых устройств (например, маршрутизаторов). Кроме того, он может служить основой для работы распределенных алгоритмов, подобных [RFC7596] или сценариев, описанных в Приложении C. DNCP является абстракцией, которую можно с помощью профилей настроить для разных приложений. Профили включают выбор:

  • индивидуального транспорта — ориентированный на дейтаграммы или потоки протокол (например, TCP, UDP или SCTP) для базовых операций;

  • необязательной защиты транспорта — условия и места применения защиты TLS (Transport Layer Security) или DTLS (Datagram Transport Layer Security), если выбранный транспорт её поддерживает;

  • необязательного группового транспорта — протокола с поддержкой групповой адресации, такого как UDP, позволяющего обнаруживать автономные узлы и более эффективно использовать каналы с общим доступом;

  • области действия адресов — использование лишь поэтапной (hop by hop) трансляции с адресацией link-local (например, для ЛВС), адресов с более широкой областью действия (например, WAN или Internet) на основе имеющейся инфраструктуры маршрутизации или комбинации обоих вариантов (например, для обмена состояниями между несколькими ЛВС через WAN или Internet);

  • полезной нагрузки (payload) — дополнительные специфические данные (например, стандартизованные IANA, фирменные или приватные);

  • расширений — возможные расширения протокола, заданные этим документом или разработанные специально для определённого приложения.

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

  • Объем данных — узлы ограничены публикацией не более 64 Кбайт.

  • Высокая плотность сетей без групповой адресации. Узлы включают информацию обо всех прямых соседях в публикуемые данные.

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

  • Частое изменение данных. DNCP с использованием алгоритма Trickle оптимизирован для установившихся состояний и менее эффективен в иных случаях.

  • Большое число очень ограниченных устройств. DNCP требует от каждого узла хранить все данные, опубликованные всеми другими узлами.

Топология соединения устройств не ограничивается и распознаётся автоматически. При использовании лишь локальных каналов (link-local) все каналы с узлами DNCP должны быть транзитивно соединены с маршрутизаторами, поддерживающими протокол на нескольких конечных точках, для формирования сети соединений. Однако не требуется поддерживать протокол на каждом устройстве в физической сети. В частности, при использовании глобальных адресов от партнёров DNCP не требуется подключение к одному или даже соседним физическим каналам. Обычно в локальных сетях применяются функции автоматического обнаружения, а при включённой защите можно применять DNCP и в незащищённых сетях общего доступа. Размер сети ограничивается лишь возможностями устройств, т. е. каждый узел DNCP должен быть способен хранить все данные, опубликованные другими узлами. Данные, связанные с каждым идентификатором отдельного узла, этот документ ограничивает размером 64 Кбайта, однако могут быть определены расширения протокола для смягчения этого и других ограничений протокола.

DNCP больше всего подходит для редко меняющихся данных, чтобы по максимуму воспользоваться преимуществами использования Trickle. По мере роста числа узлов или частоты изменения данных алгоритм Trickle применяется все реже и применение DNCP уже не даёт преимуществ. В этих случаях применение Trickle лишь усложняет спецификацию. Пригодность DNCP для конкретной задачи можно оценить, рассматривая предполагаемый средний интервал возникновения изменений в сети A_NC_I, рассчитываемый путём деления среднего интервала между созданием узлом новых TLV на число участвующих узлов. При использовании сообщений keep-alive значение A_NC_I будет меньшим из рассчитанного A_NC_I и интервала keep-alive. Если A_NC_I меньше зависящего от применения минимального интервала Trickle, DNCP скорей всего не подойдёт, поскольку Trickle большую часть времени не будет применяться.

Если требуются постоянные быстрые смены состояния, предпочтительным вариантом будет использование дополнительного канала «точка-точка», для которого адрес или локатор публикуется с помощью DNCP. Но даже в этом случае, если рассчитанное выше значение A_NC_I не превышает (разумно выбранный интервал) Trickle для конкретного приложения, протокол DNCP может не подойти для приложения.

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

DNCP можно использовать в сетях, где доступен лишь индивидуальный (unicast) транспорт. Хотя DNCP при работе с групповой адресацией расходует меньшую пропускную способность, даже при работе в режиме unicast использование Trickle (в идеале с k < 2) обеспечивает значительно меньше передач по сравнению с протоколом без Trickle.

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

DNCP profile — профиль DNCP

Значения набора параметров, представленных в разделе 9. В этом документе для них используется префикс DNCP_. Профиль также задаёт набор используемых необязательных расширений DNCP. Пример простого профиля DNCP приведён в Приложении C.

DNCP-based protocol — протокол, основанный на DNCP

Протокол, предоставляющий профиль DNCP в соответствии с разделом 9 с возможными назначениями TLV из реестра TLV на уровне профиля DNCP,а также правила обработки.

DNCP node — узел DNCP

Отдельный узел, на котором работает основанный на DNCP протокол.

Link — канал

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

DNCP network — сеть DNCP

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

Node identifier — идентификатор узла

Необрабатываемый (opaque) идентификатор фиксированного размера DNCP_NODE_IDENTIFIER_LENGTH байтов, однозначно указывающих узел DNCP в сети DNCP.

Interface — интерфейс

Подключение узла к конкретному каналу.

Address — адрес

Идентификатор, указывающий источник или получателя потока сообщений DNCP, например, адрес IPv6 и порт UDP для транспорта IPv6 UDP.

Endpoint — конечная точка

Локально настроенная точка завершения потока сообщений DNCP (возможная или имеющаяся). Конечная точка является источником и получателем для отдельного индивидуального (unicast) потока сообщений отдельным узлам и (необязательно) для групповых сообщений доступным узлам (например, для обнаружения узлов). Конечная точка обычно находится в одном из транспортных режимов, заданных в параграфе 4.2.

Endpoint identifier — идентификатор конечной точки

32-битовое неанализируемое (opaque) значение, уникальное в локальном масштабе, которое указывает отдельную конечную точку на конкретном узле DNCP. Значение 0 зарезервировано для DNCP и протоколов на основе DNCP и не применяется для реальных конечных точек. Это определение согласуется с определением индекса интерфейса в [RFC3493], как отличного от 0 небольшого положительного числа, которому следует помещаться в 32 бита.

Peer — партнёр

Узел DNCP, с которым данный узел DNCP взаимодействует, используя хотя бы 1 пару конечных точек (локальная и удалённая).

Node data — данные узла

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

Origination time — время создания

Оценённое время, когда был опубликован набор данных узла с текущим порядковым номером.

Node state — состояние узла

Набор атрибутов метаданных для данных узла, включающий порядковый номер (версия), хэш-значение для сравнения с сохранёнными данными узла и метку, указывающее время, прошедшее с момента последней публикации (т. е. после момента создания). Хэш-функцию и размер хэша определяет профиль DNCP.

Network state hash — хэш состояния сети

Хэш-значение, которое представляет текущее состояние сети. Хэш-функцию и размер хэша определяет профиль DNCP. Значение меняется всякий раз при добавлении или удалении узла, а также при обновлении узлом опубликованных данных. Расчёт описан в параграфе 4.1.

Trust verdict — вердикт доверия

Заявление о надёжности сертификата от узла, участвующего в согласовании доверия на основе сертификатов.

Effective trust verdict — эффективный (действующий) вердикт доверия

Вердикт доверия с наивысшим приоритетом в наборе вердиктов, анонсированных для сертификата в сети DNCP.

Topology graph — граф топологии

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

Bidirectionally reachable — двухсторонняя достижимость

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

Trickle instance — экземпляр Trickle

Отдельное состояние алгоритма [RFC6206], сохраняемое узлом (раздел 5) и относящееся к конечной точке или конкретному кортежу (партнёр-конечная точка) с переменными Trickle I, t, c (параграф 4.3).

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

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

3. Обзор

DNCP работает обычно на основе индивидуального (unicast) обмена между узлами и может использовать групповую передачу (multicast) для основанного на алгоритме Trickle распространения общего состояния и определения топологии. При использовании лишь unicast-режима алгоритм Trickle применяется также между партнёрами.

Протокол DNCP основан на обмене TLV (раздел 7) и определяет часть их как обязательные для работы. TLV классифицируются как предназначенные для запроса информации (параграф 7.1), передачи данных (параграф 7.2) и публикуемые как данные (параграф 7.3). Протоколы на основе DNCP обычно задают дополнительные TLV для расширения возможностей.

DNCP определяет топологию узлов в сети DNCP и поддерживает жизненность опубликованных данных узлов, обеспечивая двухстороннюю доступность публикующих узлов. Новые потенциальные партнёры могут обнаруживаться автономно на каналах с групповой адресацией, их адреса могут быть настроены вручную или определены заданным в профиле DNCP способом. Профиль DNCP может задавать, например, общеизвестный anycast-адрес или предоставлять удалённый адрес для взаимодействия по иному протоколу, такому как DHCPv6 [RFC3315].

Хэш-дерево высотой 1 с корнем в себе поддерживается каждым узлом для представления состояния всех доступных в данный момент узлов (см. параграф 4.1), а алгоритм Trickle служит для запуска синхронизации (см. параграф 4.3). необходимость проверки узлов на предмет смены состояния определяется сравнением текущего корня соответствующих хэш-деревьев, т. е. рассчитанных индивидуально хэшей состояния сети.

Перед подключением к сети DNCP узел начинается с хэш-дерева, имеющего лишь один лист, если узел публикует TLV, и без листьев в ином случае. Затем узел анонсирует хэш состояния сети, рассчитанные из хэш-дерева с помощью алгоритма Trickle на всех настроенных конечных точках.

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

4. Работа протокола

4.1. Хэш-дерево

Каждый узел DNCP поддерживает хэш-дерево произвольной ширины с высотой 1. Корень дерева представляет хэш общего состояния сети и служит для проверки согласованности и общности представления сети двумя или более узлами. Каждый лист представляет один узел DNCP с двухсторонней доступностью. При добавлении или удалении узла из графа топологии (параграф 4.6) лист добавляется или удаляется. В каждый момент листья дерева упорядочены по росту идентификаторов представляемых ими узлов.

4.1.1. Расчёт хэшей состояния сети и данных узлов

Хэш состояния сети и хэш-значения узлов данных рассчитываются с помощью хэш-функции, заданной профилем DNCP (раздел 9), и отсекаются до указанного в профиле числа битов.

Хэши отдельных узлов данных рассчитываются путём применения функции и отсечки для данных соответствующего узла, опубликованных в Node State TLV. Наборы данных узлов всегда упорядочиваются, как указано в параграфе 7.2.3.

Хэш состояния сети рассчитывается путём применения функции и отсечки для объединённого состояния сети. Это состояние формируется сначала конкатенацией порядкового номера узла (сетевой порядок байтов) с хэшем данных узла для формирования блока данных узла (datum). Затем выполняется конкатенация этих блоков по порядку роста номеров (т. е. в порядке размещения узлов в хэш-дереве).

4.1.2. Обновление хэшей состояния сети и данных узлов

Хэши состояния сети и узлов обновляются по запросу, а также при изменении любого локально сохранённого состояния узла. Это включает локальную одностороннюю достижимость в опубликованных Peer TLV (параграф 7.3.1) и (в комбинации с удалёнными данными) ведёт к осведомлённости об изменениях двухсторонней достижимости.

4.2. Транспортировка данных

DNCP предъявляет немного требований в базовому транспорту — нужен какой-либо способ передачи партнёру индивидуальных дейтаграмм или потока данных, а при использовании группового режима — способ передачи групповых дейтаграмм. Поскольку групповая адресация применяется лишь для идентификации потенциальных новых узлов DNCP и передачи статусных сообщений, которые просто указывают, что следует перейти в индивидуальный (unicast) режим, групповой транспорт не требует защиты. Если нужна защита индивидуального трафика и применение одного из встроенных механизмов защиты, потребуется одна из транспортных на основе TLS (например, TLS [RFC5246] для TCP или DTLS [RFC6347] для UDP). Это обеспечивает защиту целостности, а также проверку подлинности и полномочий с помощью схемы, заданной в разделе 8. Конкретное указание используемого транспорта и его параметров должен включать профиль DNCP.

TLV (раздел 7) транспорт передаёт без изменений и их следует передавать вместе, если какие-либо условия (например, MTU) не требуют передавать их в отдельных пакетах. DNCP не поддерживает фрагментации и сборки TLV, поэтому должно гарантироваться выполнение этих операций транспортным уровнем (при необходимости). Если этот документ указывает отправку одного или нескольких TLV, передающему узлу не требуется отслеживать отправленные пакеты после их передачи транспортному уровню, т. е. надёжность операций DNCP обеспечивается лишь явно заданными таймерами и конечными автоматами, такими как Trickle (параграф 4.3). TLV обычно обрабатываются индивидуально и без сохранения состояний (поэтому для них не требуется упорядоченной отправки) с одним исключением — для формирования отношений двухсторонней достижимости DNCP нужна идентификация участвующих конечных точек. Отношения двухсторонней достижимости требуются для проверки живучести опубликованных данных узла, как указано в параграфе 4.6, и узел DNCP должен передавать Node Endpoint TLV (параграф 7.2.1). Время отправки зависит от базового транспорта, но концептуально Node Endpoint TLV следует быть доступным при обработке Network State TLV, как указано ниже.

  • При использовании потокового транспорта Node Endpoint TLV должен передаваться хотя бы один раз на каждое соединение и не следует передавать его неоднократно.

  • При использовании дейтаграмм Node Endpoint TLV должен включаться в каждую дейтаграмму, содержащую Network State TLV (параграф 7.2.2) и должен размещаться перед любым таким TLV. Его следует включать также во все прочие дейтаграммы для ускорения обнаружения соседей.

С учётом различных вариантов транспорта, а также возможных конфигураций конечных точек, конечная точка DNCP может использоваться в указанных ниже транспортных режимах.

Unicast — индивидуальная адресация

  • При использовании лишь гарантированного индивидуального транспорта алгоритм Trickle не применяется совсем. При каждом изменении рассчитанного локально хэша передаётся Network State TLV (параграф 7.2.2) каждому unicast-партнёру. Могут включаться также недавно изменённые Node State TLV (параграф 7.2.3).
  • При использовании лишь индивидуального транспорта без гарантий состояние Trickle сохраняется на уровне партнёра и применяется для незамедлительной отправки Network State TLV, как указано в параграфе 4.3.

Multicast+Unicast — индивидуальная и групповая адресация

При доступности на конечной точке транспорта групповых дейтаграмм состояние Trickle поддерживается лишь для конечной точки в целом. Оно применяется для периодической отправки Network State TLV, как указано в параграфе 4.3. В дополнение профиль DNCP может определять keep-alive на уровне конечной точки.

MulticastListen+Unicast — прослушивание групповых пакетов и индивидуальная адресация

Отличается от использования индивидуального транспорта лишь прослушиванием групповых передач для обнаружения изменений старшего (наибольшего) идентификатора устройства. Этот режим применяется ли в случае поддержки профилем DNCP оптимизации каналов с групповой адресацией и высокой плотностью (параграф 6.2).

4.3. Управляемые Trickle обновления состояния

Алгоритм Trickle [RFC6206] применяется для обеспечения надёжной работы индивидуального и группового транспорта без гарантий. Для индивидуального (unicast) транспорта с гарантиями алгоритм фактически не нужен и опускается (параграф 4.2). DNCP поддерживает несколько состояний Trickle, как указано в разделе 5. Каждое из таких состояний может быть основано на разных параметрах (см. ниже) и отвечает за обеспечение конкретному или всем партнёрам на определённой конечной точке регулярное представление текущего локально рассчитанного хэша состояния сети для сравнения состояний, т. е. обнаружения возможного расхождения воспринимаемого состояния сети.

Trickle определяет 3 параметра: Imin, Imax, k. Параметры Imin и Imax представляют минимальное значение I и максимальное число удвоений Imin, где I — интервал, в течение которого конечная точка должна увидеть не менее k обновлений Trickle для предотвращения передачи локального состояния. Фактически предлагаемые параметры алгоритма Trickle зависят от профиля DNCP, как указано в разделе 9.

Состояние для всех экземпляров Trickle, определённых в разделе 5, считается несогласованным и сбрасывается, когда меняется локально рассчитанный хэш сети (и только в этом случае). Это происходит в результате изменения данных самого локального узла или получения более свежих данных от другого узла, как описано в параграфе 4.1. Узлу недопустимо сбрасывать своё состояние Trickle на основе лишь получения Network State TLV (параграф 7.2.2) с отличным от локально рассчитанного хэшем состояния сет.

Каждый раз, когда конкретный экземпляр Trickle указывает, что нужно отправить обновление, локальный узел должен передать Network State TLV (параграф 7.2.2), если выполняются указанные ниже условия (и только в этом случае).

  • Конечная точка работает в режиме Multicast+Unicast. TLV в этом случая должен передаваться как групповой.

  • Конечная точка работает в режиме, отличном от Multicast+Unicast и индивидуальный транспорт не обеспечивает гарантий. В этом случае TLV должен передаваться как unicast.

Можно также включать все или часть Node State TLV (параграф 7.2.3), если в профиле DNCP не указана нежелательность этого или не требуется предотвратить раскрытие TLV при групповой передаче путём отправки по защищённому индивидуальному транспорту.

4.4. Обработка принятых TLV

В этом параграфе описана обработка принятых TLV. Профиль DNCP может задавать игнорирование отдельных TLV, например, для изменения свойств защиты (в разделе 9 указано, для чего профиль может задавать безопасное игнорирование). Любой отклик (reply), упомянутый ниже, означает передачу конкретных TLV инициатору обрабатываемого TLV. Все такие отклики должны передаваться по индивидуальным адресам. Если TLV, для которого передаётся отклик, принят как групповой и в несколько каналов доступа, отклик должен быть задержан на случайное время из интервала [0, Imin/2] для предотвращения возможности одновременной отправки, которая может вызывать проблемы на некоторых каналах, если в профиле DNCP не указано иное. Для откликов можно также ограничивать скорость передачи на короткое время, определяемое реализацией. Однако, если TLV не запрещён профилем DNCP, реализация должна отвечать на повторные TLV с отличной от 0 вероятностью, чтобы не возникло «истощения» (starvation), нарушающего синхронизацию состояний.

Узел DNCP должен обрабатывать TLV, полученные с любого действительного (например, с корректной областью действия) адреса, как задано профилем DNCP и настройкой конкретной конечной точки, независимо от того, принадлежит ли адрес партнёру. Это условие удовлетворяет потребности мониторинга и других программ хоста, которым требуется определять топологию DNCP без добавления состояний в сеть.

Ниже описаны действия при получении разных TLV.

  • Request Network State TLV (параграф 7.1.1). Получатель должен ответить Network State TLV (параграф 7.2.2) и Node State TLV (параграф 7.2.3) для каждого узла данных, использованного при расчёте хэша состояния сети. В Node State TLV не следует включать необязательную часть данных узла для предотвращения избыточной передачи данных узла, если в профиле DNCP явно не указано иное.

  • Request Node State TLV (параграф 7.1.2). Если получатель имеет данные для соответствующего узла, он должен ответить Node State TLV (параграф 7.2.3) для соответствующего узла. Необязательная часть данных узла должна включаться в TLV.

  • Network State TLV (параграф 7.2.2). Если хэш состояния сети отличается от рассчитанного локально и получатель не знает о каких-либо конкретных различиях в состоянии узла с отправителем, он должен ответить Request Network State TLV (параграф 7.1.1). Эти отклики должны ограничиваться по частоте передачи (не более 1 на канал для уникального хэша состояния сети в интервале Imin). Простейший способ обеспечить это ограничение заключается в использовании временных меток, указывающих запросы, и передачи не более одного Request Network State TLV (параграф 7.1.1) в интервале Imin. Для обеспечения более быстрой синхронизации состояний при передаче в ответ Request Network State TLV можно отправлять также текущий локальный Network State TLV MAY.

  • Node State TLV (параграф 7.2.3).

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

    • Если идентификатор узла не совпадает с локальным и выполняется любое из условий:

      • локальная информация для соответствующего узла устарела (локальный номер меньше чем в TLV);

      • локальная информация может быть некорректна (номера совпадают, но данные различаются);

      • для этого узла нет данных,

      выполняются указанные ниже действия.

      • Если TLV содержит поле Node Data, его следует проверить, убедившись, что локально рассчитанный хэш совпадает с полем H(Node Data) в TLV. При несовпадении следует игнорировать TLV.

      • Если TLV не содержит поле Node Data, а H(Node Data) в TLV отличается от локального хэша данных узла (или его нет), получатель должен ответить Request Node State TLV (параграф 7.1.2) для соответствующего узла.

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

    Для сравнения порядковых номеров должна применяться функция циклического сравнения, чтобы избежать проблем при достижении максимума. Рекомендуется функция сравнения a < b <=> ((a — b) % (232)) & (231) != 0 где (a % b) представляет остаток при делении по модулю a на b, а (a & b) — побитовое объединение (конъюнкцию) a и b, если профиль DNCP не задаёт иную.

  • Прочие TLV. TLV, не распознанные получателем, должны просто игнорироваться, если они не были переданы в другом TLV (например, TLV в поле Node Data внутри Node State TLV). Нераспознанные TLV в поле Node Data внутри Node State TLV должны сохраняться для распространения другим узлам и расчёта хэша данных узла, как описано в параграфе 7.2.3, но игнорироваться в остальных случаях.

Если для конечной точки настроен индивидуальный транспорт с гарантиями, все Node State TLV, полученные в незащищённых групповых пакетах, должны просто игнорироваться.

4.5. Обнаружение, добавление и удаление партнёров

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

Поиск новых партнёров выполняется с использованием обычного индивидуального или группового транспорта, заданного в профиле DNCP (раздел 9). Этот процесс не отличается от добавления партнёра, т. е. неизвестный партнёр просто обнаруживается при получении от него обычных TLV протокола DNCP и специальных сообщений или TLV для обнаружения не применяется. Для транспорта с поддержкой лишь unicast транспортные адреса отдельных устройств настраиваются заранее или получаются с использованием внешнего протокола обнаружения служб. При наличии группового транспорта сообщения от неизвестных партнёров обрабатываются так же, как групповые сообщения от известных, т. е. новые партнёры обнаруживаются при передаче ими обычных TLV протокола DNCP по групповому адресу.

При получении конечной точкой Node Endpoint TLV (параграф 7.2.1) от неизвестного партнёра выполняются указанные ниже действия.

  • При получении индивидуально удалённый узел должен быть добавлен конечной точкой в число партнёров и для него должен быть создан Peer TLV (параграф 7.3.1).

  • При получении группового TLV узел может передать (возможно с ограничением частоты) индивидуальный Request Network State TLV (параграф 7.1.1).

Если сообщения keep-alive, заданные в параграфе 6.1, не передаются партнёром (профиль DNCP не задаёт их использование или конкретный партнёр отказался от передачи keep-alive), должны применяться другие меры, предоставляемые локальным транспортом (такие как обнаружение несущей Ethernet или TCP keep-alive), для обозначения присутствия. Если партнёр не передаёт keep-alive и нет средств проверки его присутствия, он должен считаться отсутствующим и его не следует добавлять снова, пока он не возобновит передачу keep-alive. Когда партнёр больше не присутствует, Peer TLV и локальное состояние DNCP для партнёра должны удаляться. DNCP не определяет явных сообщений или TLV, указывающих прерывание операции DNCP прерывающим узлом, однако производные протоколы при необходимости могут задавать такие расширения.

Если локальная конечная точка находится в транспортном режиме Multicast-Listen+Unicast, Peer TLV (параграф 7.3.1) недопустимо публиковать для партнёров, не имеющих более высокого значения идентификатора узла.

4.6. Проверка живучести данных

Поддержка хэш-дерева (параграф 4.1) и обновление хэшей состояния сети зависят от актуальности информации о двухсторонней достижимости узла, выводимой из содержимого графа топологии. Граф меняется при добавлении и удалении узлов сети, а также при организации или потере двухсторонней связности между имеющимися узлами, поэтому он должен обновляться сразу же или с задержкой меньше заданного профилем DNCP значения Trickle Imin после любого из указанных ниже событий.

  • Добавление или удаление Peer TLV или узла в целом.

  • Время создания данных того или иного узла (в миллисекундах) раньше, чем (текущее время — (232 + 215)).

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

Обновление графа топологии начинается с пометки локального узла достижимым, а всех остальных — недоступными. Затем остальные узлы итеративно помечаются как доступные по специальному алгоритму. Ещё не достижимый узел-кандидат N с конечной точкой NE помечается как доступный, если имеется узел R с конечной точкой RE, для которого выполняются все указанные ниже условия.

  • Время создания данных узла R (в миллисекундах) больше чем (текущее время — (232 + 215)).

  • R публикует Peer TLV с:

    • Peer Node Identifier = идентификатор узла N;

    • Peer Endpoint Identifier = идентификатор конечной точки NE;

    • Endpoint Identifier = идентификатор конечной точки RE.

  • N публикует Peer TLV с:

    • Peer Node Identifier = идентификатор узла R;

    • Peer Endpoint Identifier = идентификатор конечной точки RE;

    • Endpoint Identifier = идентификатор конечной точки NE.

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

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

5. Модель данных

В этом разделе описаны локальные структуры данных, которые может использовать минимальная реализация. Раздел предназначен лишь для удобства разработчиков. Некоторые необязательные расширения (раздел 6) описывают свои требования к данным и некоторые необязательные части ядра протокола могут вносить свои требования.

Узел DNCP имеет структуру данных, содержащую сведения о недавно переданных Request Network State TLV (параграф 7.1.1). Простейшим вариантом является сохранение временных меток последних запросов (нужны для ограничения скорости передачи откликов, как описано в параграфе 4.4).

Для каждого узла в сети DNCP узел DNCP имеет указанные ниже сведения.

  • Идентификатор узла, однозначно указывающий узел. Размер, способ создания и обработка конфликтов определяются в профиле DNCP.

  • Данные узла, включающие набор TLV, опубликованных этим узлом. Поскольку данные передаются в определённом порядке (см. параграф 7.2.3), может быть разумным сохранение этого порядка в структуре.

  • Последний порядковый номер — 32-битовое значение, увеличиваемое при публикации каждого набора TLV. Функция сравнения описана в параграфе 4.4.

  • Время создания — (оценочное) время публикации текущего набора TLV с текущим порядковым номером. Это время используется в поле Milliseconds Since Origination блока Node State TLV (параграф 7.2.3). В идеальном случае обеспечивает миллисекундную точность.

Узел DNCP имеет набор конечных точек, для которых настроено применение DNCP, с указанными ниже параметрами.

  • Идентификатор конечной точки — 32-битовое неанализируемое (opaque) уникальное в локальном масштабе значение, указывающее конечную точку на узле. Не следует повторно использовать идентификатор сразу после отключения конечной точки.

  • Экземпляр Trickle с параметрами I, T, c (только для точек в транспортном режиме Multicast+Unicast).

Для конечной точки также поддерживается один или несколько перечисленных ниже параметров.

  • Интерфейс — локально назначенный сетевой интерфейс.

  • Индивидуальный адрес, указывающий узел DNCP, с которым следует соединяться.

  • Набор адресов узлов DNCP, от которых принимаются соединения.

Для каждой удалённой пары (партнёр, конечная точка), обнаруженной на локальной конечной точке, узел DNCP имеет:

  • идентификатор узла, однозначной указывающий партнёра;

  • идентификатор конечной точки, однозначно указывающий её у партнёра;

  • адрес партнёра — последний использованный партнёром адрес (аутентифицированный и уполномоченный при включённой защите);

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

6. Дополнительные расширения

В этом разделе указаны расширения ядра протокола, которые могут быть заданы профилем DNCP.

6.1. Keep-Alive

Хотя DNCP предоставляет механизмы для обнаружения и добавления новых партнёров на конечной точке (параграф 4.5), а также уведомления о смене состояний, могут потребоваться иные механизмы для избавления от устаревших и недействительных партнёров, если транспортный или нижележащие уровни не обеспечивают их, как указано в параграфе 4.6.

Если в профиле DNCP не заданы сообщения keep-alive, остальная часть этого параграфа должна игнорироваться.

Профиль DNCP может задавать поддержку keep-alive на уровне конечных точек (передаются по групповому адресу всем узлам DNCP, подключённым к multicast-каналу) или партнёров (передаются индивидуально).

Для каждой конечной точки, для которой в профиле DNCP заданы сообщения keep-alive, должен поддерживаться свой интервал keep-alive (по умолчанию DNCP_KEEPALIVE_INTERVAL). Если предпочтительно заданное локально значение по той или иной причине (настройка, энергосбережение, тип среды и т. п.), используется это значение. Если какая-либо конечная точка применяет отличное от принятого по умолчанию значение, узел DNCP должен публиковать соответствующие Keep-Alive Interval TLV (параграф 7.3.2) в данных узла.

6.1.1. Дополнения модели данных

Для поддержки keep-alive нужны указанные ниже дополнения к модели данных (раздел 5).

Для каждой настроенной конечной точки, где включены keep-alive на уровне конечных точек:

  • время последней передачи, если метка времени, указывающая последний блок Network State TLV (параграф 7.2.2), была передана через этот интерфейс.

Для каждой удалённой пары (партнёр, конечная точка), обнаруженной на локальной конечной точке, узел DNCP имеет указанные ниже значения.

  • Метка времени последнего контакта, указывающая момент получения последнего согласованного Network State TLV (параграф 7.2.2) от партнёра в групповом режиме или любой информации в индивидуальном режиме (unicast). Если метка не обновлена в течение некоторого времени, как указано в параграфе 6.1.5, партнёр удаляется. При добавлении партнёра для метки устанавливается текущее время.

  • Время последней передачи. При включённых keep-alive для партнёров это будет временная метка, указывающая момент последней передачи Network State TLV (параграф 7.2.2) данному партнёру point-to-point. При добавлении партнёра для метки устанавливается текущее время.

6.1.2. Периодические Keep-Alive для конечной точки

Если включены keep-alive для конечных точек в транспортном режиме Multicast+Unicast и трафик с Network State TLV (параграф 7.2.2) не передавался конкретной конечной точке в течение заданного для неё интервала keep-alive, этой конечной точке должен передаваться Network State TLV (параграф 7.2.2) с запуском нового интервала Trickle, как указано в п. 2 параграфа 4.2 [RFC6206]. Фактическую передачу следует задерживать на случайное время из интервала [0, Imin/2].

6.1.3. Периодические Keep-Alive для партнёра

Если включены keep-alive для партнёров на конечной точке, поддерживающей лишь индивидуальный транспорт и не было передано трафика с Network State TLV (параграф 7.2.2) в заданном для конечной точки интервале keep-alive, партнёру. должен передаваться Network State TLV (параграф 7.2.2) с запуском нового интервала Trickle, как указано в п. 2 параграфа 4.2 [RFC6206].

6.1.4. Дополнения к обработке принятых TLV

При получении TLV от партнёра индивидуально для этого партнёра должна обновляться метка времени контакта.

При получении Network State TLV (параграф 7.2.2), соответствующего локально рассчитанному кэшу состояния сети, для этого должна обновляться метка времени контакта, чтобы сохранить его как партнёра.

6.1.5. Удаление партнёра

Для каждого партнёра на каждой конечной точке интервал keep-alive для конечной точки должен рассчитываться с использованием Keep-Alive Interval TLV (параграф 7.3.2), опубликованных узлом, а при их отсутствии применяется принятое по умолчанию значение DNCP_KEEPALIVE_INTERVAL. Если метка времени последнего контакта с партнёром не обновлялась в течение по меньшей мере потенциально зависящего от конечной точки локального числа интервалов keep-alive (по умолчанию DNCP_KEEPALIVE_MULTIPLIER) для конечной точки партнёра, для этого партнёра должны удаляться Peer TLV и локальное состояние партнёра DNCP.

6.2. Поддержка каналов Multicast с высокой плотностью узлов

Эта оптимизация нужна для предотвращения взрывного роста пространства состояний. С учётом большого числа узлов DNCP, публикующих данные на конечной точке, использующей групповую адресацию на канале, каждый узел будет добавлять Peer TLV (параграф 7.3.1) для каждого партнёра. Хотя Trickle до некоторой степени ограничивает объем трафика на канале в стабильном состоянии, общий объем данных, добавляемых и поддерживаемых в сети DNCP с числом узлов N, на канале с поддержкой групповой адресации составляет O(N2). Кроме того, при использовании keep-alive на уровне партнёров на канале будет O(N2) сообщений keep-alive, если жизненность партнёров не подтверждается иным путём (например, срок действия соединения TCP, уведомление L2 или keep-alive на уровне конечной точки).

Верхнюю границу числа партнёров, разрешённого для отдельного типа каналов, которую использует конечная точка в транспортном режиме Multicast+Unicast, следует задавать в профиле DNCP, но она может быть выбрана и в процессе работы. Основное внимание при выборе границы для конкретного типа канала (если она задаётся) следует уделять вопросу поддержки группового трафика и большого числа партнёров при использовании данного профиля DNCP на канале. Если то и другое маловероятно, нет смысла задавать поддержку расширения для этого типа канала.

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

Если заданная верхняя граница превышена для какой-либо конечной точки с режимом транспорта Multicast+Unicast и узел не имеет наивысшего идентификатора на канале, ему следует считать конечную точку индивидуально (unicast) подключённой к узлу, имеющему наивысший идентификатор на канале, и переходить в режим Multicast-listen+Unicast. Влияние на поведение конкретной конечной точки рассмотрено в параграфе 4.2. Узлы в режиме Multicast-listen+Unicast должны сохранять прослушивание группового трафика для получения сообщений от узлов, остающихся в режиме Multicast+Unicast, и реакции на появлении узла с большим идентификатором. Если наибольший идентификатор на канале меняется, должен измениться удалённый unicast-адрес конечных точек в режиме Multicast-Listen+Unicast. Если идентификатор локального узла является высшим на канале, узел должен переключиться обратно или остаться в режиме Multicast+Unicast и организовать партнерские отношения со всеми партнёрами, как указано в параграфе 4.5.

7. Объекты TLV

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            Type               |           Length              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          Value (при наличии) (+padding (при наличии))         |
...
|                   (переменное число байтов)                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 (необязательные вложенные TLV)                |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Каждый блок TLV содержит:

  • 2-байтовое поле Type;

  • 2-байтовое поле Length, указывающее размер Value в байтах, 0 говорит об отсутствии значения;

  • значение, если оно имеется;

  • необязательные байты заполнения (0) до следующей 4-байтовой границы, если Length не кратно 4.

Хотя байты заполнения недопустимо учитывать в поле Length блока TLV, при наличии вложенных TLV их заполнение включается в поле Length внешнего (охватывающего) TLV.

Каждый TLV, не определяющий необязательных полей и содержимого переменного размера, может передаваться с дополнительными суб-TLV, добавленными после него для поддержки расширяемости. При обработке таких типов TLV каждый узел должен воспринимать полученные TLV, размер которых превышает размер фиксированных полей для данного типа, и игнорировать суб-TLV неизвестного или неподдерживаемого в данном TLV типа. При наличии суб-TLV поле Length в основном TLV указывает число байтов от первого байта поля Value (при наличии) до последнего байта заполнения в последнем суб-TLV, включительно. Например, TLV с type=123 (0x7b) и значением x (120 = 0x78) представляется как 007B 0001 7800 0000. Если в него включён суб-TLV типа 124 (0x7c) со значением y, кодирование будет иметь вид 007B 000C 7800 0000 007C 0001 7900 0000.

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

.. — конкатенация (объединение) строк.

H(x) — некриптографическая хэш-функция, заданная профилем DNCP.

В дополнение к определенным здесь типам TLV значения типов 11-31 и 512-767 зарезервированы и могут быть зарегистрированы позднее (начиная с 11) по процедуре Standards Action [RFC5226] расширениями DNCP, которые могут применяться в разных профилях DNCP.

7.1. TLV запросов

7.1.1. Request Network State TLV

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Тип: Request network state (1)|          Размер: >= 0         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Запрашивает отклик с Network State TLV (параграф 7.2.2) и всеми Node State TLV (параграф 7.2.3) без данных узла.

7.1.2. Request Node State TLV

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Тип: Request node state (2)  |          Размер: > 0          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Node Identifier                        |
|                   (размер задаёт профиль DNCP)                |
...
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Запрашивает Node State TLV (параграф 7.2.3) с данными узла, соответствующего идентификатору.

7.2. TLV с данными

7.2.1. Node Endpoint TLV

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Тип: Node endpoint (3)     |          Размер: > 4          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Node Identifier                        |
|                   (размер задаёт профиль DNCP)                |
...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Endpoint Identifier                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Указывает идентификаторы локального узла и конкретной конечной точки. Передача этого TLV описана в параграфе 4.2.

7.2.2. Network State TLV

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Тип: Network state (4)     |          Размер: > 0          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|         H(порядковый номер узла 1 .. H(данные узла 1) ..      |
|         .. порядковый номер узла N .. H( данные узла N))      |
|                   (размер задаёт профиль DNCP)                |
...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Передаёт хэш текущего состояния сети, рассчитанный отправителем (алгоритм описан в параграфе 4.1).

7.2.3. Node State TLV

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Тип: Node state (5)      |          Размер: > 8          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                        Node Identifier                        |
|                   (размер задаёт профиль DNCP)                |
...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       Sequence Number                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Milliseconds Since Origination                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                         H(Node Data)                          |
|                   (размер задаёт профиль DNCP)                |
...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       (необязательно) Node Data (набор вложенных TLV)         |
...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Этот TLV представляет знание локального узла об опубликованном состоянии узла сети DNCP, указанного полем Node Identifier в TLV.

Каждый узел, включая публикующий свои данные, должен обновлять поле Milliseconds Since Origination всякий раз при передаче Node State TLV на основе оценки узлом времени исходной публикации данных. Это делается, например, для того, чтобы относительные метки времени в публикуемых данных узла можно было корректно интерпретировать. В конечном итоге предсказание является просто оценкой, поскольку не учитывает задержек при передаче.

Если исходный узел замечает, что 32-битовое поле Milliseconds Since Origination близко к переполнению (больше 232 — 216), он должен заново опубликовать TLV, даже при отсутствии в них изменений. Иными словами, при отсутствии изменений узел должен заново публиковать набор TLV примерно каждые 48 дней.

Фактические данные узла могут включаться в TLV, а также в необязательное поле Node Data. Набор TLV должен строго упорядочиваться по возрастанию двоичного содержимого (включая тип и размер TLV). Это позволяет получателю, например, эффективно обрабатывать изменения и индексировать по типу TLV без копирования. Содержимое данных узла должно передаваться в том виде, как оно было получено.

При получении следует также проверять совпадение локально рассчитанного значения H(Node Data) с содержимым поля в TLV и при наличии расхождений TLV следует игнорировать.

7.3. TLV данных в Node State TLV

Эти TLV публикуются узлами DNCP и применяются лишь в поле Node Data блоков Node State TLV. При появлении вне Node State TLV они должны игнорироваться.

7.3.1. Peer TLV

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Тип: Peer (8)           |          Размер: > 8          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Peer Node Identifier                     |
|                   (размер задаёт профиль DNCP)                |
...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    Peer Endpoint Identifier                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   (Local) Endpoint Identifier                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

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

7.3.2. Keep-Alive Interval TLV

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Тип: Keep-alive interval (9)  |          Размер: >= 8         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Endpoint Identifier                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Interval                            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Указывает использование иного, чем принятый по умолчанию, интервала keep-alive (параграф 6.1).

Идентификатор конечной точки служит для указания отдельной (локальной) конечной точки, для которой на передающем узле применяется данный интервал. Значение 0 указывает все конечные точки, где нет конкретного TLV.

Поле Interval указывает число миллисекунд между отправкой узлом keep-alive. Значение 0 отключает передачу keep-alive и в таких случаях должен быть доступен механизм нижележащего уровня, гарантирующий присутствие узлов.

8. Управление защитой и доверием

Если это задано в профиле DNCP, может применяться DTLS [RFC6347] или TLS [RFC5246] для аутентификации и шифрования части (если профиль не задаёт обязательность) или всего unicast-трафика. Ниже определены методы организации доверия, а возможность, желательность или обязательность их применения задаёт профиль DNCP.

8.1. Доверие на основе PSK

Модель доверия на основе заранее распределенных ключей (Pre-Shared Key или PSK) обеспечивает простой механизм управления защитой, позволяющий администратору развёртывать устройства в имеющейся сети, настраивая на них предопределённый ключ, подобно настройке пароля администратора или ключа защиты Wi-Fi (Wi-Fi Protected Access или WPA. Это ограниченный, но полезный и удобный для небольших сетей механизм защиты.

8.2. Доверие на основе PKI

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

8.3. Согласование доверия на основе сертификатов

В некоторых случаях, таких как начальная загрузка в частично сети управляемой сети, описанные выше методы не могут обеспечить желаемый баланс защиты и удобства для пользователей. В этом параграфе приведено руководство по реализации метода гибкой защиты [RFC7435], на основе которого можно создать профили DNCP, приспособленные к конкретным требованиям. Модель согласования на основе сертификатов разработана как компромисс между усилиями по управлению доверием и гибкостью. Она основана на сертификатах X.509 и позволяет каждому узлу DNCP вынести вердикт доверия по любому другому сертификату и прийти к соглашению в части доверия к узлу использующему этот сертификат или другой сертификат, подписанный им.

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

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

8.3.1. Вердикты доверия

Вердикты доверия — это заявления узлов DNCP о доверию к сертификатам X.509. Существует 5 возможных вердиктов, указанных ниже в порядке роста значимости (приоритета).

0 (Neutral — нейтральный) — вердикта доверия нет и сети DNCP следует определить его.

1 (Cached Trust — кэшированное доверие) — последний известный вердикт — Trust (Configured или Cached).

2 (Cached Distrust — кэшированное недоверие) — последний известный вердикт — Distrust (Configured или Cached).

3 (Configured Trust — настроенное доверие) — доверие на основе внешней церемонии или настройки.

4 (Configured Distrust — настроенное недоверие) — недоверие на основе внешней церемонии или настройки.

Вердикты доверия собраны в 3 группы:

  • настроенные (Configured) вердикты доверия применяются для анонсов узла явных вердиктов, основанных на внешней доверенной загрузки или предопределённых отношений, сформированных для данного сертификата.

  • Кэшированные (Cached) вердикты доверия служат для анонсов сохранения последнего известного состояния в случае, когда все узлы с настроенными вердиктами были отсоединены или выключены.

  • Нейтральный (Neutral) вердикт служит для анонсирования нового узла, намеревающегося подключиться к сети, когда окончательный вердикт ещё не определён.

В качестве текущего действующего вердикта доверия для сертификата применяется вердикт с наибольшим приоритетом из числа анонсированных для этого сертификата в сети DNCP. Узел должен считаться доверенным для участия в сети DNCP тогда и только тогда, когда текущим действующим вердиктом доверия к его сертификату или любому из сертификатов в его иерархии является Trust (Cached или Configured) и ни один из сертификатов в его иерархии не имеет текущего действующего вердикта Distrust (Cached или Configured). Если узел имеет настроенный вердикт, отличающийся от текущего действующего вердикта доверия для сертификата, последний имеет преимущество при решении вопроса о доверии. Несмотря на это, узел поддерживает и анонсирует настроенный вердикт.

8.3.2. Кэш доверия

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

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

8.3.3. Анонсирование вердиктов

Узлу следует анонсировать все созданные им вердикты и он должен делать это, если анонс настроенного вердикта ведёт к смене текущего действующего вердикта для соответствующего сертификата. При отсутствии настроенных вердиктов узел должен анонсировать вердикты Cached Trust из своего кэша доверия, если выполняется 1 из условий:

  • сохранён вердикт Cached Trust, а текущий действующий вердикт для сертификата — Neutral или его нет;

  • сохранен вердикт Cached Distrust, а текущий действующий вердикт для сертификата — Cached Trust.

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

При обнаружении узла с иерархией сертификатов, для которой нет действующего вердикта доверия, узел добавляет Neutral Trust-Verdict TLV в свои данные для всех сертификатов, найденный в иерархии, и публикует его, пока не будет найден отличный от Neutral вердикт доверия для любого из сертификатов или не пройдёт разумное время (предлагается 10 минут) без реакции на это и дальнейших попыток аутентификации. Такие вердикты доверия следует ограничивать по частоте и количеству для предотвращения атак с отказом в обслуживании (DoS).

Вердикты доверия анонсируются в Trust-Verdict TLV.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Тип: Trust-Verdict (10)    |        Размер: > 36           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Verdict    |                  (резерв)                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                                                               |
|                                                               |
|                      SHA-256 Fingerprint                      |
|                                                               |
|                                                               |
|                                                               |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Common Name                          |

Verdict указывает численный индекс вердикта доверия.

Резервное поле оставлено на будущее и должно содержать в 0 при создании TLV и игнорироваться при анализе.

SHA-256 Fingerprint содержит хэш SHA-256 [RFC6234] для сертификата в формате DER.

Поле Common name имеет переменный размер (1-64 байта) и содержит базовое имя сертификата.

8.3.4. Церемонии начальной загрузки

Ниже описаны некоторые методы организации отношений доверия между узлами DNCP и сертификатами узлов. Доверие устанавливается двухсторонним процессом, где существующая сеть должна доверять новому узлу, а такой узел — хотя бы одному из своих партнёров. Поэтому от нового и уже доверенного узла требуется выполнение такой церемонии для успешного внедрения нового узла в сеть DNCP. В любом случае администратору должны быть предоставлены внешние средства для идентификации узла, связанного с сертификатом, на основе «отпечатка» (fingerprint) и значимого базового имени.

8.3.4.1. Доверие по идентификации

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

8.3.4.2. Заранее настроенное доверие

На узле можно заранее настроить доверие к набору сертификатов узла или удостоверяющего центра (УЦ или CA). Однако таким отношениям недопустимо приводить к нежелательному или не связанному с делом доверию к узлам, не предназначенным для работы в одной сети (например, к другим устройствам того же производителя).

8.3.4.3. Доверие по нажатию кнопки

Узел может предоставлять физический или виртуальный интерфейс для временного перевода одного или нескольких внутренних сетевых интерфейсов в режим доверия к сертификату первого узла DNCP с которым удалось соединиться.

8.3.4.4. Доверие при первом использовании

Узел, не связанный с другим узлом DNCP, может доверять сертификату первого узла DNCP, с которым удалось соединиться. Этот метод недопустимо применять, когда узел уже связан с каким-либо узлом DNCP.

9. Определения, связанные с профилем DNCP

Каждый профиль DNCP должен задавать перечисленные ниже аспекты.

  • Используемый протокол с индивидуальной и (необязательно) групповой адресацией. Если желательная поддержка групповой адресации для узлов и обнаружения, должен быть доступен транспорт на основе дейтаграмм.

  • Способ защиты выбранного транспорта. Без защиты, необязательная защита, использование определённой здесь схемы TLS с одним или несколькими методами или что-то иное. Если каналы узлов DNCP могут быть достаточно защищены или изолированы, можно запустить DNCP с защитой без использования дополнительной аутентификации и шифрования.

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

  • TLV, игнорируемые при получении (например, по соображениям безопасности, в дополнение к указанным в параграфе 4.4. Хотя защита данных узла, опубликованных в Node State TLV, уже обеспечивается базовой спецификацией (при использовании защищённого индивидуального транспорта Node State TLV передаются только индивидуально, поскольку групповые при получении игнорируются), если профиль добавляет TLV, передаваемые вне данных узла, профилю следует указывать, следует ли игнорировать эти TLV при получении по групповому транспорту или индивидуальному транспорту без защиты. Профиль DNCP может указывать безопасное игнорирование следующих DNCP TLV:

    • принятые как групповые, кроме Node Endpoint TLV (параграф 7.2.1) и Network State TLV (параграф 7.2.2);

    • все групповые или незащищённые индивидуальные TLV, принятые со слишком высокой скоростью; Trickle обеспечит возможное схождение при условии снижения скорости в какой-то момент.

  • Разрешение конфликтов идентификаторов узлов, как описано в параграфе 4.4. Основными вариантами являются назначение нового идентификатора одному или обоим узлам или подача сигнала о критической ошибке в сети DNCP.

  • Диапазоны Imin, Imax и k, предлагаемые реализации для применения в алгоритме Trickle. Алгоритм не требует одинаковых значений во всех реализациях, но близкие по порядку значения помогут реализациям профиля DNCP вести себя более согласованно и облегчат оценку нижнего и верхнего предела для схождения сети.

  • Используемая хэш-функция H(x) и реально используемый размер её вывода. Выбранная функция применяется для хэширования данных узлов и создания хэша состояния сети (хэширование хэш-значений узлов). Функция SHA-256 [RFC6234] рекомендуется для использования по умолчанию, но можно применять и некриптографические хэш-функции. При возникновении конфликта (коллизии) хэша состояния сети сеть будет фактически разделена на части, считающие, что в настоящий момент они больше не сходятся. Сеть сойдётся после того, как изменятся данные того или иного узла или конфликтующие Node State TLV будут переданы через разделение в результате обновления состояния под управлением Trickle (параграф 4.3) или как часть обработки принятых TLV (параграф 4.4). Если узел публикует данные, которые конфликтуют с ранее опубликованными данными зла, обновление может не распространяться (полностью) и будут использованы старые данные узла.

  • DNCP_NODE_IDENTIFIER_LENGTH задаёт фиксированный размер идентификатора узла в байтах.

  • Следует ли передавать keep-alive и режим передачи — для конечной точки (может потребоваться групповой транспорт) или партнёра. С сообщениями keep-alive связаны параметры, указанные ниже.

    • DNCP_KEEPALIVE_INTERVAL задаёт частоту передачи keep-alive по умолчанию (при использовании).

    • DNCP_KEEPALIVE_MULTIPLIER указывает допустимое число пропущенных DNCP_KEEPALIVE_INTERVAL (или указанного партнёром интервала keep-alive). Это значение применяется по умолчанию, если не задано других настроек.

  • Будет ли поддерживаться оптимизация каналов с групповой адресацией и высокой плотностью узлов (параграф 6.2).

Некоторые рекомендации по выбору транспорта и защиты даны в Приложении B.

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

Протоколы на основе DNCP могут применять групповую передачу для указания смены состояний DNCP и сообщений keep-alive. Однако по таким каналам не передаются реально публикуемые TLV с данными. Поэтому атакующий может узнать лишь хэш-значения состояний в сети DNCP и попытаться инициировать unicast-синхронизацию между узлами на локальном канале. Поэтому узлы DNCP должны ограничивать скорость реакции на групповые пакеты.

При использовании DNCP для начальной загрузки сети в решениях на основе PKI могут возникать проблемы с проверкой сертификатов по причине недоступности точного времени или невозможности использовать сеть для проверки списков отозванных сертификатов (Certificate Revocation List) или выполнения online-проверки.

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

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

Агентство IANA создало реестр DNCP TLV Types с 16-битовыми значениями в десятичном формате в разделе Distributed Node Consensus Protocol (DNCP). Значения регистрируются по процедуре Standards Action [RFC5226]. Начальное содержимое реестра приведено ниже.

0: Reserved (резерв);
1: Request network state (запрос состояния сети);
2: Request node state (запрос состояния узла);
3: Node endpoint (конечная точка узла);
4: Network state (состояние сети);
5: Node state (состояние узла);
6: Reserved for future use (ранее Custom, резерв на будущее);
7: Reserved for future use ( ранее Fragment count, резерв на будущее);
8: Peer (партнёр);
9: Keep-alive interval (интервал keep-alive);
10: Trust-Verdict (вердикт доверия);
11-31: Unassigned (не распределены)
32-511: Reserved for per-DNCP profile use (резерв для использования в профилях DNCP);
512-767: Unassigned (не распределены);
768-1023: Reserved for Private Use [RFC5226] (резерв для приватного использования);
1024-65535: Reserved for future use (резерв на будущее).

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

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

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

[RFC5226] Narten, T. and H. Alvestrand, «Guidelines for Writing an IANA Considerations Section in RFCs», BCP 26, RFC 5226, DOI 10.17487/RFC5226, May 2008, <http://www.rfc-editor.org/info/rfc5226>.

[RFC6206] Levis, P., Clausen, T., Hui, J., Gnawali, O., and J. Ko, «The Trickle Algorithm», RFC 6206, DOI 10.17487/RFC6206, March 2011, <http://www.rfc-editor.org/info/rfc6206>.

[RFC6234] Eastlake 3rd, D. and T. Hansen, «US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)», RFC 6234, DOI 10.17487/RFC6234, May 2011, <http://www.rfc-editor.org/info/rfc6234>.

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

[RFC3315] Droms, R., Ed., Bound, J., Volz, B., Lemon, T., Perkins, C., and M. Carney, «Dynamic Host Configuration Protocol for IPv6 (DHCPv6)», RFC 3315, DOI 10.17487/RFC3315, July 2003, <http://www.rfc-editor.org/info/rfc3315>.

[RFC3493] Gilligan, R., Thomson, S., Bound, J., McCann, J., and W. Stevens, «Basic Socket Interface Extensions for IPv6», RFC 3493, DOI 10.17487/RFC3493, February 2003, <http://www.rfc-editor.org/info/rfc3493>.

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

[RFC6347] Rescorla, E. and N. Modadugu, «Datagram Transport Layer Security Version 1.2», RFC 6347, DOI 10.17487/RFC6347, January 2012, <http://www.rfc-editor.org/info/rfc6347>.

[RFC7435] Dukhovni, V., «Opportunistic Security: Some Protection Most of the Time», RFC 7435, DOI 10.17487/RFC7435, December 2014, <http://www.rfc-editor.org/info/rfc7435>.

[RFC7596] Cui, Y., Sun, Q., Boucadair, M., Tsou, T., Lee, Y., and I. Farrer, «Lightweight 4over6: An Extension to the Dual-Stack Lite Architecture», RFC 7596, DOI 10.17487/RFC7596, July 2015, <http://www.rfc-editor.org/info/rfc7596>.

Приложение A. Дополнительные режимы работы

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

A.1. Работа в режиме «только чтение»

Если узел использует лишь одну конечную точку и ему не нужно публиковать TLV, полная функциональность DNCP не требуется. Такой узел с ограничениями может получить и поддерживать представление пространства TLV, реализуя логику обработки, описанную в параграфе 4.4. Такому узлу не нужен алгоритм Trickle, поддержка партнёров и даже keep-alive, поскольку их использование узлами DNCP гарантировало бы получение хэшей состояния сети и синхронизацию данных узла даже при использовании транспорта без гарантий.

A.2. Пересылка

Если узел имеет пару конечных точек, которым не нужно публиковать TLV, он может, например, обнаружить узлы с наибольшими идентификаторами на каждой из конечных точек (если они есть). Все TLV, полученные от одной из точек, узел будет передавать без изменения по индивидуальному адресу другого узла с наибольшим идентификатором.

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

Приложение B. Дополнительное руководство по профилям DNCP

В этом приложении разъяснены последствия выбора для профиля DNCP конкретного транспорта и опций защиты.

B.1. Индивидуальный транспорт — UDP или TCP?

Размер данных, публикуемых узлом DNCP, ограничен 64 Кбайт в результате использования 16-битового поля размера в TLV. Некоторые варианты транспорта могут вносить дополнительные ограничения. Например, при использовании индивидуальных дейтаграмм UDP верхняя граница размера данных узла определяется тем, что узлы и базовая сеть могут передавать друг другу, поскольку DNCP не имеет механизма фрагментации. Профиль на основе UDP будет ограничен в размере данных узла (например, меньше принятого по умолчанию IPv6 MTU, если применяется IPv6) или будет задавать минимальный размер, который должны поддерживать все узлы. При использовании коммуникаций, включающих нелокальные каналы, приходится учитывать обработку фрагментов промежуточными устройствами. Поэтому применение потокового транспорта, такого как TCP, будет вероятно более оправданным, если нужна связь не только по локальным каналам или предполагается, что фрагментация может вызывать проблемы.

TCP также обеспечивает другие возможности, такие как сравнительно большой интервал встроенных сообщений keep-alive, которого в сочетании с закрытием соединений из-за отказов при повторной передаче может быть достаточно для блокировки использования протокольных сообщений keep-alive, описанных в параграфе 6.1. Кроме того, протокол обеспечивает гарантии, избавляющие от необходимости применять алгоритм Trickle на таких unicast-соединениях.

Основным недостатком использования TCP по сравнению с UDP в профилях на основе DNCP является утрата контроля над временем приёма TLV, хотя дейтаграммы UDP без гарантий доставки также имеют задержку. TLV в надёжном потоковом транспорте могут существенно задерживаться из-за повторов передачи. Это не вызывает проблем, если в TLV протокола на основе DNCP не хранится зависящих от времени сведений. В таких протоколах TCP является разумным выбором для индивидуального транспорта, если он доступен.

B.2. Необязательный групповой транспорт

Групповая передача требуется для динамического обнаружения партнёров или запуска индивидуального обмена, для этого в спецификации определён единственный вариант — транспорт дейтаграмм без гарантий доставки (обычно UDP), хотя протоколы на основе DNCP могут сами определять другой механизм доставки или обнаружения партнёров (например, на основе Multicast DNS — mDNS или DNS).

Для групповой передачи следует применять общеизвестный адрес (например, IPv6) для нужной области действия. В большинстве случаев подходят области действия link-local (локальный канал) или site-local (локальный сайт).

B.3. Необязательная защита транспорта

С точки зрения предоставляемой защиты протоколы DTLS и TLS эквивалентны и имеют одинаковое число состояний на устройствах. TLS работает на основе потокового протокола, но и при использовании DTLS также нужно достаточно длительное хэширование на уровне DTLS для предотвращения дорогостоящего повтора проверки подлинности и полномочий в случае смены состояния в сети DNCP или передачи keep-alive (если сообщения используются).

Реализации TLS (на момент написания документа) представляются более зрелыми и доступными (в открытом коде), чем DTLS. Это может быть связано с долгой историей использования HTTPS.

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

Приложение C. Пример профиля

Здесь рассматривается придуманный специально для этого документа профиль DNCP SHSP, предназначенный для домашней автоматизации. Сам протокол применяется для создания хранилища значений ключей, публикуемых каждым узлом и доступных всем другим узлам для распределенного мониторинга и управления домашней инфраструктурой. Протокол определяет 1 дополнительный тип TLV — key=value с одним назначением для публикации.

  • Индивидуальный транспорт. IPv6 TCP на порту EXAMPLE-P1, поскольку в данных key=value используются лишь абсолютные метки времени и решение предназначено в основном для узлов Linux, которые поддерживают оба протокола. Соединения за пределами локального канала не поддерживаются, а не относящиеся к локальному каналу адреса игнорируются для предотвращения раскрытия протокола вовне.

  • Групповой транспорт. IPv6 UDP на порту EXAMPLE-P2 для группового адреса ff02:EXAMPLE на локальном канале. Предполагается, что хотя бы один домашний узел на канал обеспечит обнаружение узлов без привязки к другой инфраструктуре.

  • Защиты нет. Профиль следует применять лишь на доверенных каналах (беспроводные WPA2-x, физически защищённые кабели).

  • Дополнительных TLV для игнорирования нет. Защита DNCP не задана и новые TLV сверх данных узла не определены.

  • Размер идентификатора узла (DNCP_NODE_IDENTIFIER_LENGTH) — 32 бита (генерируются случайно).

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

  • Параметры Trickle — Imin = 200 мсек, Imax = 7, k = 1. Это означает хотя бы один групповой пакет на канал каждые 25 секунд в стабильном состоянии (0,2 * 27).

  • Хэш-функция H(x) и размер. SHA-256 с использованием 128 битов. Функция достаточно быстрая, а 128 битов должно быть достаточно для предотвращения конфликтов (скорей всего, достаточно будет 64 битов).

  • Встроенных keep-alive (параграф 6.1) нет. Применяются TCP keep-alive. На практике TCP keep-alive встречается редко, поскольку изменение состояния сети вызывает передачу пакетов по индивидуальным соединениям, а отказы при достаточно большом числе повторов обусловлены отбрасыванием задолго до истечения интервала keep-alive.

  • Нет поддержки оптимизации для групповых каналов с высокой плотностью (параграф 6.2). SHSP — простой протокол для нескольких узлов (во всей сети, а не на одном канале), поэтому такая поддержка не нужна.

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

Спасибо Ole Troan, Pierre Pfister, Mark Baugher, Mark Townsley, Juliusz Chroboczek, Jiazi Yi, Mikael Abrahamsson, Brian Carpenter, Thomas Clausen, DENG Hui, Margaret Cullen за вклад в подготовку документа.

Спасибо Kaiwen Jin и Xavier Bonnetain за их исследования, связанные с документом.

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

Markus Stenberg
Independent
Helsinki 00930
Finland
Email: markus.stenberg@iki.fi
 
Steven Barth
Independent
Halle 06114
Germany
Email: cyrus@openwrt.org

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

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

nmalykh@protokols.ru

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

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

3Type-Length-Value — тип-размер-значение.

Рубрика: RFC | Оставить комментарий

RFC 7752 North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP

Internet Engineering Task Force (IETF)                   H. Gredler, Ed.
Request for Comments: 7752                        Individual Contributor
Category: Standards Track                                      J. Medved
ISSN: 2070-1721                                               S. Previdi
                                                     Cisco Systems, Inc.
                                                               A. Farrel
                                                  Juniper Networks, Inc.
                                                                  S. Ray
                                                              March 2016

North-Bound Distribution of Link-State and Traffic Engineering (TE) Information Using BGP

Северное распространение сведений о состоянии каналов и организации трафика через BGP

PDF

Аннотация

В ряде сред вызываются внешние по отношению к сети компоненты для выполнения расчётов на основе топологии сети и текущего состояния соединений в ней, включая сведения об организации трафика (Traffic Engineering или TE). Эта информация обычно распространяется внутри сети протоколами маршрутизации IGP.

Этот документ описывает механизм, с помощью которого сведения о состоянии каналов (link-state) и TE могут собираться из сетей и использоваться совместно с внешними компонентами с помощью протокола маршрутизации BGP. Это достигается за счёт применения нового формата кодирования сведений о доступности сетей BGP (Network Layer Reachability Information или NLRI). Этот механизм подходит для физических и виртуальных каналов IGP и находится под управлением правил (политики).

Применения этого метода включают серверы оптимизации трафика на уровне приложений (Application-Layer Traffic Optimization или ALTO) и элементы расчёта путей (Path Computation Element или PCE).

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

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

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

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

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

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

Содержимое базы данных о состояниях каналов (Link-State Database или LSDB) или базы данные организации трафика протокола IGP (Traffic Engineering Database или TED) описывает лишь каналы и узлы в области IGP. Некоторым приложениям, таким как сквозная организация трафика (Traffic Engineering или TE), была бы полезна видимость за пределы области или автономной системы (Autonomous System или AS) для принятия более эффективных решений.

В IETF задан элемент расчёта пути (Path Computation Element или PCE) [RFC4655] в качестве механизма для расчёта сквозных путей TE, проходящих через области видимости множества TED, требующих интенсивного использования CPU или скоординированных расчётов. Определён также сервер ALTO [RFC5693] в качестве объекта, генерирующего абстрактную топологию сети и предоставляющего её сетевым приложениям. PCE и серверу ALTO нужно собирать сведения о топологии и возможностях сети для выполнения своих функций.

Этот документ описывает механизм, с помощью которого можно собрать из сетей сведения о состоянии каналов и TE и обобщить их с внешними компонентами по протоколу маршрутизации BGP [RFC4271]. Это достигается с помощью нового формата кодирования BGP NLRI (Network Layer Reachability Information — сведения о доступности на сетевом уровне). Механизм применим как для физических, так и для виртуальных каналов и может управляться по правилам.

Маршрутизатор поддерживает 1 или несколько баз данных для хранения сведений о состоянии каналов для узлов и каналов в любой заданной области. Атрибуты каналов в этих базах включают локальный и удалённый адрес IP, идентификаторы локального и удалённого интерфейса, метрику канала и TE, пропускную способность канала, резервируемую пропускную способность, состояния резервирования по классам обслуживания (Class-of-Service или CoS), вытеснение и группы общего риска (Shared Risk Link Group или SRLG). Процесс BGP в маршрутизаторе может извлекать топологические сведения из этих LSDB и распространять их клиентам напрямую или через партнера BGP (обычно выделенный Route Reflector), используя заданное в этом документе кодирование.

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

                    +-----------+
                    |Потребитель|
                    +-----------+
                          ^
                          |
                    +-----------+               +-----------+
                    | Узел BGP  |               |Потребитель|
                    +-----------+               +-----------+
                      ^   ^   ^                       ^
                      |   |   |                       |
      +---------------+   |   +-------------------+   |
      |                   |                       |   |
+-----------+       +-----------+             +-----------+
| Узел BGP  |       | Узел BGP  |    . . .    | Узел BGP  |
+-----------+       +-----------+             +-----------+
      ^                   ^                         ^
      |                   |                         |
     IGP                 IGP                       IGP

Рисунок 1. Набор сведений Link-State и TE.


Узел BGP может применять настраиваемые правила (политику) к распространяемой им информации. Таким образом, он может распространять реальную физическую топологию из LSDB или TED. Кроме того, он может создавать абстрактную топологию, где виртуальные агрегированные узлы соединены виртуальными путями. Агрегированный узел можно создать, например, из нескольких маршрутизаторов в точке присутствия (Point of Presence или POP). Абстрактная топология может включать физические и виртуальные узлы и каналы. Кроме того, узел BGP может применять правила для определения момент обновления сведений у потребителя, чтобы сократить объем информации, передаваемой из сети потребителям. Механизмы агрегирования и виртуализации топологии выходят за рамки документа.

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

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

2. Мотивация и применимость

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

2.1. MPLS-TE с PCE

Как описано в [RFC4655], PCE можно применять для расчёта путей can MPLS-TE внутри «домена» (например, области IGP) или через несколько доменов (AS с несколькими областями или множество AS).

  • Внутри одной области PCE предлагает расширенные возможности вычислений, которых может не быть у отдельных маршрутизаторов, изощрённые правила и алгоритмы, координацию всех расчётов внутри области.

  • При расчёте маршрутизатором пути MPLS-TE через области IGP его TED может не видеть всю топологию. Это означает, что маршрутизатор не может определить сквозной пути и даже выбрать выходной маршрутизатор (Area Border Router или ABR) для оптимального пути. Это проблема больших сетей, которым нужно разделить своё ядро на отдельные области, сохраняя преимущества MPLS-TE.

В прежних решениях применялся расчёт путей по доменам [RFC5152]. Исходный маршрутизатор может рассчитать путь лишь для первой области, поскольку он полностью видить только её топологию. В таком расчёте пути применяется метод loose-hop-expansion [RFC3209] и выбирается выходной ABR, а также другие ABR или граничные маршрутизаторы AS (AS Border Router или ASBR) с использованием рассчитаной IGP топологии кратчайшего пути для остального пути. Это может давать неоптимальные пути, усложнять расчёт дополнительного (резервного) пути и даже невозможности найти реально существующий путь TE.

         +----------+                            +--------+
         |  -----   |                            |  Узел  |
         | | TED |<-+--------------------------->|  BGP   |
         |  -----   |Механизм синхронизации TED: +--------+
         |    |     | BGP с Link-State NLRI     
         |    v     |
         |  -----   |
         | | PCE |  |
         |  -----   |
         +----------+
              ^
              | Запрос -
              | отклик
              v
Запрос   +----------+  Сигнальный  +----------+
услуги   |   Узел   |   протокол   | Смежный  |
-------->| Head-End |<------------>|   узел   |
         +----------+              +----------+

Рисунок 2. Внешний узел PCE, использующий синхронизацию TED.


PCE представляет собой расчетный сервер, который может видеть более одной области IGP или AS, а также может взаимодействовать с другими PCE для выполнения распределенных расчётов. PCE обычно нужен доступ к TED для обслуживаемых областей, но в [RFC4655] не указано, как это достигается. Во многих реализациях PCE является пассивным участником IGP, чтобы знать свежее состояние сети, но это может быть неоптимальным при высоком уровне нестабильности сети или при обслуживании PCE нескольких областей.

На рисунке 2 показано, как PCE получает сведения из TED с использованием описанного в документе механизма. Этот механизм позволяет собрать требуемые сведения TED из IGP внутри сети с фильтрацией в соответствии с настраиваемой политикой и распределить информацию нужным PCE.

2.2. Сетевой API сервера ALTO

Сервер ALTO [RFC5693] — это объект, который генерирует абстрактную топологию сети и предоставляет её сеетвым приложениям через web-интерфейс API. Примером таких приложения являются одноранговын (peer-to-peer или P2P) клиенты или трекеры, сети распространения содержимого (Content Distribution Network или CDN). Абстрактная топология сети представлена двумя отображениями — картой сети (Network Map), которая указывает назначение префиксов для идентификаторов разделов (Partition Identifier или PID), и картой стоимости (Cost Map), которая указывает стоимость пути между PID, указанными картой сети. Дополнительные сведения приведены в [RFC7285].

Абстрактные топологии ALTO могут создаваться автоматически по физической топологии базовой сети. Генерация обычно основана на политике и правилах, заданных оператором сети. Нужны префиксы и данные TE, префиксы требуются для создания ALTO Network Map, а данные TE (топология) — для создания ALTO Cost Map. Сведения о префиксах создаются и передаются в BGP, а данные TE — в IGP. Заданные в этом документе механизмы обеспечивают единый интерфейс, через который сервер ALTO может извлечь все нужные сведения о префиксах и топологии из базовой сети. Отметим, что сервер ALTO может применять иные механизмы для получения сетевых данных, например, организуя партнёрство с множеством узлов IGP и BGP.

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

+--------+
| Клиент |<--+
+--------+   |
             |  Протокол  +--------+     BGP с       +--------+
+--------+   |  ALTO      | Сервер | Link-State NLRI |  Узел  |
| Клиент |<--+------------|  ALTO  |<----------------|   BGP  |
+--------+   |            +--------+                 +--------+
             |            
+--------+   |
| Клиент |<--+
+--------+

Рисунок 3. Сервер ALTO, использующий сведения о топологии сети.


3. Передача сведений о состоянии каналов в BGP

Эта спецификация состоит из 2 частей: определения нового BGP NLRI для описания каналов, узлов и префиксов, составляющих сведения IGP о состояниях каналов, и нового атрибута пути BGP (BGP-LS), передающего свойства и атрибуты каналов, узлов и префиксов, такие как метрика каналов и префиксов, дополнительные Router-ID для узлов и т. п. Желательно зависимость атрибута от протокола-источника к минимуму и представлять любое содержимое независимым от IGP способом, чтобы приложениям, желающим узнать топологию link-state, не требовалась какая-либо специфика протокола OSPF или IS-IS.

3.1. Формат TLV

Информация в новых Link-State NLRI и атрибутах представляется триплетами тип, размер, значение (Type/Length/Value или TLV), формат показан на рисунке 4.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                        Value (переменный)                   //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 4. Формат TLV.


Поле Length указывает размер поля Value в октетах (TLV без поля значения будет указывать размер 0). TLV не дополняются до 4-октетной границы. Нераспознанные типы должны сохраняться и распространяться. Для сравнения NLRI с неизвестными TLV все TLV должны опорядочиваться по росту TLV Type. При наличии нескольких TLV одного типа они должны упорядочиваться в порядке роста значения TLV, трактуемого как необрабатываемая (opaque) шестнадцатеричная строка, по расположенным слева октетам, независимо от размера этой строки. Все TLV, не указанные как обязательные, считаются необязательными.

3.2. Link-State NLRI

Атрибуты MP_REACH_NLRI и MP_UNREACH_NLRI являются контейнерами BGP для переноса неинтерпретируемых сведений. Каждый Link-State NLRI описывает узел, канал или перфикс.

Все сведения о каналах, узлах и префиксах, не связанные с VPN, нужно кодировать с использованием AFI 16388 / SAFI 71. Сведения об узлах, каналах и префиксах VPN нужно кодировать с использованием AFI 16388 / SAFI 72.

Чтобы два узла BGP могли обмениваться Link-State NLRI, они должны использовать BGP Capabilities Advertisement для согласования подобающей обработки таких NLRI. Это делается в соответствии с [RFC4760] путём использования кода возможности 1 (multi-protocol BGP) с AFI 16388 / SAFI 71 для BGP-LS и AFI 16388 / SAFI 72 для BGP-LS-VPN.

Формат Link-State NLRI показан на рисунках 5 и 6.


 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            NLRI Type          |     Total NLRI Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
//                  Link-State NLRI (переменный)               //
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 5. Формат Link-State NLRI AFI 16388 / SAFI 71.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|            NLRI Type          |     Total NLRI Length         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+                       Route Distinguisher                     +
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
//                  Link-State NLRI (переменный)               //
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 6. Формат Link-State VPN NLRI AFI 16388 / SAFI 72.


Поле Total NLRI Length указывает общий размер (в октетах) остальной части NLRI без учёта себя и поля NLRI Type. Для приложений VPN учитывается также размер Route Distinguisher.

Таблица 1. Типы NLRI.

 

Тип

Тип NLRI

1

Node NLRI

2

Link NLRI

3

IPv4 Topology Prefix NLRI

4

IPv6 Topology Prefix NLRI

 

Определение и обсуждение Route Distinguisher приведено в [RFC4364].

Формат Node NLRI (NLRI Type = 1) показан на рисунке 7.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
|  Protocol-ID  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Identifier                          |
|                            (64 bits)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                Local Node Descriptors (переменный)          //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 7. Формат Node NLRI.


Формат Link NLRI (NLRI Type = 2) показан на рисунке 8.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
|  Protocol-ID  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Identifier                          |
|                            (64 бита)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//               Local Node Descriptors (переменный)           //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//               Remote Node Descriptors (переменный)          //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                  Link Descriptors (переменный)              //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 8. Формат Link NLRI.


Prefix NLRI для IPv4 и IPv6 (NLRI Type = 3 и Type = 4) используют одинаковый формат, показанный на рисунке 9.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+
|  Protocol-ID  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Identifier                          |
|                            (64 бита)                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//              Local Node Descriptors (переменный)            //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                Prefix Descriptors (переменный)              //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 9. Формат IPv4/IPv6 Topology Prefix NLRI.


Поле Protocol-ID может содержать одно из значений, приведённых в таблице 2.

Таблица 2. Идентификаторы протоколов.

 

Protocol-ID

Протокол-источник сведений для NLRI

1

IS-IS Level 1

2

IS-IS Level 2

3

OSPFv2

4

Прямое соединение

5

Статическая конфигурация

6

OSPFv3

 

Типы протоколов «прямое соединение» и «статическая конфигурация» следует применять, когда BGP-LS берет локальные сведения. Для информации, полученной от других протоколов, должен применяться соответствующий Protocol-ID. Если BGP-LS имеет прямой доступ к информации интерфейса и хочет анонсировать локальный канал, следует использовать Protocol-ID 4. Для моделирования виртуальных каналов, как описано в разделе 4, следует применять Protocol-ID 5.

Протоколы OSPF и IS-IS могут запускать несколько своих экземпляров на одном канале (см. [RFC6822] и [RFC6549]). Эти экземпляры называют пространствами маршрутизации (routing universes). 64-битовое поле Identifier служит для идентификации пространства, к которому относится NLRI. NLRI, представляющие объекты состояния канала (узлы, каналы, префиксы) из одного пространства маршрутизации, должны иметь одинаковые значения Identifier. NLRI с разными значениями Identifier должны относиться к разным пространствам маршрутизации. В таблице 3 показано значение Identifier, заданное этим документом как общеизвестное.

Таблица 3. Общеизвестный идентификатор экземпляра.

 

Идентификатор

Пространство маршрутизации

0

Принятая по умолчанию топология маршрутизации L3

 

Если данный протокол не поддерживает несколько пространств маршрутизации, следует установить Identifier 0. Однако реализация может сделать значение Identifier настраиваемым для данного протокола.

Каждый дескриптор узла (Node Descriptor) или канала (Link Descriptor) содержит 1 или несколько TLV, описанных ниже.

3.2.1. Дескрипторы узлов

Каждый канал привязан к паре Router-ID, используемых базовым IGP, — 48-битовое значение ISO System-ID для IS-IS и 32-битовое значение Router-ID для OSPFv2 и OSPFv3. IGP может использовать дополнительные Router-ID, в основном для организации трафика. Например, IS-IS может иметь 1 или несколько IPv4 и IPv6 TE Router-ID [RFC5305] [RFC6119]. Эти дополнительные Router-ID должны включаться в атрибут канала, описанный в параграфе 3.3.2.

Желательно, чтобы значения Router-ID внутри Node Descriptor были глобально уникальными. Однако могут быть пространства Router-ID (например, ISO) без глобального реестра или, что хуже, Router-ID могут быть выделены приватно в соответствии с RFC 1918 [RFC1918]. BGP-LS использует номер автономной системы (Autonomous System или AS) и BGP-LS Identifier (см. параграф 3.2.1.4) для устранения неоднозначности Router-ID (см. параграф 3.2.1.1).

3.2.1.1. Глобально уникальные идентификаторы узлов, каналов, префиксов

Одной из требующих решения проблем является возможность глобальной идентификации узлов IGP (глобальной здесь считается база данных BGP-LS, собранная всеми взаимодействующими узлами BGP-LS). Это можно выразить двумя требованиями:

  1. один узел недопустимо представлять двумя ключами (иначе он будет выглядеть двумя узлами);

  2. два разных узла недопустимо представлять одним ключом (иначе они будут выглядеть одним узлом).

«Доменом IGP» здесь считается набор узлов (следовательно, каналов и префиксов), в котором каждый узел имеет уникальное представление IGP с использованием комбинации Area-ID, Router-ID, Protocol-ID, Multi-Topology ID, Instance-ID. Проблема заключается в том, что BGP может получать сведения об узлах, каналах и префиксах от множества независимых «доменов IGP» и нужно различать их. Кроме того, нельзя считать, что в каждой AS имеется лишь один домен IGP. При изменениях IGP могут возникать одновременно два IGP.

В параграфе 3.2.1.4 описан набор sub-TLV, позволяющий гибко задать ключ для любой данной информации об узле/канале, чтобы гарантировать глобальную уникальность NLRI.

3.2.1.2. Дескрипторы локального узла

Local Node Descriptors TLV (Рисунок 10) содержит дескрипторы для узла, связанного с локальной стороной канала. Этот TLV обязателен для всех 3 типов NLRI (узел, канал, префикс) и имеет переменный размер. Поле значения содержит 1 или несколько Node Descriptor Sub-TLV, заданных в параграфе 3.2.1.4.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
//              Node Descriptor Sub-TLVs (переменный)          //
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 10. Формат TLV дескрипторов локального узла.


3.2.1.3. Дескрипторы удалённого узла

Remote Node Descriptors TLV (Рисунок 11) содержит дескрипторы для узла, связанного с удалённой стороной канала. Этот TLV обязателен для Link NLRI и имеет переменный размер. Поле значения содержит 1 или несколько Node Descriptor Sub-TLV, заданных в параграфе 3.2.1.4.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
//              Node Descriptor Sub-TLVs (переменный)          //
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 11. Формат TLV дескрипторов удалённого узла.


3.2.1.4. Sub-TLV дескриптора узла

Коды и размеры Node Descriptor Sub-TLV указаны в таблице 4.

Таблица 4. Sub-TLV дескриптора узла.

 

Код Sub-TLV

Описание

Размер

512

Автономная система

4

513

Идентификатор BGP-LS

4

514

OSPF Area-ID

4

515

IGP Router-ID

Переменный

 

Ниже указаны значения sub-TLV в Node Descriptor TLV.

Autonomous System

Неинтерпретируемое значение (32-битовый номер AS).

BGP-LS Identifier

Неинтерпретируемый 32-битовый идентификатор, совместно с номером автономной системы (Autonomous System Number или ASN) однозначно указывающий домен BGP-LS. Сочетание ASN и BGP-LS ID должно быть глобально уникальным. Все узлы BGP-LS в IGP flooding-set (набор узлов IGP, в котором выполняется лавинная рассылка LSP/LSA) должны использовать одну пару ASN и BGP-LS ID. Если домен IGP содержит несколько flooding-set, всем узлам BGP-LS в домене IGP следует использовать одну пару ASN и BGP-LS ID.

Area-ID

32-битовый идентификатор области, к которой относится NLRI. Этот идентификатор позволяет различать NLRI от одного маршрутизатора.

IGP Router-ID

Неинтерпретируемое значение (обязательный TLV). Для узла (не псевдо) IS-IS это 6-октетный ISO Node-ID (ISO system-ID), для псевдоузла IS-IS, соответствующего ЛВС, это 6-октетный ISO Node-ID назначенной промежуточной системы (Designated Intermediate System или DIS), за которым следует ненулевой 1-октетный идентификатор PSN (итого 7 октетов). Для узла (не псевдо) OSPFv2 или OSPFv3 это 4-октетный Router-ID, для псевдоузла OSPFv2, представляющего ЛВС, это 4 октета Router-ID назначенного маршрутизатора (Designated Router или DR), за которыми следует 4 октета адреса IPv4 интерфейса DR в ЛВС (итого 8 октетов). Для псевдоузла OSPFv3 это 4 октета Router-ID назначенного маршрутизатора, за которыми следует 4 октета адреса IPv4 интерфейса DR в ЛВС (итого 8 октетов). Размер TLV в сочетании с идентификатором протокола позволяет декодеру определить тип узла.
В любом Node Descriptor может присутствовать не более 1 экземпляра каждого типа sub-TLV. Внутри sub-TLV должны упорядочиваться по росту значений типа sub-TLV. Это нужно для сравнения NLRI даже в случаях, когда реализация встречает неизвестный sub-TLV. Используя стабильную сортировку, реализация может выполнить двоичное сравнение NLRI, что позволяет поэтапно внедрять новые важные sub-TLV.
3.2.1.5. Multi-Topology ID

Multi-Topology ID (MT-ID) TLV содержит 1 или несколько IS-IS или OSPF Multi-Topology ID для канала, узла или префикса. Семантика IS-IS MT-ID определена в параграфе 7.2 [RFC5120], семантика OSPF MT-ID в параграфе 3.7 [RFC4915]. В MT-ID TLV выведенных из OSPF старшие 9 битов должны иметь значение 0. Биты R являются резервными и их следует устанавливать в 0 при создании и игнорировать при получении. Формат MT-ID TLV показан на рисунке 12.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |          Length=2*n           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|R R R R|  Multi-Topology ID 1  |             ....             //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//             ....             |R R R R|  Multi-Topology ID n  |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 12. Формат Multi-Topology ID TLV.


Type = 263, Length = 2*n, где n — число MT-ID в TLV.

MT-ID TLV может присутствовать в Link Descriptor, Prefix Descriptor или атрибуте BGP-LS в Node NLRI. В дескрипторах каналов и префиксов разрешён лишь 1 MT-ID TLV с MT-ID топологии, в которой достижим канал или префикс. Если нужно анонсировать несколько топологий для данного Link Descriptor или Prefix Descriptor, нужно создавать NLRI для каждой, помещая туда уникальный MT-ID. В атрибуте BGP-LS для Node NLRI разрешён 1 MT-ID TLV с массивом MT-ID для всех топологий, в которых узел доступен.

3.2.2. Дескрипторы каналов

Поле Link Descriptor содержит набор TLV, формат которых описан в параграфе 3.1. Link Descriptor TLV однозначно указывают канал среди множества параллельных соединений между парой маршрутизаторов. Канал, описываемый Link Descriptor TLV, фактически является «полуканалом» — однонаправленным представлением логического канала. Для полного описания одного логического канала два маршрутизатора анонсируют полуканалы, т. е. для соединения «точка-точка» анонсируется двумя Link NLRI.

Формат и семантика полей Value в большинстве Link Descriptor TLV соответствуют формату и семантике полей Value в IS-IS Extended IS Reachability sub-TLV, определённых в [RFC5305], [RFC5307] и [RFC6119]. Хотя кодирование Link Descriptor TLV изначально определено для IS-IS, эти TLV могут содержать данные от протокола IS-IS или OSPF. В таблице 5 указаны TLV, которые могут указываться как Link Descriptor в Link NLRI.

Таблица 5. TLV дескрипторов каналов.

 

Код TLV

Описание

IS-IS TLV/Sub-TLV

Документ (RFC/параграф)

258

Идентификатор локального или удалённого канала

22/4

[RFC5307]/1.1

259

Адрес IPv4 для интерфейса

22/6

[RFC5305]/3.2

260

Адрес IPv4 для соседа

22/8

[RFC5305]/3.3

261

Адрес IPv6 для интерфейса

22/12

[RFC6119]/4.2

262

Адрес IPv6 для соседа

22/13

[RFC6119]/4.3

263

Идентификатор Multi-Topology

параграф 3.2.1.5

 

Сведения о канале в LSA/LSP от локального узла канала определяет набор TLV в Link Descriptor для канала.

При наличии адреса (IPv4 или IPv6) интерфейса или соседа в Link Descriptor включаются TLV адресов IP, а не Identifier TLV (локальный или удалённый), которые могут помещаться в атрибут канала. При отсутствии адреса интерфейса или соседа и наличии идентификаторов (локальных или удалённых) в Link Descriptor включается Identifier TLV (локальный или удалённый). Multi-Topology Identifier TLV помещается в Link Descriptor, если эти сведения имеются.

3.2.3. Дескрипторы префиксов

Поле Prefix Descriptor содержит набор TLV, однозначно указывающих префиксы IPv4 или IPv6, происходящие от узла. Набор TLV, пригодных в качестве Prefix Descriptor в IPv4/IPv6 Prefix NLRI указан в таблице 6.

Таблица 6. TLV дескрипторов префиксов.

 

Код TLV

Описание

Размер

Документ (RFC/параграф)

263

Идентификатор Multi-Topology

переменный

Параграф 3.2.1.5

264

OSPF Route Type

1

Параграф 3.2.3.1

265

IP Reachability Information

переменный

Параграф 3.2.3.2

 

3.2.3.1. Тип маршрута OSPF

Необязательные OSPF Route Type TLV могут включаться в Prefix NLRI для указания типа маршрута OSPF к префиксу в доменах OSPF с несколькими типами маршрутов. Формат OSPF Route Type TLV показан на рисунке 13.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Route Type   |
+-+-+-+-+-+-+-+-+

Рисунок 13. Формат OSPF Route Type TLV.


Поля Type и Length описаны в таблице 6. Значение поля Route Type определены протоколом OSPF и показаны ниже.

  • Intra-Area (0x1)
  • Inter-Area (0x2)
  • External 1 (0x3)
  • External 2 (0x4)
  • NSSA 1 (0x5)
  • NSSA 2 (0x6)
3.2.3.2. Сведения о доступности IP

Обязательный IP Reachability Information TLV содержит префикс адреса IP (IPv4 или IPv6), исходно анонсированный в топологии IGP. Он «склеивает» NLRI конкретной службы BGP по BGP next hop с данным узлом в LSDB. Маршрутизаторам следует анонсировать IP Prefix NLRI для каждого из своих BGP next hop. Формат IP Reachability Information TLV показан на рисунке 14.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Prefix Length | IP Prefix (переменный)                       //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 14. Формат IP Reachability Information TLV.


Поля Type и Length описаны в таблице 6. Следующие два поля содержат сведения о доступности семейства адресов. Поле Prefix Length указывает размер префикса в битах, поле IP Prefix содержит старшие октеты префикса, т. е. 1 октет при Prefix Length от 1 до 8, 2 октета при размере от 9 до 16, 3 при размере от 17 до 24, 4 при размере от 25 до 32 и т. д.

3.3. Атрибут BGP-LS

BGP-LS является необязательным, непереходным атрибутом BGP, служащим для передачи параметров и атрибутов узла, канала или префикса. Он содержит набор TLV, описанных ниже. Этот атрибут следует включать лишь в Link-State NLRI, в остальных случаях атрибут должен игнорироваться.

3.3.1. TLV атрибутов узла

TLV атрибутов узла могут помещаться в атрибут BGP-LS с Node NLRI. Node Attribute TLV приведены в таблице 7.

Таблица 7. TLV атрибутов узла.

 

Код TLV

Описание

Размер

Документ (RFC/параграф)

263

Идентификатор Multi-Topology

переменный

параграф 3.2.1.5

1024

Биты флагов узла

1

параграф 3.3.1.1

1025

Неинтерпретируемый атрибут узла

переменный

параграф 3.3.1.5

1026

Имя узла

переменный

параграф 3.3.1.3

1027

Идентификатор области IS-IS

переменный

параграф 3.3.1.2

1028

IPv4 Router-ID локального узла

4

[RFC5305]/4.3

1029

IPv6 Router-ID удалённого узла

16

[RFC6119]/4.1

 

3.3.1.1. Node Flag Bits TLV

Node Flag Bits TLV содержит битовую маску (Рисунок 15), описывающую атрибуты узла (Таблица 8).

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|O|T|E|B|R|V| Rsvd|
+-+-+-+-+-+-+-+-+-+

Рисунок 15. Формат Node Flag Bits TLV.


Таблица 8. Флаги узла.

 

Бит

Описание

O

Перегрузка (Overload)

T

Присоединение (Attached)

E

Внешний (External)

B

Граничный (ABR)

R

Маршрутизатор (Router)

V

V6

Rsvd

Резерв на будущее

 

3.3.1.2. IS-IS Area Identifier TLV

Узел IS-IS может входить в одну или несколько областей IS-IS. Каждый из адресов этих областей передаётся в IS-IS Area Identifier TLV. При наличии нескольких обласетй для их кодирования применяется несколько TLV. IS-IS Area Identifier TLV может присутствовать в атрибуте BGP-LS лишь при анонсировании в Link-State Node NLRI.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                 Area Identifier (переменный)                //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 16. Формат IS-IS Area Identifier TLV.


3.3.1.3. Node Name TLV

Структура и кодирование необязательных Node Name TLV заимствованы из [RFC5301]. Поле Value указывает символическое имя маршрутизатора, которым может быть полное доменное имя (Fully Qualified Domain Name или FQDN) или его часть (например, hostname), а также заданная оператором строка. Настоятельно рекомендуется применять FQDN или его часть. Максимальный размер Node Name TLV составляет 255 октетов.

Поле Value содержит 7-битовые символы ASCII. Если пользовательский интерфейс позволяет настраивать или отображать символы Unicode, этот интерфейс отвечает за применение алгоритма ToASCII и/или ToUnicode, описанного в [RFC5890], для обеспечения корректного формата передачи.

Хотя в [RFC5301] описано расширение для IS-IS, использование Node Name TLV возможно для всех протоколов. Вывод и внедрение имён узлов (например, узлов OSPF) маршрутизаторами выходит за рамки этого документа.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                     Node Name (переменный)                  //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 17. Формат имени узла.


3.3.1.4. TLV локальных Router-ID IPv4 и IPv6

Локальные IPv4/IPv6 Router-ID TLV служат для описания дополнительных Router-ID, которые могут применяться в IGP, например для TE или в процессе перехода, таком как сопоставление Node-ID разных протоколов. При наличии нескольких Router-ID данного типа каждый представляется своим TLV.

3.3.1.5. Opaque Node Attribute TLV
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//               Opaque node attributes (переменный)           //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 18. Формат Opaque Node Attribute.


Opaque Node Attribute TLV служит для «прозрачной» передачи необязательных Node Attribute TLV, анонсируемых маршрутизатором. Порождающему маршрутизатору нужно применять этот TLV для кодирования сведений, относящихся к протоколу, анонсируемому в поле Protocol-ID заголовка NLRI, или новым расширениям протокола, указанного в поле Protocol-ID заголовка NLRI, для которых нет нейтрального к протоколу представления в BGP Link-State NLRI. Основным применением Opaque Node Attribute TLV является преодоление задержки между, например, определением атрибута IGP link-state и публикацией нейтральных к протоколу расширений BGP-LS. Маршрутизатор, например, может применять это расширение для анонсирования естественных для протокола Node Attribute TLV, таких как OSPF Router Informational Capabilities TLV из [RFC7770] или IGP TE Node Capability Descriptor TLV из [RFC5073].

3.3.2. TLV атрибутов канала

Link Attribute TLV могут кодироваться в атрибуте BGP-LS для Link NLRI и представляют собой TLV в формате, описанном в параграфе 3.1. Формат и семантика полей Value в Link Attribute TLV соответствуют формату и семантике Value в IS-IS Extended IS Reachability sub-TLV, заданных в [RFC5305] и [RFC5307]. Другие Link Attribute TLV заданы в этом документе. Хотя кодирование Link Attribute TLV исходно определено для IS-IS, эти TLV могут передавать данные от IS-IS или OSPF. Link Attribute TLV, действительные в атрибуте BGP-LS с Link NLRI, показаны в таблице 9.

Таблица 9. TLV атрибутов канала.

 

Код TLV

Описание

IS-IS TLV/Sub-TLV

RFC/параграф

1028

IPv4 Router-ID локального узла

134/-

[RFC5305]/4.3

1029

IPv6 Router-ID локального узла

140/-

[RFC6119]/4.1

1030

IPv4 Router-ID удалённого узла

134/-

[RFC5305]/4.3

1031

IPv6 Router-ID удалённого узла

140/-

[RFC6119]/4.1

1088

Административная группа (цвет)

22/3

[RFC5305]/3.1

1089

Максимальная пропускная способность канала

22/9

[RFC5305]/3.4

1090

Максимальная резервируемая пропускная способность канала

22/10

[RFC5305]/3.5

1091

Нерезервируемая пропускная способность канала

22/11

[RFC5305]/3.6

1092

Принятая по умолчанию метрика TE

22/18

параграф 3.3.2.3

1093

Тип защиты канала

22/20

[RFC5307]/1.2

1094

Маска протокола MPLS

параграф 3.3.2.2

1095

Метрика IGP

параграф 3.3.2.4

1096

Группа общего риска (SRLG)

параграф 3.3.2.5

1097

Неинтерпретируемый (opaque) атрибут канала

параграф 3.3.2.6

1098

Имя канала

параграф 3.3.2.7

 

3.3.2.1. Router-ID TLV IPv4 и IPv6

IPv4 и IPv6 Router-ID TLV (локальные и удалённые) служат для описания дополнительных Router-ID, которые IGP может применять, например, для TE. Все дополнительные Router-ID локального и удалённого узла должны включаться в атрибуты канала для каждого Link NLRI. При наличии нескольких Router-ID данного типа они кодируются в нескольких TLV.

3.3.2.2. MPLS Protocol Mask TLV

MPLS Protocol Mask TLV содержит битовую маску для разрешённых сигнальных протоколов MPLS. Поле Length имеет значение 1, поле Value является массивом из 8 флагов, представляющих возможности протокола MPLS. Генерировать MPLS Protocol Mask TLV следует лишь при понимании источником наличия локального канала, например, Protocol-ID 4 или 5 (Таблица 2). MPLS Protocol Mask TLV недопустимо включать в NLRI для других Protocol-ID из таблицы 2.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length = 1        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|L|R|  Reserved |
+-+-+-+-+-+-+-+-+

Рисунок 19. Формат MPLS Protocol Mask TLV.


Таблица 10. Коды MPLS Protocol Mask TLV.

 

Бит

Описание

Описание

L

Протокол распространения меток (Label Distribution Protocol или LDP)

[RFC5036]

R

Расширение RSVP для туннелей LSP (RSVP-TE)

[RFC3209]

Reserved

Резерв на будущее

 

3.3.2.3. TE Default Metric TLV

TE Default Metric TLV передаёт метрику TE для данного канала. TLV имеет размер 4 октета. Если протокол-источник использует метрику размером меньше 32, старшие биты этого поля должны заполняться 0.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length = 4        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                    TE Default Link Metric                     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 20. Формат TE Default Metric TLV.


3.3.2.4. IGP Metric TLV

IGP Metric TLV передаёт метрику для данного канала и имеет переменный размер, зависящий от размера метрики в базовом протоколе. Сокращенная метрика IS-IS занимает 1 октет (2 старших бита игнорируются), метрика OSPF — 2, широкая метрика IS-IS — 3 октета.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//      IGP Link Metric (переменный)           //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 21. Формат IGP Metric TLV.


3.3.2.5. Shared Risk Link Group TLV

Shared Risk Link Group (SRLG) TLV передаёт сведения группы общего риска (см. параграф 2.3 Shared Risk Link Group Information в [RFC4202]) и содержит структуру, состоящую из (переменного) списка значений SRLG, где каждый элемент занимает 4 октета, как показано на рисунке 22. Размер TLV равен 4 * (число значений SRLG).

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Shared Risk Link Group Value                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                         ............                        //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                  Shared Risk Link Group Value                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 22. Формат Shared Risk Link Group TLV.


SRLG TLV для OSPF-TE определены в [RFC4203]. В IS-IS сведения SRLG передаются в двух разных TLV — IPv4 (SRLG) TLV (тип 138) задан в [RFC5307], IPv6 SRLG TLV (тип 139) — в [RFC6119]. В Link-State NLRI сведения IPv4 и IPv6 SRLG передаются в одном TLV.

3.3.2.6. Opaque Link Attribute TLV

Opaque Link Attribute TLV служит для «прозрачной» передачи необязательных Link Attribute TLV, анонсируемых маршрутизатором. Порождающему маршрутизатору нужно применять этот TLV для кодирования сведений, относящихся к новым расширениям протокола, указанного в поле Protocol-ID заголовка NLRI, для которых нет нейтрального к протоколу представления в BGP Link-State NLRI. Основным применением Opaque Link Attribute TLV является преодоление задержки между, например, определением нового атрибута IGP link-state и публикацией нейтральных к протоколу расширений BGP-LS.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                Opaque link attributes (переменный)          //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 23. Формат Opaque Link Attribute TLV.


3.3.2.7. Link Name TLV

Link Name TLV необязательны. Поле Value указывает символическое имя маршрутизатора, которым может быть полное доменное имя (Fully Qualified Domain Name или FQDN) или его часть (например, hostname), а также заданная оператором строка. Настоятельно рекомендуется применять FQDN или его часть. Максимальный размер Link Name TLV составляет 255 октетов.

Поле Value содержит 7-битовые символы ASCII. Если пользовательский интерфейс позволяет настраивать или отображать символы Unicode, этот интерфейс отвечает за применение алгоритма ToASCII и/или ToUnicode, описанного в [RFC5890], для обеспечения корректного формата передачи.

Вывод и внедрение имён узлов (например, узлов OSPF) маршрутизаторами выходит за рамки этого документа.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                     Link Name (переменный)                  //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 24. Формат Link Name TLV.


3.3.3. TLV для атрибутов префикса

Префиксы извлекаются из топологии IGP (IS-IS или OSPF) с набором атрибутов IGP (метрика, теги маршрутов и т. п.), которые должны отражаться в атрибуте BGP-LS для NLRI префикса. В этом параграфе описаны атрибуты, относящиеся к префиксам IPv4 и IPv6. Prefix Attribute TLV следует применять лишь при анонсировании NLRI типа 3 и 4. Набор Prefix Attribute TLV представлен в таблице 11.

Таблица 11. TLV атрибутов префикса.

 

Код TLV

Описание

Размер

RFC/параграф

1152

Флаги IGP

1

параграф 3.3.3.1

1153

Тег маршрута IGP

4*n

[RFC5130]

1154

Расширенный маршрут IGP

8*n

[RFC5130]

1155

Метрика префикса

4

[RFC5305]

1156

Адрес пересылки OSPF

4

[RFC2328]

1157

Неинтерпретируемый (opaque) атрибут префикса

переменный

параграф 3.3.3.6

 

3.3.3.1. IGP Flags TLV

IGP Flags TLV содержит флаги IS-IS или OSPF и биты, исходно установленные для префикса. Формат IGP Flags TLV показан на рисунке 25.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|D|N|L|P| Resvd.|
+-+-+-+-+-+-+-+-+

Рисунок 25. Формат IGP Flag TLV.


Поле Value содержит биты, показанные в таблице 12.

Таблица 12. Определения флагов IGP.

 

Бит

Описание

Документ

D

IS-IS Up/Down

[RFC5305]

N

OSPF «no unicast»

[RFC5340]

L

OSPF «local address»

[RFC5340]

P

OSPF «propagate NSSA»

[RFC5340]

Reserved

Резерв на будущее

 

3.3.3.2. IGP Route Tag TLV

IGP Route Tag TLV передаёт исходные теги IGP (IS-IS [RFC5130] или OSPF) для префикса (Рисунок 26).

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length = 4        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                    Route Tags (1 или несколько)             //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 26. Формат IGP Route Tag TLV.


Поле Value содержит 1 или несколько тегов, полученных из топологии IGP.

3.3.3.3. Extended IGP Route Tag TLV

Extended IGP Route Tag TLV передаёт расширенные теги маршрутов IS-IS [RFC5130] для префиксов (Рисунок 27).

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                Extended Route Tag (1 или несколько)         //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 27. Формат Extended IGP Route Tag TLV.


Поле Length имеет значение кратное 8. Поле Extended Route Tag содержит 1 или несколько тегов, полученных из топологии IGP.

3.3.3.4. Prefix Metric TLV

Prefix Metric TLV является необязательным и может включаться лишь однократно, а при наличии передаёт метрику префикса, известную топологии IGP, как описано в разделе 4 [RFC5305] (представляет стоимость доступности префикса). В случае отсутствия префикс анонсируется без оценки доступности.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length = 4        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                            Metric                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 28. Формат Prefix Metric TLV.


3.3.3.5. OSPF Forwarding Address TLV

OSPF Forwarding Address TLV [RFC2328] [RFC5340] передаёт адрес пересылки OSPF (IPv4 или IPv6), известный из исходного анонса OSPF.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//                Forwarding Address (переменный)              //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 29. Формат OSPF Forwarding Address TLV.


Поле Length имеет значение 4 для адреса IPv4 и 16 для IPv6.

3.3.3.6. Opaque Prefix Attribute TLV

Opaque Prefix Attribute TLV служит для «прозрачной» передачи необязательных Prefix Attribute TLV, анонсируемых маршрутизатором. Порождающему маршрутизатору нужно применять этот TLV для кодирования сведений, относящихся к протоколу, анонсируемому в поле Protocol-ID заголовка NLRI, или новым расширениям протокола, указанного в поле Protocol-ID заголовка NLRI. Основным применением Opaque Prefix Attribute TLV является преодоление задержки между, например, определением атрибута IGP link-state и публикацией нейтральных к протоколу расширений BGP-LS. Формат TLV показан на рисунке 30.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|              Type             |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//              Opaque Prefix Attributes  (переменный)         //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Рисунок 30. Формат Opaque Prefix Attribute TLV.


Значения Type приведены в таблице 11, поле Length имеет переменное значение.

3.4. Информация BGP Next-Hop

Сведения BGP о состоянии каналов для сетей IPv4 и IPv6 могут передаваться в сессиях IPv4 BGP или IPv6 BGP. Ели применяется сессия IPv4 BGP, в качестве next hop в MP_REACH_NLRI следует указывать адрес IPv4, для сессии IPv6 BGP — следует указывать адрес IPv6. Обычно в качестве следующего узла (next hop) указывается адрес локальной конечной точки сессии BGP. Адрес next-hop должен кодироваться в соответствии с [RFC4760]. Поле Length в адресе next-hop будет указывать семейство адресов — значение 4 для IPv4, 16 для глобальных адресов IPv6 и 32 для глобальных адресов IPv6, за которыми следует адрес IPv6 link-local. Адрес IPv6 link-local следует использовать в соответствии с [RFC2545]. Для VPN SAFI3 в соответствии с обычаями перед адресом следующего узла помещается 8-байтовое значение Route Distinguisher.

Атрибут BGP Next Hop применяется каждым узлом BGP-LS для проверки получаемых NLRI. Если идентичные NLRI приходят из нескольких источников, атрибут BGP Next Hop применяется для разрыва привязок (tie break) в соответствии со стандартным процессом выбора пути BGP. Эта спецификация не задаёт каких-либо правил перезаписи атрибута BGP Next Hop.

3.5. Каналы между AS

Основным источником сведений TE являются протоколы IGP, которые не применяются на каналах между AS. Иногда IGP может иметь данные о каналах между AS [RFC5392] [RFC5316], а в иных случаях реализации следует обеспечивать способы внедрения каналов между AS в BGP-LS. Механизмы для этого выходят за рамки документа.

3.6. Пример привязки Router-ID — псевдоузел ISO

Кодирование широковещательных ЛВС в IS-IS является хорошим примером представления Router-ID. Рассмотрим рисунок 31, где показана широковещательная ЛВС между парой маршрутизаторов. Реальные маршрутизаторы (не псевдоузлы) имеют IPv4 Router-ID и IS-IS Node-ID, а у псевдоузла нет IPv4 Router-ID. Node1 является DIS для ЛВС. Создаются два односторонних канала — (Node1, Pseudonode1) и (Pseudonode1, Node2).

Link NLRI для (Node1, Pseudonode1) включает IGP Router-ID TLV с 6-октетным Node Descriptor локального узла и ISO-ID узла Node1 (1920.0000.2001). IGP Router-ID TLV включает 7-октетный Node Descriptor удалённого узла и ISO-ID узла Pseudonode1 (1920.0000.2001.02). Атрибут BGP-LS для этого канала содержит локальный IPv4 Router-ID TLV (TLV типа 1028) со значением 192.0.2.1 для IPv4 Router-ID узла Node1.

Link NLRI для (Pseudonode1, Node2) включает IGP Router-ID TLV с 7-октетным Node Descriptor локального узла и ISO-ID узла Pseudonode1 (1920.0000.2001.02). IGP Router-ID TLV включает 6-октетный Node Descriptor удалённого узла и ISO-ID узла Node2 (1920.0000.2002). Атрибут BGP-LS для этого канала содержит удалённый IPv4 Router-ID TLV (TLV типа 1030) со значением 192.0.2.2 для IPv4 Router-ID узла Node2.

+-----------------+    +-----------------+    +-----------------+
|      Node1      |    |   Pseudonode1   |    |      Node2      |
|1920.0000.2001.00|--->|1920.0000.2001.02|--->|1920.0000.2002.00|
|     192.0.2.1   |    |                 |    |     192.0.2.2   |
+-----------------+    +-----------------+    +-----------------+

Рисунок 31. Псевдоузел IS-IS.


3.7. Пример привязки Router-ID — псевдоузел OSPF

Кодирование широковещательной ЛВС в OSPF является хорошим примером представления Router-ID и локальных Interface IP. Рассмотрим рисунок 32, где представлена широковещательная ЛВС между парой маршрутизаторов. Реальные маршрутизаторы (не псевдоузлы) имеют IPv4 Router-ID и Area Identifier, а псевдоузел — IPv4 Router-ID, адрес интерфейса IPv4 (для однозначности) и OSPF Area. Node1 является DR для ЛВС, поэтому его локальный адрес IP 10.1.1.1 служит Router-ID и Interface IP для ключей псевдоузла. Создаются два односторонних канала — (Node1, Pseudonode1) и (Pseudonode1, Node2).

Link NLRI для (Node1, Pseudonode1) кодируется, как показано ниже.

  • Node Descriptor локального узла

    TLV #515: IGP Router-ID: 11.11.11.11
    TLV #514: OSPF Area-ID: ID:0.0.0.0
  • Node Descriptor удалённого узла

    TLV #515: IGP Router-ID: 11.11.11.11:10.1.1.1
    TLV #514: OSPF Area-ID: ID:0.0.0.0

Link NLRI для (Pseudonode1, Node2) кодируется, как показано ниже.

  • Node Descriptor локального узла

    TLV #515: IGP Router-ID: 11.11.11.11:10.1.1.1
    TLV #514: OSPF Area-ID: ID:0.0.0.0
  • Node Descriptor удалённого узла

    TLV #515: IGP Router-ID: 33.33.33.34
    +-----------------+    +-----------------+    +-----------------+
    |      Node1      |    |   Pseudonode1   |    |      Node2      |
    |   11.11.11.11   |--->|   11.11.11.11   |--->|  33.33.33.34    |
    |                 |    |     10.1.1.1    |    |                 |
    |      Area 0     |    |      Area 0     |    |      Area 0     |
    +-----------------+    +-----------------+    +-----------------+

    Рисунок 32. Псевдоузел OSPF.

     

    TLV #514: OSPF Area-ID: ID:0.0.0.0

3.8. Пример привязки Router-ID — псевдоузел переход от OSPFv2 к IS-IS

Для аккуратного перехода от одного протокола IGP к другому нужна согласованная работа обоих протоколов в переходный период. Такое согласование требует идентификации данного физического канала в обоих IGP. IPv4 Router-ID обеспечивает «склейку», имеющуюся в дескрипторах узлов OSPF Link NLRI и атрабутах каналов IS-IS Link NLRI.

Рассмотрим канал «точка-точка» между двумя маршрутизаторами A и B, которые исходно поддерживали лишь OSPFv2, а затем на них был включён протокол IS-IS. Узел A имеет IPv4 Router-ID и ISO-ID, B — IPv4 Router-ID, IPv6 Router-ID и ISO-ID. Каждый протокол создаёт 1 Link NLRI для канала (A, B) и оба передаются в BGP-LS. OSPFv2 Link NLRI для канала кодируется с IPv4 Router-ID узлов A и B, а также с дескрипторами локального и удалённого узла. IS-IS Link NLRI для канала кодируется с ISO-ID узлов A и B, а также с дескрипторами локального и удалённого узла. Кроме того, атрибут BGP-LS в IS-IS Link NLRI включает TLV типа 1028 с IPv4 Router-ID узла A, TLV типа 1030 с IPv4 Router-ID узла B и TLV типа 1031 с IPv6 Router-ID узла B. В этом случае с помощью IPv4 Router-ID канал (A, B) могут идентифицировать оба протокола (IS-IS и OSPF.

4. Агрегирование каналов в путь

Распространение всех имеющихся в Internet каналов, конечно, возможно, однако это нежелательно с точки зрения масштабирования и приватности. Поэтому реализация может поддерживать агрегирование каналов в путь. Вместо анонсирования всех каналов домена маршрутизатор ASBR может анонсировать агрегатный канал (путь) между парой несмежных узлов. Такой агрегатный канал представляет объединённый набор свойств каналов между этими маршрутизаторами. Фактические методы расчёта свойств пути (пропускная способность, метрика и т. п.) выходят за рамки этого документа. Решение об анонсировании всех каналов или только агрегированных путей определяет политика оператора. Для лучшего понимания ниже рассмотрено несколько примеров.

4.1. Пример без агрегирования каналов

В примере на рисунке 33 операторы AS1 и AS2 хотят защитить свои каналы между AS {R1, R3}, {R2, R4} с помощью RSVP-FRR LSP. Если R1 хочет рассчитать LSP с защитой канала до R3, ему нужно «увидеть» дополнительный путь к R3, поэтому оператор AS2 раскрывает свою топологию. Все маршрутизаторы с поддержкой BGP-TE в AS1 «видят» всю топологию AS2 и могут рассчитать резервный путь. Отметим, что рассчитывающий путь маршрутизатор выбирает для использования прямой канал {R3, R4} или путь {R4, R5, R3}.

AS1   :   AS2
      :
 R1-------R3
  |   :   | \
  |   :   |  R5
  |   :   | /
 R2-------R4
      :

Рисунок 33. Без агрегирования каналов.


4.2. Пример с агрегированием ASBR в путь ASBR

Незначительное отличие этого примера от предыдущего состоит в том, что здесь не раскрываются конкретные каналы. На рисунке 34 AS2 анонсирует лишь 1 агрегированный канал между R3 и R4. Этого достаточно, чтобы показать AS1 наличие резервного пути, однако фактические каналы для этого не раскрываются.

AS1   :   AS2
      :
 R1-------R3
  |   :   |
  |   :   |
  |   :   |
 R2-------R4
      :

Рисунок 34. Агрегирование канала ASBR.


4.3. Пример с агрегированием в путь через множество AS

Сервис-провайдеры, управляющие несколькими AS, могут не раскрывать свои внутренние каналы между AS. На рисунке 35 AS3 представлена как 1 узел, соединённый с граничными маршрутизаторами агрегированного домена.

AS1   :   AS2   :   AS3
      :         :
 R1-------R3-----
  |   :         : \
  |   :         :   vR0
  |   :         : /
 R2-------R4-----
      :         :

Рисунок 35. Агрегирование через несколько AS.


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

Агентство IANA выделило номер семейства адресов 16388 (BGP-LS) в реестре Address Family Numbers со ссылкой на этот документ.

Выделены значения SAFI 71 (BGP-LS) и 72 (BGP-LS-VPN) в субреестре SAFI Values реестра Subsequent Address Family Identifiers (SAFI) Parameters.

Выделено значение 29 (BGP-LS Attribute) в субреестре BGP Path Attributes реестра Border Gateway Protocol (BGP) Parameters.

Агентство IANA создало новый реестр Border Gateway Protocol — Link State (BGP-LS) Parameters <http://www.iana.org/assignments/bgp-ls-parameters>, где доступны указанные ниже реестры, связанные с BGP-LS.

  • BGP-LS NLRI-Types

    Значение 0 является резервным. Максимальное значение — 65535. В реестр включены значения, указанные в таблице 1. Для включения в реестр нужно документировать предполагаемое использование (Specification Required) и одобрение эксперта, назначенного IESG (см. [RFC5226]).

  • BGP-LS Protocol-IDs

    Значение 0 является резервным. Максимальное значение — 65535. В реестр включены значения, указанные в таблице 2. Для включения в реестр нужно документировать предполагаемое использование (Specification Required) и одобрение эксперта, назначенного IESG (см. [RFC5226]).

  • BGP-LS Well-Known Instance-IDs

    В реестр включены значения, указанные в таблице 3. Новые значения из диапазона 1-31 выделяются по процедуре Specification Required после одобрения эксперта, назначенного IESG (см. [RFC5226]). Значения из диапазона 32 — 264-1 предназначены для частных применений (Private Use) и не регистрируются IANA.

  • BGP-LS Node Descriptor, Link Descriptor, Prefix Descriptor, and Attribute TLVs

    Значения 0-255 являются резервными. Значения 256-65535 будут служить кодами. В реестр включены значения, указанные в таблице 13. Для включения в реестр нужно документировать предполагаемое использование (Specification Required) и одобрение эксперта, назначенного IESG (см. [RFC5226]).

5.1. Рекомендации для назначенных экспертов

Во всех описанных здесь случаях рецензирования назначенным экспертом (Designated Expert или DE) предполагается, что DE убедится в наличии подходящей документации (спецификации), как описано в [RFC5226], и проверит открытость и постоянную доступность документа. Предполагается также, что DE проверит ясность назначения и применения кодов. Кроме того, DE должен убедиться, что любая спецификация, созданная в IETF, которая запрашивает один из таких кодов, доступна для рассмотрения рабочей группой IDR, а спецификации, созданные вне IETF, не конфликтуют с опубликованными и продолжающимися работами в рамках IETF.

6. Вопросы управляемости

Этот раздел структурирован в соответствии с [RFC5706].

6.1. Эксплуатационные соображения

6.1.1. Операции

Применимы имеющиеся рабочие процедуры BGP и документ не задаёт новых процедур. Следует отметить, что представленные в документе сведения NLRI содержат лишь данные прикладного уровня, которые не влияют напрямую на состояние пересылки. Таким образом, любое «возмущение» (churn) сведений о доступности отличается от воздействия обычных обновлений BGP, которые требуют менять состояние пересылки для всего маршрутизатора. Кроме того, предполагается, что распространение этих NLRI будет обслуживаться выделенными рефлекторами маршрутов, обеспечивающими изоляцию и сдерживание отказов, связанных с разными типами NLRI.

6.1.2. Установка и начальная настройка

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

  • функция Link-State NLRI отключена для всех соседей;

  • максимальная скорость анонсирования Link-State NLRI соседям и отзыва их — 200 обновлений в секунду.

6.1.3. Внедрение

Предложенное расширение активируется между партнёрами BGP лишь после согласования возможностей. Кроме того, расширения можно включать и отключать индивидуально для каждого партнёра (см. параграф 6.2.3), что обеспечивает поэтапное внедрение в сети.

6.1.4. Требования к другим протоколам и функциональным компонентам

Заданное здесь расширение не вносит новых требований к другим протоколам и функциональным компонентам.

6.1.5. Влияние на работу сети

Частые обновления Link-State NLRI могут помешать обычному распространению префиксов BGP. Оператор сети может использовать инфраструктуру выделенных рефлекторов маршрутов (Route-Reflector) для распространения Link-State NLRI. Распространение Link-State NLRI следует ограничивать одним административным доменом, который может включать множество областей в AS или множество AS.

6.1.6. Проверка корректности работы

Применимы имеющиеся процедуры BGP. В дополнение к этому реализации следует разрешать оператору перечислять соседей, с которыми узел обменивается Link-State NLRI.

6.2. Вопросы управления

6.2.1. Данные управления

Рабочая группа IDR задокументировала и продолжает документировать части базы управляющей информации (Management Information Base или MIB) и модели YANG для мониторинга и управления узлами BGP и сессиями между ними. В настоящее время считается, что сессия BGP с BGP-LS не отличается существенно от других сессий BGP и может управляться по тем же моделям данных.

6.2.2. Контроль отказов

Если реализация BGP-LS обноруживает неверно сформированный атрибут, она должна использовать действие Attribute Discard (отбрасывание атрибута) в соответствии с разделом 2 в [RFC7606]. Реализация BGP-LS должна выполнять указанные ниже синтаксические проверки для обнаружения некорректных сообщений.

  • Соответствие суммы размеров TLV в атрибуте BGP-LS размеру атрибута BGP-LS.

  • Соответствие суммы размеров TLV в атрибуте BGP MP_REACH_NLRI размеру BGP MP_REACH_NLRI.

  • Соответствие суммы размеров TLV в атрибуте BGP MP_UNREACH_NLRI размеру BGP MP_UNREACH_NLRI.

  • Соответствие суммы размеров TLV в атрибуте Node, Link или Prefix Descriptor NLRI полю Total NLRI Length в Node, Link или Prefix Descriptor.

  • Соответствие фиксированного размера TLV указанному в этом документе значению поля TLV Length.

6.2.3. Управление конфигурацией

Реализации следует разрешать оператору:

  • задавать соседей, которым будут анонсироваться и от которых будут восприниматься Link-State NLRI;

  • задавать максимальную скорость, с которой Link-State NLRI будут анонсироваться соседу и отзываться;

  • задавать максимальное число Link-State NLRI, сохраняемых в базе маршрутной информации (Routing Information Base или RIB) маршрутизатора;

  • создавать абстрактные топологии, анонсируемые соседям, и задавать разные абстракции для разных соседей;

  • настраивать 64-битовые Instance-ID;

  • настраивать пары ASN и идентификаторов BGP-LS (параграф 3.2.1.4) для набора лавинной рассылки, в который узел входит.

6.2.4. Управление учётными данными

Неприменимо.

6.2.5. Управление производительностью

Реализации следует предоставлять указанную ниже статистику.

  • Общее число переданных/принятых обновлений Link-State NLRI.

  • Число переданных/принятых обновлений Link-State NLRI по соседям.

  • Число принятых обновлений Link-State NLRI с ошибками по соседям.

  • Общее число созданных локально Link-State NLRI.

Значения статистики следует учитывать с момента запуска системы или сессии. Реализация может расширить статистику, записывает для каждого параметра пиковые значения в секунду.

6.2.6. Управление безопасностью

Оператору следует задать политику импорта для ограничения входящих обновлений путём отбрасывания всех обновлений от партнёров-потребителей. Реализация должна иметь средства ограничения числа входящих обновлений.

7. Сводка кодов TLV и Sub-TLV

В этом разделе приведена сводная таблица заданных в этом документе TLV и sub-TLV.

Таблица 13. Таблица кодов TLV и Sub-TLV.

 

Код TLV

Описание

IS-IS TLV/Sub-TLV

RFC/параграф

256

Дескрипторы локального узла

параграф 3.2.1.2

257

Дескрипторы удалённого узла

параграф 3.2.1.3

258

Локальные и удалённые идентификаторы канала

22/4

[RFC5307]/1.1

259

Адрес интерфейса IPv4

22/6

[RFC5305]/3.2

260

Адрес соседа IPv4

22/8

[RFC5305]/3.3

261

Адрес интерфейса IPv6

22/12

[RFC6119]/4.2

262

Адрес соседа IPv6

22/13

[RFC6119]/4.3

263

Multi-Topology ID

параграф 3.2.1.5

264

Тип маршрута OSPF

параграф 3.2.3

265

Сведения о достижимости IP

параграф 3.2.3

512

Автономная система

параграф 3.2.1.4

513

Идентификатор BGP-LS

параграф 3.2.1.4

514

OSPF Area-ID

параграф 3.2.1.4

515

IGP Router-ID

параграф 3.2.1.4

1024

Флаги узла

параграф 3.3.1.1

1025

Неинтерпретируемый (opaque) атрибут узла

параграф 3.3.1.5

1026

Имя узла

variable

параграф 3.3.1.3

1027

Идентификатор области IS-IS

variable

параграф 3.3.1.2

1028

IPv4 Router-ID локального узла

134/-

[RFC5305]/4.3

1029

IPv6 Router-ID локального узла

140/-

[RFC6119]/4.1

1030

IPv4 Router-ID удалённого узла

134/-

[RFC5305]/4.3

1031

IPv6 Router-ID удалённого узла

140/-

[RFC6119]/4.1

1088

Административная группа (цвет)

22/3

[RFC5305]/3.1

1089

Максимальная пропускная способность канала

22/9

[RFC5305]/3.4

1090

Максимальная резервируемая пропускная способность канала

22/10

[RFC5305]/3.5

1091

Нерезервируемая пропускная способность канала

22/11

[RFC5305]/3.6

1092

Принятая по умолчанию метрика TE

22/18

параграф 3.3.2.3

1093

Тип защиты канала

22/20

[RFC5307]/1.2

1094

Маска протокола MPLS

параграф 3.3.2.2

1095

Метрика IGP

параграф 3.3.2.4

1096

Группа общего риска (SRLG)

параграф 3.3.2.5

1097

Неинтерпретируемый (opaque) атрибут канала

параграф 3.3.2.6

1098

Имя канала

параграф 3.3.2.7

1152

Флаги IGP

параграф 3.3.3.1

1153

Тег маршрута IGP

[RFC5130]

1154

Расширенный тег маршрута IGP

[RFC5130]

1155

Метрика префикса

[RFC5305]

1156

Адрес пересылки OSPF

[RFC2328]

1157

Неинтерпретируемый (opaque) атрибут префикса

параграф 3.3.3.6

 

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

Процедуры и расширения протокола, заданные в этом документе, не влияют на модель безопасности BGP. Общие соображения по безопасности BGP приведены в [RFC4271], а в [RFC4272] и [RFC6952] анализируются проблемы безопасности BGP.

В контексте партнёрства BGP, связанного с этим документом, узлу BGP недопустимо воспринимать обновления от партнёров-потребителей. Т. е. участвующему узлу BGP следует знать природу своих взаимоотношений в плане состояний каналов и следует защищать себя от партнёров, передающих обновления, которые представляют ошибочные контуры обратной связи или ложный ввод. Такая защита может быть обеспечена указанием вручную потребляющих партнёров на узле BGP.

Оператору следует внедрить механизм защиты узлов BGP от DDoS-атак со стороны клиентов. Основной атакой со стороны потребителя является попытка запустить множество сессий последовательно или в параллель. Защиту можно обеспечить путём ограничения частоты таких попыток.

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

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

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

[ISO10589] International Organization for Standardization, «Intermediate System to Intermediate System intra-domain routeing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode network service (ISO 8473)», ISO/IEC 10589, November 2002.

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

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

[RFC2545] Marques, P. and F. Dupont, «Use of BGP-4 Multiprotocol Extensions for IPv6 Inter-Domain Routing», RFC 2545, DOI 10.17487/RFC2545, March 1999, <http://www.rfc-editor.org/info/rfc2545>.

[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, <http://www.rfc-editor.org/info/rfc3209>.

[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, <http://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, <http://www.rfc-editor.org/info/rfc4203>.

[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., «A Border Gateway Protocol 4 (BGP-4)», RFC 4271, DOI 10.17487/RFC4271, January 2006, <http://www.rfc-editor.org/info/rfc4271>.

[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, «Multiprotocol Extensions for BGP-4», RFC 4760, DOI 10.17487/RFC4760, January 2007, <http://www.rfc-editor.org/info/rfc4760>.

[RFC4915] Psenak, P., Mirtorabi, S., Roy, A., Nguyen, L., and P. Pillay-Esnault, «Multi-Topology (MT) Routing in OSPF», RFC 4915, DOI 10.17487/RFC4915, June 2007, <http://www.rfc-editor.org/info/rfc4915>.

[RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas, Ed., «LDP Specification», RFC 5036, DOI 10.17487/RFC5036, October 2007, <http://www.rfc-editor.org/info/rfc5036>.

[RFC5120] Przygienda, T., Shen, N., and N. Sheth, «M-ISIS: Multi Topology (MT) Routing in Intermediate System to Intermediate Systems (IS-ISs)», RFC 5120, DOI 10.17487/RFC5120, February 2008, <http://www.rfc-editor.org/info/rfc5120>.

[RFC5130] Previdi, S., Shand, M., Ed., and C. Martin, «A Policy Control Mechanism in IS-IS Using Administrative Tags», RFC 5130, DOI 10.17487/RFC5130, February 2008, <http://www.rfc-editor.org/info/rfc5130>.

[RFC5226] Narten, T. and H. Alvestrand, «Guidelines for Writing an IANA Considerations Section in RFCs», BCP 26, RFC 5226, DOI 10.17487/RFC5226, May 2008, <http://www.rfc-editor.org/info/rfc5226>.

[RFC5301] McPherson, D. and N. Shen, «Dynamic Hostname Exchange Mechanism for IS-IS», RFC 5301, DOI 10.17487/RFC5301, October 2008, <http://www.rfc-editor.org/info/rfc5301>.

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

[RFC5307] Kompella, K., Ed. and Y. Rekhter, Ed., «IS-IS Extensions in Support of Generalized Multi-Protocol Label Switching (GMPLS)», RFC 5307, DOI 10.17487/RFC5307, October 2008, <http://www.rfc-editor.org/info/rfc5307>.

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

[RFC5890] Klensin, J., «Internationalized Domain Names for Applications (IDNA): Definitions and Document Framework», RFC 5890, DOI 10.17487/RFC5890, August 2010, <http://www.rfc-editor.org/info/rfc5890>.

[RFC6119] Harrison, J., Berger, J., and M. Bartlett, «IPv6 Traffic Engineering in IS-IS», RFC 6119, DOI 10.17487/RFC6119, February 2011, <http://www.rfc-editor.org/info/rfc6119>.

[RFC6549] Lindem, A., Roy, A., and S. Mirtorabi, «OSPFv2 Multi-Instance Extensions», RFC 6549, DOI 10.17487/RFC6549, March 2012, <http://www.rfc-editor.org/info/rfc6549>.

[RFC6822] Previdi, S., Ed., Ginsberg, L., Shand, M., Roy, A., and D. Ward, «IS-IS Multi-Instance», RFC 6822, DOI 10.17487/RFC6822, December 2012, <http://www.rfc-editor.org/info/rfc6822>.

[RFC7606] Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. Patel, «Revised Error Handling for BGP UPDATE Messages», RFC 7606, DOI 10.17487/RFC7606, August 2015, <http://www.rfc-editor.org/info/rfc7606>.

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

[RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., and E. Lear, «Address Allocation for Private Internets», BCP 5, RFC 1918, DOI 10.17487/RFC1918, February 1996, <http://www.rfc-editor.org/info/rfc1918>.

[RFC4272] Murphy, S., «BGP Security Vulnerabilities Analysis», RFC 4272, DOI 10.17487/RFC4272, January 2006, <http://www.rfc-editor.org/info/rfc4272>.

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

[RFC4655] Farrel, A., Vasseur, JP., and J. Ash, «A Path Computation Element (PCE)-Based Architecture», RFC 4655, DOI 10.17487/RFC4655, August 2006, <http://www.rfc-editor.org/info/rfc4655>.

[RFC5073] Vasseur, JP., Ed. and JL. Le Roux, Ed., «IGP Routing Protocol Extensions for Discovery of Traffic Engineering Node Capabilities», RFC 5073, DOI 10.17487/RFC5073, December 2007, <http://www.rfc-editor.org/info/rfc5073>.

[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, <http://www.rfc-editor.org/info/rfc5152>.

[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, <http://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, <http://www.rfc-editor.org/info/rfc5392>.

[RFC5693] Seedorf, J. and E. Burger, «Application-Layer Traffic Optimization (ALTO) Problem Statement», RFC 5693, DOI 10.17487/RFC5693, October 2009, <http://www.rfc-editor.org/info/rfc5693>.

[RFC5706] Harrington, D., «Guidelines for Considering Operations and Management of New Protocols and Protocol Extensions», RFC 5706, DOI 10.17487/RFC5706, November 2009, <http://www.rfc-editor.org/info/rfc5706>.

[RFC6952] Jethanandani, M., Patel, K., and L. Zheng, «Analysis of BGP, LDP, PCEP, and MSDP Issues According to the Keying and Authentication for Routing Protocols (KARP) Design Guide», RFC 6952, DOI 10.17487/RFC6952, May 2013, <http://www.rfc-editor.org/info/rfc6952>.

[RFC7285] Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S., Previdi, S., Roome, W., Shalunov, S., and R. Woundy, «Application-Layer Traffic Optimization (ALTO) Protocol», RFC 7285, DOI 10.17487/RFC7285, September 2014, <http://www.rfc-editor.org/info/rfc7285>.

[RFC7770] Lindem, A., Ed., Shen, N., Vasseur, JP., Aggarwal, R., and S. Shaffer, «Extensions to OSPF for Advertising Optional Router Capabilities», RFC 7770, DOI 10.17487/RFC7770, February 2016, <http://www.rfc-editor.org/info/rfc7770>.

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

Авторы признательны Nischal Sheth, Alia Atlas, David Ward, Derek Yeung, Murtuza Lightwala, John Scudder, Kaliraj Vairavakkalai, Les Ginsberg, Liem Nguyen, Manish Bhardwaj, Matt Miller, Mike Shand, Peter Psenak, Rex Fernando, Richard Woundy, Steven Luong, Tamas Mondal, Waqas Alam, Vipin Kumar, Naiming Shen, Carlos Pignataro, Balaji Rajagopalan, Yakov Rekhter, Alvaro Retana, Barry Leiba, Ben Campbell за их комментарии.

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

Спасибо Robert Varga за значительный вклад в этот документ.

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


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

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

nmalykh@protokols.ru

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

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

3Subsequent Address Family Identifier — идентификатор следующего семейства адресов.

Рубрика: RFC | Оставить комментарий