
IPv4/IPv6 프리픽스를 ICMP, TCP, DNS로 프로빙하여 애니캐스트 배포를 탐지하고 PoP의 위치를 지리적으로 파악하며, 일일 데이터셋과 API를 게시하는 종단적 애니캐스트 센서스 시스템입니다.
LACeS: an Open, Fast, Responsible and Efficient Longitudinal Anycast Census System
연락처: [email protected]
이 저장소의 parquet 파일은 manycast.net REST API를 통해 다른 형식으로 다운로드할 수 있습니다:
| 형식 | 예시 |
|---|---|
.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
개별 프리픽스, ASN, 일별 통계를 쿼리하는 방법은 전체 API 문서를 참조하세요.
센서스 데이터를 쿼리, 시각화, 탐색할 수 있는 대화형 대시보드를 제공합니다:
검색 및 조회. IP 주소, 프리픽스, ASN, 도메인 또는 TLD를 입력하면 애니캐스트 상태, 탐지된 PoP의 지리적 위치, 관련 네트워크 정보를 조회할 수 있습니다. 2024년 3월 21일 이후 모든 센서스 날짜에 대한 과거 스냅샷을 사용할 수 있습니다.
비교 모드. 두 개의 서로 다른 센서스 날짜를 선택하여 애니캐스트 배포가 시간에 따라 어떻게 변화했는지 추적할 수 있습니다.
RIPE Atlas 통합. 공개 RIPE Atlas 결과에 대해 지리적 위치 알고리즘을 실행합니다.
분석. 시간에 따른 통계, 지역별 애니캐스트, 애니캐스트 공간의 힐베르트 곡선, ...
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)
이 조사는 두 가지 탐지 방법을 사용합니다:
애니캐스트 기반 (AB): 애니캐스트를 사용하여 애니캐스트를 탐지합니다. 여러 PoP가 응답을 수신하면 해당 프리픽스는 애니캐스트로 간주됩니다. 자세한 내용은 MAnycast2를 참조하세요. 세 가지 프로브 프로토콜이 사용됩니다: ICMP/ping, TCP SYN/ACK, DNS/UDP.
지연 기반 (GCD): 지연 측정과 대권거리(Great-Circle-Distance) 계산을 사용하여 애니캐스트를 탐지합니다.
참고 AB > 1이지만 GCD == 1인 경우 유니캐스트 지오로케이션 결과를 제공합니다. 이는 AB 결과가 FP인지 또는 GCD 결과가 FN인지 판단하는 데 도움이 될 수 있습니다.
최신 파일 (매일 업데이트):
IPv4-latest.parquet
IPv6-latest.parquet
routed-prefixes-IPv4-latest.csv
routed-prefixes-IPv6-latest.csv
stats-latest
과거 파일 (2024년 3월 21일 이후):
YYYY/MM/DD/IPv4.parquet
YYYY/MM/DD/IPv6.parquet
YYYY/MM/DD/IPv4.csv
YYYY/MM/DD/IPv6.csv
YYYY/MM/DD/stats
| Column | Description |
|---|---|
prefix | 후보 애니캐스트 프리픽스: IPv4의 경우 /24 (예: 1.0.0.0/24), IPv6의 경우 /48 |
AB_ICMPv4/v6 | 애니캐스트 기반 방법(ICMP)을 사용하여 발견된 위치 |
AB_TCPv4/v6 | 애니캐스트 기반 방법(TCP SYNACK)을 사용하여 발견된 위치 |
AB_DNSv4/v6 | 애니캐스트 기반 방법(DNS/UDP)을 사용하여 발견된 위치 |
GCD_ICMPv4/v6 | 지연 기반 방법(ICMP)을 사용하여 발견된 위치 |
GCD_TCPv4/v6 | 지연 기반 방법(TCP)을 사용하여 발견된 위치 |
partial | 부분 애니캐스트가 감지되었는지 여부 (IPv4만 해당) |
backing_prefix | 해당 IP 라우팅 테이블 프리픽스 (RouteViews) |
ASN | 프리픽스를 알리는 ASN (MOAS는 ;로 구분) |
locations | 지리적 위치가 지정된 각 위치당 하나의 항목 (아래 참조) |
| Field | Description |
|---|---|
id | 도시의 GeoNames ID, 또는 RTT 디스크 내에 후보 도시가 없을 때 NoCity |
city | iGreedy 알고리즘을 사용하여 사이트가 배치된 도시 (가장 인구가 많은 후보) |
country_code | 2자리 국가 코드 (ISO 3166-1 alpha-2) |
lat | 도시 위도 |
lon | 도시 경도 |
candidate_diameter | 남아있는 후보 도시 간의 최대 쌍별 거리 (km); 값이 작을수록 정밀도가 높음 |
num_constraints | 후보 집합을 정제한 중첩 디스크의 수; 값이 높을수록 결과에 대한 신뢰도가 높음 |
Note: 2026-10-03 이전 날짜의 경우 지리적 위치는 공항 단위입니다 (id에 IATA 3자리 공항 코드가 포함됨)
routed-prefixes-IPv*.csv를 게시하며, 여기에는 다음이 포함됩니다:
prefix,asn
4.144.0.0/12,8075
이 파일은 우리가 애니캐스트를 높은 신뢰도로 탐지한 모든 IP 라우팅 테이블 프리픽스를 포함합니다(즉, .parquet의 backing_prefix 열).
우리는 이 파일을 제공하는데, 이는 라우팅된 프리픽스를 사용한 손쉬운 분석을 가능하게 하고 GitHub의 웹 UI를 통해 쉽게 접근할 수 있기 때문입니다.
또한, 우리의 데이터셋을 bgp.tools의 목록(라우팅된 프리픽스를 기반으로 애니캐스트를 분류함)과 함께 사용하는 사람들을 위해 그들과의 공동 분석을 단순화합니다.
우리는 backing_prefix가 유니캐스트와 애니캐스트 주소가 혼합되어 있을 수 있다는 점을 유의합니다(자세한 내용은 논문 참조).
전체 backing_prefix가 애니캐스트라고 가정하면 많은 FP가 발생하며, 특히 더 큰 프리픽스(IPv4의 경우 /8까지)에서 그렇습니다.
우리의 권장 사항은 .parquet 파일의 /24, /48 블록을 사용하여 애니캐스트 주소를 평가하는 것입니다.
각 프로브 프로토콜(ICMP, TCP, DNS)은 IP 버전별로 자체 히트리스트를 가지며, /24(IPv4) 또는 /48(IPv6)당 여러 개의 순위가 매겨진 대상을 포함합니다. 우리는 프로빙 비용을 줄이기 위해 프리픽스의 순위가 매겨진 대상들을 반복적으로 프로빙하며, 하나가 응답하면 중단합니다(MAnycastR의 순위 히트리스트 참조). 아래 소스의 순서는 프로빙 선호 순서입니다.
| 소스 | 설명 | ICMPv4 | TCPv4 | DNSv4 | ICMPv6 | TCPv6 | DNSv6 |
|---|---|---|---|---|---|---|---|
| LACeS 피드백 루프 | 이전 센서스의 애니캐스트 대상, 그리고 Ark 전체 GCD 스캔 대상 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| LACeS 응답자 | 지난 7일간의 일일 센서스에서 동일한 프로토콜에 응답한 주소 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| USC/ISI ANT hitlist | /24당 순위가 매겨진 ping 응답 주소 | ✓ | |||||
| OpenINTEL A/AAAA | A/AAAA 레코드에서 확인된 주소 | ✓ | ✓ | ✓ | ✓ | ||
| OpenINTEL infra:ns | 권한 있는 네임 서버 주소 | ✓ | ✓ | ||||
| DNS Dependency Graph | 권한 있는 네임 서버 주소 (UT DACS, IIJ Labs) | ✓ | ✓ | ||||
| anycast-prefixes | bgp.tools의 애니캐스트 프리픽스 목록 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Public DNS servers | 공용 DNS 네임 서버 | ✓ | ✓ | ||||
| ODNS | 오픈 DNS 리졸버 및 포워더 (TU Dresden) | ✓ | |||||
| IPv6 Hitlist | 응답 주소: ICMP, UDP/53, TCP/80 및 TCP/443 (TUM) | ✓ | ✓ | ✓ | |||
| IPv6-SRA | Ping 응답 라우터 주소 (TU Dresden, HAW Hamburg) | ✓ | ✓ |
히트리스트는 매주 일요일에 재구성됩니다. 우리는 요청 시 주간 히트리스트를 기꺼이 공유합니다([email protected]), 단, 이를 요구하는 데이터 소스로부터 허가를 받은 경우에 한합니다.
우리는 별칭 프리픽스(TUM의 별칭 프리픽스 목록 사용)에 대한 스캔을 별칭 블록의 각 라우팅된 프리픽스 내 첫 번째 /48로 제한합니다. 이는 이러한 별칭 블록 내의 많은 수의 /48 프리픽스를 매일 스캔하는 것이 (합리적인 프로빙 속도로) 불가능하기 때문에 필요합니다.
일일 프로빙 영향을 최소화하기 위해, 우리는 /24 단위로 스캔합니다. 그러나 일부 프리픽스는 유니캐스트와 애니캐스트 IP 주소가 혼합되어 있으며(자세한 내용은 논문 참조), 우리는 이를 다중 대상 프로빙을 사용하여 탐지합니다.
우리는 모든 측정 및 분석 도구를 MPL 2.0 라이선스 하에 공개적으로 제공합니다:
MAnycastR은 AB 및 GCD 측정을 위한 구현을 제공합니다