Протокол BGP — это ключевой механизм, который связывает тысячи сетей в единый интернет. Он обменивается информацией о маршрутах между автономными системами, выбирая оптимальные пути для трафика. Это помогает избежать простоев и обеспечивает стабильную работу глобальной сети.
Понимание BGP полезно для системных администраторов и сетевых инженеров. Оно решает проблемы с маршрутизацией, такие как задержки или потеря пакетов. В этой статье разберём, как работает протокол, его типы и основные принципы.
Что такое протокол BGP и зачем он нужен
BGP (Border Gateway Protocol) — протокол динамической маршрутизации, который управляет обменом данными между автономными системами (AS). Каждая AS — это группа сетей под единым управлением, например, у провайдера или компании. BGP определяет лучшие пути для трафика, учитывая факторы вроде расстояния, нагрузки и стоимости.
Представьте интернет как огромную паутину сетей. Без BGP пакеты данных блуждали бы хаотично, вызывая задержки. Протокол использует TCP на порту 179 для надёжной передачи сообщений. Он не создаёт свои соединения, а полагается на транспортный уровень. Это отличает BGP от протоколов вроде OSPF, работающих на сетевом уровне.
Вот основные характеристики BGP:
- Использует path-vector подход: хранит полный путь до сети в виде списка AS.
- Отправляет обновления только при изменениях, без периодических флудов.
- Проверяет соединения через keepalive-сообщения каждые 60 секунд.
- Поддерживает политики маршрутизации через атрибуты путей.
| Характеристика | Описание |
|---|---|
| Уровень OSI | Прикладной (layer 7), поверх TCP |
| Тип | Path-vector EGP |
| Порт | 179 |
| Обновления | Только при изменениях |
Типы BGP: eBGP и iBGP
Протокол BGP делится на внешний и внутренний варианты. eBGP (Exterior BGP) работает между разными AS, например, между провайдерами Ростелеком (AS12389) и МТС (AS8359). Он обменивается маршрутной информацией для междоменной маршрутизации.
iBGP (Interior BGP) используется внутри одной AS. Маршрутизаторы одной системы синхронизируют таблицы маршрутов, но не меняют AS-пути. Это нужно для согласованности внутри сети. Разница в TTL: для eBGP — 1, для iBGP — 255 хопов.
Сравним типы в таблице:
| Тип | Область | TTL | Пример |
|---|---|---|---|
| eBGP | Между AS | 1 | Провайдеры обмениваются трафиком |
| iBGP | Внутри AS | 255 | Синхронизация маршрутизаторов компании |
Ключевые отличия:
- eBGP добавляет свой AS-номер к пути.
- iBGP требует full-mesh или route reflectors для масштаба.
- eBGP чаще используется для пиринга с другими сетями.
Как работает BGP: этапы и сообщения
BGP начинает с установления соседства. Маршрутизаторы обмениваются OPEN-сообщениями, указывая свой AS-номер и IP. После этого идут UPDATE для маршрутов, KEEPALIVE для проверки и NOTIFICATION при ошибках.
Формат сообщения: заголовок 19 байт + данные до 4096 байт. Атрибуты пути включают AS_PATH, NEXT_HOP, LOCAL_PREF. BGP выбирает лучший маршрут по приоритетам: наименьший AS_PATH, высший LOCAL_PREF и т.д.
Этапы работы:
- Установка TCP-соединения на порт 179.
- Обмен OPEN и проверка параметров.
- Передача UPDATE с NLRI (информацией о сетях) и атрибутами.
- Мониторинг: keepalive каждые 60 сек, hold timer — 180 сек.
Пример: Пользователь в Питере загружает сайт из Бейрута. BGP анализирует пути через AS провайдеров и выбирает оптимальный по задержке.
| Сообщение | Назначение | Размер |
|---|---|---|
| OPEN | Инициация сессии | 29 байт |
| UPDATE | Обновление маршрутов | До 4096 |
| KEEPALIVE | Проверка связи | 19 байт |
| NOTIFICATION | Ошибки и сброс | Варьируется |
Атрибуты и выбор пути в BGP
BGP использует атрибуты для решений. AS_PATH — список AS по пути, короче — лучше. NEXT_HOP указывает следующий маршрутизатор. LOCAL_PREF — локальный приоритет внутри AS.
Другие: MED (для внешних), WEIGHT (Cisco-специфичный). Алгоритм выбора: сначала WEIGHT, затем LOCAL_PREF, AS_PATH и т.д. Это позволяет гибко настраивать политики.
Основные атрибуты:
- Well-known mandatory: AS_PATH, NEXT_HOP, ORIGIN.
- Well-known discretionary: LOCAL_PREF, ATOMIC_AGGREGATE.
- Optional transitive: COMMUNITY, для групповой маркировки.
- Optional non-transitive не передаются дальше.
Таблица приоритетов выбора пути:
| Приоритет | Атрибут |
|---|---|
| 1 | Highest WEIGHT |
| 2 | Highest LOCAL_PREF |
| 3 | Shortest AS_PATH |
| 4 | Lowest ORIGIN |
Масштабируемость и проблемы BGP
BGP обеспечивает работу интернета, но уязвим к ошибкам. Route leaks — утечка маршрутов, вызывающая петли. BGP hijacking — захват префиксов злоумышленниками.
Решения: RPKI для валидации, BGPsec для аутентификации. Масштаб: миллионы префиксов в таблицах маршрутизаторов топ-провайдеров.
Проблемы и фиксы:
- Перегрузка таблиц: агрегация префиксов.
- Чёрные дыры: withdraw при сбоях.
- DDoS через BGP: flowspec для фильтров.
За пределами базового BGP
Мы разобрали основы, но BGP эволюционирует. Остались темы вроде MP-BGP для IPv6, EVPN для дата-центров. Стоит изучить RFC 4271 для деталей и симуляторы вроде GNS3 для практики. Подумайте, как политики атрибутов влияют на ваш трафик в реальной сети.