# 论文 vs 代码一致性核查:Starlink - 论文:Investigating Web Content Delivery Performance over Starlink(arXiv:2510.13710v1 [cs.NI],2025-10-15,WWW 2026 接收) - 仓库:https://github.com/SPEAR-Research-Lab/web-content-delivery-starlink-performance(默认分支 main,HEAD fe0ca7f,2026-01-26) - 本地路径:`workdir/p1-starlink/` - 核查日期:2026-10-24 ## 核查对象与方法(含执行的命令) 1. 浅克隆仓库: `git clone --depth 1 https://github.com/SPEAR-Research-Lab/web-content-delivery-starlink-performance.git "…/workdir/p1-starlink"` 2. 下载论文全文并解析文本: `curl -sL -m 60 https://arxiv.org/pdf/2510.13710 -o /tmp/p1.pdf`(1.36 MB,12 页), `pip install pypdf` + pypdf 提取文本到 `/tmp/p1.txt`(约 77 K 字符)。 3. 检查仓库内容:`ls -R`;用 Python 解析 notebook 的 209 个 cell(56 markdown + 153 code),逐 cell 提取 savefig 目标、数据集路径、print 语句;`grep` 关键数字与关键词。 4. 轻量运行尝试(未下载 7.6 GB 数据集): - 对全部 153 个 code cell 做 `ast.parse` 语法检查 → 0 个语法错误; - `pip install --dry-run -r requirements.txt`(本机 Python 3.13)→ 失败(见运行记录); - 新建 venv 安装纯 Python 依赖子集(dnspython/requests/jsonlines/tqdm/haversine/pyasn/pytz)→ 导入成功; - 通过 PyPI JSON API 核查 16 个 pinned 包的 `requires_python`; - GitHub API 获取仓库元数据;WebFetch 读取 mediaTUM 数据集页(curl 直连超时)。 5. 未执行:notebook 全量执行(需 7.6 GB 数据集)、大数据下载、长任务。 ## 论文关键声明清单 **方法** - C1:首个跨 PoP/DNS/CDN 三层的 Starlink 网页内容分发综合测量研究;纵向两年(2023-11 至 2025-09)、覆盖 145 个国家。 - C2:被动数据:Cloudflare AIM(过滤 ASN 14593/45700,抽象写 225 K、§2.1 写 255 K 次测速——论文内部不一致)+ M-Lab(反向 traceroute 推断 PoP)。 - C3:主动测量:99 个 Starlink RIPE Atlas 探针、32 国、2025-03 至 09 共 15 周,每 15 分钟一轮:6.1 M traceroutes + 10.8 M DNS 查询;目标为 Tranco top-2K 中三大 CDN(Cloudflare/Akamai/CloudFront)托管的网站(DNS 每 CDN 5 个域名)。 - C4:受控节点:6 台 Starlink 终端(加拿大 3、德国 1、加纳 1、赞比亚 1),2025-03 至 09 每 2 小时一轮:43 K CHAOS、819 K A-record、512 K traceroutes、523 K HTTP GET。 **主要结论数字** - C5:三种性能区间:内容丰富 PoP 地区卫星段占 RTT 的 80–90%;边缘稀疏地区 PoP→CDN 段膨胀(如 BJ 仅 19% 为 PoP 段、约 100 ms);远端 PoP 场景总延迟 >200 ms。 - C6:Cloudflare(anycast)平均比 Akamai 快 ≈18 ms、比 CloudFront 快 ≈6 ms;PH 用户 CF ≈57 ms、CloudFront ≈46 ms、Akamai ≈180 ms(Akamai 将 PH 75% 流量映射到美国)。 - C7:DNS:CF/Google 中位延迟 ≈28 ms、Quad9 ≈33 ms;缓存命中率 CF 78%、Google 65%、Quad9 58%;非洲缓存未命中时解析达 200–300 ms。 - C8:相比地面 ISP:Starlink 中位延迟高 2–3×(地面 19–20 ms vs Starlink ≈50 ms),但在 BJ/MG 反超地面 30–60 ms;PoP 距离解释至多 50% 的性能方差。 - C9:非洲 2025-01/04 PoP 重分配(NBO/JNB):ZM 终端 NBO→JNB 后 TTFB 降 ≈400 ms、页面总抓取 1.10 s→0.47 s(抽象称中位页面抓取时间降 60%);缓存命中率 63.38%±7.6→92.95%±5.5(表 1;摘要写 60%→85%、§4.1 写 ≈60%→≈90%)。 - C10:加拿大 YYC/YUL 新 PoP:CDN 延迟几乎不变(甚至 +4–5 ms);GU 东京→马尼拉重分配后 PoP/CDN 中位 RTT 改善 25%,边缘分散为 SG 46%/HK 23%/PH 19%/JP 6%/US 4%。 - C11:重分配至 CDN 稀疏区域使服务器位置方差最高增 3×;总结:卫星"弯管"仅 25–30 ms,叠加效应可达 10×。 ## 证据对照表(声明 | 代码/数据证据(文件:行号) | 判定:一致/部分一致/缺失/无法验证) | 声明 | 代码/数据证据 | 判定 | |---|---|---| | C1 两层数据+主动测量架构、2025 早/晚期对照 | notebook L61-66 配置 `../dataset/{late-2025,early-2025}/{ripe_atlas,controlled_nodes,cloudflare-AIM}`;README.md L31-32 指向 mediaTUM 1840504 数据集(7.6 GB,2 个文件,含 Cloudflare/M-Lab/RIPE Atlas 数据) | 部分一致 | | C2 Cloudflare AIM 分析(Starlink vs 地面基线、最佳 CDN 中位延迟) | notebook L4547/L4630 加载 `starlink-bq-results-20251006-190426-1759777511222.json`、`terrestrial-bq-results-20251006-194420-1759779889924.json`;cell 142-145 计算双方 best-CDN 中位 RTT;L4887 输出 Fig 1 热图(`terrestrial_vs_starlink_rtt_difference_global_heatmap_bestCDN_Cloudflare_AIM`) | 一致 | | C2 M-Lab 反向 traceroute 推断 PoP | 全仓库(含 notebook 与 requirements)检索 `mlab/m-lab/ndt` 均无任何代码 | 缺失 | | C3 每 CDN 5 个域名、Tranco 列表 | notebook L649-663:`cloudflare_dns_domains` 等各 5 个域名(均为论文表 2 子集)+ `tranco_Sep2025.csv` + `check_domains_top500` | 一致 | | C3 6.1 M / 10.8 M 等数据量 | 无代码可核对,属数据集属性(mediaTUM 7.6 GB) | 无法验证 | | C5 Fig 3(PoP vs DNS vs CDN 及百分比) | notebook L2088-2180(cell 88):`pop_cdn_percent_stl = 100*pop_rtt/e2e_rtt` 并在图上标注百分比;L2180 savefig `overall_pop_vs_dns_vs_cdn_rtt_stl` | 一致(数值需数据) | | C6 Fig 4(三 CDN RTT 对比);≈18 ms/≈6 ms | notebook L2011 savefig `cdn_comparison_rtt_selected_countries`;cell 87 打印三 CDN 平均中位 RTT(差值由打印值推出,代码不直接打印 18/6 ms) | 部分一致 | | C6 Fig 5(CDN 映射地点分布) | notebook L4249 savefig `selected_countries_all_cdn_locations_percent`(cell 130-133) | 一致(数值需数据) | | C7 Fig 6(CHAOS 响应时间) | notebook L631 savefig `dns_comparison_CHAOS_rt_selected_countries` | 一致(数值需数据) | | C7 命中/未命中分类与 Fig 11 | notebook L747/L891/L1039:按 TTL 阈值分 `resolution_time_hit/miss`;L1175 savefig `dns_resolution_time_comparison_selected_countries_all` | 一致(方法层面);78/65/58% 未在代码中打印 → 数值无法验证 | | C8 Fig 1 热图(Starlink-地面 RTT 差) | notebook L4887(同 C2 行) | 一致 | | C8 “PoP 距离解释至多 50% 方差” | 检索 `corr/R2/regression/variance`:notebook 无任何回归/方差分解代码 | 缺失 | | C8 2–3× 延迟比、19–20 vs ≈50 ms | 需依赖 AIM 数据聚合结果;cell 142-145 只生成中间表,未打印比值 | 无法验证 | | C9 Fig 7(非洲前后分布) | notebook L6349/L6381 joyplot(cell 192)与 cell 193 CDF;**无 savefig** | 部分一致 | | C9 Fig 10(非洲前后箱线图) | notebook cell 194(boxplot,Sep–Nov 2024 vs Mar–May 2025);savefig 被注释(L6422/L6428 区域为注释行) | 部分一致 | | C9 Fig 8(TTFB/总抓取时间)与 60% 改善 | notebook L6602 `webMsms_dir="../dataset/webMsms"`;L6567 savefig `cf_ray_city_ttfb_bar`(cell 206 按城市算 mean total_time/starttransfer_time 并打印);60%/≈400 ms 未直接打印 | 部分一致 | | C9 表 1 缓存命中率(63.38%→92.95% 等) | notebook cell 199(`plot` 打印每城市 mean±std,`hit_statuses={HIT,REVALIDATED}` 等,L6? 区域 cell 197) | 一致(数值需数据) | | C10 GU 前后 CDF(Fig 9 左) | notebook L2381 `probe_id = 65337 ## RIPE Atlas probe for Guam`;L2504 savefig `cf_cdn_Guam_BEFORE_vs_AFTER_cdf` | 一致 | | C10 GU 分散比例(46/23/19/6/4)与 25% 改善 | cell 110-133 合成柱状图可生成分散比例图,但具体百分比与 25% 未打印 | 无法验证 | | C11 “位置方差增 3×” | 检索 `variance`:notebook 无相关计算 | 缺失 | | Fig 12(远端解析器附加 DNS 延迟 CDF) | notebook cell 160(Miami/Chicago/Milan/Jakarta/Lagos,`pop_addtnl_distance_to_*_dns_rtts`);**无 savefig** | 部分一致 | | Fig 13/14(非洲 Akamai Starlink vs 地面) | notebook L5816 savefig `cf_cdn_africa_STAR_vs_TERR_cdf`;L5967/L6034 savefig `{country}_resolved_ip_loc_akamai_domains` | 一致 | | 表 2(域名清单) | notebook L649(3 组各 5 域名,与论文表 2 中"RIPE Atlas+受控"列一致,为子集) | 一致 | ## 运行尝试记录 1. **语法检查**:notebook 全部 153 个 code cell 通过 `ast.parse`,0 语法错误。 2. **依赖安装(Python 3.13,本机默认)**:`pip install --dry-run -r requirements.txt` 失败——`numpy==1.25.2` 无 3.13 wheel,pip 尝试源码构建时因 `pkg_resources`/`pkgutil.ImpImporter` 兼容问题报错(`AttributeError: module 'pkgutil' has no attribute 'ImpImporter'`)。即 pinned 环境无法安装在 Python 3.13 上。 3. **版本一致性核查(PyPI metadata)**:`scipy==1.17.0` 的 `requires_python >= 3.11`;`numpy 1.25.2/pandas 2.0.3/matplotlib 3.7.2` 的 wheel 上限为 3.11。→ requirements.txt 与 README 声称的 "Python3.9.6" 矛盾(3.9 装不了 scipy 1.17.0);实际可行的解释器约为 Python 3.11。 4. **轻量子集安装**:venv 内安装 dnspython/requests/jsonlines/tqdm/haversine/pyasn/pytz 成功并全部可 import。 5. **notebook 执行前置条件**:仓库不含 `../dataset/`(仅 README、requirements、code、helper),notebook 在 cell 1(L61 `pyasn.pyasn("../dataset/ipasn_25082025.dat")`)即会失败;完整复现必须先从 mediaTUM 下载 7.6 GB 数据集。按要求未下载。 6. **notebook 无任何已保存的 cell outputs**(0 个 outputs),无法离线比对渲染后的图与论文图。 7. **mediaTUM 数据集页**(README L31 链接):页面标题即论文名,7.6 GB、2 个文件,描述为"Cloudflare、M-Lab、RIPE Atlas 的被动与主动测量"——数据集存在且与论文匹配(curl 直连超时,经 WebFetch 摘要确认)。 ## 官方性确认 - **GitHub API**:`SPEAR-Research-Lab/web-content-delivery-starlink-performance`,非 fork,description 与论文标题一致,创建于 2026-01-14。 - **README.md**:L1 带 `WWW'26-Paper` 徽标;L6 标题与论文一致;L16-27 提供 BibTeX,作者为 Bose、Zhao、Shreedhar、Pan、Mohan,booktitle=Proceedings of the Web Conference 2026——与 PDF 作者列表**逐字一致**。 - **作者核对**:论文实际作者为 Rohan Bose (TUM)、Jinwei Zhao (UVic)、Tanya Shreedhar (TU Delft)、Jianping Pan (UVic)、Nitinder Mohan (TU Delft)。任务描述中提到的 "Arvind Narayanan" **不在作者列表中**。 - 论文正文("To foster reproducibility … we will release our measurement datasets, analysis code, and controlled measurement methodology publicly upon acceptance")与"数据在 mediaTUM、代码在 GitHub"的发布方式吻合。 - 小瑕疵:README L38 克隆地址写小写 `spear-lab`(GitHub 组织名不区分大小写,实测 302/200 跳转到 SPEAR-Research-Lab,可用);仓库**无 LICENSE 文件**、无 DOI 链接。 ## 结论:部分一致 理由: 1. **结构与方法一致**:单个分析 notebook(153 个 code cell)覆盖论文 Fig 1、3、4、5、6、7、8、9、10、11、12、13、14 及表 1、表 2 的生成逻辑,figure 语义、目标域名、PoP 概念、数据集目录结构与论文 §2-§4 吻合;all code cells 语法有效;数据集(mediaTUM 1840504)官方存在。 2. **关键数值无法复验**:所有定量结论(60%、18/6 ms、25%、2–3×、78/65/58%、80–90% 等)依赖 7.6 GB 外部数据集,仓库内无数据、无缓存输出,本次无法数值核对;部分数字(如 60%、25%、78/65/58%、GU 分散比例)代码只做聚合绘图、不直接打印。 3. **存在实质缺口**:论文声称的 M-Lab 反向 traceroute 推断 PoP(C2 一半方法)在代码中完全缺失;"PoP 距离解释 50% 方差"、"位置方差 3×"无任何实现;Fig 7/10/12 有绘图代码但未 savefig。 4. **环境可复现性瑕疵**:README 称 Python 3.9.6,但 `scipy==1.17.0` 要求 ≥3.11;在 3.13 上 pip 直接失败(numpy 1.25.2 无 wheel)。 5. **论文自身矛盾**:225 K vs 255 K AIM 测速数;缓存命中率 60%→85%(摘要)vs ≈60%→≈90%(正文)vs 63.38%→92.95%(表 1)。 综合:artifacts 能支撑论文**方法与图表的定性复现**,但不能(在本仓库内)独立支撑其核心定量结论;判定为**部分一致**。 ## 局限 - 按任务要求未下载 7.6 GB 数据集,全部数值类声明标为"无法验证/部分一致",未做端到端重跑。 - mediaTUM 页面仅经 WebFetch 摘要(直连超时),未核对 2 个数据文件的确切名称与内容是否覆盖 `early-2025/late-2025` 全部子目录。 - notebook 无保存输出,无法对比代码生成的图与论文图的像素级一致。 - 未检查各数据文件内部 schema(字段名如 `serverPoP`、`cf-ray` 头等是否与解析代码一致)。