BGP-4
BGP-4 (Border Gateway Protocol версии 4) — это протокол динамической маршрутизации, относящийся к классу протоколов внешних шлюзов (EGP), используемый для обмена информацией о маршрутах между автономными системами (AS) в глобальной сети Интернет. Является единственным де-факто стандартом для организации междоменной маршрутизации, обеспечивая связность между различными провайдерами, корпоративными сетями и дата-центрами. BGP-4 был определён в RFC 4271 (2006 год) и заменил более ранние версии BGP, включая BGP-3.
История
Разработка протокола BGP началась в конце 1980-х годов в ответ на рост Интернета и необходимость замены устаревшего протокола EGP (Exterior Gateway Protocol), который не справлялся с управлением маршрутами в быстро расширяющейся сети. Первая версия BGP (BGP-1) была описана в RFC 1105 в 1989 году, а BGP-2 — в RFC 1163 (1990). Версия BGP-3 появилась в 1991 году (RFC 1267).
Основным достижением BGP-4, представленного в RFC 1654 (1994) и окончательно стандартизированного в RFC 4271, стало введение поддержки бесклассовой междоменной маршрутизации (CIDR). Это позволило агрегировать IP-адреса и значительно сократить размер таблиц маршрутизации, что было критически важно для предотвращения коллапса интернет-маршрутизации в середине 1990-х годов. С тех пор BGP-4 остаётся основным протоколом маршрутизации в Интернете, с последующими расширениями, такими как поддержка IPv6 (MP-BGP) и различных типов VPN.
Принцип работы
BGP-4 является протоколом вектора пути (path vector protocol). В отличие от протоколов состояния канала (OSPF, IS-IS) или дистанционно-векторных (RIP), BGP не распространяет информацию о топологии сети, а передаёт список атрибутов маршрута, включая последовательность номеров автономных систем (AS_PATH), через которые прошёл маршрут. Это позволяет избежать образования петель маршрутизации.
Основные понятия
- Автономная система (AS) — совокупность маршрутизаторов и сетей, находящихся под единым административным управлением и использующих единую политику маршрутизации. Каждая AS имеет уникальный номер (ASN) — 16-битное (до 65535) или 32-битное (RFC 6793) целое число.
- BGP-спикер (BGP speaker) — маршрутизатор, на котором запущен процесс BGP.
- BGP-сессия (BGP peering) — логическое соединение между двумя BGP-спикерами, устанавливаемое через TCP-порт 179. Сессии могут быть внутренними (iBGP — внутри одной AS) и внешними (eBGP — между разными AS).
- NLRI (Network Layer Reachability Information) — информация о достижимости сетей, передаваемая в сообщениях BGP. Включает префикс IP-сети и длину маски.
Типы сообщений
BGP-4 использует четыре типа сообщений:
- OPEN — устанавливает сессию и согласовывает параметры (версия протокола, ASN, время удержания).
- UPDATE — передаёт информацию о новых маршрутах (NLRI) и отзывает ранее объявленные.
- KEEPALIVE — подтверждает активность сессии (обычно отправляется каждые 60 секунд).
- NOTIFICATION — уведомляет об ошибке и закрывает сессию.
Атрибуты маршрутов
Каждый маршрут в BGP сопровождается набором атрибутов, которые определяют политику выбора наилучшего пути. Ключевые атрибуты:
- AS_PATH — список номеров AS, через которые прошёл маршрут. Используется для обнаружения петель и выбора кратчайшего пути (по количеству AS).
- NEXT_HOP — IP-адрес следующего маршрутизатора, куда следует отправлять пакеты.
- LOCAL_PREF — атрибут, используемый только внутри AS (iBGP) для указания предпочтительности выхода из AS. Чем выше значение, тем предпочтительнее маршрут.
- MULTI_EXIT_DISC (MED) — атрибут, передаваемый между AS для указания предпочтительности входа в AS. Чем ниже значение, тем предпочтительнее.
- ORIGIN — источник маршрута (IGP, EGP, неполный).
- COMMUNITY — тег, позволяющий группировать маршруты и применять к ним общие политики (например, «не анонсировать за пределы AS»).
Выбор наилучшего маршрута
BGP-спикер может получить несколько маршрутов к одной и той же сети. Выбор наилучшего пути происходит по строгому алгоритму, включающему следующие шаги (в порядке приоритета):
- Маршрут с наибольшим значением LOCAL_PREF.
- Маршрут с наименьшей длиной AS_PATH.
- Маршрут с наименьшим типом ORIGIN (IGP < EGP < неполный).
- Маршрут с наименьшим значением MED.
- Предпочтение eBGP-маршрутов перед iBGP-маршрутами.
- Маршрут через ближайший IGP-сосед (с наименьшей метрикой до NEXT_HOP).
- Маршрут от BGP-спикера с наименьшим Router ID.
Классификация и виды
BGP-4 классифицируется по нескольким признакам:
- По типу сессии:
- eBGP (External BGP) — между маршрутизаторами в разных AS. Используется провайдерами и крупными организациями для обмена маршрутами.
- iBGP (Internal BGP) — внутри одной AS. Требуется полная связность (full mesh) между всеми iBGP-спикерами, так как iBGP не пересылает маршруты, полученные от другого iBGP-соседа. Для упрощения используются Route Reflectors (RFC 4456) или Confederations (RFC 5065).
- По функциональности:
- MP-BGP (Multiprotocol BGP) — расширение BGP-4, определённое в RFC 4760, позволяющее передавать маршруты для различных протоколов сетевого уровня (IPv6, VPN, MPLS, L2VPN). Является основой для построения MPLS VPN и 6PE.
- BGP-LS (BGP Link State) — расширение, позволяющее BGP передавать информацию о состоянии каналов (link-state) для использования в контроллерах SDN.
Применение
BGP-4 является фундаментальным протоколом для функционирования Интернета. Его основные области применения:
- Междоменная маршрутизация: Обмен маршрутами между автономными системами (провайдерами, контент-сетями, корпоративными сетями). BGP позволяет реализовывать сложные политики маршрутизации, такие как выбор наилучшего пути на основе стоимости, производительности или географического расположения.
- Построение MPLS VPN: MP-BGP используется для распространения информации о VPN-маршрутах и метках MPLS между провайдерскими маршрутизаторами (PE-маршрутизаторами). Это позволяет создавать изолированные виртуальные частные сети (VPN) поверх общей инфраструктуры.
- Маршрутизация в дата-центрах: Крупные дата-центры (например, у Google, Amazon, Яндекс) используют BGP для организации маршрутизации внутри своих сетей, часто в сочетании с протоколами IGP (OSPF, IS-IS) для внутренней топологии.
- Балансировка трафика и отказоустойчивость: BGP позволяет объявлять одни и те же сети из нескольких точек (AS) с разными атрибутами (AS_PATH, MED), что реализует механизмы мультихоминга (multi-homing) и распределения нагрузки.
- Интернет-обмен (IX): На точках обмена трафиком (IXP) BGP используется для установления пиринговых соединений между различными операторами.
Критика и проблемы
Несмотря на широкое распространение, BGP-4 имеет ряд недостатков и уязвимостей:
- Проблемы безопасности: BGP изначально не предусматривал механизмов аутентификации и проверки достоверности маршрутов. Это делает его уязвимым для атак, таких как BGP-хайекинг (BGP hijacking) — перехват трафика путём объявления ложных маршрутов. Примеры: инцидент с YouTube в 2008 году (перехват трафика компанией Pakistan Telecom), атака на криптовалютные сервисы в 2022 году. Для защиты разрабатываются расширения, такие как RPKI (Resource Public Key Infrastructure) и BGPsec (RFC 8205), но их внедрение идёт медленно.
- Медленная сходимость: BGP может требовать значительного времени для восстановления маршрутизации после сбоя (от нескольких секунд до минут), особенно в сложных топологиях.
- Сложность конфигурации: Настройка BGP требует глубоких знаний сетевых протоколов и политик. Ошибки в конфигурации могут привести к серьёзным сбоям в работе сети.
- Рост таблиц маршрутизации: Несмотря на CIDR, количество маршрутов в глобальной таблице BGP (DFZ — Default-Free Zone) продолжает расти, превышая 1 миллион префиксов (на 2024 год). Это требует от маршрутизаторов больших объёмов памяти и вычислительных ресурсов.
Интересные факты
- BGP-4 является одним из немногих протоколов, который не использует UDP или IP напрямую, а полагается на TCP для надёжной доставки сообщений.
- Протокол не требует обязательного знания топологии сети — он работает на основе политик, определённых администратором.
- В России BGP-4 активно используется операторами связи (ПАО «Ростелеком», ПАО «МТС», ПАО «ВымпелКом» и др.) для организации междоменной маршрутизации и подключения к точкам обмена трафиком (например, MSK-IX, SPB-IX).
- Существуют проекты, такие как «BGPmon» и «RIPE RIS», которые в реальном времени отслеживают объявления BGP-маршрутов и выявляют аномалии.
Источники
- RFC 4271 — A Border Gateway Protocol 4 (BGP-4)
- RFC 4760 — Multiprotocol Extensions for BGP-4
- RFC 4456 — BGP Route Reflection
- RFC 8205 — BGPsec Protocol Specification
- Столлингс В. — «Современные компьютерные сети» (глава 12)
- Олифер В.Г., Олифер Н.А. — «Компьютерные сети. Принципы, технологии, протоколы» (глава 10)
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →