Интернет на техническом уровне является совокупностью тысяч независимых сетей. Чтобы данные добирались от отправителя к получателю, необходима чёткая система маршрутизации. Если вы интересуетесь сетевыми технологиями или ваша работа связана с этой областью IT, вы наверняка слышали о протоколе BGP (протоколе граничного шлюза) — своеобразном «навигаторе» глобальной сети. Разбираемся, как устроен BGP и почему без него интернет попросту не смог бы функционировать.

Что такое протокол BGP простыми словами

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

Говоря простыми словами, протокол маршрутизации BGP поддерживает своего рода систему дорожных указателей для интернет‑трафика. Он не просто находит путь от точки А к точке Б, а постоянно анализирует множество вариантов и выбирает самый эффективный маршрут с учётом текущих условий сети.

Принцип работы BGP основан на обмене «векторами путей» (path vectors) — специальными сообщениями с информацией о том, через какие автономные системы проходит маршрут. Основываясь на этой информации, маршрутизаторы выстраивают актуальную карту интернета и могут оперативно реагировать на происходящие изменения.

Что такое протокол BGP простыми словами
Image by rawpixel.com on Freepik.

Чем BGP отличается от других протоколов маршрутизации

В сетях используются разные протоколы маршрутизации (routing protocols), но BGP среди них занимает особое место. Рассмотрим его ключевые отличия:

  1. Масштаб применения. Протоколы вроде OSPF (Open Shortest Path First) и RIP (Routing Information Protocol) предназначены для работы внутри одной автономной системы. BGP же связывает AS, образуя глобальную маршрутную структуру интернета.
  2. Алгоритм работы. OSPF и RIP, чтобы найти кратчайший путь, используют простые метрики — например, количество переходов (RIP) или стоимость канала (OSPF). В BGP применяется сложный механизм, основанный на атрибутах маршрутов и политических правилах.
  3. Гибкость настроек. Администраторы могут задавать собственные правила маршрутизации — через какого провайдера дешевле передавать трафик, с каким партнёром есть соглашение о прямом обмене, а какой трафик нужно блокировать.

Почему без BGP Интернет не смог бы существовать

Без этого протокола современный интернет в его привычном виде просто рассыпался бы на тысячи изолированных фрагментов — не было бы единого адресного пространства. Ваш домашний роутер знает, как доставить пакет до шлюза вашего провайдера. Провайдер, используя внутренний протокол, знает свою сеть. Но как ему узнать путь до сервера, физически находящегося в другой стране и принадлежащего другому провайдеру? Ответ — посредством BGP. Именно этот динамический протокол позволяет всем автономным системам объявлять: «Я являюсь точкой входа для таких-то сетей». Без этого механизма глобальная маршрутизация была бы невозможна, и мы бы имели множество маленьких «интернетов», не связанных между собой.

Зачем нужен BGP

По сути, BGP протокол даёт возможность каждой сети сообщить всему миру: «Я знаю, как доставить трафик до этих адресов, и готова стать их шлюзом».

Как BGP соединяет автономные системы (AS)

Автономная система (AS) — это совокупность сетей и маршрутизаторов под единым техническим управлением, например, сеть крупного провайдера или корпорации. BGP протокол работает на границах этих систем — на магистральных маршрутизаторах. Чтобы две AS могли обмениваться маршрутной информацией, их администраторы настраивают BGP-сессию между своими пограничными устройствами (borders gateways). После установления соединения AS начинают обмен (exchange) анонсами вроде: «Я могу доставить трафик до сетей 100.100.0.0/16 и 200.200.0.0/24» — так каждая система узнаёт о существовании сетей за пределами своей зоны контроля и выстраивает маршруты к ним.

Почему провайдеры и крупные компании используют BGP

Есть два основных сценария применения и работы этого протокола. Во-первых, это многодомость (multihoming), когда крупная компания подключается к двум или более провайдерам. BGP позволяет ей гибко управлять трафиком и распределять нагрузку между каналами: например, через одного провайдера отправлять основной трафик, а через второго — резервный, или распределять нагрузку между каналами. Во-вторых, это объявление собственных сетей в глобальной сети. Если компания является поставщиком интернет-услуг или владеет крупной онлайн-платформой, ей необходимо использовать BGP, чтобы сообщить всему миру о существовании своих IP-сетей.

Как работает BGP: принципы маршрутизации

В отличие от простых протоколов внутренней маршрутизации, алгоритм BGP более многогранен и в большей степени опирается на политики, нежели на простые метрики.

Что такое автономная система (AS)

Под Автономной Системой в нашем контексте подразумевается логически обособленный сегмент сети с уникальным номером (ASN). ASN присваивается специальными организациями (RIRs — Regional Internet Registries) и может быть публичным (для обмена трафиком между провайдерами) или частным (для внутреннего использования в организации).

Каждая AS самостоятельно определяет, какие маршруты анонсировать соседям и как обрабатывать полученные данные.

Как устанавливается BGP-соседство (peering)

