This repository contains the dataset for the paper LENS: A LEO Satellite Network Measurement Dataset published in ACM Multimedia Systems Conference (MMSys'24) Open-source Software and Dataset (ODS) track.
Check out our MMSys'24 paper "Low-Latency Live Video Streaming over a Low-Earth-Orbit Satellite Network with DASH" which utilizes this dataset for low-latency live video streaming over Starlink.
This repository contains the dataset for the paper LENS: A LEO Satellite Network Measurement Dataset published in ACM Multimedia Systems Conference (MMSys'24) Open-source Software and Dataset (ODS) track.
The original dataset snapshot for the published paper can be found at commit c084c11.
You can also check out our MMSys'24 paper Low-Latency Live Video Streaming over a Low-Earth-Orbit Satellite Network with DASH that utilizes this dataset for low-latency live video streaming over Starlink.
For inside-out measurements, the datasets are collected with multiple dishes located in the following regions.

Source: https://twitter.com/olegkutkov/status/1742322178320670753/
The dataset is split into monthly snapshots. Each can be retrieved from Zenodo using the links below.
Due to the file size limit on Zenodo, monthly snapshots are created in splitted tar archives using the following command.
e.g.,
tar -I "zstd -T24 -8" -cvf - LENS-2024-01 | split --bytes=40GB - LENS-2024-01.tar.zst.
To decompress, make sure Zstd is installed. Download all the splitted tar archives for the same month in the same folder, and decompress using the following command. Make sure you have enough disk space.
e.g.,
cat LENS-2024-01.tar.zst.* | tar --zstd -xf -
RAW dataset contains IRTT metrics in .json formats and ping metrics in .txt formats. Examples of both files are shown below.
{
"version": {
"irtt": "0.9.1-clarkzjw",
"protocol": 1,
"json_format": 1
},
"system_info": {
"os": "linux",
"cpus": 16,
"go_version": "go1.21.6",
"hostname": "REDACTED"
},
"config": {
"local_address": "REDACTED",
"remote_address": "REDACTED",
"open_timeouts": "1s,2s,4s,8s",
"params": {
"proto_version": 1,
"duration": 5000000000,
"interval": 1000000000,
"length": 60,
"received_stats": "both",
"stamp_at": "both",
"clock": "both",
"dscp": 0,
"server_fill": ""
},
"loose": false,
"ip_version": "IPv4",
"df": 0,
"ttl": 0,
"timer": "comp",
"time_source": "go",
"waiter": "3x4s",
"filler": "none",
"fill_one": false,
"server_fill": "",
"thread_lock": false,
"supplied": {
"local_address": "REDACTED",
"remote_address": "REDACTED",
"open_timeouts": "1s,2s,4s,8s",
"params": {
"proto_version": 1,
"duration": 5000000000,
"interval": 1000000000,
"length": 0,
"received_stats": "both",
"stamp_at": "both",
"clock": "both",
"dscp": 0,
"server_fill": ""
},
"loose": false,
"ip_version": "IPv4",
"df": 0,
"ttl": 0,
"timer": "comp",
"time_source": "go",
"waiter": "3x4s",
"filler": "none",
"fill_one": false,
"server_fill": "",
"thread_lock": false
}
},
"stats": {
"start_time": {
"wall": 1707277440772833268,
"monotonic": 22210666
},
"send_call": {
"total": 127256,
"n": 5,
"min": 12052,
"max": 30262,
"mean": 25451,
"stddev": 7639,
"variance": 58362885
},
"timer_error": {
"total": 1299408,
"n": 4,
"min": 42505,
"max": 643010,
"mean": 324852,
"stddev": 265465,
"variance": 70472098752
},
"rtt": {
"total": 83084018,
"n": 5,
"min": 16064572,
"max": 17291970,
"mean": 16616803,
"median": 16597560,
"stddev": 488290,
"variance": 238427848599
},
"send_delay": {
"total": 52436439042,
"n": 5,
"min": 10486437967,
"max": 10488213200,
"mean": 10487287808,
"median": 10487235754,
"stddev": 703446,
"variance": 494837607693
},
"receive_delay": {
"total": -52353355157,
"n": 5,
"min": -10470976733,
"max": -10470232546,
"mean": -10470671031,
"median": -10470851192,
"stddev": 342554,
"variance": 117343485897
},
"server_packets_received": 5,
"bytes_sent": 300,
"bytes_received": 300,
"duplicates": 0,
"late_packets": 0,
"wait": 51875910,
"duration": 4053373029,
"packets_sent": 5,
"packets_received": 5,
"packet_loss_percent": 0,
"upstream_loss_percent": 0,
"downstream_loss_percent": 0,
"duplicate_percent": 0,
"late_packets_percent": 0,
"ipdv_send": {
"total": 2978734,
"n": 4,
"min": 405684,
"max": 1284073,
"mean": 744683,
"median": 644488,
"stddev": 397052,
"variance": 157650351613
},
"ipdv_receive": {
"total": 1895362,
"n": 4,
"min": 70066,
"max": 744191,
"mean": 473840,
"median": 540552,
"stddev": 290347,
"variance": 84301497643
},
"ipdv_round_trip": {
"total": 1760386,
"n": 4,
"min": 194481,
"max": 806291,
"mean": 440096,
"median": 379807,
"stddev": 261474,
"variance": 68368804430
},
"server_processing_time": {
"total": 17180,
"n": 5,
"min": 1780,
"max": 4380,
"mean": 3436,
"stddev": 987,
"variance": 976030
},
"timer_err_percent": 0.0324852,
"timer_misses": 0,
"timer_miss_percent": 0,
"send_rate": {
"bps": 599,
"string": "599 bps"
},
"receive_rate": {
"bps": 600,
"string": "600 bps"
}
},
"round_trips": [
{
"seqno": 0,
"lost": "false",
"timestamps": {
"client": {
"receive": {
"wall": 1707277440790127432,
"monotonic": 39504855
},
"send": {
"wall": 1707277440772833721,
"monotonic": 22211105
}
},
"server": {
"receive": {
"wall": 1707277451261046921,
"monotonic": 8380840759811810
},
"send": {
"wall": 1707277451261048701,
"monotonic": 8380840759813590
}
},
"Ecn": 0
},
"delay": {
"receive": -10470921269,
"rtt": 17291970,
"send": 10488213200
},
"ipdv": {}
},
{
"seqno": 1,
"lost": "false",
"timestamps": {
"client": {
"receive": {
"wall": 1707277441790353996,
"monotonic": 1039731408
},
"send": {
"wall": 1707277441773479264,
"monotonic": 1022856655
}
},
"server": {
"receive": {
"wall": 1707277452261201298,
"monotonic": 8380841759966187
},
"send": {
"wall": 1707277452261205188,
"monotonic": 8380841759970077
}
},
"Ecn": 0
},
"delay": {
"receive": -10470851192,
"rtt": 16870863,
"send": 10487722034
},
"ipdv": {
"receive": 70066,
"rtt": -421107,
"send": -491173
}
},
{
"seqno": 2,
"lost": "false",
"timestamps": {
"client": {
"receive": {
"wall": 1707277442788720025,
"monotonic": 2038097444
},
"send": {
"wall": 1707277442772652035,
"monotonic": 2022029432
}
},
"server": {
"receive": {
"wall": 1707277453259090002,
"monotonic": 8380842757854891
},
"send": {
"wall": 1707277453259093442,
"monotonic": 8380842757858331
}
},
"Ecn": 0
},
"delay": {
"receive": -10470373417,
"rtt": 16064572,
"send": 10486437967
},
"ipdv": {
"receive": 477782,
"rtt": -806291,
"send": -1284073
}
},
{
"seqno": 3,
"lost": "false",
"timestamps": {
"client": {
"receive": {
"wall": 1707277443789142691,
"monotonic": 3038520113
},
"send": {
"wall": 1707277443772879290,
"monotonic": 3022256680
}
},
"server": {
"receive": {
"wall": 1707277454260115044,
"monotonic": 8380843758879943
},
"send": {
"wall": 1707277454260119424,
"monotonic": 8380843758884323
}
},
"Ecn": 0
},
"delay": {
"receive": -10470976733,
"rtt": 16259053,
"send": 10487235754
},
"ipdv": {
"receive": -603323,
"rtt": 194481,
"send": 797804
}
},
{
"seqno": 4,
"lost": "false",
"timestamps": {
"client": {
"receive": {
"wall": 1707277444789867766,
"monotonic": 4039245182
},
"send": {
"wall": 1707277444773266535,
"monotonic": 4022643932
}
},
"server": {
"receive": {
"wall": 1707277455260096622,
"monotonic": 8380844758861511
},
"send": {
"wall": 1707277455260100312,
"monotonic": 8380844758865201
}
},
"Ecn": 0
},
"delay": {
"receive": -10470232546,
"rtt": 16597560,
"send": 10486830087
},
"ipdv": {
"receive": 744191,
"rtt": 338507,
"send": -405684
}
}
]
}
Also see IRTT-CLIENT (1) for details.
Note that the One-Way-Delay (OWD) calculation is affected by the clock synchronization between the client and server. We set up NTP on both the Starlink client and the server with NTP pool servers. However, we can only provide best-effort attempts and some OWD values might not be accurate and may contain negative values.
[1700182800.410606] 64 bytes from 2605:59c8:1000:962f::1: icmp_seq=1 ttl=63 time=60.6 ms
[1700182800.421290] 64 bytes from 2605:59c8:1000:962f::1: icmp_seq=2 ttl=63 time=56.9 ms
[1700182800.442474] 64 bytes from 2605:59c8:1000:962f::1: icmp_seq=3 ttl=63 time=62.0 ms
[1700182800.465254] 64 bytes from 2605:59c8:1000:962f::1: icmp_seq=4 ttl=63 time=68.8 ms
[1700182800.475936] 64 bytes from 2605:59c8:1000:962f::1: icmp_seq=5 ttl=63 time=65.1 ms
Processed CSV dataset only contains timestamps and necessary latency metrics.
This repository is licensed under GPL-3.0.
The dataset files on Zenodo are released under CC BY-SA 4.0.
This work is not possible without our alumni and their students who hosted our Starlink dishes, and other researchers and Starlink users on /r/Starlink and /r/StarlinkEngineering who generously allowed us to access their dishes remotely.
No comments yet.
Sign in to be the first to comment.