BGP - описание протокола
Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2026
BGP (Border Gateway Protocol)
BGP (Border Gateway Protocol) — это протокол динамической маршрутизации типа path-vector, который используется для обмена информацией о маршрутах между автономными системами (AS). Это основной протокол глобальной маршрутизации интернета.
Основные концепции
- AS (Autonomous System) — совокупность сетей под единым административным управлением. Каждая AS имеет уникальный номер — ASN.
- eBGP (External BGP) — BGP-сессия между разными AS.
- iBGP (Internal BGP) — BGP-сессия внутри одной AS.
Атрибуты BGP
BGP принимает решения на основе атрибутов маршрута и политик администратора.
| Атрибут | Описание |
|---|---|
| Weight | Cisco-proprietary, локальный для роутера (чем выше, тем приоритетнее) |
| Local Preference | Локальный для AS (по умолчанию 100, чем выше — тем лучше) |
| Originate | Маршрут, сгенерированный самим роутером |
| AS-Path | Список AS, через которые прошёл маршрут (чем короче, тем лучше) |
| Origin | IGP, EGP, Incomplete (IGP предпочтительнее) |
| MED (Multi-Exit Discriminator) | Указывает предпочтительный вход в AS (меньше — лучше) |
| Paths (eBGP vs iBGP) | eBGP предпочтительнее iBGP |
| Router-ID | Выбирается путь с наименьшим Router-ID |
Алгоритм выбора лучшего пути
- Если next-hop недоступен — отбросить маршрут
- Выбрать с наивысшим Weight
- Выбрать с наивысшим Local Preference
- Предпочесть маршрут, объявленный самим роутером
- Выбрать с кратчайшим AS_PATH
- Выбрать с наименьшим Origin (IGP < EGP < Incomplete)
- Выбрать с наименьшим MED
- Предпочесть eBGP над iBGP
- Выбрать с наименьшей IGP-метрикой до next-hop
- При нескольких путях — выбрать с наименьшим Router-ID
Типы сообщений BGP
BGP работает поверх TCP (порт 179).
| Тип | Назначение |
|---|---|
| OPEN | Установление соединения, обмен параметрами (ASN, Hold Timer, BGP ID) |
| UPDATE | Объявление новых маршрутов или отзыв старых |
| KEEPALIVE | Поддержание сессии (каждые 1/3 Hold Timer, не чаще 1 сек) |
| NOTIFICATION | Сообщение об ошибке, после которого сессия закрывается |
Состояния BGP-сессии (FSM)
- Idle — ожидание старта
- Connect — попытка TCP-соединения
- Active — TCP-соединение не удалось, повторная попытка
- OpenSent — OPEN отправлен, ожидание OPEN от пира
- OpenConfirm — OPEN получен, отправлен KEEPALIVE, ожидание KEEPALIVE
- Established — сессия установлена, обмен UPDATE-сообщениями
Масштабирование
BGP спроектирован с учётом масштабирования:
- Route Aggregation (CIDR) — суммирование префиксов
- Route Reflectors — предотвращают полносвязную топологию iBGP
- Confederations — разбиение большой AS на несколько под-AS
- Filtering — prefix-list, route-map, as-path access-list
BGP в современном интернете
- DFZ (Default-Free Zone) — ядро интернета с полной таблицей BGP (~1M+ префиксов)
- IXP (Internet Exchange Point) — точки обмена трафиком
- Peering — прямое соединение между AS
- Transit — доступ к маршрутам интернета за плату
Проблемы BGP
- Медленная сходимость (convergence)
- Отсутствие встроенной безопасности
- BGP Hijacking — перехват трафика (решается RPKI/ROV)
- Route Leak — непреднамеренная анонсировка маршрутов
BGP Security
- RPKI (Resource Public Key Infrastructure) — криптографическая верификация (ROA-записи)
- BGPsec — подпись UPDATE-сообщений для защиты AS_PATH
Пример конфигурации (Cisco IOS)
router bgp 65001 bgp router-id 10.0.0.1 neighbor 192.0.2.1 remote-as 65002 neighbor 192.0.2.1 description Peer-AS65002 neighbor 192.0.2.1 route-map SET-POLICY in network 203.0.113.0 mask 255.255.255.0
