21. BGP атрибуты

Выбор лучшего маршрута

  • BGP по умолчанию не использует балансировку

  • Его задача - найти лучшую точку выхода из автономной системы

    • Балансировать трафик одного приложения между разными AS - плохая идея

    • Если хочется, в пределах AS балансировку можно делать с помощью IGP

  • Выбор лучшего маршрута основан на атрибутах

Основные атрибуты BGP

  • Маршрутизаторы обмениваются векторами матрик для путей

  • Вектор метрик в анонсе складывается с вектором соседа

Атрибут

Описание

Next Hop

IP-адрес Next Hop, меняется при отправке EBGP-соседу или политикой

AS Path

Список номеров AS для пути, дополняется при отправке EBGP-соседу

Local Preference

Приоритет маршрута в локальной AS, назначается политикой

MED

Приоритет маршрута в соседней AS, назначается или наследуется

Origin

Код происхождения маршрута, назначается или наследуется

Community

Список дополнительных меток, назначается политикой

Next Hop

  • Адрес, который устанавливается в RIB в качестве шлюза для сети

    • Обычно не меняется при передаче по IBGP

    • Обязан резолвится в RIB (хотя бы рекурсивно)

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

  • Устанавливается в собственный адрес для:

    • Анонсов локально импортированных маршрутов

    • EBGP-анонсов

AS Path

  • Список автономных систем, через которые проложен маршрут

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

    • Такая строка может содержать неожиданные знаки препинания

  • Чем меньше длина, тем лучше

  • На самом деле состоит из субкомпонентов

    • AS_SEQUENCE, AS_SET, AS_CONFED_SEQ, AS_CONFED_SET

  • При отправке маршрута EBGP-соседу AS_SEQUENCE дополняется номером собственной системы

  • Служит инструментом защиты от петель между AS

    • Маршрутизатор не примет от EBGP-маршрут, если в AS PATH указан номер его автономной системы

Local Preference

  • Приоритет маршрута в локальной автономной системе

    • Не отправляет соседям EBGP (маршруты получают LP по умолчанию)

  • Удобный инструмент выбора маршрута для исходящего трафика

  • 32-битное число (больше - лучше)

MED

  • Multi Exit Discriminator

  • Инструмент указания предпочтения маршрута для соседней AS

  • Предназначен для контроля входящего в нашу AS трафика

  • 32-битное число (меньше - лучше)

  • Часто наследуется от метрики IGP

  • Атрибут не очень удобен в использовании

    • Не передается EBGP-соседям, если изучен по IBGP

      • Обычно проставляется на пограничных роутерах

      • Распространяется только по соседней автономной системе

    • Сравнение имеет смысл у EBGP-маршрутов из одной AS

      • Основная польза - при DualHomed подключении

  • Часто для контроля входящего маршрута используют вместо MED

    • Атрибут Community

    • Технику AS Prepending (искусственное увеличение AS Path)

Community

  • Расширение функциональности BGP с помощью добавления меток

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

    • На самом деле атрибутов три, каждый для разных форматов меток:

      • Communities (RFC 1997) - записывается как <ASN>:<Value>, 16 бит ASN, 16 бит Value

      • Extended Communities (RFC 4360) - 16 бит ASN, несколько типов меток по 6 байт

      • Large Communities (RFC 8092) - 32 бита ASN, записывается <ASN>:<Value1>:<Value2>

  • Метка может обозначать все, что угодно, нужны договоренности

  • Некоторые известные "стандартные" метки

    • NO_EXPORT (65535:65281, 0xFFFFFF01) - не анонсировать EBGP-соседям

    • NO_ADVERTISE (65535:65281, 0xFFFFFF02) - не анонсировать никому

    • BLACKHOLE (65535:666, 0xFFFF029A) - установить Next Hop в Null0

Origin

  • Код происхождения маршрута в BGP (меньше - лучше)

  • Когда-то Origin позволял сосуществовать в Интернете BGP и EGP

    • EGP давно устарел, практического смысла сейчас не имеет

    • Правила хорошего тона предписывают анонсировать NLRI с ORIGIN=IGP

Origin

Обозначение

Смысл

0

IGP

NLRI принадлежит исходной AS

1

EGP

NLRI в исходной AS получена по EGP

2

INCOMPLETE

NLRI в исходной AS появилась другим способом

Свойства атрибутов

  • Well-known mandatory - атрибут обязан присутствовать в UPDATE

  • Well-known discretionary - атрибут может не передаваться в UPDATE, но обязан поддерживаться в любой реализации

  • Optional Transitive - атрибут может не поддерживаться в конкретной реализации, но в люом случае должен передаваться соседям

  • Optional Non-transitive - если атрибут не поддерживается в конкретной реализации, он игнорируется и соседям не передается

Атрибут

Свойства

Next Hop

Well-known mandatory

AS Path

Well-known mandatory

Local Pref

Well-known discretionary (mandatory в IBGP, отсутствует в EBGP)

MED

Optional Non-transitive (часто отсутствует, может быть удален)

Origin

Well-known mandatory

Community

Optional Transitive (часто присутствует, сохраняется при передаче)

Best Path Selection

При выборе маршрута RFC 4271 предписывает следовать следующему алгоритму:

  1. Выбираются только доступные маршруты

    1. Next Hop доступен

    2. AS Path не содержит номер свой системы

  2. Маршруты с бОльшим Local Preference

  3. Маршруты с меньшим количеством AS в AS Path

  4. Маршруты с меньшим Origin (IGP<EGP<INCOMPLETE)

  5. Маршруты с меньшим MED

    1. MED сравнивается только для маршрутов, полученных из одной AS

    2. Если MED отсутствует, полагать его значение наименьшим возможным

  6. Маршруты, полученные по EBGP

  7. Маршруты с меньшей IGP-метрикой до Next Hop

  8. Маршруты, полученные от соседа с бОльшим Router-ID

  9. Маршрут, полученные от соседа с бОльшим IP-адресом

Last updated