Открыть сервис

Протокол BGP

BGP (Border Gateway Protocol, протокол граничного шлюза) — это протокол динамической маршрутизации, относящийся к классу протоколов внешних шлюзов (EGP). Основной функцией BGP является обмен информацией о достижимости сетей между автономными системами (AS) в глобальной сети Интернет. BGP является де-факто стандартом для маршрутизации между различными интернет-провайдерами и крупными корпоративными сетями, обеспечивая связность всей сети Интернет.

История

Разработка BGP началась в конце 1980-х годов в ответ на рост масштабов Интернета и неэффективность предшествующего протокола — EGP (Exterior Gateway Protocol). Первая версия, BGP-1, была описана в RFC 1105 в 1989 году. Ключевым нововведением стало использование вектора пути (path vector), а не метрик расстояния, как в RIP, или состояния каналов, как в OSPF. Это позволило BGP учитывать политики маршрутизации, а не только топологию сети.

В 1990 году вышла версия BGP-2 (RFC 1163), а в 1991 — BGP-3 (RFC 1267). Современная версия, BGP-4, была стандартизирована в 1994 году (RFC 1654, затем обновлён в RFC 1771 и RFC 4271). Основным отличием BGP-4 стала поддержка бесклассовой междоменной маршрутизации (CIDR) и агрегации маршрутов, что позволило замедлить рост таблиц маршрутизации. С тех пор протокол неоднократно дополнялся расширениями, такими как поддержка IPv6 (MP-BGP, RFC 4760), маршрутизация на основе политик (BGP Communities) и защита от атак (RPKI, BGPsec).

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

BGP работает на прикладном уровне модели OSI (уровень 4), используя TCP-порт 179 для установления соединения между маршрутизаторами. Это отличает его от большинства других протоколов маршрутизации, которые работают на сетевом уровне. BGP-соединение устанавливается между двумя маршрутизаторами, называемыми пирами (peers) или соседями (neighbors). После установления TCP-сессии пиры обмениваются сообщениями OPEN, содержащими номера AS, версии протокола и параметры аутентификации.

Типы сообщений

BGP использует четыре основных типа сообщений:

  • OPEN — инициирует соединение и согласовывает параметры.
  • UPDATE — передаёт информацию о новых маршрутах, их атрибутах и отзывает старые маршруты.
  • KEEPALIVE — подтверждает активность соединения (отправляется каждые 30 секунд по умолчанию).
  • NOTIFICATION — сообщает об ошибке и закрывает соединение.

Атрибуты маршрутов

Каждый маршрут в BGP сопровождается набором атрибутов, которые определяют политику выбора наилучшего пути. Ключевые атрибуты включают:

  • AS_PATHсписок автономных систем, через которые прошёл маршрут (используется для обнаружения петель).
  • NEXT_HOPIP-адрес следующего маршрутизатора на пути к сети назначения.
  • LOCAL_PREF — локальное предпочтение маршрута (используется для выбора выходящего трафика).
  • MULTI_EXIT_DISC (MED)метрика, используемая для выбора входящего трафика между несколькими точками подключения.
  • COMMUNITY — тег для группировки маршрутов и применения политик.

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

При получении нескольких маршрутов к одной сети BGP выбирает наилучший на основе последовательности критериев (в порядке приоритета):

  1. Наибольшее значение LOCAL_PREF.
  2. Кратчайший AS_PATH.
  3. Наименьший ORIGIN (IGP предпочтительнее EGP, EGP предпочтительнее INCOMPLETE).
  4. Наименьший MED.
  5. Предпочтение маршрутов, полученных через eBGP (внешний BGP), а не iBGP (внутренний BGP).
  6. Наименьшая стоимость до NEXT_HOP (метрика IGP).
  7. Наименьший IP-адрес маршрутизатора-отправителя.

Классификация

BGP делится на два основных типа в зависимости от расположения пиров:

eBGP (External BGP)

Используется для обмена маршрутами между разными автономными системами. Пиры eBGP обычно находятся в разных AS и подключаются напрямую (через одно физическое соединение). eBGP применяется для связи между интернет-провайдерами, а также между провайдером и клиентом. По умолчанию TTL (Time To Live) в eBGP-пакетах равен 1, что предотвращает распространение маршрутов за пределы прямого соединения.

iBGP (Internal BGP)

Используется для обмена маршрутами внутри одной автономной системы. Все маршрутизаторы внутри AS должны быть соединены в полную сетку (full mesh) или использовать маршрутизаторы-ретрансляторы (route reflectors) для избежания петель. iBGP не изменяет AS_PATH, что требует дополнительных механизмов для предотвращения циклов.

Применение

BGP является основой маршрутизации в Интернете. Он используется для:

  • Межпровайдерского взаимодействия — провайдеры обмениваются маршрутами, чтобы обеспечить связность между своими сетями.
  • Мультихоминга (multihoming) — подключение сети к нескольким провайдерам для повышения отказоустойчивости и балансировки нагрузки.
  • Трафика инжиниринга — управление путями трафика с помощью атрибутов (например, LOCAL_PREF, MED, Communities).
  • VPN-сервисовMPLS VPN и VPLS используют MP-BGP для передачи информации о виртуальных сетях.
  • CDN и облачных сервисов — BGP позволяет балансировать нагрузку между географически распределёнными серверами.

Безопасность

BGP изначально не имел встроенных механизмов безопасности, что делает его уязвимым для атак. Основные угрозы включают:

  • Угон маршрутов (BGP hijacking) — злоумышленник объявляет маршрут к чужой сети, перенаправляя трафик на себя.
  • Фальсификация AS_PATH — изменение пути для обхода фильтров.
  • Атаки типа «человек посередине» — перехват трафика через подмену NEXT_HOP.

Для защиты используются:

  • RPKI (Resource Public Key Infrastructure) — инфраструктура для проверки принадлежности IP-адресов и AS-номеров.
  • BGPsec — расширение, добавляющее цифровые подписи к сообщениям UPDATE.
  • Фильтрация префиксов — настройка списков разрешённых и запрещённых маршрутов.
  • Мониторинг — системы обнаружения аномалий, такие как BGPmon.

Критика

BGP критикуется за сложность конфигурации и управления, особенно в крупных сетях. Отсутствие встроенной безопасности остаётся серьёзной проблемой: несмотря на внедрение RPKI, многие сети не используют его. Протокол также не поддерживает автоматическое обнаружение соседей и требует ручной настройки пиров. Кроме того, BGP медленно сходится при изменениях топологии, что может приводить к временным потерям связности.

Интересные факты

  • Таблица маршрутизации BGP в глобальном Интернете превышает 1 миллион записей (по состоянию на 2024 год).
  • BGP-сообщения могут быть размером до 4096 байт, что ограничивает количество маршрутов в одном UPDATE.
  • Протокол используется не только в Интернете, но и в частных сетях, например, для связи между дата-центрами крупных компаний.

Источники

  • RFC 4271 — A Border Gateway Protocol 4 (BGP-4)
  • RFC 4760 — Multiprotocol Extensions for BGP-4
  • RFC 8205 — BGPsec Protocol Specification
  • Документация Cisco: «BGP Design and Implementation»
  • Книга: «BGP in the Data Center» (O'Reilly Media, 2017)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →