Internet Engineering Task Force (IETF) X. Liu Request for Comments: 8294 Jabil Category: Standards Track Y. Qu ISSN: 2070-1721 Futurewei Technologies, Inc. A. Lindem Cisco Systems C. Hopps Deutsche Telekom L. Berger LabN Consulting, L.L.C. December 2017
Common YANG Data Types for the Routing Area
Базовые типы данных YANG для маршрутизации
Аннотация
Этот документ определяет набор базовых типов данных, используя язык моделирования данных YANG. Эти типы предназначены для импорта в другие модули, заданные в сфере маршрутизации.
Статус документа
Документ относится к категории Internet Standards Track.
Документ является результатом работы IETF1 и представляет согласованный взгляд сообщества IETF. Документ прошёл открытое обсуждение и был одобрен для публикации IESG2. Дополнительную информацию о стандартах Internet можно найти в разделе 2 в RFC 7841.
Информация о текущем статусе документа, найденных ошибках и способах обратной связи доступна по ссылке https://www.rfc-editor.org/info/rfc8294.
Авторские права
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 [RFC6020] [RFC7950] применяется в моделях данных конфигурации, состояния, вызовов удалённых процедур (Remote Procedure Call или RPC) и уведомлений для протоколов управления сетями. Язык YANG поддерживает небольшой набор встроенных типов данных и обеспечивает механизмы добавления производных типов на основе встроенных.
Этот документ определяет набор типов данных общего назначения, выведенных из встроенных типов YANG. Производные типы предназначены для моделирования данных, связанных с маршрутизацией.
1.1. Терминология
Терминология для описания моделей данных YANG представлена в [RFC7950].
2. Обзор
Этот документ определяет два модуля YANG ietf-routing-types и iana-routing-types с типами данных общего назначения для маршрутизации. Импортируются лишь модули ietf-yang-types и ietf-inet-types (см. раздел 3) из [RFC6991]. Модуль ietf-routing-types содержит базовые типы данных маршрутизации, отличные от соответствующих напрямую сопоставлениям IANA и перечисленные ниже.
router-id
Идентификаторы маршрутизаторов обычно применяются для указания узлов в протоколах маршрутизации и иных протоколах плоскости управления. Примеры использования router-id можно найти в [OSPF-YANG].route-target
Цели маршрутов (Route Target или RT) обычно служат для управления распространением данных виртуальной маршрутизации и пересылки (Virtual Routing and Forwarding или VRF) [RFC4364]) для поддержки BGP/MPLS IP VPN и BGP/MPLS Ethernet VPN [RFC7432]. Примеры использования можно найти в [L2VPN-YANG].ipv6-route-target
IPv6 RT похожи на RT, но являются IPv6 Address Specific BGP Extended Communite, как описано в [RFC5701]. IPv6 RT имеет размер 20 октетов и включает адрес IPv6 в качестве глобального администратора.route-target-type
Задаёт правила импорта и экспорта RT, как описано в параграфе 4.3.1 [RFC4364].route-distinguisher
Различители маршрутов (Route Distinguisher или RD) обычно служат для указания отдельных маршрутов в поддержку VPN. Например, как описано в [RFC4364], RD применяются для идентификации независимых VPN и VRF и, в более общем случае, для идентификации разных маршрутов к одному префиксу.route-origin
Источник маршрута (Route Origin) обычно служит для указания источника (Site of Origin) сведений VRF (см. [RFC4364]) в поддержку BGP/MPLS IP VPN и BGP/MPLS Ethernet VPN [RFC7432].ipv6-route-origin
IPv6 Route Origin также служит для указания источника данных VRF (см. [RFC4364]) в поддержку VPN. IPv6 Route Origin – это IPv6 Address Specific BGP Extended Community, как описано в [RFC5701]. IPv6 Route Origin имеет размер 20 октетов и включает адрес IPv6 в качестве глобального администратора.ipv4-multicast-group-address
Задаёт представление группового адреса IPv4 из диапазона 224.0.0.0 – 239.255.255.255. Пример использования имеется в [PIM-YANG].ipv6-multicast-group-address
Задаёт представление группового адреса IPv6 из диапазона ff00::/8. Пример использования имеется в [PIM-YANG].ip-multicast-group-address
Представляет групповой адрес IP в текстовом формате соответствующей версии IP. Пример использования имеется в [PIM-YANG].ipv4-multicast-source-address
Представляет адрес источника IPv4 для использования в протоколах групповой передачи. Адрес можно указать шаблоном *. Пример использования имеется в [PIM-YANG].ipv6-multicast-source-address
Представляет адрес источника IPv6 для использования в протоколах групповой передачи. Адрес можно указать шаблоном *. Пример использования имеется в [PIM-YANG].bandwidth-ieee-float32
Представляет пропускную способность в 32-битовом формате с плавающей точкой IEEE 754 [IEEE754]. Обычно применяется It is commonly used in Traffic Engineering control-plane protocols. Пример использования имеется в [OSPF-YANG].link-access-type
Указывает тип канала IGP.timer-multiplier
Применяется с типом timer-value обычно для указания числа интервалов timer-value, которые могут пройти до того, как должно произойти конкретное событие. Примеры включают прибытие пакетов обнаружения двухсторонней пересылки (Bidirectional Forwarding Detection или BFD) (параграф 6.8.4 в [RFC5880]) или hello_interval [RFC3209].timer-value-seconds16
Этот тип служит для таймеров, задаваемых в секундах, не устанавливаемых или устанавливаемых на бесконечность. Поддерживаются значения, которые могут быть представлены как uint16 (2 октета).timer-value-seconds32
Этот тип служит для таймеров, задаваемых в секундах, не устанавливаемых или устанавливаемых на бесконечность. Поддерживаются значения, которые могут быть представлены как uint32 (4 октета).timer-value-milliseconds
Этот тип служит для таймеров, задаваемых в миллисекундах, не устанавливаемых или устанавливаемых на бесконечность. Поддерживаются значения, которые могут быть представлены как uint32 (4 октета).percentage
Тип для указания процентных значений от 0 до 100%. Пример можно найти в [BGP-Model].timeticks64
Этот тип основан на типе timeticks, заданном в [RFC6991], но использует 64 бита и служит для представления времени в сотых долях секунды между двумя эпохами.Пример можно найти в [BGP-Model].uint24
24-битовое целое число без знака. Пример можно найти в [OSPF-YANG].generalized-label
Этот тип представляет обобщённую метку для GMPLS (Generalized Multiprotocol Label Switching) [RFC3471]. Метка не задаёт тип, он определяется контекстом. Пример можно найти в [TE-YANG].mpls-label-special-purpose
Этот тип представляет значения специальных меток MPLS [RFC7274].mpls-label-general-use
20-битовая метка в стеке MPLS, как указано в [RFC3032]. Метка не включает кода Traffic Class и TTL (Time to Live). Диапазон меток этого типа предназначен для общего пользования и не включает специальных меток.mpls-label
20-битовая метка в стеке MPLS, как указано в [RFC3032]. Метка не включает кода Traffic Class и TTL (Time to Live). Диапазон включает метки общего назначения и специальные метки. Пример можно найти в [MPLS-Base-YANG].В этом документе определены указанные ниже группировки YANG для многократного использования.
mpls-label-stack
Набор узлов схемы, представляющих стек меток MPLS [RFC3032].vpn-route-targets
Набор узлов схемы, представляющих правила импорта-экспорта RT, применяемые в VPN с BGP [RFC4364] [RFC4664]. Пример можно найти в [L2VPN-YANG].Модуль iana-routing-types содержит общие типы маршрутизации, соответствующие отображениям IANA.
address-family
Задаёт значения для использования в идентификаторах семейств адресов на основе реестра IANA Address Family Numbers [IANA-ADDRESS-FAMILY-REGISTRY]. Пример можно найти в [BGP-Model].subsequent-address-family
Значения для использования в идентификаторах следующего семейства адресов (Subsequent Address Family Identifier или SAFI) на основе реестра IANA Subsequent Address Family Identifiers (SAFI) Parameters [IANA-SAFI-REGISTRY].3. Модуль ietf-routing-types
<CODE BEGINS> file "ietf-routing-types@2017-12-04.yang" module ietf-routing-types { namespace "urn:ietf:params:xml:ns:yang:ietf-routing-types"; prefix rt-types; import ietf-yang-types { prefix yang; } import ietf-inet-types { prefix inet; } organization "IETF RTGWG - Routing Area Working Group"; contact "WG Web: <https://datatracker.ietf.org/wg/rtgwg/> WG List: <mailto:rtgwg@ietf.org> Editors: Xufeng Liu <mailto:Xufeng_Liu@jabail.com> Yingzhen Qu <mailto:yingzhen.qu@huawei.com> Acee Lindem <mailto:acee@cisco.com> Christian Hopps <mailto:chopps@chopps.org> Lou Berger <mailto:lberger@labn.com>"; description "Этот модуль содержит набор типов данных YANG, считающихся полезными для протоколов маршрутизации. Авторские права (Copyright (c) 2017) принадлежат IETF Trust и лицам, указанным как авторы. Все права защищены. Распространение и применение модуля в исходной или двоичной форме с изменениями или без таковых разрешено в соответствии с лицензией Simplified BSD License, изложенной в параграфе 4.c IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). Эта версия модуля YANG является частью RFC 8294, где правовые аспекты приведены более полно."; revision 2017-12-04 { description "Исходный выпуск."; reference "RFC 8294: Common YANG Data Types for the Routing Area. Section 3."; } /*** Идентификаторы для MPLS и GMPLS ***/ identity mpls-label-special-purpose-value { description "Базовый идентификатор для вывода идентификаторов, описывающих метки MPLS специального назначения."; reference "RFC 7274: Allocating and Retiring Special-Purpose MPLS Labels."; } identity ipv4-explicit-null-label { base mpls-label-special-purpose-value; description "Представляет метку IPv4 Explicit NULL."; reference "RFC 3032: MPLS Label Stack Encoding. Параграф 2.1."; } identity router-alert-label { base mpls-label-special-purpose-value; description "Представляет метку Router Alert."; reference "RFC 3032: MPLS Label Stack Encoding. Параграф 2.1."; } identity ipv6-explicit-null-label { base mpls-label-special-purpose-value; description "Представляет метку IPv6 Explicit NULL."; reference "RFC 3032: MPLS Label Stack Encoding. Параграф 2.1."; } identity implicit-null-label { base mpls-label-special-purpose-value; description "Представляет метку Implicit NULL."; reference "RFC 3032: MPLS Label Stack Encoding. Параграф 2.1."; } identity entropy-label-indicator { base mpls-label-special-purpose-value; description "Представляет Entropy Label Indicator."; reference "RFC 6790: The Use of Entropy Labels in MPLS Forwarding. Раздел 3 и параграф 10.1."; } identity gal-label { base mpls-label-special-purpose-value; description "Представляет метку Generic Associated Channel (G-ACh) (GAL)."; reference "RFC 5586: MPLS Generic Associated Channel. Разделы 4 и 10."; } identity oam-alert-label { base mpls-label-special-purpose-value; description "Представляет метку OAM Alert."; reference "RFC 3429: Assignment of the 'OAM Alert Label' for Multiprotocol Label Switching Architecture (MPLS) Operation and Maintenance (OAM) Functions. Разделы 3 и 6."; } identity extension-label { base mpls-label-special-purpose-value; description "Представляет метку Extension."; reference "RFC 7274: Allocating and Retiring Special-Purpose MPLS Labels. Параграф 3.1 и раздел 5."; } /*** Типы, связанные с маршрутизацией ***/ typedef router-id { type yang:dotted-quad; description "32-битовое число в формате 4 значений через точку, назначаемое каждому маршрутизатору. Однозначно указывает маршрутизатор в автономной системе (AS)."; } /*** Типы, связанные с VPN ***/ typedef route-target { type string { pattern '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + '42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + '42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + '655[0-2][0-9]|' + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|' + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|' + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '(6(:[a-fA-F0-9]{2}){6})|' + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + '[0-9a-fA-F]{1,12})'; } description "RT - это 8-октетное значение расширенной группы BGP, исходно указывающее набор сайтов в BGP VPN (RFC 4364). Однако оно играет более общую роль в фильтрации маршрутов BGP. RT состоит из 2 или 3 полей: 2-октетное поле Type, поле администратора и необязательное поле назначенного номера. В соответствии с форматом данных для типов 0, 1, 2, 6, заданных в RFC 4360, RFC 5668, RFC 7432, шаблон кодирования имеет вид: 0:2-octet-asn:4-octet-number 1:4-octet-ipv4addr:2-octet-number 2:4-octet-asn:2-octet-number 6:6-octet-mac-address Для будущих типов RT дополнительно определён базовый шаблон: 2-octet-other-hex-number:6-octet-hex-number Примерами служат 0:100:100, 1:1.1.1.1:100, 2:1234567890:203, 6:26:00:08:92:78:00."; reference "RFC 4360: BGP Extended Communities Attribute. RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). RFC 5668: 4-Octet AS Specific BGP Extended Community. RFC 7432: BGP MPLS-Based Ethernet VPN."; } typedef ipv6-route-target { type string { pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + ':' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + ':' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; } description "IPv6 RT - 20-октетное значение BGP IPv6 Address Specific Extended Community, служащее для тех же функций, что и 8-октетные RT, но применяющие только IPv6 как адрес глобального администратора. Форматом служит <ipv6-address:2-octet-number>. Примерами являются 2001:db8::1:6544, 2001:db8::5eb1:791:6b37:17958."; reference "RFC 5701: IPv6 Address Specific BGP Extended Community Attribute."; } typedef route-target-type { type enumeration { enum import { value 0; description "RT для импорта маршрутов."; } enum export { value 1; description "RT для экспорта маршрутов."; } enum both { value 2; description " RT для импорта и экспорта маршрутов."; } } description "Роль RT в фильтрации маршрутов."; reference "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs)."; } typedef route-distinguisher { type string { pattern '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + '42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + '42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + '655[0-2][0-9]|' + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|' + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|' + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '(6(:[a-fA-F0-9]{2}){6})|' + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + '[0-9a-fA-F]{1,12})'; } description "Различитель маршрутов (RD) - это 8-октетное значение для различения маршрутов из разных BGP VPN (RFC 4364). RD имеет такой же формат как RT в соответствии с RFC 4360 и состоит из из 2 или 3 полей: 2-октетное поле Type, поле администратора и необязательное поле назначенного номера. В соответствии с форматом данных для типов 0, 1, 2, 6, заданных в RFC 4360, RFC 5668, RFC 7432, шаблон кодирования имеет вид: 0:2-octet-asn:4-octet-number 1:4-octet-ipv4addr:2-octet-number 2:4-octet-asn:2-octet-number 6:6-octet-mac-address Для будущих типов RT дополнительно определён базовый шаблон: 2-octet-other-hex-number:6-octet-hex-number Примерами являются 0:100:100, 1:1.1.1.1:100, 2:1234567890:203, and 6:26:00:08:92:78:00."; reference "RFC 4360: BGP Extended Communities Attribute. RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). RFC 5668: 4-Octet AS Specific BGP Extended Community. RFC 7432: BGP MPLS-Based Ethernet VPN."; } typedef route-origin { type string { pattern '(0:(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0):(429496729[0-5]|' + '42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|429496[0-6][0-9]{3}|' + '42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|429[0-3][0-9]{6}|' + '42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0))|' + '(1:((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|' + '1[0-9]{2}|2[0-4][0-9]|25[0-5])):(6553[0-5]|' + '655[0-2][0-9]|' + '65[0-4][0-9]{2}|6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '(2:(429496729[0-5]|42949672[0-8][0-9]|' + '4294967[01][0-9]{2}|' + '429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|' + '4294[0-8][0-9]{5}|' + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[01][0-9]{8}|' + '[1-3][0-9]{9}|[1-9][0-9]{0,8}|0):' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0))|' + '(6(:[a-fA-F0-9]{2}){6})|' + '(([3-57-9a-fA-F]|[1-9a-fA-F][0-9a-fA-F]{1,3}):' + '[0-9a-fA-F]{1,12})'; } description "Источник маршрута (Route Origin) - это 8-октетная расширенная группа BGP, указывающая набор сайтов, откуда идёт маршрут BGP (RFC 4364). Route Origin имеет такой же формат как RT в соответствии с RFC 4360 и состоит из 2 или 3 полей: 2-октетное поле Type, поле администратора и необязательное поле назначенного номера. В соответствии с форматом данных для типов 0, 1, 2, 6, заданных в RFC 4360, RFC 5668, RFC 7432, шаблон кодирования имеет вид: 0:2-octet-asn:4-octet-number 1:4-octet-ipv4addr:2-octet-number 2:4-octet-asn:2-octet-number 6:6-octet-mac-address Для будущих типов RT дополнительно определён базовый шаблон: 2-octet-other-hex-number:6-octet-hex-number Примерами являются 0:100:100, 1:1.1.1.1:100, 2:1234567890:203, and 6:26:00:08:92:78:00."; reference "RFC 4360: BGP Extended Communities Attribute. RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). RFC 5668: 4-Octet AS Specific BGP Extended Community. RFC 7432: BGP MPLS-Based Ethernet VPN."; } typedef ipv6-route-origin { type string { pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + '(((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.){3}' + '(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])))' + ':' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; pattern '((([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))' + ':' + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|' + '6[0-4][0-9]{3}|' + '[1-5][0-9]{4}|[1-9][0-9]{0,3}|0)'; } description "IPv6 Route Origin - это 20-октетное значение BGP IPv6 Address Specific Extended Community, служащее для тех же функций, что и обычный 8-октетный маршрут, но принимающее лишь адрес IPv6 для глобального администратора. Форматом служит <ipv6-address:2-octet-number>. Примерами являются 2001:db8::1:6544 и 2001:db8::5eb1:791:6b37:17958."; reference "RFC 5701: IPv6 Address Specific BGP Extended Community Attribute."; } /*** Типы для групповой передачи ***/ typedef ipv4-multicast-group-address { type inet:ipv4-address { pattern '(2((2[4-9])|(3[0-9]))\.).*'; } description "Адрес группы IPv4 из диапазона 224.0.0.0 - 239.255.255.255."; reference "RFC 1112: Host Extensions for IP Multicasting."; } typedef ipv6-multicast-group-address { type inet:ipv6-address { pattern '(([fF]{2}[0-9a-fA-F]{2}):).*'; } description " Адрес группы IPv6 из диапазона ff00::/8."; reference "RFC 4291: IP Version 6 Addressing Architecture. Параграф 2.7. RFC 7346: IPv6 Multicast Address Scopes."; } typedef ip-multicast-group-address { type union { type ipv4-multicast-group-address; type ipv6-multicast-group-address; } description "Адрес multicast-группы IP в текстовом формате, соответствующем версии IP."; } typedef ipv4-multicast-source-address { type union { type enumeration { enum * { description "Любой адрес источника."; } } type inet:ipv4-address; } description "Групповой адрес источника IPv4."; } typedef ipv6-multicast-source-address { type union { type enumeration { enum * { description "Любой адрес источника."; } } type inet:ipv6-address; } description "Групповой адрес источника IPv6."; } /*** Общие для протоколов типы ***/ typedef bandwidth-ieee-float32 { type string { pattern '0[xX](0((\.0?)?[pP](\+)?0?|(\.0?))|' + '1(\.([0-9a-fA-F]{0,5}[02468aAcCeE]?)?)?[pP](\+)?(12[0-7]|' + '1[01][0-9]|0?[0-9]?[0-9])?)'; } description "Пропускная способность в формате IEEE 754 с плавающей точкой (-1)**(S) * 2**(Exponent-127) * (1 + Fraction), где Exponent занимает 8 битов, Fraction - 23. Измеряется в октет/сек. Форматом кодирования служат внешние шестнадцатеричные цифры в соответствии с IEEE 754 и ISO/IEC C99. Значения должны быть нормализованными, неотрицательными и без дробной части: 0x1.hhhhhhp{+}d, 0X1.HHHHHHP{+}D, 0x0p0, где h и H - шестнадцатеричные, а d и D - десятичные целые числа от 1 до 127. При использовании 6 шестнадцатеричных цифр для hhhhhh или HHHHHH младшая цифра должна быть чётной, x и X указывают шестнадцатеричные значения, p и P - степень 2. Примерами являются 0x0p0, 0x1p10, 0x1.abcde2p+20."; reference "IEEE Std 754-2008: IEEE Standard for Floating-Point Arithmetic. ISO/IEC C99: Information technology - Programming Languages - C."; } typedef link-access-type { type enumeration { enum broadcast { description "Широковещательная сеть с множественным доступом."; } enum non-broadcast-multiaccess { description "Сеть с множественным доступом без широковещания (NBMA)."; } enum point-to-multipoint { description "Сеть point-to-multipoint."; } enum point-to-point { description "Сеть «точка-точка»."; } } description "Тип доступа к каналу."; } typedef timer-multiplier { type uint8; description "Число интервалов таймера, которое следует считать отказом."; } typedef timer-value-seconds16 { type union { type uint16 { range "1..65535"; } type enumeration { enum infinity { description "Таймер установлен на бесконечность."; } enum not-set { description "Таймер не установлен."; } } } units "seconds"; description "Значение таймера в секундах (16 битов)."; } typedef timer-value-seconds32 { type union { type uint32 { range "1..4294967295"; } type enumeration { enum infinity { description "Таймер установлен на бесконечность."; } enum not-set { description "Таймер не установлен."; } } } units "seconds"; description "Значение таймера в секундах (32 бита)."; } typedef timer-value-milliseconds { type union { type uint32 { range "1..4294967295"; } type enumeration { enum infinity { description "Таймер установлен на бесконечность."; } enum not-set { description "Таймер не установлен."; } } } units "milliseconds"; description "Значение таймера в миллисекундах."; } typedef percentage { type uint8 { range "0..100"; } description "Целое число для указания процентов."; } typedef timeticks64 { type uint64; description "Этот тип основан на типе timeticks, заданном в RFC 6991, но имеет размер 64 бита. Он представляет время по модулю 2^64 в сотых долях секунды между двумя эпохами."; reference "RFC 6991: Common YANG Data Types."; } typedef uint24 { type uint32 { range "0..16777215"; } description "24-битовое целое число без знака."; } /*** Типы, связанные с MPLS и GMPLS ***/ typedef generalized-label { type binary; description "Обобщённая метка. Узлы, передающие и принимающие такие метки знают тип и контекст специфических для канала меток."; reference "RFC 3471: Generalized Multi-Protocol Label Switching (GMPLS) Signaling Functional Description. Параграф 3.2."; } typedef mpls-label-special-purpose { type identityref { base mpls-label-special-purpose-value; } description "Представляет значения специальных меток MPLS."; reference "RFC 3032: MPLS Label Stack Encoding. RFC 7274: Allocating and Retiring Special-Purpose MPLS Labels."; } typedef mpls-label-general-use { type uint32 { range "16..1048575"; } description "20-битовое значение метки в стеке MPLS, как указано в RFC 3032. Значение не включает кодирование Traffic Class и TTL. Диапазон меток этого типа предназначен для общего пользования и не включает специальных меток."; reference "RFC 3032: MPLS Label Stack Encoding."; } typedef mpls-label { type union { type mpls-label-special-purpose; type mpls-label-general-use; } description "20-битовое значение метки в стеке MPLS, как указано в RFC 3032. Значение не включает кодирование Traffic Class и TTL. reference "RFC 3032: MPLS Label Stack Encoding."; } /*** Группировки **/ grouping mpls-label-stack { description "Задаёт стек меток MPL, представляемый списком записей для меток стека. Ключом списка служит идентификатор, задающий относительный порядок каждой записи, наименьший идентификатор указывает метку на вершине стека."; container mpls-label-stack { description "Контейнер для записей списка стека меток MPLS."; list entry { key "id"; description "Список меток стека MPLS."; leaf id { type uint8; description "Указывает запись с списке меток стека MPLS. Записи размещаются в порядке роста значений идентификаторов. Значение идентификатора не имеет другой семантики."; } leaf label { type rt-types:mpls-label; description "Значение метки."; } leaf ttl { type uint8; description "Время жизни (TTL)."; reference "RFC 3032: MPLS Label Stack Encoding."; } leaf traffic-class { type uint8 { range "0..7"; } description "Класс трафика (TC)."; reference "RFC 5462: Multiprotocol Label Switching (MPLS) Label Stack Entry: 'EXP' Field Renamed to 'Traffic Class' Field."; } } } } grouping vpn-route-targets { description "Группа, задающая правила импорта и экспорта RT в VPN с BGP."; reference "RFC 4364: BGP/MPLS IP Virtual Private Networks (VPNs). RFC 4664: Framework for Layer 2 Virtual Private Networks (L2VPNs)."; list vpn-target { key "route-target"; description "Список RT."; leaf route-target { type rt-types:route-target; description "Значение RT."; } leaf route-target-type { type rt-types:route-target-type; mandatory true; description "Тип импорта-экспорта RT."; } } } } <CODE ENDS>
4. Модуль iana-routing-types
<CODE BEGINS> file "iana-routing-types@2017-12-04.yang" module iana-routing-types { namespace "urn:ietf:params:xml:ns:yang:iana-routing-types"; prefix iana-rt-types; organization "IANA"; contact "Internet Assigned Numbers Authority Postal: ICANN 12025 Waterfront Drive, Suite 300 Los Angeles, CA 90094-2536 United States of America Tel: +1 310 301 5800 <mailto:iana@iana.org>"; description "Этот модуль содержит типы данных YANG, считающиеся заданными IANA и применяемые для протоколов маршрутизации. Авторские права (Copyright (c) 2017) принадлежат IETF Trust и лицам, указанным как авторы. Все права защищены. Распространение и применение модуля в исходной или двоичной форме с изменениями или без таковых разрешено в соответствии с лицензией Simplified BSD License, изложенной в параграфе 4.c IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). Эта версия модуля YANG является частью RFC 8294, где правовые аспекты приведены более полно."; revision 2017-12-04 { description "Исходный выпуск."; reference "RFC 8294: Common YANG Data Types for the Routing Area. Параграф 4."; } /*** Типы IANA, связанные с маршрутизацией ***/ /*** Перечисление семейств адресов IANA ***/ typedef address-family { type enumeration { enum ipv4 { value 1; description "Семейство адресов IPv4."; } enum ipv6 { value 2; description "Семейство адресов IPv6."; } enum nsap { value 3; description "Семейство адресов OSI NSAP."; } enum hdlc { value 4; description "Семейство адресов HDLC."; } enum bbn1822 { value 5; description "Семейство адресов BBN 1822."; } enum ieee802 { value 6; description "Семейство адресов IEEE 802 MAC."; } enum e163 { value 7; description "Семейство адресов ITU-T E.163."; } enum e164 { value 8; description "Семейство адресов ITU-T E.164 (SMDS, Frame Relay, ATM)."; } enum f69 { value 9; description "Семейство адресов ITU-T F.69 (Telex)."; } enum x121 { value 10; description "Семейство адресов ITU-T X.121 (X.25, Frame Relay)."; } enum ipx { value 11; description "Семейство адресов Novell IPX."; } enum appletalk { value 12; description "Семейство адресов AppleTalk."; } enum decnet-iv { value 13; description "Семейство адресов DECnet Phase IV."; } enum vines { value 14; description "Семейство адресов Banyan Vines."; } enum e164-nsap { value 15; description "Семейство адресов ITU-T E.164 с субадресом NSAP."; } enum dns { value 16; description "Семейство адресов DNS."; } enum distinguished-name { value 17; description "Семейство адресов Distinguished Name."; } enum as-num { value 18; description "Семейство адресов автономных систем (AS)."; } enum xtp-v4 { value 19; description "Семейство адресов XTP по протоколу IPv4."; } enum xtp-v6 { value 20; description "Семейство адресов XTP по протоколу IPv6."; } enum xtp-native { value 21; description "Семейство адресов естественного режима XTP."; } enum fc-port { value 22; description "Семейство адресов Fibre Channel (FC) World-Wide Port Name."; } enum fc-node { value 23; description "Семейство адресов FC World-Wide Node Name."; } enum gwid { value 24; description "Семейство адресов ATM Gateway Identifier (GWID) Number."; } enum l2vpn { value 25; description "Семейство адресов L2VPN."; } enum mpls-tp-section-eid { value 26; description "Семейство адресов MPLS-TP) Section Endpoint."; } enum mpls-tp-lsp-eid { value 27; description "Семейство адресов MPLS-TP LSP Endpoint Identifier."; } enum mpls-tp-pwe-eid { value 28; description "Семейство адресов MPLS-TP Pseudowire Endpoint Identifier."; } enum mt-v4 { value 29; description "Семейство адресов Multi-Topology IPv4."; } enum mt-v6 { value 30; description "Семейство адресов Multi-Topology IPv6."; } enum eigrp-common-sf { value 16384; description "Семейство адресов EIGRP Common Service Family."; } enum eigrp-v4-sf { value 16385; description "Семейство адресов EIGRP IPv4 Service Family."; } enum eigrp-v6-sf { value 16386; description "Семейство адресов EIGRP IPv6 Service Family."; } enum lcaf { value 16387; description "Семейство адресов LISP LCAF."; } enum bgp-ls { value 16388; description "Семейство адресов BGP-LS."; } enum mac-48 { value 16389; description "Семейство адресов IEEE 48-bit MAC."; } enum mac-64 { value 16390; description "Семейство адресов IEEE 64-bit MAC."; } enum trill-oui { value 16391; description "Семейство адресов TRILL OUI."; } enum trill-mac-24 { value 16392; description "Семейство адресов TRILL final 3 octets of 48-bit MAC."; } enum trill-mac-40 { value 16393; description "Семейство адресов TRILL final 5 octets of 64-bit MAC."; } enum ipv6-64 { value 16394; description "Семейство адресов первых 8 октетов (64 бита ) IPv6."; } enum trill-rbridge-port-id { value 16395; description "Семейство адресов TRILL RBridge Port ID."; } enum trill-nickname { value 16396; description "Семейство адресов TRILL Nickname."; } } description "Перечисление всех заданных IANA семейств адресов."; } /*** Идентификаторы SAFI для многопротокольного BGP ***/ typedef bgp-safi { type enumeration { enum unicast-safi { value 1; description "Unicast SAFI."; } enum multicast-safi { value 2; description "Multicast SAFI."; } enum labeled-unicast-safi { value 4; description "Labeled Unicast SAFI."; } enum multicast-vpn-safi { value 5; description "Multicast VPN SAFI."; } enum pseudowire-safi { value 6; description "Multi-segment Pseudowire VPN SAFI."; } enum tunnel-encap-safi { value 7; description "Tunnel Encap SAFI."; } enum mcast-vpls-safi { value 8; description "VPLS SAFI."; } enum tunnel-safi { value 64; description "Tunnel SAFI."; } enum vpls-safi { value 65; description "VPLS SAFI."; } enum mdt-safi { value 66; description "MDT SAFI."; } enum v4-over-v6-safi { value 67; description "IPv4 over IPv6 SAFI."; } enum v6-over-v4-safi { value 68; description "IPv6 over IPv4 SAFI."; } enum l1-vpn-auto-discovery-safi { value 69; description "Layer 1 VPN Auto-Discovery SAFI."; } enum evpn-safi { value 70; description "EVPN SAFI."; } enum bgp-ls-safi { value 71; description "BGP-LS SAFI."; } enum bgp-ls-vpn-safi { value 72; description "BGP-LS VPN SAFI."; } enum sr-te-safi { value 73; description "SR-TE SAFI."; } enum labeled-vpn-safi { value 128; description "MPLS Labeled VPN SAFI."; } enum multicast-mpls-vpn-safi { value 129; description "Multicast for BGP/MPLS IP VPN SAFI."; } enum route-target-safi { value 132; description "RT SAFI."; } enum ipv4-flow-spec-safi { value 133; description "IPv4 Flow Specification SAFI."; } enum vpnv4-flow-spec-safi { value 134; description "IPv4 VPN Flow Specification SAFI."; } enum vpn-auto-discovery-safi { value 140; description "VPN Auto-Discovery SAFI."; } } description "Enumeration for BGP SAFI."; reference "RFC 4760: Multiprotocol Extensions for BGP-4."; } } <CODE ENDS>
5. Взаимодействие с IANA
Этот документ регистрирует указанные ниже URI пространств имён в реестре IETF XML Registry [RFC3688].
URI: urn:ietf:params:xml:ns:yang:ietf-routing-types Registrant Contact: The IESG. XML: N/A; the requested URI is an XML namespace. URI: urn:ietf:params:xml:ns:yang:iana-routing-types Registrant Contact: IANA. XML: N/A; the requested URI is an XML namespace.
Документ регистрирует указанные ниже модули YANG в реестре YANG Module Names [RFC6020]
Name: ietf-routing-types Namespace: urn:ietf:params:xml:ns:yang:ietf-routing-types Prefix: rt-types Reference: RFC 8294 Name: iana-routing-types Namespace: urn:ietf:params:xml:ns:yang:iana-routing-types Prefix: iana-rt-types Reference: RFC 8294
5.1. Модуль iana-routing-types
Этот документ задаёт исходный выпуск поддерживаемого IANA модуля YANG iana-routing-types (раздел 4). Модуль iana-routing-types предназначен для отражения реестров Address Family Numbers [IANA-ADDRESS-FAMILY-REGISTRY] и Subsequent Address Family Identifiers (SAFI) Parameters [IANA-SAFI-REGISTRY].
Агентство IANA добавило приведённое ниже примечание в реестр iana-routing-types YANG Module.
Address Family и Subsequent Address Family недопустимо добавлять напрямую в модуль YANG iana-routing-types. Они должны добавляться в реестры Address Family Numbers и Subsequent Address Family Identifiers (SAFI) Parameters.
При добавлении Address Family или Subsequent Address Family в реестр Address Family Numbers или Subsequent Address Family Identifiers (SAFI) Parameters должен добавляться новый оператор enum в модуль iana-routing-types. Имя оператора enum совпадает с соответствующим Address Family или SAFI, но должно быть действительным идентификатором YANG с использованием символов нижнего регистра и разделением слов символом дефиса. Ниже указан оператор enum и его субоператоры, которые следует определить.
enum
Идентификатор YANG enum для address-family (Address Family) или bgp-safi (Subsequent Address Family). Он может совпадать с address-family или bgp-safi или сокращаться для упрощения использования.value
Выделенное IANA значение, соответствующее address-family (Address Family) или bgp-safi (Subsequent Address Family).status
Включается лишь при отмене регистрации (значении deprecated) или её устаревании (значение obsolete).description
Дублирует описание из реестра, если оно есть. Строки должны иметь размер не более 72 символов.reference
Дублирует ссылку из реестра при её наличии и включает название документа.При обновлении модуля iana-routing-types в него добавляется оператор revision перед имеющимися операторами этого типа.
Агентство IANA добавило приведённое ниже примечание в реестры Address Family Numbers и Subsequent Address Family Identifiers (SAFI) Parameters.
При изменении этого реестра обновляется модуль YANG iana-routing-types, как указано в RFC 8294.
6. Вопросы безопасности
Этот документ содержит базовые определения типов маршрутизации (операторы typedef) с использованием языка моделирования данных YANG. Сами определения не влияют на безопасность и приватность в Internet, но их использование в других модулях YANG может оказывать такое влияние. Вопросы безопасности, рассмотренные в спецификации YANG 1.1 [RFC7950], применимы и к этому документу.
7. Литература
7.1. Нормативные документы
[RFC3688] Mealling, M., “The IETF XML Registry”, BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>.
[RFC6020] Bjorklund, M., Ed., “YANG – A Data Modeling Language for the Network Configuration Protocol (NETCONF)”, RFC 6020, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-editor.org/info/rfc6020>.
[RFC6991] Schoenwaelder, J., Ed., “Common YANG Data Types”, RFC 6020, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950] Bjorklund, M., Ed., “The YANG 1.1 Data Modeling Language”, RFC 7950, DOI 10.17487/RFC7950, August 2016, <https://www.rfc-editor.org/info/rfc7950>.
[IANA-ADDRESS-FAMILY-REGISTRY] “IANA Address Family Numbers Registry”, <https://www.iana.org/assignments/address-family-numbers/>.
[IANA-SAFI-REGISTRY] “IANA Subsequent Address Family Identifiers (SAFI) Parameters Registry”, <https://www.iana.org/assignments/safi-namespace/>.
7.2. Дополнительная литература
[IEEE754] IEEE, “IEEE Standard for Floating-Point Arithmetic”, IEEE 754-2008, DOI 10.1109/IEEESTD.2008.4610935.
[BGP-Model] Shaikh, A., Ed., Shakir, R., Ed., Patel, K., Ed., Hares, S., Ed., D’Souza, K., Bansal, D., Clemm, A., Zhdankin, A., Jethanandani, M., and X. Liu, “BGP Model for Service Provider Networks”, Work in Progress, draft-ietf-idr-bgp-model-02, July 2016.
[OSPF-YANG] Yeung, D., Qu, Y., Zhang, J., Chen, I., and A. Lindem, “Yang Data Model for OSPF Protocol”, Work in Progress, draft-ietf-ospf-yang-09, October 2017.
[PIM-YANG] Liu, X., McAllister, P., Peter, A., Sivakumar, M., Liu, Y., and F. Hu, “A YANG data model for Protocol-Independent Multicast (PIM)”, Work in Progress, draft-ietf-pim-yang-12, December 2017.
[TE-YANG] Saad, T., Ed., Gandhi, R., Liu, X., Beeram, V., Shah, H., and I. Bryskin, “A YANG Data Model for Traffic Engineering Tunnels and Interfaces”, Work in Progress, draft-ietf-teas-yang-te-09, October 2017.
[L2VPN-YANG] Shah, H., Ed., Brissette, P., Ed., Chen, I., Ed., Hussain, I., Ed., Wen, B., Ed., and K. Tiruveedhula, Ed., “YANG Data Model for MPLS-based L2VPN”, Work in Progress, draft-ietf-bess-l2vpn-yang-07, September 2017.
[MPLS-Base-YANG] Saad, T., Raza, K., Gandhi, R., Liu, X., Beeram, V., Shah, H., Bryskin, I., Chen, X., Jones, R., and B. Wen, “A YANG Data Model for MPLS Base”, Work in Progress3, draft-ietf-mpls-base-yang-05, July 2017.
[RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., Farinacci, D., Li, T., and A. Conta, “MPLS Label Stack Encoding”, RFC 3032, DOI 10.17487/RFC3032, January 2001, <https://www.rfc-editor.org/info/rfc3032>.
[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., and G. Swallow, “RSVP-TE: Extensions to RSVP for LSP Tunnels”, RFC 3209, DOI 10.17487/RFC3209, December 2001, <https://www.rfc-editor.org/info/rfc3209>.
[RFC3471] Berger, L., Ed., “Generalized Multi-Protocol Label Switching (GMPLS) Signaling Functional Description”, RFC 3471, DOI 10.17487/RFC3471, January 2003, <https://www.rfc-editor.org/info/rfc3471>.
[RFC4364] Rosen, E. and Y. Rekhter, “BGP/MPLS IP Virtual Private Networks (VPNs)”, RFC 4364, DOI 10.17487/RFC4364, February 2006, <https://www.rfc-editor.org/info/rfc4364>.
[RFC4664] Andersson, L., Ed., and E. Rosen, Ed., “Framework for Layer 2 Virtual Private Networks (L2VPNs)”, RFC 4664, DOI 10.17487/RFC4664, September 2006, <https://www.rfc-editor.org/info/rfc4664>.
[RFC5701] Rekhter, Y., “IPv6 Address Specific BGP Extended Community Attribute”, RFC 5701, DOI 10.17487/RFC5701, November 2009, <https://www.rfc-editor.org/info/rfc5701>.
[RFC5880] Katz, D. and D. Ward, “Bidirectional Forwarding Detection (BFD)”, RFC 5880, DOI 10.17487/RFC5880, June 2010, <https://www.rfc-editor.org/info/rfc5880>.
[RFC7274] Kompella, K., Andersson, L., and A. Farrel, “Allocating and Retiring Special-Purpose MPLS Labels”, RFC 7274, DOI 10.17487/RFC7274, June 2014, <https://www.rfc-editor.org/info/rfc7274>.
[RFC7432] Sajassi, A., Ed., Aggarwal, R., Bitar, N., Isaac, A., Uttaro, J., Drake, J., and W. Henderickx, “BGP MPLS-Based Ethernet VPN”, RFC 7432, DOI 10.17487/RFC7432, February 2015, <https://www.rfc-editor.org/info/rfc7432>.
Благодарности
В состав группы разработчиков Routing Area YANG Architecture входили Acee Lindem, Anees Shaikh, Christian Hopps, Dean Bogdanovic, Ebben Aries, Lou Berger, Qin Wu, Rob Shakir, Xufeng Liu, Yingzhen Qu.
Спасибо Martin Bjorklund, Tom Petch, Stewart Bryant, Radek Krejci за комментарии к модели и тексту документа, Robert Raszuk за предложения по дополнительным базовым типам маршрутизации.
Адреса авторов
Xufeng Liu Jabil 8281 Greensboro Drive, Suite 200 McLean, VA 22102 United States of America Email: Xufeng_Liu@jabil.com Yingzhen Qu Futurewei Technologies, Inc. 2330 Central Expressway Santa Clara, CA 95050 United States of America Email: yingzhen.qu@huawei.com Acee Lindem Cisco Systems 301 Midenhall Way Cary, NC 27513 United States of America Email: acee@cisco.com Christian Hopps Deutsche Telekom Email: chopps@chopps.org Lou Berger LabN Consulting, L.L.C. Email: lberger@labn.netПеревод на русский язык
Николай Малых
1Internet Engineering Task Force – комиссия по решению инженерных задач Internet.
2Internet Engineering Steering Group – комиссия по инженерным разработкам Internet.
3Опубликовано в RFC 8960. Прим. перев.