Skip to content

🌐 BGP (Border Gateway Protocol)

1. Что такое BGP?

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

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


2. Основные понятия

Термин Описание
AS (Autonomous System) Независимая сеть под единым административным контролем (например, сеть провайдера). Каждой AS присвоен уникальный номер (ASN).
EBGP (External BGP) Обмен маршрутами между разными автономными системами.
IBGP (Internal BGP) Обмен маршрутами внутри одной AS.
Пиринг (Peering) Связь между двумя BGP-маршрутизаторами, при которой они обмениваются маршрутами.
Таблица BGP (BGP Table / RIB) Хранит все полученные маршруты от соседей. Из них выбирается лучший путь для использования.
Атрибуты маршрута Параметры, влияющие на выбор наилучшего маршрута (NEXT_HOP, AS_PATH, LOCAL_PREF, MED и др.).

3. Как работает BGP?

🔁 Пошаговый процесс:

  1. Маршрутизатор устанавливает TCP-соединение (порт 179) с соседним BGP-маршрутизатором.
  2. Происходит обмен открытыми сообщениями (OPEN messages) для согласования параметров сессии.
  3. После установления соединения происходит обмен маршрутами через UPDATE-сообщения.
  4. Маршруты добавляются в BGP таблицу, где вычисляется лучший маршрут на основе атрибутов.
  5. Лучшие маршруты передаются в таблицу маршрутов ОС (RIB) и используются для пересылки трафика.
  6. Состояние соседей проверяется через регулярные KEEPALIVE-сообщения.

4. Виды BGP

Тип Описание
eBGP (External BGP) Используется для обмена маршрутами между разными автономными системами.
iBGP (Internal BGP) Используется внутри одной AS для распространения внешних маршрутов между внутренними маршрутизаторами.

⚠️ iBGP требует полной ячеистой топологии или использования Route Reflectors или Confederations для масштабирования.


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

Атрибуты влияют на выбор наилучшего маршрута. Они бывают обязательными и необязательными, распознаваемыми и непризнанными.

📌 Наиболее важные атрибуты:

Атрибут Описание
NEXT_HOP IP-адрес следующего хопа, через который можно достичь сети.
AS_PATH Список AS, через которые прошёл маршрут. Используется для предотвращения циклов.
LOCAL_PREF Предпочтительность маршрута внутри AS (чем выше значение, тем лучше).
MED (Multi-Exit Discriminator) Указывает предпочтительный вход в AS (чем меньше, тем лучше).
ORIGIN Откуда был получен маршрут: IGP (0), EGP (1), Incomplete (2).
COMMUNITY Добавочные метки, используемые для группировки маршрутов и применения политик.

6. Сообщения BGP

Тип сообщения Описание
OPEN Инициирует сессию BGP и содержит параметры (версия, ASN, идентификатор, таймеры).
UPDATE Передаёт информацию о доступных маршрутах и устаревших маршрутах.
NOTIFICATION Завершает сессию при возникновении ошибки.
KEEPALIVE Поддерживает активное состояние сессии, если нет UPDATE-сообщений.

7. Пример конфигурации BGP

🧾 Cisco IOS

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

🧾 MikroTik

/routing bgp instance set default as=65001 router-id=1.1.1.1
/routing bgp peer add name=ISP1 remote-address=192.168.1.2 remote-as=65002
/routing bgp network add network=203.0.113.0/24

8. Полезные команды

🖥 Cisco

show ip bgp summary         # Состояние соседей
show ip bgp                 # Таблица BGP
show ip bgp neighbors       # Информация о соседях
clear ip bgp *              # Сбросить все сессии BGP

🐧 Linux (Quagga / FRR)

vtysh
show ip bgp summary
show ip bgp
show ip bgp neighbors

9. Безопасность BGP

BGP изначально не предусматривает шифрования или аутентификации, поэтому существуют риски:

Угроза Описание
Prefix Hijacking Злоумышленник объявляет чужие префиксы как свои.
Path Manipulation Манипуляции с AS_PATH для изменения маршрута.
Route Leaks Непреднамеренная передача маршрутов между AS.

🔒 Защитные меры:

  • MD5-аутентификация между парами.
  • Prefix Lists и Route Maps для фильтрации.
  • RPKI (Resource Public Key Infrastructure) — криптографическая проверка владельца префикса.
  • BGPsec — защита целостности AS_PATH.

10. Best Practices

Рекомендация Описание
Фильтрация входящих и исходящих маршрутов Не принимать лишние префиксы и не отправлять лишние.
Использование Loopback-интерфейсов для iBGP Повышает отказоустойчивость.
Настройка TTL Security (GTSM) Защищает от атак на TCP-соединение.
Регулярное обновление ACL Блокировать нелегитимные префиксы.
Использование Route Reflectors Для масштабирования iBGP без полной ячеистой топологии.

11. FAQ

❓ Почему BGP использует TCP?

  • TCP обеспечивает надёжную доставку сообщений и упрощает реализацию протокола.

❓ Как выбрать лучший маршрут в BGP?

  • BGP использует последовательность шагов (decision process), начиная с веса, затем LOCAL_PREF, AS_PATH и т.д.

❓ Что такое BGP Confederation?

  • Это способ разделения большой AS на меньшие части для упрощения управления, сохраняя внешнее представление как одну AS.

❓ Можно ли использовать BGP в частной сети?

  • Да, например, в крупных корпоративных сетях для распределения нагрузки между сайтами.

12. Полезные ссылки