Прежде чем начнется обмен маршрутами, два маршрутизатора должны стать «соседями» (peers). Администраторы вручную настраивают на каждом устройстве IP-адрес соседа и его номер AS. Для обмена маршрутной информацией маршрутизаторы AS устанавливают TCP‑соединение. Затем происходят:

  1. Обмен сообщениями Open. Устройства сообщают друг другу свои ASN, версии протокола и параметры сессии.
  2. Подтверждения Keepalive. После успешного открытия соединения маршрутизаторы периодически отправляют Keepalive‑сообщения, чтобы поддерживать связь.
  3. Обмен маршрутами через Update. После установления соседства начинается передача информации о доступных путях.

Если на любом этапе возникает ошибка, отправляется сообщение Notification, и соединение разрывается.

Внутренний (iBGP) и внешний (eBGP) обмен маршрутами

Протокол BGP использует два типа взаимодействия. Внешний BGP (eBGP) работает между разными AS. Это основной механизм для обмена маршрутной информации с внешним миром. Внутренний BGP (iBGP) функционирует внутри одной Автономной Системы. Его задача — распространить маршруты, полученные от внешних соседей через eBGP, между всеми BGP-маршрутизаторами внутри своей AS. Это необходимо, чтобы все пограничные устройства в одной компании имели согласованную картину мира и могли принимать взвешенные решения об исходящем трафике.

Как BGP выбирает лучший маршрут (path selection)

Часто маршрутизатор получает несколько разных путей до одной и той же сети. Для выбора оптимального используется иерархия критериев:

  1. Предпочтение локальным маршрутам (созданным внутри AS).
  2. Максимальное значение LOCAL_PREF (приоритет, задаваемый администратором).
  3. Кратчайший путь по AS_PATH (меньше переходов между AS).
  4. Наименьшее значение MED (метрики, указывающей предпочтительность входа в AS).
  5. Ближайший IGP‑сосед (минимальная стоимость внутри AS).

Трафик будет направляться по пути, возможно не самому короткому географически, но оптимальному с точки зрения политики и стоимости.

Таймеры и поддержание соединения между маршрутизаторами

Поскольку BGP использует TCP, само соединение является стабильным. Однако для проверки «живучести» соседа маршрутизаторы периодически обмениваются короткими сообщениями Keepalive (по умолчанию каждые 60 секунд — Keepalive Interval). Если в течение определенного времени (Hold Time, обычно 180 секунд) такое сообщение не пришло, сосед считается недоступным, и все маршруты через него аннулируются, а таблицы маршрутизации перестраиваются.

Типы и форматы BGP-сообщений

Работа протокола BGP основана на обмене всего четырьмя типами сообщений — представиться, сообщить новость, предупредить об ошибке и подтвердить связь.

Open — установление соединения

Это первое сообщение, которое отправляется после установления TCP-соединения. Оно содержит «визитную карточку» маршрутизатора: версию протокола, его номер AS, идентификатор (BGP Router ID) и другие параметры для согласования. Если сосед принимает параметры, он отвечает своим сообщением Keepalive, и процесс переходит к следующей фазе.

Update — передача маршрутов

Сообщения Update несут в себе всю полезную нагрузку: они либо анонсируют новые доступные маршруты, либо отзывают ранее объявленные. В одном сообщении может содержаться информация о нескольких маршрутах, а также их атрибуты (AS_PATH, NEXT_HOP и др.).

Notification — ошибки и оповещения

Если в работе сессии возникает какая-либо ошибка (некорректный формат сообщения, несовпадение версий и т. д.), маршрутизатор отправляет сообщение Notification, в котором указывает код и субкод ошибки, после чего разрывает TCP-соединение.

Keepalive — поддержание связи между соседями

Эти короткие сообщения подтверждают, что сосед жив и соединение активно. Они отправляются регулярно и не несут никакой маршрутной информации кроме факта своего присутствия.

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

Атрибуты — это метаданные, прикреплённые к каждому объявленному маршруту. Именно они позволяют гибко управлять маршрутизацией.

AS_PATH — последовательность автономных систем

Список номеров всех AS, через которые проходило сообщение Update — от источника до текущего маршрутизатора. Если AS 100 объявляет свою сеть соседу AS 200, тот добавляет в AS_PATH свой номер (100) и передает дальше соседу AS 300, который увидит путь [200, 100]. Этот атрибут используется для предотвращения петель маршрутизации и выбора кратчайшего пути.

Пример: маршрут с AS_PATH 64500 64501 64502 прошёл через три автономные системы. Если есть альтернативный путь с AS_PATH 64500 64503, то BGP, скорее всего, предпочтёт второй вариант как более короткий.

NEXT_HOP — следующий узел маршрута

Указывает IP-адрес следующего шлюза, на который нужно направить трафик для достижения целевой сети. В случае eBGP это обычно IP-адрес соседнего маршрутизатора. В iBGP по умолчанию этот атрибут не меняется — здесь требуется дополнительная настройка IGP для корректной маршрутизации.

