Collaborators: Harris Greenstein, Maheer Aeron, Matthew Cafiero, Joshua Church, and Skyler Krouse.
The primary objective was to analyze the variability in the latency of Starlink's satellite network across different times and locations. Utilizing RIPE Atlas probes connected to Starlink terminals, we systematically pinged these probes to a common site over a 24-hour period, aiming to understand the factors influencing latency.
- Inefficient Ground Station Routing: Satellites could often be found connnecting to ground stations over 2,500 miles further than the nearest station especially in areas like Alaska that would heavily benefit from this service. The latency differences when routing inefficiently caused significant and measureable latency.
- Geographical Variability: Significant differences in latency were observed based on the probe's location, with rural areas generally exhibiting higher latencies.
- Lack of Transparency: Starlink's marketing does not adequately communicate the variability and potential inconsistencies in services and at the time of the project labeled the entire United States as equal and adequate coverage. The outliers observed in rural areas and Alaska call for a significant improvement in transparency of service expectations based on much finer regional information than country-wide.
- Inconsistent with Promises: The advertised latency of 25 ms was rarely met across the network, with most probes not reaching this figure at any point.
- Access the Report: Available Here
- Python 3.x
- Requests library (
pip install requests
) - Folium library for
map.py
(pip install folium
)
-
Clone the Repository: Download the project files from the GitHub repository.
git clone https://github.com/hgreenstein/Starlink-Latency-Analysis.git
-
Install Dependencies: Ensure Python 3.x is installed, and install the required Python libraries.
pip install requests pip install folium # Required for map.py
- Purpose: Fetches all online RIPE Atlas probes for a specific ASN (Autonomous System Number), such as 14593 for Starlink.
- Running the Script:
- Run
python starlinkProbes.py
. - The script will output the ID, country code, and description of each connected Starlink probe.
- It also prints the total number of connected Starlink probes at the end.
- Run
- API Key: Add your RIPE Atlas API key in
measurements.py
. Replace{Redacted For Security}
with your key. - Running the Script:
- Ping Measurements:
- Uncomment the
startMeasurement
function call at the bottom ofmeasurements.py
. - Input the probe IDs of your choice.
- Run
python measurements.py
to start the ping measurements.
- Uncomment the
- Traceroute Analysis:
- Uncomment the
startTraceroute
function call. - Input the probe IDs as with the ping measurements.
- Run
python measurements.py
to execute traceroute analysis.
- Uncomment the
- Fetching Results:
- Uncomment
getResults
and input the measurement ID. - Run
python measurements.py
to retrieve results.
- Uncomment
- Ping Measurements:
- Run
python map.py
to generate a map visualization of probe locations using Folium. Ensure you have the necessary data for mapping.
- The
measurements.py
script contains various scenarios for running measurements (e.g., 24-hour pings, shorter period pings, traceroutes). These are all commented out at the bottom of the file. Based on your requirements, uncomment the appropriate lines and run the script as mentioned above. - For further details on each function and how to modify the scripts for different scenarios, refer to the comments within the scripts and the full project report.
Retrieves all available RIPE Atlas probes matching Starlink's IPv4 addresses. The script was critical in establishing the base dataset for our analysis, as detailed in the 'Methodology' section of the report.
Handles multiple key aspects of data collection and analysis:
- Ping Tests: Conducts regular ping requests every 15 minutes for a 24-hour cycle, as outlined in the 'Data Collection' section of the report.
- Traceroute Analysis: Performs traceroutes to bing.com to assess latency factors, explained in the 'Analysis' chapter of the report.
- Data Correlation: Correlates measurements with satellite positions, aiding in the interpretation of latency variations, as discussed in the 'Results' section.
Used to generate visual maps of probe locations using Folium. This script was instrumental in visualizing the geographical distribution of latency, which is a key aspect of the 'Geographic Analysis' section in the report.
Our analysis highlights the need for improved transparency from Starlink regarding the performance of their network, especially in terms of latency variability and the factors affecting it. The complete findings, along with the methodology and detailed data, are available in the full report.