
Sistema de censo anycast longitudinal que sondea prefijos IPv4/IPv6 mediante ICMP, TCP y DNS para detectar despliegues anycast y geolocalizar PoPs, publicando conjuntos de datos diarios y una API.
LACeS: un sistema de censo Anycast longitudinal abierto, rápido, responsable y eficiente
Contacto: [email protected]
Los archivos parquet de este repositorio se pueden descargar en formatos alternativos a través de la API REST de manycast.net:
| Formato | Ejemplo |
|---|---|
.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 |
Sustituya latest por una fecha específica (p. ej., 2026-03-22) para descargar una instantánea histórica. Tanto IPv4 como IPv6 están disponibles con los prefijos IPv4- e IPv6-.
Ejemplo:
curl -O https://manycast.net/api/v1/export/IPv4-2026-03-22.csv.gz
Consulte la documentación completa de la API para consultar prefijos individuales, ASN y estadísticas diarias.
Proporcionamos un panel interactivo para consultar, visualizar y explorar los datos del censo:
Búsqueda y consulta. Introduzca cualquier dirección IP, prefijo, ASN, dominio o TLD para consultar el estado de anycast, la geolocalización de los PoP detectados y la información de red relacionada. Hay instantáneas históricas disponibles para todas las fechas del censo desde el 21 de marzo de 2024.
Modo de comparación. Seleccione dos fechas de censo diferentes para rastrear cómo cambió el despliegue de anycast a lo largo del tiempo.
Integración con RIPE Atlas. Ejecute el algoritmo de geolocalización sobre resultados públicos de RIPE Atlas.
Analíticas. Estadísticas a lo largo del tiempo, anycast por región, curva de Hilbert del espacio anycast, ...
El archivo census_helper.py proporciona funciones de conveniencia para descargar y filtrar el conjunto de datos. Requiere pandas, pyarrow y 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
Según los requisitos, recomendamos el siguiente filtrado:
Alta confianza:
(AB > 3) || (GCD > 1)
Cobertura integral:
(AB > 1) || (GCD > 1)
El censo utiliza dos métodos de detección:
Basado en Anycast (AB): Detecta anycast utilizando anycast. Un prefijo se considera anycast si múltiples PoPs reciben respuestas. Consulte MAnycast2 para más detalles. Se utilizan tres protocolos de sondeo: ICMP/ping, TCP SYN/ACK y DNS/UDP.
Basado en latencia (GCD): Detecta anycast utilizando mediciones de latencia y cálculos de distancia de círculo máximo.
NOTA Proporcionamos resultados de geolocalización unicast cuando AB > 1 pero GCD == 1. Esto puede ayudar a determinar si los resultados de AB son FPs o los resultados de GCD son FNs.
Archivos más recientes (actualizados diariamente):
IPv4-latest.parquet
IPv6-latest.parquet
routed-prefixes-IPv4-latest.csv
routed-prefixes-IPv6-latest.csv
stats-latest
Archivos históricos (desde el 21 de marzo de 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
| Columna | Descripción |
|---|---|
prefix | El prefijo anycast candidato: /24 para IPv4 (p. ej., 1.0.0.0/24), /48 para IPv6 |
AB_ICMPv4/v6 | Ubicaciones encontradas usando el método basado en anycast (ICMP) |
AB_TCPv4/v6 | Ubicaciones encontradas usando el método basado en anycast (TCP SYNACK) |
AB_DNSv4/v6 | Ubicaciones encontradas usando el método basado en anycast (DNS/UDP) |
GCD_ICMPv4/v6 | Ubicaciones encontradas usando el método basado en latencia (ICMP) |
GCD_TCPv4/v6 | Ubicaciones encontradas usando el método basado en latencia (TCP) |
partial | Indica si se detectó anycast parcial (solo IPv4) |
backing_prefix | Prefijo correspondiente de la tabla de enrutamiento IP (RouteViews) |
ASN | ASN(s) que anuncian el prefijo (MOASes separados por ;) |
locations | Una entrada por ubicación geolocalizada (ver más abajo) |
| Campo | Descripción |
|---|---|
id | ID de GeoNames de la ciudad, o NoCity cuando ninguna ciudad candidata se encuentra dentro del disco RTT |
city | Ciudad en la que se sitúa el emplazamiento, usando el algoritmo de iGreedy (la más poblada de las candidatas) |
country_code | Código de país de 2 caracteres (ISO 3166-1 alpha-2) |
lat | Latitud de la ciudad |
lon | Longitud de la ciudad |
candidate_diameter | Distancia máxima por pares (km) entre las ciudades candidatas supervivientes; valores más pequeños indican mayor precisión |
num_constraints | Número de discos superpuestos que refinaron el conjunto de candidatas; valores más altos indican mayor confianza en el resultado |
Nota: La geolocalización es a granularidad de aeropuerto para fechas anteriores a 2026-10-03 ( id contiene un código de aeropuerto IATA de 3 letras antes)
Publicamos routed-prefixes-IPv*.csv que contiene:
prefix,asn
4.144.0.0/12,8075
Este archivo contiene todos los prefijos de la tabla de enrutamiento IP en los que detectamos anycast con alta confianza (es decir, la columna backing_prefix en el .parquet).
Proporcionamos este archivo ya que permite un análisis sencillo utilizando prefijos enrutados y es fácilmente accesible a través de la interfaz web de GitHub.
Además, simplifica el análisis conjunto utilizando la lista de bgp.tools (que clasifica anycast según el prefijo enrutado) para aquellos que utilizan nuestro conjunto de datos en combinación con el suyo.