1. Гайды
  2. Сеть и диагностика

BGP на пальцах: как читать карту связности

AS, префиксы, AS-path, транзит и пиринг, Tier 1, RPKI и препенды. Ровно столько BGP, сколько нужно, чтобы понять, что нарисовано в досье хостера и чем грозит один апстрим.

Актуально для RFC 4271, RFC 6811, RFC 9582, RFC 9319; RIPE RIS и RIPEstat на 2026-09, данные сняты 2026-09-23Обновлено 24.09.2026 7 мин чтения

Хостер пишет в рекламе «10 Гбит/с, магистральные каналы», а BGP знает, как всё обстоит на самом деле. Читать его не сложнее, чем traceroute, если знать пять слов.

Пять слов

ТерминЧто это
AS (автономная система)Группа префиксов под управлением одного или нескольких операторов с единой, чётко заданной политикой маршрутизации (так её определяет RFC 1930). У каждой есть номер: AS9123, AS13335.
ПрефиксБлок адресов вида 91.135.156.0/24, который анонсируется в BGP одной записью.
АнонсСообщение BGP «до этого префикса можно дойти через меня». Сеть, которая анонсирует свой префикс первой, называется origin.
AS-pathСписок AS, через которые прошёл анонс. По нему видно, кто кому передаёт маршрут.
АпстримСеть, у которой твоя AS покупает транзит, то есть доступ ко всему остальному интернету.

Как читать AS-path

Каждый маршрутизатор, передавая анонс в соседнюю AS, дописывает свой номер в самую левую позицию пути (RFC 4271, раздел 5.1.2). Отсюда правило: справа origin, слева тот, кто показал тебе маршрут. Читать от origin нужно справа налево.

Реальный путь до префикса Timeweb, который видел один из пиров RIPE RIS 2026-09-23:

286 3257 12389 9123
  1. AS9123 Timeweb
  2. AS12389 Ростелеком
  3. AS3257 GTT
  4. AS286
Путь 286 3257 12389 9123 из RIPE RIS looking glass для 91.135.156.0/24, 2026-09-23. Анонс идёт слева направо по схеме, в AS-path записан в обратном порядке.

Что ещё следует из устройства AS-path:

  • Защита от петель. Маршрут с петлёй в AS-path (свой номер уже в пути) исключается из выбора (RFC 4271, 9.1.2).
  • Короче значит лучше, но не в первую очередь. Сначала работает локальная степень предпочтения (LOCAL_PREF, её каждая сеть выставляет сама, RFC 4271, 9.1.1), и только среди равных по ней сравнивается длина AS-path (9.1.2.2). Поэтому трафик не обязан идти по самому короткому пути.

Транзит, пиринг и кто кому платит

  • Транзит. Клиент платит провайдеру за две вещи сразу: провайдер анонсирует маршруты клиента остальным сетям и отдаёт клиенту маршруты до всего остального интернета.
  • Пиринг. Две сети обмениваются трафиком только между собой (и своими клиентами), чужой транзит через пиринг не гоняют. Часто без взаимных расчётов (settlement-free), напрямую или через точку обмена трафиком (IX).

Tier 1 это общепринятое, но неформальное понятие: сеть, которая достаёт до всего интернета только через бесплатный пиринг и сама транзит не покупает. Официального списка нет, никакая организация тиры не присваивает, договоры о пиринге обычно закрыты (см. статью Tier 1 network в Википедии и её источники). Там же отмечено, что примерно с 2010 года крупные контент-провайдеры и CDN подключаются к провайдерам напрямую, и иерархия стала заметно площе.

Заметка

Список Tier 1 в нашей карте связности зашит в код: 15 номеров (174, 701, 1299, 2914, 3257, 3320, 3356, 3491, 5511, 6453, 6461, 6762, 6830, 7018, 12956). Это рабочее соглашение для рисования графа, а не чей-то официальный реестр.

Как строится карта связности в досье

Карта есть в досье ASN, досье префикса и досье IP. Что делает код (worker/src/asgraph.ts):

  1. Берёт префиксы. Для AS это самый крупный анонсируемый IPv4-префикс и самый крупный IPv6. Для IP и префикса это сам префикс.
  2. Спрашивает RIPE RIS. RIS это платформа RIPE NCC, которая собирает BGP-таблицы через коллекторы (RRC), с которыми пирятся сети по всему миру. Эндпоинт looking-glass в RIPEstat отдаёт AS-path от каждого пира каждого коллектора, данные близки к реальному времени.
  3. Чистит пути. Схлопывает повторы (препенды), разворачивает путь так, чтобы он шёл от origin.
  4. Оставляет только дороги до Tier 1. Путь обрезается на первой Tier 1. Пути, где Tier 1 нет вовсе, отбрасываются: это пиринг. Если у сети вообще нет путей через Tier 1, рисуются первые четыре хопа.
  5. Рисует. Толщина линии пропорциональна числу путей через это ребро, в подсказке видна доля в процентах. Связи Tier 1 между собой не рисуются. На графе не больше 30 узлов: origin, все встреченные Tier 1 и самые нагруженные транзиты.