LOCAL_PREF и MED — приоритет и предпочтение маршрутов

LOCAL_PREF (локальное предпочтение) — атрибут для управления исходящим трафиком внутри своей AS. Чем выше значение LOCAL_PREF (по умолчанию 100), тем больше шансов, что маршрут будет выбран как основной.

MED (Multi-Exit Discriminator), напротив, используется для входящего трафика, чтобы «намекнуть» соседней AS, через какой из нескольких каналов связи предпочтительнее отправлять трафик к вам. Меньшее значение MED считается более привлекательным. Например, если у провайдера два соединения с клиентом, он может задать MED 10 для основного канала и MED 50 для резервного.

ORIGIN — источник маршрута

Это исторический атрибут, который указывает, как маршрут изначально попал в BGP. Он может иметь значения IGP (объявлен одним из внутренних протоколов маршрутизации — OSPF, EIGRP и т. п.), EGP (получен по старому протоколу EGP) или INCOMPLETE (импортирован из другого источника, например, при перераспределении статических маршрутов).

BGP предпочитает маршруты с ORIGIN = IGP как наиболее надёжные.

COMMUNITIES — группировка маршрутов по меткам

Это необязательный атрибут — теги (числовые метки), которые можно присваивать маршрутам для упрощения управления. Например:

  • 64500:100 — «критичный трафик» (требует приоритетной обработки);
  • 64500:200 — «резервный путь» (использовать только при аварии);
  • 64500:300 — «не анонсировать внешним соседям» (ограничить распространение).

COMMUNITIES позволяют группировать маршруты и применять к ним политики оптом.

Примеры топологий и сценариев использования BGP

Рассмотрим два примера. Первый — крупный хостинг-провайдер использует BGP для анонса своих IP-блоков всем вышестоящим провайдерам (upstream) и участникам точек обмена трафиком (IXP). Этим обеспечивается доступность его серверов из любой точки мира. Второй пример — глобальная корпорация с филиалами в разных странах. Она получает собственный номер AS и использует BGP для соединения своих дата-центров через разных местных провайдеров, создав отказоустойчивую глобальную сеть (WAN) с контролем трафика.

Настройка BGP на примере

Допустим, у вас есть сеть 203.0.113.0/24 и автономная система ASN 65001. Вы хотите объявить её через провайдера с ASN 65002. На маршрутизаторе Cisco фрагмент конфигурации для этой задачи может выглядеть так:

router bgp 65001
neighbor 192.0.2.1 remote-as 65002
network 203.0.113.0 mask 255.255.255.0

После этого маршрутизатор установит BGP-сессию с 192.0.2.1 и объявит префикс провайдеру. Провайдер, в свою очередь, распространит его дальше в интернет.

Преимущества и недостатки протокола BGP

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

BGP и безопасность

Проблемы безопасности BGP выходят далеко за рамки отдельной компании или провайдера, поскольку последствия атак могут иметь каскадный эффект по всему миру. Атака на маршрутизацию — это не взлом в классическом понимании, а скорее дезинформация, заставляющая сети добровольно отправлять свои данные злоумышленникам. Поэтому защита инфраструктуры маршрутизации является коллективной ответственностью всех участников.

Проблема перехвата маршрутов (BGP hijacking)

BGP hijacking — ситуация, когда злоумышленник объявляет чужой IP-префикс как свой. Поскольку BGP по умолчанию доверяет соседям, другие сети начинают отправлять трафик на поддельный маршрут. Такие атаки использовались для перехвата SMS, кражи данных и даже временного отключения целых стран от интернета.

RPKI — защита маршрутов и проверка подлинности префиксов

Для защиты от атак на маршруты была разработана система криптографической проверки прав собственности на IP-адреса и номера автономных систем — RPKI (Resource Public Key Infrastructure). Она позволяет подтвердить, имеет ли AS право объявлять конкретный IP-префикс. Маршрутизаторы, поддерживающие RPKI, могут проверять подлинность полученных анонсов и отклонять подозрительные объявления. RPKI существенно снижает риск hijacking, но требует координации между AS.

Почему BGP все еще уязвим и как провайдеры решают эти проблемы

Далеко не все провайдеры используют RPKI, потому что повсеместное внедрение такой защиты — это долгий и сложный процесс. К тому же нет единого центра контроля — каждая AS самостоятельно решает, какие маршруты принимать. В целях безопасности провайдеры вручную настраивают фильтрацию, сверяют получаемые анонсы с базами данных whois и используют списки контроля доступа, чтобы принимать маршруты только от доверенных соседей.

Заключение

Каждый раз, отправляя сообщение или загружая страницу, мы невольно полагаемся на отлаженный и непрерывный диалог, который ведут между собой маршрутизаторы по всему миру. Отметим, что сегодня протокол BGP — бесспорный лидер в области внешней маршрутизации, не имеющий реальных альтернатив на сегодняшний день. Его работа по выбору пути, основанная на последовательном анализе атрибутов, делает мировую сеть гибкой, отказоустойчивой и способной к бесконечному росту.