Компьютерные сети
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
Предварительные знания
Что такое 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 провайдеры перестанут обмениваться маршрутами?