Поле «прямые апстримы» показывает AS, которая стоит сразу за origin, с долей путей, где она встретилась. Вот что получилось для Timeweb:

AS9002 RETN49 %
AS1299 Arelion23 %
AS12389 Ростелеком14 %
AS174 Cogent5 %
AS50509 Transroute5 %
AS20764 RASCOM4 %
Прямые апстримы AS9123 (Timeweb): доля от 114 путей RIS до Tier 1 по префиксам 91.135.156.0/24 и 2a03:6f00::/29. Данные host.pink/AS9123?json, 2026-09-23 22:21 UTC

Важно

Проценты означают долю маршрутов, которые видят пиры RIS, а не долю трафика и не условия договора. По AS-path не определить, транзит это или пиринг: карта показывает, через кого сеть видна миру, а не сколько она кому платит. Пути без Tier 1 (например, через прямой пиринг на IX) на карту не попадают вовсе. В прямом запросе к looking glass по 91.135.156.0/24 (2026-09-23) пиры RIS показали 364 пути, и 301 из них обходился без Tier 1 из нашего списка.

Досье префикса: видимость и RPKI

В разделе «Маршрутизация и RPKI» на host.pink/1.1.1.0/24 (2026-09-23): origin AS13335 Cloudflare, RPKI valid, видимость 110 из 111 пиров RIS.

  • Видимость N из M берётся из RIPEstat routing-status. M означает число пиров RIS с полной таблицей для этого семейства адресов (IPv4 или IPv6), N показывает, сколько из них сейчас видят префикс. Если N заметно меньше M, часть интернета до тебя не доходит: фильтры, отзыв анонса, проблемы у апстрима.
  • Впервые замечен, покрывающие и более узкие префиксы тоже из routing-status.

RPKI и ROA

ROA (Route Origin Authorization) это подписанный объект, в котором владелец адресов указывает, какой AS разрешено анонсировать его префиксы и до какой длины маски (maxLength), см. RFC 9582. Маршрутизатор сверяет анонс со списком проверенных ROA и присваивает ему одно из трёх состояний (RFC 6811):

СостояниеКогда
ValidЕсть ROA, который покрывает префикс, совпадает по AS и допускает такую длину маски
InvalidROA на этот адресный блок есть, но ни один не совпадает: чужой AS или слишком длинная маска
NotFoundНи один ROA этот префикс не покрывает

RIPEstat, откуда досье берёт статус (валидатор Routinator), называет их valid, invalid_asn, invalid_length и unknown (это и есть NotFound). Если в досье не valid, открой RIPEstat по ссылке из досье и посмотри точный статус.

Зачем это нужно: сети, которые отбрасывают invalid-маршруты, не примут чужой анонс твоего префикса от другого AS. Чего RPKI не делает: он проверяет только origin, а не путь. RFC 6811 прямо пишет, что атакующему достаточно дописать в конец пути легитимный origin. RFC 9319 советует «минимальные» ROA: только те префиксы, которые реально анонсируются, и maxLength без необходимости не ставить, иначе остаётся место для угона более узкого префикса.

Отказ апстрима и почему нужно два

Один апстрим

твоя AS → A → Tier 1 → мир

Сессия с A упала: анонс отзывается везде. Видимость в досье падает к 0 из M, пока A не поднимется.

твоя AS → A → Tier 1
твоя AS → B → Tier 1

Упал A: маршруты через B остаются в таблицах. После пересчёта BGP трафик идёт через B, префикс виден.

Два и больше

На карте одиночный апстрим выглядит как одна линия от origin, а если он к тому же не Tier 1, досье пишет: «Один апстрим. Упадёт он — упадёт всё». Для ноды, на которой висят платные клиенты, стоит выбирать хостера хотя бы с двумя независимыми апстримами. Опыт сообщества: хостеры меняют апстримов и ловят проблемы у них ( хроника за июнь 2026), а связность префикса проверяют через bgp.tools ( сервисы, мосты).

Prepend

Препенд означает повтор своего номера в AS-path, чтобы путь через этот стык выглядел длиннее и соседи выбирали его реже. В данных RIS для Timeweb он виден прямо: 1299 9123 9123, то есть в сторону Arelion номер Timeweb стоит дважды. Наша карта такие повторы схлопывает.

Рекомендации из черновика IETF GROW draft-ietf-grow-as-path-prepending (это ещё не RFC):

  • больше пяти повторов почти никогда ничего не даёт;
  • не препендить чужие номера AS;
  • при одном апстриме препенд бессмыслен;
  • сосед может безусловно предпочитать маршруты от клиентов (через LOCAL_PREF), и тогда препенд не работает вовсе. Проще спросить у него заранее.

Лайфхак

Быстрый чек-лист перед покупкой: открой host.pink/AS<номер хостера>. Хорошо, когда прямых апстримов несколько и ни у одного нет почти 100% путей. Плохо, когда RPKI не valid или видимость префикса заметно ниже числа пиров. Собственная ASN и подсеть стоят отдельных денег (цифры из сообщества в разделе DNS и в рынке подсетей).

Источники