
Sistema di censimento anycast longitudinale che sonda prefissi IPv4/IPv6 tramite ICMP, TCP e DNS per rilevare deployment anycast e geolocalizzare i PoP, pubblicando dataset giornalieri e un'API.
LACeS: un sistema di censimento anycast longitudinale aperto, veloce, responsabile ed efficiente
Contatto: [email protected]
I file parquet in questo repository possono essere scaricati in formati alternativi tramite la REST API di manycast.net:
| Formato | Esempio |
|---|---|
.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 |
Sostituisci latest con una data specifica (ad es., 2026-03-22) per scaricare un'istantanea storica. Sia IPv4 che IPv6 sono disponibili con i prefissi IPv4- e IPv6-.
Esempio:
curl -O https://manycast.net/api/v1/export/IPv4-2026-03-22.csv.gz
Consulta la documentazione completa dell'API per interrogare singoli prefissi, ASN e statistiche giornaliere.
Forniamo una dashboard interattiva per interrogare, visualizzare ed esplorare i dati del censimento:
Ricerca e consultazione. Inserisci qualsiasi indirizzo IP, prefisso, ASN, dominio o TLD per verificare lo stato anycast, la geolocalizzazione dei PoP rilevati e le informazioni di rete correlate. Le istantanee storiche sono disponibili per tutte le date di censimento dal 21 marzo 2024.
Modalità confronto. Seleziona due date di censimento diverse per monitorare come è cambiata nel tempo la distribuzione anycast.
Integrazione con RIPE Atlas. Esegui l'algoritmo di geolocalizzazione sui risultati pubblici di RIPE Atlas.
Analytics. Statistiche nel tempo, anycast per regione, curva di Hilbert dello spazio anycast, ...
Il file census_helper.py fornisce funzioni di comodo per scaricare e filtrare il dataset. Richiede 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
In base ai requisiti, raccomandiamo il seguente filtraggio:
Alta affidabilità:
(AB > 3) || (GCD > 1)
Copertura completa:
(AB > 1) || (GCD > 1)
Il censimento utilizza due metodi di rilevamento:
Basato su Anycast (AB): Rileva l'anycast utilizzando anycast. Un prefisso è considerato anycast se più PoP ricevono risposte. Vedi MAnycast2 per i dettagli. Vengono utilizzati tre protocolli di probe: ICMP/ping, TCP SYN/ACK e DNS/UDP.
Basato sulla latenza (GCD): Rileva l'anycast utilizzando misurazioni di latenza e calcoli della Great-Circle-Distance.
NOTA Forniamo risultati di geolocalizzazione unicast quando AB > 1 ma GCD == 1. Questo può aiutare a determinare se i risultati AB sono FP o i risultati GCD sono FN.
File più recenti (aggiornati quotidianamente):
IPv4-latest.parquet
IPv6-latest.parquet
routed-prefixes-IPv4-latest.csv
routed-prefixes-IPv6-latest.csv
stats-latest
File storici (dal 21 marzo 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
| Colonna | Descrizione |
|---|---|
prefix | Il prefisso anycast candidato: /24 per IPv4 (es. 1.0.0.0/24), /48 per IPv6 |
AB_ICMPv4/v6 | Località trovate utilizzando il metodo basato su anycast (ICMP) |
AB_TCPv4/v6 | Località trovate utilizzando il metodo basato su anycast (TCP SYNACK) |
AB_DNSv4/v6 | Località trovate utilizzando il metodo basato su anycast (DNS/UDP) |
GCD_ICMPv4/v6 | Località trovate utilizzando il metodo basato sulla latenza (ICMP) |
GCD_TCPv4/v6 | Località trovate utilizzando il metodo basato sulla latenza (TCP) |
partial | Indica se è stato rilevato anycast parziale (solo IPv4) |
backing_prefix | Prefisso corrispondente della tabella di routing IP (RouteViews) |
ASN | ASN che annunciano il prefisso (MOAS separati da ;) |
locations | Una voce per ogni località geolocalizzata (vedi sotto) |
| Campo | Descrizione |
|---|---|
id | ID GeoNames della città, oppure NoCity quando nessuna città candidata ricade all'interno del disco RTT |
city | Città in cui è collocato il sito, utilizzando l'algoritmo di iGreedy (la candidata più popolosa) |
country_code | Codice paese di 2 caratteri (ISO 3166-1 alpha-2) |
lat | Latitudine della città |
lon | Longitudine della città |
candidate_diameter | Distanza massima a coppie (km) tra le città candidate rimanenti; valori più piccoli indicano una precisione maggiore |
num_constraints | Numero di dischi sovrapposti che hanno raffinato l'insieme delle candidate; valori più alti indicano una maggiore confidenza nel risultato |
Nota: La geolocalizzazione è a granularità di aeroporto per le date precedenti al 2026-10-03 ( id contiene un codice aeroportuale IATA di 3 lettere prima)
Pubblichiamo routed-prefixes-IPv*.csv che contiene:
prefix,asn
4.144.0.0/12,8075
Questo file contiene tutti i prefissi della tabella di routing IP in cui rileviamo anycast con elevata confidenza (ovvero la colonna backing_prefix nel file .parquet).
Forniamo questo file poiché consente un'analisi agevole utilizzando i prefissi instradati ed è facilmente accessibile tramite l'interfaccia web di GitHub.
Inoltre, semplifica l'analisi congiunta utilizzando la lista di bgp.tools (che classifica l'anycast in base al prefisso instradato) per coloro che utilizzano il nostro dataset in combinazione con il loro.