
Продольная система переписи anycast, которая зондирует префиксы IPv4/IPv6 через ICMP, TCP и DNS для обнаружения развёртываний anycast и геолокации PoP, публикуя ежедневные наборы данных и API.
LACeS: an Open, Fast, Responsible and Efficient Longitudinal Anycast Census System
Контакт: [email protected]
Файлы parquet в этом репозитории можно загрузить в альтернативных форматах через REST API manycast.net:
| Формат | Пример |
|---|---|
.parquet | https://manycast.net/api/v1/export/IPv4-latest.parquet |
.parquet.gz | https://manycast.net/api/v1/export/IPv4-latest.parquet.gz |
.csv.gz | https://manycast.net/api/v1/export/IPv4-latest.csv.gz |
.json.gz | https://manycast.net/api/v1/export/IPv4-latest.json.gz |
Замените latest на конкретную дату (например, 2026-03-22), чтобы загрузить исторический снимок. Доступны как IPv4, так и IPv6 с префиксами IPv4- и IPv6-.
Пример:
curl -O https://manycast.net/api/v1/export/IPv4-2026-03-22.csv.gz
Полную документацию по API см. в разделе full API documentation для запроса отдельных префиксов, ASN и ежедневной статистики.
Мы предоставляем интерактивную панель управления для запроса, визуализации и изучения данных переписи:
Поиск и просмотр. Введите любой IP-адрес, префикс, ASN, домен или TLD, чтобы узнать статус anycast, геолокацию обнаруженных PoP и связанную сетевую информацию. Исторические снимки доступны для всех дат переписи начиная с 21 марта 2024 года.
Режим сравнения. Выберите две разные даты переписи, чтобы отследить, как менялось развёртывание anycast с течением времени.
Интеграция с RIPE Atlas. Запустите алгоритм геолокации на публичных результатах RIPE Atlas.
Аналитика. Статистика во времени, anycast по регионам, кривая Гильберта пространства anycast, ...
Файл census_helper.py предоставляет удобные функции для загрузки и фильтрации набора данных. Требуются pandas, pyarrow и requests.
import census_helper
# Download latest snapshot and filter to high-confidence anycast prefixes
census = census_helper.download_latest("v4")
anycast = census_helper.filter_anycast(census, "v4")
# Or use comprehensive coverage (includes borderline cases)
anycast = census_helper.filter_anycast(census, "v4", confidence="comprehensive")
python census_helper.py --ip-version v4 --date latest --prefixes-only
python census_helper.py --ip-version v4 --date 2026-03-22 --confidence comprehensive
В зависимости от требований мы рекомендуем следующую фильтрацию:
Высокая достоверность:
(AB > 3) || (GCD > 1)
Комплексное покрытие:
(AB > 1) || (GCD > 1)
В переписи используются два метода обнаружения:
На основе anycast (AB): Обнаруживает anycast с помощью anycast. Префикс считается anycast, если ответы приходят из нескольких PoP. Подробности см. в MAnycast2. Используются три протокола зондирования: ICMP/ping, TCP SYN/ACK и DNS/UDP.
На основе задержки (GCD): Обнаруживает anycast с помощью измерений задержки и расчётов по расстоянию по большому кругу.
ПРИМЕЧАНИЕ Мы предоставляем результаты геолокации unicast, когда AB > 1, но GCD == 1. Это может помочь определить, являются ли результаты AB ложноположительными или результаты GCD — ложноотрицательными.
Последние файлы (обновляются ежедневно):
IPv4-latest.parquet
IPv6-latest.parquet
routed-prefixes-IPv4-latest.csv
routed-prefixes-IPv6-latest.csv
stats-latest
Исторические файлы (с 21 марта 2024 г.):
YYYY/MM/DD/IPv4.parquet
YYYY/MM/DD/IPv6.parquet
YYYY/MM/DD/IPv4.csv
YYYY/MM/DD/IPv6.csv
YYYY/MM/DD/stats
| Столбец | Описание |
|---|---|
prefix | Кандидатный anycast-префикс: /24 для IPv4 (например, 1.0.0.0/24), /48 для IPv6 |
AB_ICMPv4/v6 | Местоположения, найденные с помощью anycast-метода (ICMP) |
AB_TCPv4/v6 | Местоположения, найденные с помощью anycast-метода (TCP SYNACK) |
AB_DNSv4/v6 | Местоположения, найденные с помощью anycast-метода (DNS/UDP) |
GCD_ICMPv4/v6 | Местоположения, найденные с помощью метода на основе задержки (ICMP) |
GCD_TCPv4/v6 | Местоположения, найденные с помощью метода на основе задержки (TCP) |
partial | Был ли обнаружен частичный anycast (только IPv4) |
backing_prefix | Соответствующий префикс таблицы маршрутизации IP (RouteViews) |
ASN | ASN, анонсирующие префикс (MOAS разделяются ;) |
locations | Одна запись на каждое геолоцированное местоположение (см. ниже) |
| Поле | Описание |
|---|---|
id | GeoNames ID города или NoCity, когда ни один город-кандидат не попадает в RTT-диск |
city | Город, в который помещён сайт, по алгоритму iGreedy (самый населённый кандидат) |
country_code | 2-символьный код страны (ISO 3166-1 alpha-2) |
lat | Широта города |
lon | Долгота города |
candidate_diameter | Максимальное попарное расстояние (км) между оставшимися городами-кандидатами; меньшие значения указывают на более высокую точность |
num_constraints | Количество перекрывающихся дисков, уточнивших набор кандидатов; большие значения указывают на более высокую уверенность в результате |
Примечание: Геолокация имеет гранулярность аэропорта для дат до 2026-10-03 (id содержит 3-буквенный код аэропорта IATA)
Мы публикуем routed-prefixes-IPv*.csv, который содержит:
prefix,asn
4.144.0.0/12,8075
Этот файл содержит все префиксы таблицы маршрутизации IP, в которых мы с высокой уверенностью обнаруживаем anycast (то есть столбец backing_prefix в .parquet).
Мы предоставляем этот файл, поскольку он позволяет легко проводить анализ с использованием маршрутизируемых префиксов и легко доступен через веб-интерфейс GitHub.
Кроме того, он упрощает совместный анализ с использованием списка bgp.tools (который классифицирует anycast на основе маршрутизируемого префикса) для тех, кто использует наш набор данных в сочетании с их набором.