Network Working Group J. Scudder
Request for Comments: 5492 Juniper Networks
Obsoletes: 3392 R. Chandra
Category: Standards Track Sonoa Systems
February 2009
Анонсирование возможностей в BGP-4
Capabilities Advertisement with BGP-4
Статус документа
В этом документе содержится спецификация протокола, предложенного сообществу Internet. Документ служит приглашением к дискуссии в целях развития и совершенствования протокола. Текущее состояние стандартизации протокола вы можете узнать из документа Internet Official Protocol Standards (STD 1). Документ может распространяться без ограничений.
Авторские права
Авторские права (Copyright (c) 2009) принадлежат IETF Trust и лицам, указанным в качестве авторов документа. Все права сохраняются.
К этому документу применимы права и ограничения, перечисленные в BCP 78 и IETF Trust Legal Provisions и относящиеся к документам IETF (http://trustee.ietf.org/license-info), на момент публикации данного документа. Прочтите упомянутые документы внимательно.
Этот документ может содержать материалы из документов IETF или участников IETF1, опубликованных или публично доступных до 10 ноября 2008 г. Лицо, контролирующие авторские права на некоторые из таких материалов могли не предоставить IETF Trust прав на изменение таких материалов вне контекста стандартизации IETF2. Без получения соответствующей лицензии от лиц, контролирующих авторские права на такие материалы, этот документ не может быть изменен вне контекста стандартизации IETF, а также не могут открываться производные работы за пределами контекста стандартизации. Исключением является лишь форматирование документа для публикации в качестве RFC или перевод на другие языки.
Аннотация
В этом документе определяется новый дополнительный параметр3 Capabilities, который предположительно, будет упрощать добавление новых возможностей в протокол BGP4 путем анонсирования этих возможностей партнеру без разрыва соединения BGP.
Этот документ заменяет собой RFC 3392.
1. Введение
Базовая спецификация BGP-4 [RFC4271] требует от узла BGP разрыва соединения с партнером при получении от того сообщения OPEN с одним или несколькими нераспознанными значениями дополнительных параметров. Это осложняет добавление новых возможностей в BGP.
Данная спецификация определяет Optional Parameter и правила обработки, позволяющие узлам BGP согласовывать возможности в сообщениях OPEN. Пара узлов BGP, поддерживающих данную спецификацию, может организовать партнерские отношения даже при представлении неподдерживаемых возможностей, если поддерживаются все возможности, требуемые для организации партнерства.
2. Описание требований
Ключевые слова необходимо (MUST), недопустимо (MUST NOT), требуется (REQUIRED), нужно (SHALL), не нужно (SHALL NOT), следует (SHOULD), не следует (SHOULD NOT), рекомендуется (RECOMMENDED), возможно (MAY), необязательно (OPTIONAL) в данном документе интерпретируются в соответствии с RFC 2119 [RFC2119].
3. Обзор
Когда узел BGP [RFC4271], поддерживающий анонсирование возможностей, передает своему партнеру сообщение OPEN, это сообщение может включать дополнительный параметр Capabilities. Данный параметр содержит список возможностей, поддерживаемых узлом.
Узел BGP определяет поддерживаемые партнером возможности, проверяя список возможностей, включенных в дополнительный параметр Capabilities сообщения OPEN, которое данный узел получил от своего партнера.
Узел BGP, поддерживающий ту или иную возможность, может использовать ее при работе со своим партнером после того, как определит (как описано выше), что партнер также поддерживает эту возможность. Проще говоря, та или иная возможность может поддерживаться для соединения, если ее анонсируют оба партнера. Если любой из партнеров не анонсирует ту или иную возможность, последняя не может использоваться.
Узел BGP считает, что его партнер не поддерживает ту или иную возможность, если в ответ на сообщение OPEN с дополнительным параметром Capabilities приходит сообщение NOTIFICATION, содержащее Error Subcode = Unsupported Optional Parameter (это следствие базовой спецификации BGP-4 [RFC4271], а не новое требование). В таких случаях узлу следует предпринять попытку заново организовать соединение BGP с этим партнером без использования дополнительного параметра Capabilities.
Если узел BGP, поддерживающий ту или иную возможность, определяет, что его партнер не поддерживает эту возможность, узел может передать партнеру сообщение NOTIFICATION и разорвать соединение с ним (см. параграф 5. Расширение для обработки ошибок). Например, узлу BGP может потребоваться разрыв соединения, если он организовал это соединение для обмена маршрутами IPv6 и узнал, что партнер не поддерживает многопротокольные расширения для BGP-4 [RFC4760]. В таких случаях в поле Error Subcode этого сообщения следует поместить значение Unsupported Capability. Сообщение должно включать возможность (возможности), которая заставила узел передать это сообщение. Решение о передаче сообщения и разрыве соединения с партнером узел принимает по своему усмотрению. При разрыве соединения не следует предпринимать попытки его автоматического восстановления.
Если узел BGP получает от своего партнера анонс возможности, которую он не поддерживает или не может распознать, данный узел должен игнорировать эту возможность. В частности, недопустимо передавать сообщение Unsupported Capability NOTIFICATION и разрывать сессию BGP в ответ на получение анонса возможности, не поддерживаемой локальным узлом.
4. Дополнительный параметр Capabilities (тип 2)
Этот дополнительный параметр (Optional Parameter) используется узлом BGP для передачи своему BGP-партнеру списка поддерживаемых данным узлом возможностей. Представление значений BGP Optional Parameter описано в параграфе 4.2 [RFC4271]. Дополнительный параметр Capabilities относится к типу 2.
+----------------------------+ | Capability Code (1 октет) | +----------------------------+ | Capability Length (1 октет)| +----------------------------+ | Capability Value (перемен.)| ~ ~ +----------------------------+
Параметр включает один или множество триплетов <Capability Code, Capability Length, Capability Value>, каждый из которых представляется в формате, показанном справа.
Использование и значение полей описано ниже.
Capability Code (код возможности)
Capability Code представляет собой 1-октетное поле, однозначно идентифицирующее данную возможность.
Capability Length (размер)
Capability Length представляет собой 1-октетное поле, указывающее размер поля Capability Value в октетах.
Capability Value (значение)
Поле Capability Value имеет переменный размер и интерпретируется в зависимости от кода возможности (Capability Code).
Узлу BGP не следует включать в сообщения дубликаты возможностей с совпадающими значениями полей Capability Code, Capability Length, Capability Value. Отметим однако, что обработка дубликатов не требует специальных действий, поскольку дополнительный экземпляр возможности ничего не изменяет в списке анонсируемых возможностей; поэтому узел BGP должен быть готов к восприятию сообщений со множеством экземпляров одной возможности.
Узлы BGP могут включать более одного экземпляра возможности (заданной значением Capability Code) с отличным от нуля значением поля Capability Length, но с разными значениями Capability Value (значения поля Capability Length могут совпадать или различаться). Обработка таких экземпляров определяется значением поля Capability Code и должна быть описана в документе, содержащем спецификации новой возможности.
Дополнительный параметр Capabilities (OPEN Optional Parameter Type 2) следует включать в сообщение OPEN только один раз. Если узел BGP хочет включить в сообщение OPEN множество возможностей, ему следует делать это, как описано выше, перечисляя все возможности с использованием формата TLV в одном параметре Capabilities. Однако для совместимости с более ранними версиями узел BGP должен быть готов к получению сообщений OPEN содержащих множество параметров Capabilities, каждый из которых содержит TLV для одной или множества возможностей. Набор возможностей следует обрабатывать одинаково во всех случаях независимо от того, получен этот набор в одном параметре Capabilities сообщения OPEN или распределен по множеству параметров Capabilities.
5. Расширение для обработки ошибок
В этом документе определено новый субкод ошибки (Error Subcode) – Unsupported Capability (неподдерживаемая возможность) со значением 7. В поле данных (Data) сообщения NOTIFICATION должен включаться список возможностей, которые вызвали генерацию этого сообщения. В этом случае каждая из включаемых в список возможностей кодируется так же, как в сообщении OPEN.
Как указано в параграфе 3. Обзор, сообщение Unsupported Capability NOTIFICATION обеспечивает для узла BGP способ уведомления о том, что его партнер не поддерживает возможность, без которой партнеры не смогут работать. Недопустимо использовать такие уведомления в случаях, когда узел BGP получает анонс возможности, который он не способен понять; такие анонсы должны игнорироваться.
6. Согласование с IANA
В этом документе определен новый дополнительный параметр Capability с полем Capability Code. IANA поддерживает реестр значений Capability Code. Нулевое (0) значение Capability Code является резервным. Коды возможностей в диапазоне от 1 до 63 выделяются IANA после обзора IETF («IETF Review»), как описано в документе [RFC5226]. Коды из диапазона 64 — 127 распределяются IANA в порядке поступления запросов (процедура «First Come First Served»), описанном в документе [RFC5226]. Коды от 128 до 255 предназначены для приватного использования («Private Use»), как определено в [RFC5226].
IANA поддерживает реестр дополнительных параметров сообщений OPEN, называемый «BGP OPEN Optional Parameter Types». Дополнительные параметры идентифицируются однооктетными целыми числами без знака Parameter Type. Значения типов (0 — резерв) распределяются в соответствии с процедурой «IETF Review», определенной в [RFC5226].
В настоящее время реестр включает два значения Parameter Type:
- Parameter Type 1: Authentication свидетельство подлинности (не рекомендуется использовать) [RFC4271] [RFC5492]
- Parameter Type 2: Capabilities — возможности [RFC5492]
7. Вопросы безопасности
Данное расширение не оказывает влияния на проблемы безопасности, связанные с протоколом BGP [RFC4272].
8. Благодарности
Авторы выражают свою признательность членам рабочей группы IDR, а также IESG и его управлениям за просмотр документа и комментарии.
9. Литература
9.1. Нормативные документы
[RFC2119] Bradner, S., «Key words for use in RFCs to Indicate Requirement Levels», BCP 14, RFC 2119, March 1997.
[RFC4271] Rekhter, Y., Li, T., and S. Hares, «A Border Gateway Protocol 4 (BGP-4)», RFC 4271, January 2006.
[RFC5226] Narten, T. and H. Alvestrand, «Guidelines for Writing an IANA Considerations Section in RFCs», BCP 26, RFC 5226, May 2008.
9.2. Дополнительная литература
[RFC4272] Murphy, S., «BGP Security Vulnerabilities Analysis», RFC 4272, January 2006.
[RFC4760] Bates, T., Chandra, R., Katz, D., and Y. Rekhter, «Multiprotocol Extensions for BGP-4», RFC 4760, January 2007.
Приложение A. Сравнение RFC 2842 и RFC 3392
В дополнение к незначительным редакторским правкам в RFC 3392 разъяснен вопрос обработки множества экземпляров анонса одной возможности.
Приложение B. Сравнение RFC 3392 с данным документом
В этом документе внесены незначительные редакторские правки, обновлены ссылки, разъяснено использование сообщений Unsupported Optional Parameter NOTIFICATION и обработка множества параметров Capabilities в сообщении OPEN, а также изменен уровней требований в ряде случаев со следует на должно (MUST взамен SHOULD).
Адреса авторов
John G. Scudder
Juniper Networks
EMail: jgs@juniper.net
Ravi Chandra
Sonoa Systems
EMail: rchandra@sonoasystems.com
Перевод на русский язык
Николай Малых
1В оригинале — IETF Contributions. Прим. перев.
2В оригинале — IETF Standards Process. Прим. перев.
3Optional Parameter.
4Border Gateway Protocol — протокол граничного шлюза.