2743af1e81ddbbd69ae49e058d58d7216fd95d65
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Cable Latency Survey
Measurements, code and data behind four sites:
| Site | Contents | Source |
|---|---|---|
| https://pingstats.aethercosmology.com | Measured round-trip times between cities, compared with the minimum propagation time along submarine-cable routes on a sphere, a North-pole azimuthal equidistant (AE) map, an AE map centred on 0°N 0°E ("dual-pole") and a flat Mercator map | src/ |
| https://fe-map.aethercosmology.com | The best layout of 219 cities on a plane that a solver can find from timed flights, pings, rail and road lengths and satellite passes, and the same solve released into 3D | femap/ |
| https://iss-spoofing.aethercosmology.com | The Sync Test: the ISS at its published-orbit position on the globe and three flat maps, with a spoofed radio signal moving at the speed measured by SatNOGS stations | satellites/ |
| https://distance.aethercosmology.com | The Shape of Distance: flights, triangles and satellite recordings | src/handoff/The_Shape_of_Distance_PRESENTATION.html |
- Code: MIT (
LICENSE). Measurements and derived data: CC BY 4.0, with third-party terms (LICENSE-DATA.md). - Corrections, new measurements and re-analyses:
CONTRIBUTING.md. Issues and pull requests: https://git.aethercosmology.com/toby/cable-latency-survey.
Files
| Path | Contents |
|---|---|
cable_latency_survey_data_v2.json |
Current data hand-off. 29,341 measurements, 305 sites, every routed path and cable geometry ([lon, lat]). The revision block lists the changes from v1. |
cable_latency_survey_data.json |
v1: the same measurements without coordinates. Kept for reference. |
cable_latency_survey_report.html |
The report, identical to the website. |
src/ |
Pipeline code, raw logs and derived data (below). |
femap/ |
fe-map: solver (fit.py), build (build.py, template.html), result (data/femap.json), page (site/). |
satellites/ |
iss-spoofing: build (build.py, template.html), orbital elements and SatNOGS timings (data/), page (site/). |
src/handoff/The_Shape_of_Distance_PRESENTATION.html |
The Shape of Distance as published; the flights, limits and triangles used by femap/ and the SatNOGS timings used by satellites/ are read from it. |
tests/ |
Headless-browser checks of the sites (tests/run.sh). |
Raw measurements
| Source | File |
|---|---|
| Globalping probes, runs 1 and 2 | src/data/live_20261023T1812Z.json, src/data/live_run2.json (each result with its Globalping measurement ID) |
| Vultr servers (8, 2026-10-23 21:23–22:30 UTC) | src/data/vps/<server>/ping.log, src/data/vps/<server>/mtr.log (traceroutes) |
| Residential connection, Michigan | src/data/home/ping.log (location withheld) |
| RIPE Atlas sea crossings | src/data/trace.json (hops, timings, measurement and probe IDs) |
| WonderNetwork, 2020-07-19/20 | per-pair statistics src/data/wn_clean.json; archive downloaded by src/fetch_raw.sh |
Pipeline
Run from src/. The measurement steps contact external services and are not
needed to rebuild the report.
| Step | Script | Output |
|---|---|---|
| Distance on each model, constants | models.py |
— |
| Globalping measurements | measure.py |
data/live_*.json |
| Vultr servers: create, measure, collect, delete | vps.py |
data/vps/ |
| Vultr logs to measurements | vps_analyze.py |
data/vps_cells.json |
| WonderNetwork archive: statistics, mislocated servers | analyze_wn.py |
data/wn_clean.json |
| Published cable lengths on each model | cables.py |
data/cables.json |
| RIPE Atlas sea crossings | trace.py |
data/trace.json |
| Cable-and-land routing on each model | network.py |
data/network.json |
| Best attainable flat arrangements | flatfit.py |
data/flatfit.json |
| Network attribution from public BGP data | asmap.py |
data/asmap.json, data/rpki.json |
| Shape fit without positions | pingmap.py |
data/pingmap.json |
| North-pole AE longitude solver (hand-off only) | solver.py |
data/solver.json |
| Report | build.py |
site/index.html, web/index.html |
| Data hand-off | export.py |
handoff/cable_latency_survey_data_v2.json |
Reproduce
git clone https://git.aethercosmology.com/toby/cable-latency-survey.git
cd cable-latency-survey/src
pip install -r requirements.txt
./fetch_raw.sh # TeleGeography, WonderNetwork and BGP inputs (not redistributed)
python3 build.py # the report, from the files in data/
python3 flatfit.py # flat arrangements
python3 export.py # the data hand-off
build.py needs only data/ and the TeleGeography files; it does not contact
any measurement service. fetch_raw.sh reports whether the TeleGeography data
it downloads matches the snapshot used (src/raw/tg.sha256).
Browser checks: cd tests && npm install && CH=/path/to/chromium ./run.sh.
Description
Measurements, code and data behind pingstats, fe-map, iss-spoofing and distance.aethercosmology.com. Corrections, new measurements and re-analyses welcome: see CONTRIBUTING.md.
https://pingstats.aethercosmology.com
Languages
HTML
47.2%
Python
41.7%
JavaScript
10.2%
Shell
0.9%