19. BGP

Определение

  • Border Gateway Protocol v4, RFC 4271 и много других

    • Протокол динамической маршрутизации класса EGP

    • Наследник протокола EGP (Exterior Gateway Protocol, RFC 827)

    • Работает между автономными системами

    • Multiporotocol Extensions (MP-BGP, RFC 4760)

  • Использует TCP-подключение на порт 179

  • Масштабируемый и безопасный

    • Создан для работы с миллионами маршрутов

    • Создан для работы с недоверенными пирами

    • Не создан для быстрой сходимости

Особенности IGP и EGP

  • В своей AS все устройства находятся под общим контролем

    • Любые устройства - доверенные

    • Разумное и предсказуемое количество префиксов

    • Трафик отправляется по оптимальному маршруту

    • Скорость сходимости сети важна и подконтрольна

    • Возможна перенастройка при необходимости

    • Конкретная зона ответственности

  • При стыке с чужими AS все наоборот

Номера AS

  • Важный параметр для работы BGP

  • Изначально определен как 16-битное число (0-65535)

  • В 2007 году расширен до 32 бит (поддержка обязательна с 2010 года)

    • Нотация ASPLAIN - одно десятичное число ( например, 65550)

    • Нотация ASDOT - два 16-битных десятичных числа через точку (например 1.14)

  • Распределяются IANA через региональные регистраторы (RIR)

    • Зарезервированы: 0, 65535, 65535.65535

    • Значения для использования документации: 64496-64511 и 1.1-1.15

    • Частные номера: 64512-65534, 64086.59904 - 65535.65534

Особенности BGP

  • BGP принимает "чужие" маршруты

  • BGP выбирает один лучший маршрут до сети (best path)

    • Выбор основывается на атрибутах пути, которые не отражают физические свойства маршрута; лучший - не обязательно самый быстрый

    • Исходящий трафик можно контролировать, выбирая лучший маршрут

  • BGP анонсирует "свои" префиксы

    • Пользуются анонсируемыми нами маршрутами наши пиры

    • Контролировать выбор маршрута пирами в общем случае нельзя

  • Самое главное в BGP - политики

    • Политики приема маршрутов от пира

    • Политики выбора маршрутов для отправки пиру

    • Политики модификации маршрутов и выбора лучшего маршрута

Принцип работы BGP

  • Path Vector Algorithm

    • Дистанционно-векторный алгоритм дополнен информацией о пути трафика

    • Роутеры получают часть информации о топологии (но не саму топологию)

  • BGP отправляет в анонсах лучшие пути трафика и их атрибуты

    • Префиксы, которые доступны по этому пути

    • Список автономных систем на пути

Характеристики BGP

  • Использует TCP, порт 179

    • Требует ручного прописывания соседей

    • Keepalive-сообщения для проверки соседства

  • Огромный вектор метрик (атрибутов)

    • AS-Path, Local Preference, MED, Nex-hop, Origin и т. д.

  • IP-адреса и номера AS соседей нужно прописывать вручную

Сообщения BGP

  • В TCP-сессии BGP обменивается следующими сообщениями:

    • Open: согласование параметров соседства

    • Keepalive: проверка соседства

    • Update: передача маршрутной информации

    • Notification: завершение сессии

eBGP и iBGP

  • BGP, как протокол EGP, рассчитан на работу в определенных условиях

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

  • Некоторые BGP-пиры могут быть из своей автономной системы

    • eBGP - сосед из чужой AS, режим тотального недоверия

    • iBGP - сосед из своей AS, режим частичного доверия

    • Протокол один и тот же, разные именно режимы работы

Характеристики EBGP и IBGP соседств

  • Exterior BGP Neighborship

    • Соседство между пирами разных AS

    • Должны быть в одном канале

    • Атрибуты модифицируются отправителем

      • В первую очередь AS-Path и Next-Hop

  • Interior BGP Neighborship

    • Соседство между пирами одной AS

    • Могут соединяться через транзитные роутеры

      • Требует IGP для нахождения пути до соседей

      • Требует полносвязность соседств (Full Mesh между всеми пирами)

    • Атрибуты не модифицируется при отправке

IBGP и Next-Hop

  • При отправке маршрутов IBGP-соседу атрибуты не меняются

    • Как следствие, атрибут Next Hop для внешних маршрутов будет сохраняться

    • Обычно у IBGP-соседей нет маршрутов до этих адресов

  • Два варианта решения проблемы

    • Импортировать адреса EBGP-соседей в IGP

    • Поменять адрес Next-Hop перед отправкой маршрутов IBGP-соседям

Дизайн соседства IBGP

  • Маршруты от IBGP-соседей не передаются другим IBGP-соседям

    • Между любыми двумя роутерами AS требуется соседство

    • На каждом роутере может быть много адресов

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

    • Адреса анонсируются в IGP

    • Отказ отдельного канала не влияет на связь

    • Одна сессия на каждую пару роутеров

  • По умолчанию IP-пакеты до EBGP-соседа отправляются с TTL=1

    • А принимаются - с любым

    • Иногда это неудобно (если нужно поднять сессию с loopback)

    • Иногда это небезопасно (можно устроить SYN DoS атаку)

  • Проблему можно решить двумя способами:

    • EBGP Multihop предписывает отправлять пакеты с заданным TTL

    • BGP TTL Security предписывает отправлять пакеты всегда с TTL=255

      • А вот принимать - только с указанным, это легко проверить и тяжело подделать

      • Generalized TTL Security Mechanism

      • Нужно включать с обеих сторон

Состояние соседства BGP

  • Idle - роутер не пытается установить соседство

    • Нет маршрута до соседа, наложенные санкции и т. д.

  • Active - отправлен TCP SYN, ждем корректный ACK для отправки Open

  • Connect - получен TCP SYN, ждем корректный ACK для отправки Open

  • OpenSent - отправлено Open

  • OpenConfirm - получено корректное Open, ждем Keepalive

  • Established - все в порядке, соседство установлено

Проблемы с установлением соседства

  • Неправильный IP-адрес соседа

    • Также недоизученный в IGP адрес IBGP-соседа

  • Неправильный IP-адрес источника

    • Также недопрописанное соседство на соседе

  • Ошибки в указании номеров AS

    • Open будет принято только от правильного IP-адреса и с правильной AS

Last updated