Border Gateway Protocol¶
Border Gateway Protocol (BGP) — это протокол динамической маршрутизации, относящийся к классу протоколов внешних шлюзов (EGP), предназначенный для обмена информацией о маршрутах между автономными системами (AS) в глобальной сети Интернет. Основной функцией BGP является обеспечение связности между различными сетями, управление трафиком и выбор оптимальных путей передачи данных на основе набора политик, а не только метрик расстояния или скорости канала. BGP является единственным протоколом, используемым для маршрутизации между автономными системами в публичном Интернете.
¶История
Протокол BGP был разработан в конце 1980-х годов как замена устаревшему протоколу внешних шлюзов (EGP), который не мог справляться с ростом и сложностью сети Интернет. Первая версия, BGP-1, была описана в RFC 1105 (1989 год). Вскоре последовали версии BGP-2 (RFC 1163, 1990) и BGP-3 (RFC 1267, 1991). Современная версия, BGP-4, была стандартизирована в RFC 1771 (1995 год) и впоследствии уточнена в RFC 4271 (2006 год). Основным нововведением BGP-4 стала поддержка бесклассовой междоменной маршрутизации (CIDR), что позволило агрегировать IP-адреса и существенно замедлить рост таблиц маршрутизации.
¶Принцип работы
BGP функционирует на прикладном уровне модели OSI (уровень 7) и использует транспортный протокол TCP (порт 179) для установления и поддержания соединений между маршрутизаторами. Протокол работает в режиме «путь-вектор» (path-vector), что означает, что каждый маршрут (префикс) передаётся вместе с атрибутами, описывающими путь к нему через последовательность автономных систем (AS_PATH). Это позволяет избежать петель маршрутизации и даёт администраторам гибкие инструменты для управления трафиком.
¶Типы BGP-сессий
Различают два основных типа BGP-сессий:
- Внешний BGP (eBGP) — сессия между маршрутизаторами, принадлежащими разным автономным системам. Используется для обмена маршрутами между провайдерами или между провайдером и клиентом.
- Внутренний BGP (iBGP) — сессия между маршрутизаторами внутри одной автономной системы. Необходим для синхронизации информации о внешних маршрутах между всеми маршрутизаторами AS. В iBGP действует правило: маршруты, полученные от одного iBGP-соседа, не передаются другим iBGP-соседям (правило «полная связность»). Для обхода этого ограничения часто используют маршрутизаторы-отражатели (Route Reflectors) или конфедерации.
¶Атрибуты маршрутов
BGP использует множество атрибутов, которые влияют на выбор наилучшего пути. Основные из них:
- AS_PATH — последовательность номеров AS, через которые прошёл маршрут. Используется для предотвращения петель и как один из критериев выбора пути (чем короче путь, тем предпочтительнее).
- NEXT_HOP — IP-адрес следующего маршрутизатора, на который следует отправлять пакеты для данного маршрута.
- LOCAL_PREF — локальный приоритет (вес) маршрута внутри AS. Чем выше значение, тем предпочтительнее маршрут.
- MED (Multi-Exit Discriminator) — метрика, используемая для указания предпочтительного входа в AS при наличии нескольких точек подключения.
- ORIGIN — указывает, как маршрут был внесён в BGP (IGP, EGP или неполный).
- COMMUNITY — тег, позволяющий группировать маршруты и применять к ним общие политики.
¶Выбор наилучшего пути
Процесс выбора наилучшего пути в BGP является многоступенчатым. При наличии нескольких маршрутов к одному и тому же префиксу маршрутизатор последовательно сравнивает их по следующим критериям (в порядке убывания приоритета):
- Наивысший вес (локальный параметр Cisco).
- Наивысшая LOCAL_PREF.
- Маршрут, объявленный локально (сеть, подключённая напрямую).
- Кратчайший AS_PATH.
- Наименьший ORIGIN (IGP < EGP < неполный).
- Наименьшая MED.
- Предпочтение eBGP перед iBGP.
- Наименьшая метрика до NEXT_HOP (по IGP).
- Наименьший IP-адрес маршрутизатора-соседа.
¶Применение
BGP является основой маршрутизации в Интернете. Он используется:
- Провайдерами интернет-услуг (ISP) — для обмена маршрутами между собой и с клиентами.
- Крупными корпоративными сетями — для подключения к нескольким провайдерам (мультихоминг) и управления трафиком.
- Центрами обработки данных (ЦОД) — для балансировки нагрузки и обеспечения отказоустойчивости.
- Сетями доставки контента (CDN) — для оптимизации маршрутов к пользователям.
¶Уязвимости и проблемы безопасности
BGP был разработан в эпоху, когда безопасность не была приоритетом, и поэтому имеет ряд уязвимостей. Основные угрозы:
- Угон маршрутов (BGP hijacking) — злоумышленник объявляет префикс, принадлежащий другой сети, и перехватывает трафик. Примеры: инцидент с YouTube в 2008 году (пакистанский провайдер случайно объявил маршрут к YouTube) и атака на криптовалютные сервисы в 2018 году.
- Утечка маршрутов (route leak) — некорректная передача маршрутов, полученных от одного соседа, другому соседу, что может привести к перегрузке каналов и нарушению связности.
- Подделка атрибутов — изменение AS_PATH или других атрибутов для манипуляции трафиком.
Для защиты от этих угроз разработаны механизмы, такие как RPKI (Resource Public Key Infrastructure) — инфраструктура открытых ключей для проверки права на объявление префиксов, и BGPsec — расширение протокола, добавляющее цифровые подписи к маршрутам. Однако их внедрение в глобальном масштабе остаётся медленным.
¶Критика
BGP критикуется за сложность конфигурации, отсутствие встроенных механизмов безопасности и медленную сходимость (convergence) при изменениях топологии сети. Также отмечается, что протокол основан на доверии между операторами, что делает его уязвимым для человеческих ошибок и злонамеренных действий. Некоторые эксперты предлагают заменить BGP на более современные протоколы, такие как LISP (Locator/ID Separation Protocol) или SDN-решения, но полный переход на альтернативы пока не произошёл из-за масштаба и инерции существующей инфраструктуры.
¶Интересные факты
- BGP-таблица маршрутизации (полная таблица Интернета) содержит более 900 000 префиксов (по состоянию на 2024 год) и продолжает расти.
- Крупнейшие сбои в Интернете часто связаны с ошибками в конфигурации BGP, например, сбой в работе Facebook (организация признана экстремистской и запрещена в РФ) в 2021 году, когда из-за ошибки BGP были отозваны маршруты к DNS-серверам компании.
- Протокол BGP используется не только в Интернете, но и в частных сетях MPLS VPN для обмена маршрутами между клиентами.
¶Источники
- RFC 4271 — A Border Gateway Protocol 4 (BGP-4)
- RFC 4456 — BGP Route Reflection
- RFC 5065 — Autonomous System Confederations for BGP
- RFC 8205 — BGPsec Protocol Specification
- Стивен Хейлби, «Справочник по BGP» (BGP Design and Implementation)
- Материалы курса «Computer Networks» (Стэнфордский университет)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


