
Sistema de censo anycast longitudinal que sonda prefixos IPv4/IPv6 via ICMP, TCP e DNS para detectar implantações anycast e geolocalizar PoPs, publicando conjuntos de dados diários e uma API.
LACeS: um Sistema de Censo Anycast Longitudinal Aberto, Rápido, Responsável e Eficiente
Contato: [email protected]
Os arquivos parquet neste repositório podem ser baixados em formatos alternativos através da API REST do manycast.net:
| Formato | Exemplo |
|---|---|
.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 |
Substitua latest por uma data específica (por exemplo, 2026-03-22) para baixar um snapshot histórico. Tanto IPv4 quanto IPv6 estão disponíveis com os prefixos IPv4- e IPv6-.
Exemplo:
curl -O https://manycast.net/api/v1/export/IPv4-2026-03-22.csv.gz
Consulte a documentação completa da API para consultar prefixos individuais, ASNs e estatísticas diárias.
Fornecemos um painel interativo para consultar, visualizar e explorar os dados do censo:
Busca e consulta. Insira qualquer endereço IP, prefixo, ASN, domínio ou TLD para consultar o status anycast, a geolocalização dos PoPs detectados e informações de rede relacionadas. Snapshots históricos estão disponíveis para todas as datas de censo desde 21 de março de 2024.
Modo de comparação. Selecione duas datas de censo diferentes para acompanhar como a implantação anycast mudou ao longo do tempo.
Integração com RIPE Atlas. Execute o algoritmo de geolocalização em resultados públicos do RIPE Atlas.
Análises. Estatísticas ao longo do tempo, anycast por região, curva de Hilbert do espaço anycast, ...
O arquivo census_helper.py fornece funções de conveniência para baixar e filtrar o conjunto de dados. Requer pandas, pyarrow e 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
Dependendo dos requisitos, recomendamos a seguinte filtragem:
Alta confiança:
(AB > 3) || (GCD > 1)
Cobertura abrangente:
(AB > 1) || (GCD > 1)
O censo usa dois métodos de detecção:
Baseado em anycast (AB): Detecta anycast usando anycast. Um prefixo é considerado anycast se múltiplos PoPs receberem respostas. Consulte MAnycast2 para detalhes. Três protocolos de sondagem são usados: ICMP/ping, TCP SYN/ACK e DNS/UDP.
Baseado em latência (GCD): Detecta anycast usando medições de latência e cálculos de Great-Circle-Distance.
NOTA Fornecemos resultados de geolocalização unicast quando AB > 1 mas GCD == 1. Isso pode ajudar a determinar se os resultados AB são FPs ou se os resultados GCD são FNs.
Arquivos mais recentes (atualizados diariamente):
IPv4-latest.parquet
IPv6-latest.parquet
IPv4-latest.csv
IPv6-latest.csv
stats-latest
Arquivos históricos (desde 21 de março 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
| Coluna | Descrição |
|---|---|
prefix | O prefixo /24 anycast candidato (por exemplo, 1.0.0.0/24) |
AB_ICMPv4/v6 | Locais encontrados usando o método baseado em anycast (ICMP) |
AB_TCPv4/v6 | Locais encontrados usando o método baseado em anycast (TCP SYNACK) |
AB_DNSv4/v6 | Locais encontrados usando o método baseado em anycast (DNS/UDP) |
GCD_ICMPv4/v6 | Sites encontrados usando o método baseado em latência (ICMP) |
GCD_TCPv4/v6 | Sites encontrados usando o método baseado em latência (TCP) |
partial | Se anycast parcial foi detectado (somente IPv4) |
backing_prefix | Prefixo correspondente da tabela de roteamento IP (RouteViews) |
ASN | ASN(s) que anunciam o prefixo (MOASes separados por ;) |
locations | Dados detalhados de geolocalização dos sites detectados (veja abaixo) |
| Campo | Descrição |
|---|---|
city | Cidade geolocalizada usando o algoritmo do iGreedy |
country_code | Código de país de 2 caracteres (ISO 3166-1 alpha-2) |
airport_code | Código IATA de 3 letras do aeroporto mais próximo |
lat | Latitude do aeroporto |
lon | Longitude do aeroporto |
radius | Raio do disco de RTT em quilômetros |
candidate_diameter | Distância máxima entre pares (km) entre cidades candidatas sobreviventes; valores menores indicam maior precisão |
num_constraints | Número de discos sobrepostos que refinaram o conjunto de candidatos; valores maiores indicam maior confiança no resultado |
Os últimos três campos ajudam a determinar a confiança dos resultados de geolocalização.
Dados limitados são fornecidos em formato CSV para facilitar o acesso via interface web do GitHub:
prefix,number_of_sites,backing_prefix
1.1.1.0/24,67,1.1.1.0/24
Usamos a hitlist IPv4 do USC/ISI ANT (endereços IP responsivos a ICMP/ping classificados por /24), complementada por:
Usamos:
Para minimizar o impacto diário das sondagens, escaneamos na granularidade /24. No entanto, alguns prefixos contêm endereços IP unicast e anycast misturados (veja o artigo para detalhes), o que detectamos usando sondagem multi-alvo.
Disponibilizamos publicamente todas as ferramentas de medição e análise sob a licença MPL 2.0:
MAnycastR fornece implementações para medições AB e GCD
MiGreedy é nossa implementação otimizada do algoritmo do iGreedy para geolocalização de IP, projetada para censos de produção em larga escala. Ele suporta geolocalização unicast, detecção aprimorada usando interseção e métricas de confiança/precisão.
Ao usar este conjunto de dados para pesquisa acadêmica, cite o seguinte artigo:
@inproceedings{10.1145/3730567.3764484,
author = {Hendriks, Remi and Luckie, Matthew and Jonker, Mattijs and van Rijswijk-Deij, Roland},
title = {LACeS: an Open, Fast, Responsible and Efficient Longitudinal Anycast Census System},
year = {2025},
booktitle = {Proceedings of the 2025 Internet Measurement Conference}
}