🌐 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?
🔁 Пошаговый процесс:
- Маршрутизатор устанавливает TCP-соединение (порт 179) с соседним BGP-маршрутизатором.
- Происходит обмен открытыми сообщениями (OPEN messages) для согласования параметров сессии.
- После установления соединения происходит обмен маршрутами через UPDATE-сообщения.
- Маршруты добавляются в BGP таблицу, где вычисляется лучший маршрут на основе атрибутов.
- Лучшие маршруты передаются в таблицу маршрутов ОС (RIB) и используются для пересылки трафика.
- Состояние соседей проверяется через регулярные 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. Полезные ссылки