Internet Engineering Task Force (IETF) E. Voit Request for Comments: 8640 Cisco Systems Category: Standards Track A. Clemm ISSN: 2070-1721 Futurewei A. Gonzalez Prieto Microsoft E. Nilsen-Nygaard A. Tripathy Cisco Systems September 2019
Dynamic Subscription to YANG Events and Datastores over NETCONF
Динамическая подписка на события и хранилища данных YANG через NETCONF
Аннотация
Этот документ обеспечивает привязку протокола управления сетью (Network Configuration Protocol или NETCONF) к возможности динамической подписки на уведомления и YANG-Push.
Статус документа
Документ относится к категории Internet Standards Track.
Документ является результатом работы IETF1 и представляет согласованный взгляд сообщества IETF. Документ прошёл открытое обсуждение и был одобрен для публикации IESG2. Дополнительную информацию о стандартах Internet можно найти в разделе 2 RFC 7841.
Информацию о текущем статусе документа, ошибках и способах обратной связи можно найти по ссылке https://www.rfc-editor.org/info/rfc8640.
Авторские права
Авторские права (Copyright (c) 2019) принадлежат 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).
Документ может содержать материалы из IETF Document или IETF Contribution, опубликованных или публично доступных до 10 ноября 2008 года. Лица, контролирующие авторские права на некоторые из таких документов, могли не предоставить IETF Trust права разрешать внесение изменений в такие документы за рамками процессов IETF Standards. Без получения соответствующего разрешения от лиц, контролирующих авторские права этот документ не может быть изменён вне рамок процесса IETF Standards, не могут также создаваться производные документы за рамками процесса IETF Standards за исключением форматирования документа для публикации или перевода с английского языка на другие языки.
1. Введение
Этот документ задаёт привязку потока событий, составляющих часть динамической подписки, к протоколу NETCONF [RFC6241]. Динамическая подписка определена в [RFC8639]. Поскольку [RFC8641] базируется на [RFC8639], этот документ позволяет клиенту NETCONF запрашивать через динамическую подписку и получать обновления из хранилища YANG на сервере NETCONF.
Документ предполагает знакомство читателя с терминологией и концепциями [RFC8639].
2. Терминология
Ключевые слова необходимо (MUST), недопустимо (MUST NOT), требуется (REQUIRED), нужно (SHALL), не следует (SHALL NOT), следует (SHOULD), не нужно (SHOULD NOT), рекомендуется (RECOMMENDED), не рекомендуется (NOT RECOMMENDED), возможно (MAY), необязательно (OPTIONAL) в данном документе интерпретируются в соответствии с BCP 14 [RFC2119] [RFC8174] тогда и только тогда, когда они выделены шрифтом, как показано здесь.
В [RFC8639] определены термины dynamic subscription (динамическая подписка), event stream (поток событий), notification message (сообщение с уведомлением), publisher (издатель), receiver (получатель), subscriber (подписчик), subscription (подписка). Данный документ не задаёт новых терминов.
3. Совместимость с <create-subscription> из RFC 5277
Издатель может одновременно поддерживать RPC динамической подписки, как указано в [RFC8639], и RPC <create-subscription> из [RFC5277]. Однако в одной транспортной сессии NETCONF недопустимо поддерживать сразу эту спецификацию и RPC <create-subscription> из [RFC5277]. Для защиты от попыток использования обоих вариантов в одно транспортной сессии NETCONF применяются указанные ниже меры.
-
Решение должно возвращать элемент <rpc-error> [RFC6241] с error-tag operation-not-supported при получении RPC <create-subscription> в сессии NETCONF, где имеется подписка в соответствии с [RFC8639].
-
Решение должно возвращать элемент <rpc-error> [RFC6241] с error-tag operation-not-supported при получении запроса establish-subscription в сессии NETCONF, где имеется подписка на основе RPC <create-subscription> из [RFC5277].
Если издатель поддерживает эту спецификацию, но не реализует подписку в соответствии с [RFC5277], ему недопустимо анонсировать urn:ietf:params:netconf:capability:notification:1.0.
4. Обязательная поддержка XML, потока событий и хранилища
Должно поддерживаться свойство encode-xml из [RFC8639], указывающее, что XML является пригодным кодированием для RPC, уведомлений о смене состояния и содержимого подписки.
Издатель NETCONF, поддерживающий подписку на поток событий в соответствии с [RFC8639], должен поддерживать поток событий NETCONF, заданный этим документом.
5. Связность NETCONF и динамическая подписка
Управление динамическими подписками выполняется через RPC, как указано в [RFC8641] и [RFC8639]. Для динамической подписки при прерывании сессии NETCONF, вовлеченной establish-subscription, подписка должна прерываться.
Для динамической подписки любые RPC modify-subscription, delete-subscription, resync-subscription должны передаваться в той же сессии NETCONF, где была организована соответствующая подписка.
6. Уведомления
Уведомления, транспортируемые через NETCONF, должны кодироваться в сообщения <notification>, как указано в разделе 4 [RFC5277]. В соответствии с определением объекта <eventTime> в [RFC5277], в <eventTime> помещается время, когда произошло событие.
Для динамической подписки все уведомляющие сообщений должны использовать транспортную сессию NETCONF, где был вызов RPC establish-subscription.
7. Динамическая подписка и отклики RPC Error
При возникновении ошибки RPC, как указано в параграфе 2.4.6 [RFC8639] и Приложении A [RFC8641], отклик NETCONF RPC должен включать элемент <rpc-error> [RFC6241] с указанными ниже сведениями об ошибке.
-
error-type application.
-
Узел error-tag, значением которого является строка, соответствующая связанному с ошибкой идентификатору. Для заданных в этом документе механизмов error-tag будет соответствовать идентификаторам из (1) параграфа 2.4.6 в [RFC8639], показанным ниже (базовые ошибки подписки)
Идентификатор ошибки |
error-tag |
---|---|
dscp-unavailable |
invalid-value |
encoding-unsupported |
invalid-value |
filter-unsupported |
invalid-value |
insufficient-resources |
resource-denied |
no-such-subscription |
invalid-value |
replay-unsupported |
operation-not-supported |
или (2) приложения A.1 к [RFC8641] для ошибок, связанных с конкретным хранилищем YANG
Идентификатор ошибки |
error-tag |
---|---|
cant-exclude |
operation-not-supported |
datastore-not-subscribable |
invalid-value |
no-such-subscription-resync |
invalid-value |
on-change-unsupported |
operation-not-supported |
on-change-sync-unsupported |
operation-not-supported |
period-unsupported |
invalid-value |
update-too-big |
too-big |
sync-too-big |
too-big |
unchanging-selection |
operation-failed |
-
Может включаться error-severity или error.
-
Узел error-app-tag, значением которого является строка, соответствующая связанному с ошибкой идентификатору, как указано в параграфе 2.4.6 [RFC8639] для ошибок общего типа и в приложении A.1 к [RFC8641] для подписок на хранилища данных. Используемый идентификатор зависит от вызова RPC, для которого возникла ошибка. Каждый идентификатор ошибки вставляется как error-app-tag в формате <modulename>:<identityname>. Примером корректного кодирования служит ietf-subscribed-notifications:no-such-subscription. Допустимые значения ошибок для разных RPC указаны ниже.
RPC |
Базовый идентификатор |
---|---|
establish-subscription |
establish-subscription-error |
modify-subscription |
modify-subscription-error |
delete-subscription |
delete-subscription-error |
kill-subscription |
delete-subscription-error |
resync-subscription |
resync-subscription-error |
-
В случаях ошибок при запросе establish-subscription или modify-subscription можно включать узел error-info, который может содержать в кодировке XML советы по установке параметров для повторения запроса RPC в будущем. Могут возвращаться структуры yang-data из [RFC8639] и [RFC8641], показанные ниже.
establish-subscription |
Советы в yang-data structure |
---|---|
target: event stream |
establish-subscription-stream-error-info |
target: datastore |
establish-subscription-datastore-error-info |
modify-subscription |
Советы в yang-data structure |
---|---|
target: event stream |
modify-subscription-stream-error-info |
target: datastore |
modify-subscription-datastore-error-info |
В структуру yang-data, помещенную в error-info, не следует включать необязательный лист reason, поскольку он будет избыточным с учётом сведений в error-app-tag.
В случае ошибок RPC delete-subscription, kill-subscription, resync-subscription не требуется включать error-info, поскольку subscription-id является единственным входным параметром RPC и советов о смена параметра не может быть.
8. Вопросы безопасности
Этот документ не создаёт новых проблем безопасности для динамических подписок в дополнение к рассмотренным в [RFC8639]. Но есть одно соображение, которое следует уточнить с учётом ориентированной на соединения природы NETCONF. В частности, если включающий ошибки или скомпрометированный подписчик NETCONF передаёт ряд запросов establish-subscription, эти подписки аккумулируются и могут потреблять излишние ресурсы системы. В таких случаях подписки можно прервать, закрывая соответствующую сессию NETCONF. Издатель может также приостановить часть активных подписок в сессии NETCONF для восстановления ресурсов и обеспечения нормальной работы других подписчиков.
9. Взаимодействие с IANA
Документ не требует действий IANA.
10. Литература
10.1. Нормативные документы
[RFC2119] Bradner, S., «Key words for use in RFCs to Indicate Requirement Levels», BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.
[RFC5277] Chisholm, S. and H. Trevino, «NETCONF Event Notifications», RFC 5277, DOI 10.17487/RFC5277, July 2008, <https://www.rfc-editor.org/info/rfc5277>.
[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>.
[RFC8174] Leiba, B., «Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words», BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8639] Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, E., and A. Tripathy, «Subscription to YANG Notifications», RFC 8639, DOI 10.17487/RFC8639, September 2019, <https://www.rfc-editor.org/info/rfc8639>.
[RFC8641] Clemm, A. and E. Voit, «Subscription to YANG Notifications for Datastore Updates», RFC 8641, DOI 10.17487/RFC8641, September 2019, <https://www.rfc-editor.org/info/rfc8641>.
[W3C.REC-xml-20081126] Bray, T., Paoli, J., Sperberg-McQueen, M., Maler, E., and F. Yergeau, «Extensible Markup Language (XML) 1.0 (Fifth Edition)», World Wide Web Consortium Recommendation REC-xml-20081126, November 2008, <https://www.w3.org/TR/2008/REC-xml-20081126>.
10.2. Дополнительная литература
[RFC8347] Liu, X., Ed., Kyparlis, A., Parikh, R., Lindem, A., and M. Zhang, «A YANG Data Model for the Virtual Router Redundancy Protocol (VRRP)», RFC 8347, DOI 10.17487/RFC8347, March 2018, <https://www.rfc-editor.org/info/rfc8347>.
[XPATH] Clark, J. and S. DeRose, «XML Path Language (XPath) Version 1.0», November 1999, <https://www.w3.org/TR/1999/REC-xpath-19991116>.
Приложение A. Примеры
Это приложение не является нормативным. Используемые идентификаторы подписок 22, 23, 39, 99 служат лишь примерами. В реальной среде значения id могут быть достаточно большими целыми числами.
A.1. Обнаружение потока событий
Как указано в [RFC8639], поток событий представляет продолжающийся набор событий, доступных для подписки. Клиент NETCONF может получить список доступных потоков событий от издателя NETCONF с помощью операции <get> для контейнера streams верхнего уровня, заданного в параграфе 3.9 [RFC8639]. Приведённый ниже пример XML [W3C.REC-xml-20081126] иллюстрирует получения списка доступных потоков событий.
<rpc message-id="101" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <get> <filter type="subtree"> <streams xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"/> </filter> </get> </rpc>
Рисунок 1. Запрос <get> для извлечения потоков событий.
После такого запроса издатель NETCONF возвращает список доступных потоков событий и дополнительную информацию, которая может содержаться в контейнере.
A.2. Динамические подписки
A.2.1. Организация динамической подписки
На рисунке 2 показаны два успешных вызова RPC establish-subscription, как описано в [RFC8639]. Первый вызов имеет идентификатор подписки 22, второй — 23.
+------------+ +-----------+ | Подписчик | | Издатель | +------------+ +-----------+ | | | Обмен возможностями | |<---------------------------->| | | | establish-subscription | |----------------------------->| (a) | RPC Reply: OK, id = 22 | |<-----------------------------| (b) | | | уведомление (для 22) | |<-----------------------------| | | | establish-subscription | |----------------------------->| | уведомление (для 22) | |<-----------------------------| | RPC Reply: OK, id = 23 | |<-----------------------------| | | | уведомление (для 22) | |<-----------------------------| | уведомление (для 23) | |<-----------------------------| | |
Рисунок 2. Несколько подписок в сессии NETCONF.
В качестве примера передаваемых сведений ниже представлены сообщения для взаимодействий (a) и (b) на рисунке 2 (рисунки 3 и 4).
<rpc message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <establish-subscription xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> <stream-xpath-filter xmlns:ex="https://example.com/events"> /ex:foo/ </stream-xpath-filter> <stream>NETCONF</stream> <dscp>10</dscp> </establish-subscription> </rpc>
Рисунок 3. Запрос establish-subscription (a).
Поскольку издатель NETCONF мог полностью выполнить запрос (a), он передаёт идентификатор воспринятой подписки в отклике (b)
<rpc-reply message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <id xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> 22 </id> </rpc-reply>
Рисунок 4. Запрос establish-subscription (b).
Если издатель NETCONF не модет полностью выполнить запрос или у подписчика нет прав на организацию подписки, издатель возвращает сообщение об ошибке RPC. Например, если заданное подписчиком значение dscp 10 (Рисунок 3) неприемлемо, издатель может вернуть показанное ниже сообщение.
<rpc-reply message-id="102" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <rpc-error> <error-type>application</error-type> <error-tag>invalid-value</error-tag> <error-severity>error</error-severity> <error-app-tag> ietf-subscribed-notifications:dscp-unavailable </error-app-tag> </rpc-error> </rpc-reply>
Рисунок 5. Неудачный вызов establish-subscription.
Подписчик может использовать полученные сведения в будущих попытках организовать подписку.
A.2.2. Изменение динамической подписки
Имеющуюся подписку можно изменить. На рисунке 6 показано согласование такого изменения за несколько обменов между подписчиком и издателем. Согласование включает отказ RPC с попыткой изменения подписки, отклик на него и последующее успешное изменение.
+------------+ +-----------+ | Подписчик | | Издатель | +------------+ +-----------+ | | | уведомление (для 23) | |<-----------------------------| | | | modify-subscription (id = 23)| |----------------------------->| (c) | RPC error (с советом) | |<-----------------------------| (d) | | | modify-subscription (id = 23)| |----------------------------->| | RPC Reply: OK | |<-----------------------------| | | | уведомление (для 23) | |<-----------------------------| | |
Рисунок 6. Модель взаимодействия при успешном изменении подписки.
Если изменяемая на рисунке 6 подписка является подпиской на хранилище данных в соответствии с [RFC8641], запрос на изменение (c) может выглядеть как на рисунке 7. Вносимые изменения включают применение фильтра XPath, а также установку интервала передачи.
<rpc message-id="303" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <modify-subscription xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications" xmlns:yp="urn:ietf:params:xml:ns:yang:ietf-yang-push"> <id>23</id> <yp:datastore-xpath-filter xmlns:ex="https://example.com/datastore"> /ex:foo/ex:bar </yp:datastore-xpath-filter> <yp:periodic> <yp:period>500</yp:period> </yp:periodic> </modify-subscription> </rpc>
Рисунок 7. Запрос изменения подписки на хранилище данных.
Если издатель NETCONF может выполнить оба запроса, он передаст положительный отклик для RPC. Если какое-либо из предложенных изменений издатель NETCONF не может выполнить, он передаёт отклик об ошибке RPC (d). Рисунок 8 показывает пример отклика об ошибке RPC для (d) с включением совета, указывающего другой интервал, который позволит внести изменение.
<rpc-reply message-id="303" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <rpc-error> <error-type>application</error-type> <error-tag>invalid-value</error-tag> <error-severity>error</error-severity> <error-app-tag> ietf-yang-push:period-unsupported </error-app-tag> <error-info> <modify-subscription-datastore-error-info xmlns="urn:ietf:params:xml:ns:yang:ietf-yang-push"> <period-hint> 3000 </period-hint> </modify-subscription-datastore-error-info> </error-info> </rpc-error> </rpc-reply>
Рисунок 8. Отказ modify-subscription с советом (d)
A.2.3. Удаление динамической подписки
Figure 9 demonstrates the deletion of a subscription. This subscription may have been to either a stream or a datastore.
<rpc message-id="103" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <delete-subscription xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> <id>22</id> </delete-subscription> </rpc>
Рисунок 9. delete-subscription.
Если издатель NETCONF может выполнить запрос, он возвращает отклик, указывающий успех.
Если издатель NETCONF не может выполнить запрос, он передаёт элемент <rpc-error>, указывающий, что изменение не прошло. На рисунке 10 показан корректный отклик для имеющегося идентификатора подписки, организованной в другой транспортной сессии NETCONF.
<rpc-reply message-id="103" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <rpc-error> <error-type>application</error-type> <error-tag>invalid-value</error-tag> <error-severity>error</error-severity> <error-app-tag> ietf-subscribed-notifications:no-such-subscription </error-app-tag> </rpc-error> </rpc-reply>
Рисунок 10. Неудачный вызов delete-subscription.
A.3. Уведомления о состоянии подписки
Издатель будет передавать уведомления о состоянии динамической подписки в соответствии с [RFC8639].
A.3.1. subscription-modified
В соответствии с параграфом 2.7.2 в [RFC8639] может передаваться уведомление subscription-modified через NETCONF, если меняется настроенный фильтр. Уведомление о смене состояния подписки кодируется в XML, как показано ниже.
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2007-09-01T10:00:00Z</eventTime> <subscription-modified xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> <id>39</id> <stream-xpath-filter xmlns:ex="https://example.com/events"> /ex:foo </stream-xpath-filter> <stream>NETCONF</stream> </subscription-modified> </notification>
Рисунок 11. Уведомление о состоянии подписки subscription-modified.
A.3.2. subscription-resumed и replay-complete
Возобновление подписки (subscription-resumedимеет вид
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2007-09-01T10:00:00Z</eventTime> <subscription-resumed xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> <id>39</id> </subscription-resumed> </notification>
Рисунок 12. Уведомление subscription-resumed.
Уведомление replay-complete очень похоже, но вместо subscription-resumed применяется replay-complete.
A.3.3. subscription-terminated и subscription-suspended
Уведомление subscription-terminated имеет вид
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2007-09-01T10:00:00Z</eventTime> <subscription-terminated xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> <id>39</id> <reason> suspension-timeout </reason> </subscription-terminated> </notification>
Рисунок 13. Уведомление о состоянии подписки subscription-terminated.
Уведомление subscription-suspended отличается лишь заменой subscription-terminated на subscription-suspended.
A.4. Примеры фильтров
В этом приложении даны примеры применения методов XPath и subtree для фильтрации содержимого записей о событиях. Примеры основаны на уведомлении YANG vrrp-protocol-error-event из модели данных YANG ietf-vrrp в [RFC8347]. Записи о событиях, создаваемые издателем на основе этой спецификации, могут иметь вид
<notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> <eventTime>2018-09-14T08:22:33.44Z</eventTime> <vrrp-protocol-error-event xmlns="urn:ietf:params:xml:ns:yang:ietf-vrrp"> <protocol-error-reason>checksum-error</protocol-error-reason> </vrrp-protocol-error-event> </notification>
Рисунок 14. Пример уведомления VRRP в соответствии с RFC 8347.
Предположим, что подписчик хочет организовать подписку, в которой предоставляются лишь записи о событиях, где checksum-error является частью события протокола резервирования виртуального маршрутизатора (Virtual Router Redundancy Protocol или VRRP). Предположим также, что издатель помещает такие записи в поток NETCONF. Для получения продолжающейся серии соответствующих записей о событиях подписчик может запросить применение фильтра XPath к потоку NETCONF. RPC establish-subscription для решения этой задачи может иметь вид
<rpc message-id="601" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <establish-subscription xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> <stream>NETCONF</stream> <stream-xpath-filter xmlns="urn:ietf:params:xml:ns:yang:ietf-vrrp"> /vrrp-protocol-error-event[ vrrp:protocol-error-reason="vrrp:checksum-error"] </stream-xpath-filter> </establish-subscription> </rpc>
Рисунок 15. Причина ошибки при организации подписки (XPath).
Дополнительные примеры фильтров XPath приведены в [XPATH].
Предположим, что вызов establish-subscription с рисунка 15 был воспринят, а позднее подписчик решил расширить подписку включением всех событий протокола VRRP (а не только с checksum-error). Подписчик может попытаться изменить подписку путём замены фильтра XPath на фильтр subtree, который будет передавать все события протокола VRRP. Такой вызов RPC modify-subscription может иметь вид
<rpc message-id="602" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> <modify-subscription xmlns="urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications"> <id>99</id> <stream-subtree-filter> <vrrp-protocol-error-event xmlns="urn:ietf:params:xml:ns:yang:ietf-vrrp"/> </stream-subtree-filter> </modify-subscription> </rpc>
Рисунок 16. Пример RPC modify-subscription.
Дополнительные примеры фильтров subtree приведены в параграфе 6.4 [RFC6241].
Благодарности
Авторы признательны Andy Bierman, Yan Gang, Sharon Chisholm, Hector Trevino, Peipei Guo, Susan Hares, Tim Jenkins, Balazs Lengyel, Martin Bjorklund, Mahesh Jethanandani, Kent Watsen, Qin Wu, Guangying Zheng за полезный вклад, комментарии и предложения .
Адреса авторов
Eric Voit Cisco Systems Email: evoit@cisco.com Alexander Clemm Futurewei Email: ludwig@clemm.org Alberto Gonzalez Prieto Microsoft Email: alberto.gonzalez@microsoft.com Einar Nilsen-Nygaard Cisco Systems Email: einarnn@cisco.com Ambika Prasad Tripathy Cisco Systems Email: ambtripa@cisco.comПеревод на русский язык
Николай Малых
1Internet Engineering Task Force — комиссия по решению инженерных задач Internet.
2Internet Engineering Steering Group — комиссия по инженерным разработкам Internet.