Routing protocols — OSPF внутри AS, BGP между AS
В прошлых уроках мы видели, как роутер использует routing table для выбора next-hop. Но кто заполняет эту таблицу? В маленькой сети — админ руками (static routes). В большой — автоматически работают протоколы маршрутизации. Без них интернет бы вообще не функционировал: 75,000+ автономных систем (AS) не управляются вручную.
В этом уроке кратко разберём, какие бывают routing protocols, чем отличаются интерьерные (внутри AS) от экстерьерных (между AS), что такое OSPF и BGP в общих чертах. Это обзорная тема — без deep dive. Но DE её знать важно: когда вы слышите «BGP-обновления», «маршрут пропал в OSPF», «AS-path» — вы понимаете, о чём речь.
Зачем динамические протоколы
В сети из 5 машин со статической маршрутизацией всё нормально. В сети из 100 — админ ходит и руками прописывает маршруты, плачет, но справляется. В сети из 10,000 устройств это уже невозможно.
Проблемы статических маршрутов в больших сетях:
- Не реагируют на сбои. Линк упал — маршрут продолжает указывать на него. Пакеты идут в никуда, пока админ не пересоберёт конфиг.
- Нет load balancing. Несколько путей с одинаковой стоимостью — статика не знает.
- Сложно поддерживать. Поменялась топология — надо обновить десятки роутеров.
- Нет инкапсуляции. Если в
AS1появилась новая подсеть, надо вручную сообщить о ней всем партнёрам.
Динамические routing protocols решают это: роутеры общаются друг с другом, обмениваются информацией о доступных сетях и метриках, автоматически перестраивают routing tables при изменениях.
Автономные системы (AS) — кто кому равен
Интернет — это сеть из автономных систем (AS, Autonomous System). AS — это сеть под единым административным управлением. Примеры:
- Каждый Tier-1 ISP — своя AS (NTT AS2914, Cogent AS174, Lumen AS3356, etc.).
- Google — AS15169.
- Facebook — AS32934.
- Cloudflare — AS13335.
- GitHub — AS36459 (плюс другие).
Каждой AS присваивается уникальный номер — AS Number (ASN). Раньше 16-битный (0-65535), сейчас 32-битный. Всего в 2026 году в интернете ~110,000 active AS.
Дизайн интернета двухуровневый:
- Внутри AS работают IGP (Interior Gateway Protocol) — OSPF, IS-IS, RIP, EIGRP.
- Между AS работает EGP (Exterior Gateway Protocol) — сейчас только BGP.
OSPF — классика IGP
OSPF (Open Shortest Path First, RFC 2328) — самый популярный IGP. Работает на основе алгоритма Дейкстры (shortest path) с link-state базой.
Как работает (упрощённо):
- Каждый роутер шлёт LSA (Link-State Advertisement) — описание своих линков и соседей. Эти LSA flooding’ом доставляются всем роутерам в AS.
- Каждый роутер собирает все LSA в LSDB (Link-State Database) — полная карта сети. У всех роутеров одинаковая LSDB.
- Каждый роутер запускает алгоритм Dijkstra на LSDB — считает кратчайший путь от себя до каждой сети. Получается SPF tree.
- Из SPF tree формируется routing table.
Особенности OSPF:
- Быстрая convergence. При изменении топологии (упал линк) роутеры пересчитывают SPF за секунды.
- Loop-free. Алгоритм Дейкстры гарантирует отсутствие петель.
- Иерархия через areas. OSPF в большой AS разбивается на areas — внутри area полная LSDB, между ними summary. Уменьшает нагрузку.
- Metric — cost (обычно обратно пропорциональна bandwidth). 1 Gbps линк дешевле, чем 100 Mbps.
- Multicast вместо broadcast. Hello шлются на
224.0.0.5, OSPF DR — на224.0.0.6.
OSPF используется:
- Внутри корпоративных сетей.
- Внутри AS интернет-провайдеров.
- В дата-центрах (хотя там сейчас популярнее BGP).
- Внутри облачных VPC некоторых провайдеров.
# На Linux есть FRRouting / Quagga / BIRD -- демоны для OSPF и других протоколов.
# Пример конфига FRR OSPF:
# router ospf
# network 10.0.0.0/24 area 0
# network 10.0.1.0/24 area 0
# Посмотреть состояние OSPF (после настройки):
vtysh -c 'show ip ospf neighbor'
vtysh -c 'show ip ospf route'
vtysh -c 'show ip ospf database'
RIP, IS-IS, EIGRP — другие IGP
Чтобы не углубляться, кратко:
RIP (Routing Information Protocol). Самый старый и простой. Distance-vector алгоритм (а не link-state). Метрика — hop count, максимум 15 хопов. Медленный convergence (минуты), не масштабируется. Сейчас почти не используется — может в каких-то очень маленьких сетях.
IS-IS (Intermediate System to Intermediate System). Похож на OSPF — link-state, Dijkstra. Происхождение из OSI. Используется крупными ISP — многие магистрали мира работают на IS-IS, а не OSPF. Технически работает не поверх IP, а на L2 — что иногда плюс для безопасности.
EIGRP (Enhanced Interior Gateway Routing Protocol). Cisco proprietary (хотя в 2013 году открыли). Гибрид distance-vector и link-state. Convergence быстрее OSPF, но привязан к Cisco-железу. Используется в Cisco-only средах.
В подавляющем большинстве случаев в IT-индустрии вы встретите OSPF, реже IS-IS. RIP и EIGRP — legacy / specialized.
BGP — кровь интернета
BGP (Border Gateway Protocol, RFC 4271) — единственный протокол маршрутизации между AS. Это path-vector протокол: вместо метрики (как в OSPF) BGP передаёт полный список AS на пути до подсети.
Пример. AS1 (Google) хочет сказать AS2 (мой ISP): «У меня есть сеть 8.8.8.0/24».
Сообщение BGP:
Prefix: 8.8.8.0/24
AS-path: 15169
Next-hop: 1.2.3.4 (граничный роутер AS1)
Когда AS2 получает — добавляет себя в AS-path и передаёт дальше: «8.8.8.0/24 через AS2 -> AS15169». И так далее. У каждой AS в интернете есть BGP-таблица — для каждой публичной подсети известны все возможные пути.
Особенности BGP:
- Огромная таблица. Глобальная BGP в 2026 году — ~950,000 prefixes. Каждый BGP-роутер должен хранить все.
- Path-vector предотвращает loops. Если AS видит себя в AS-path — отбрасывает (loop).
- Manual policy. В BGP много манипуляций: можно дать предпочтение одному маршруту, изменить AS-path длину, фильтровать prefixes. Это политика провайдера.
- TCP-based. BGP работает поверх TCP (порт 179), а не UDP/multicast как OSPF. Соединение между peer’ами — TCP-сессия.
- Slow convergence. Перестроение глобальной BGP-таблицы после крупного события (типа отвала Tier 1) занимает минуты.
BGP-инциденты — когда мир ломается
BGP — основа интернета, но он построен на доверии. Каждая AS может анонсировать что угодно, и соседи должны фильтровать. Это приводит к инцидентам:
BGP hijack — 2008 Pakistan/YouTube. Пакистанский провайдер хотел заблокировать YouTube внутри страны. Анонсировал 208.65.153.0/24 (часть YouTube) с собой как origin. Но забыли фильтровать наружу — анонс ушёл миру. Многие провайдеры приняли (более специфичный prefix, чем YouTube’овский /22), и весь мировой YouTube-трафик начал идти в Пакистан. YouTube недоступен на 2 часа.
Facebook 2021. Facebook сами случайно убрали себя из BGP-таблицы. Маршрутный апдейт убрал prefixes Facebook’а. 6 часов простоя. Их инженеры даже не могли войти физически в дата-центры (badge-системы тоже на FB).
Cloudflare 2020 / Verizon. Маленький ISP misconfigured — анонсировал гигантскую BGP-таблицу как свою. Verizon-фильтры не сработали, пропустили. Большая часть трафика мира пошла через маленький ISP, тот лёг.
Эти инциденты толкают индустрию к RPKI (Resource Public Key Infrastructure) — криптографическая проверка анонсов. Внедряется, но медленно.
Где можно увидеть BGP сами
Вы можете посмотреть BGP-данные онлайн через BGP looking glasses — публичные интерфейсы провайдеров для глобальных запросов.
# Узнать, какая AS управляет 8.8.8.8:
whois 8.8.8.8 | grep -i origin
# Origin: AS15169
# Или через BGPview:
curl https://api.bgpview.io/ip/8.8.8.8 | python3 -m json.tool
# Looking glasses (примеры):
# - Hurricane Electric: bgp.he.net
# - RouteViews: routeviews.org
# - RIPE RIS: stat.ripe.net
Введя prefix или AS, видите глобальную картину: кто откуда видит этот prefix, какие AS-path, какие пиринги.
# Посмотреть AS-path к google.com из разных точек:
# В разных регионах AS-path к 8.8.8.8 разный
# Это не баг, это feature -- каждая AS выбирает свой путь
IGP + BGP в крупной сети
Современный провайдер сочетает оба:
- Внутри AS работает OSPF/IS-IS. Связывает роутеры между собой, считает кратчайшие пути по линкам провайдера.
- На границе работает BGP. Обменивается prefixes с соседними AS.
- iBGP (internal BGP) — между всеми border-роутерами своей AS. Они синхронизируют между собой BGP-знания.
- eBGP (external BGP) — между разными AS.
Это позволяет:
- Внутренние пересоединения быстро (IGP).
- Внешние политики гибко (BGP).
- Прохождение прозрачное (iBGP).
В Kubernetes-кластерах, кстати, часто используют BGP (через Calico/MetalLB) для маршрутизации pod CIDR — bare metal alternative to AWS cloud routing.
Routing protocols vs Mesh / SDN
Альтернативы классическим routing protocols:
1. SDN (Software-Defined Networking). Контроллер централизованно вычисляет routing. Каждый свитч получает forwarding rules. OpenFlow — классика. В дата-центрах — Google’s Andromeda, Facebook’s HW SDN, etc.
2. Service mesh (Istio, Linkerd). На уровне приложений — не маршрутизация пакетов, а маршрутизация HTTP-запросов. Sidecars (Envoy) знают, куда отправлять.
3. Overlay-сети (VXLAN, GENEVE). Поверх IP создаются виртуальные L2-сети. Маршрутизация внутри overlay управляется control plane (часто BGP EVPN).
В классической сети, не cloud-native, вы будете встречать OSPF и BGP в 95% случаев.
Попробуй сам
# 1. Узнать, какая AS управляет вашим IP:
curl ifconfig.me
# 87.123.45.6
whois 87.123.45.6 | grep -iE 'origin|asn|as-?number'
# 2. Узнать AS-path к крупным сайтам:
# Сравните пути к разным:
# https://bgpview.io/ip/8.8.8.8 -- Google
# https://bgpview.io/ip/140.82.121.4 -- GitHub
# https://bgpview.io/ip/93.184.216.34 -- example.com
# Увидите, через какие AS трафик проходит
# 3. Посмотреть глобальную BGP routing table:
# https://www.bgp4.as/
# Размер RIB ~950K prefixes -- столько уникальных IP-сетей в мире
# 4. Установить BIRD или FRR на Linux для экспериментов:
# (если у вас есть две VM в lab):
sudo apt install frr
# Конфиг /etc/frr/frr.conf с OSPF между двумя VM
# 5. Узнать ASN большой компании:
whois -h whois.cymru.com " -v 8.8.8.8"
# AS | IP | BGP Prefix | CC | Registry | Allocated | AS Name
# 15169 | 8.8.8.8 | 8.8.8.0/24 | US | arin | 2014-03-14 | GOOGLE - Google LLC
# 6. BGP looking glass online:
# Pick HE: https://lg.he.net/
# Введите 8.8.8.8 -> увидите весь AS-path от HE до Google
# Можно сравнить разные источники (looking glasses из разных стран)
# 7. Реальные BGP-инциденты онлайн:
# https://bgpstream.com/ -- лента всех BGP hijacks в мире
BGP в Kubernetes: Calico и MetalLB анонсируют pod CIDR через BGP