LACeS:一个开放、快速、负责任且高效的纵向 Anycast 普查系统
联系方式: [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
查看完整 API 文档,了解如何查询单个前缀、ASN 和每日统计数据。
我们提供了一个交互式仪表盘,用于查询、可视化和探索普查数据:
搜索与查询。 输入任意 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): 使用延迟测量和大圆距离计算来检测任播。
注意 当 AB > 1 但 GCD == 1 时,我们提供单播地理定位结果。 这可能有助于判断 AB 结果是误报还是 GCD 结果是漏报。
最新文件(每日更新):
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
| 列 | 描述 |
|---|---|
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 | 每个地理定位位置一条记录(见下文) |
| 字段 | 描述 |
|---|---|
id | 城市的 GeoNames ID,当没有候选城市位于 RTT 圆盘内时为 NoCity |
city | 站点所在城市,使用 iGreedy 算法确定(人口最多的候选城市) |
country_code | 2 字符国家代码(ISO 3166-1 alpha-2) |
lat | 城市纬度 |
lon | 城市经度 |
candidate_diameter | 存留候选城市之间的最大成对距离(km);值越小表示精度越高 |
num_constraints | 用于细化候选集的相交圆盘数量;值越高表示对结果的置信度越高 |
注意: 对于 2026-10-03 之前的日期,地理定位精确到机场粒度(id 在此之前包含 IATA 三字母机场代码)
我们发布 routed-prefixes-IPv*.csv,其中包含:
prefix,asn
4.144.0.0/12,8075
此文件包含我们高置信度检测到任播的所有 IP 路由表前缀(即 .parquet 中的 backing_prefix 列)。
我们提供此文件,因为它便于使用路由前缀进行简单分析,并且可通过 GitHub 的 Web UI 轻松访问。
此外,对于将我们的数据集与 bgp.tools 的列表(该列表基于路由前缀对任播进行分类)结合使用的用户,它简化了联合分析。
我们注意到,一个 backing_prefix 可能包含单播和任播地址的混合(详见论文)。
假设整个 backing_prefix 都是任播会导致许多误报,尤其是对于较大的前缀(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 命中列表 | 每个 /24 的排序 ping 响应地址 | ✓ | |||||
| OpenINTEL A/AAAA | 在 A/AAAA 记录中出现的地址 | ✓ | ✓ | ✓ | ✓ | ||
| OpenINTEL infra:ns | 权威名称服务器地址 | ✓ | ✓ | ||||
| DNS 依赖图 | 权威名称服务器地址(UT DACS、IIJ Labs) | ✓ | ✓ | ||||
| anycast-prefixes | bgp.tools 的任播前缀列表 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| 公共 DNS 服务器 | 公共 DNS 名称服务器 | ✓ | ✓ | ||||
| ODNS | 开放 DNS 解析器和转发器(TU Dresden) | ✓ | |||||
| IPv6 命中列表 | 响应地址: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 测量的实现
MiGreedy 是我们对 iGreedy 算法 的优化实现,用于 IP 地理定位,专为大规模生产级普查而设计。 它支持单播地理定位、利用交集改进的检测,以及置信度/准确度指标。
在学术研究中使用此数据集时,请引用以下论文:
@inproceedings{10.1145/3730567.3764484,
author = {Hendriks, Remi and Luckie, Matthew and Jonker, Mattijs and Sommese, Raffaele 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}
}