Компьютерные сети

BGP: клей интернета

Цели урока

  • Понимать что BGP это не IGP: маршрутизация между AS, не внутри
  • Знать ключевые атрибуты: AS_PATH, NEXT_HOP, LOCAL_PREF, MED, и порядок их выбора
  • Различать eBGP и iBGP, и почему iBGP нужен full-mesh или route-reflector
  • Видеть как BGP hijack и route leak ломают интернет (AS7007 1997, Pakistan-YouTube 2008, Rostelecom 2017)
  • Знать RPKI и почему он нужен для защиты от подмены маршрутов

4 октября 2021: Facebook исчезает из интернета на 6 часов. Причина не хакеры - инженеры случайно отозвали все BGP-анонсы своих DNS-префиксов. WhatsApp, Instagram, внутренние системы Facebook, badge-системы офисов - всё это перестало быть достижимо для остального мира. BGP это не просто протокол маршрутизации, это клей, который удерживает 100,000+ автономных систем интернета в одной сети.

  • **Провайдеры:** BGP определяет, через какого соседа отправлять трафик в Facebook - через платный Tier-1 или бесплатный пиринг на IX
  • **CDN (Cloudflare, Akamai):** Объявляют одинаковые IP с разных континентов - BGP автоматически направляет пользователей к ближайшему PoP
  • **Anycast DNS:** Корневые серверы DNS (13 адресов) - физически сотни серверов по миру, объединённых BGP anycast

Предварительные знания

  • Dynamic Routing

Что такое BGP

**BGP (Border Gateway Protocol)** - единственный протокол, который "склеивает" интернет. Без него ваш провайдер не знал бы, как добраться до Google, а Google - до вашего провайдера.

**Масштаб BGP:** Глобальная таблица маршрутов содержит **более 900 000** префиксов. BGP-маршрутизаторы держат их все в памяти!

BGP - **path-vector** протокол. Он не считает метрики (как OSPF), а запоминает **путь** через автономные системы. Это позволяет применять сложную политику маршрутизации.

В отличие от IGP (OSPF, IS-IS), BGP работает **между организациями**. Каждый участник - независимая компания со своей политикой. Поэтому BGP позволяет тонко настраивать: "с этим соседом обмениваемся всем", "от этого принимаем только его сети".

Почему BGP использует TCP вместо собственного протокола?

Автономные системы (AS)

**Автономная система (AS)** - сеть или группа сетей под единым административным управлением и с единой политикой маршрутизации. Каждая AS имеет уникальный номер - **ASN**.

**Проверить ASN:** `whois AS15169` или сервис https://bgp.he.net/ покажет все префиксы и соседей любой AS

Почему нужны AS? Интернет слишком велик для одной таблицы маршрутизации уровня OSPF. AS создают **иерархию**: внутри AS работает IGP, между AS - BGP.

Для получения собственной AS нужно обратиться в региональный интернет-реестр (RIPE NCC для Европы/России). Обычно требуется: многодомная подключённость (≥2 провайдера) и обоснование.

Компания подключена к одному провайдеру. Нужна ли ей собственная AS?

eBGP и iBGP

BGP работает в двух режимах: **eBGP** (external) - между разными AS, **iBGP** (internal) - внутри одной AS. Это один протокол с разным поведением.

**Ключевое правило iBGP:** маршрут, полученный от iBGP-соседа, **нельзя передавать** другим iBGP-соседям. Это предотвращает петли, но требует full-mesh или route reflector.

**Проблема full-mesh:** при N маршрутизаторах нужно N*(N-1)/2 сессий. Для 100 роутеров - 4950 сессий! Решения: **Route Reflector** (RR) или **Confederation**.

Различия eBGP и iBGP затрагивают TTL и next-hop:

Почему iBGP требует full-mesh или Route Reflector?

Атрибуты пути BGP

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

**Мнемоника:** "We Love Oranges AS Oranges Mean Pure Refreshment" - Weight, Local_pref, Originated, AS_path, Origin, MED, Paths (eBGP>iBGP), Router-id

Разберём ключевые атрибуты:

На практике провайдеры используют **BGP communities** - метки для группировки маршрутов и применения политик. Например: `65000:100` = "не анонсировать клиентам".

Провайдер хочет предпочитать трафик через более дорогой, но надёжный канал. Какой атрибут использовать?

BGP Hijacking

**BGP Hijacking** - перехват трафика путём объявления чужих префиксов. BGP основан на **доверии**: если AS объявляет маршрут, все верят, что она имеет право это делать.

**Реальный случай:** В 2018 году на 2 часа BGP hijack перенаправил трафик Amazon Route 53 через российскую AS. Украдено ~150K в криптовалюте.

Ещё опаснее **more-specific hijack**: если Google объявляет 8.8.8.0/24, атакующий объявляет 8.8.8.0/25 и 8.8.8.128/25. Более специфичные маршруты **всегда** побеждают!

Мониторинг BGP в реальном времени: **BGPStream** (RIPE RIS), **Cloudflare Radar**, **MANRS Observatory**. При hijack алерты приходят за минуты.

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

BGP был создан без механизмов безопасности и основан на доверии

В 1989 году интернет был сетью университетов и военных - все друг друга знали. Сегодня любая AS может объявить любой маршрут. RPKI - первый шаг к исправлению, но внедрение идёт медленно. По состоянию на 2024 год ~50% маршрутов имеют ROA.

Атакующий объявил 1.2.3.0/25. Жертва объявляет 1.2.3.0/24. Что произойдёт?

Итоги

  • **BGP - path-vector протокол** между автономными системами (AS). Работает по TCP:179, обменивается маршрутами через UPDATE
  • **eBGP** соединяет разные AS, **iBGP** - маршрутизаторы внутри AS. iBGP требует full-mesh или Route Reflector
  • **Выбор пути:** LOCAL_PREF → AS_PATH → MED → IGP metric. Политика важнее метрик
  • **BGP hijacking** - объявление чужих префиксов. Защита: RPKI/ROA, IRR-фильтрация, мониторинг

Связанные темы

BGP - вершина пирамиды маршрутизации:

  • Динамическая маршрутизация — IGP (OSPF, IS-IS) работает внутри AS, BGP - между AS
  • OSPF — OSPF обеспечивает связность внутри AS, по которой ходит iBGP

Вопросы для размышления

  • Почему интернет не использует единый IGP-протокол вместо BGP между провайдерами?
  • Как бы изменился интернет, если бы RPKI был обязательным с самого начала?
  • Что произойдёт с глобальной связностью, если Tier-1 провайдеры перестанут обмениваться маршрутами?

Связанные уроки

  • alg-15-bellman-ford
BGP: клей интернета

0

1

Войти