Knowledge Base
Information about datasets, software and tools that help M-Lab community members get the most out of experimental data, tools and the global infrastructure we manage.
Getting Started
- Beginner
Welcome to M-Lab: Open Internet Measurement
An introduction to what M-Lab is, what it measures, and how its open data can help you understand internet performance.
MeasurementResearch
Understanding Measurement
- Beginner
Understanding Speed Test Results
Why different speed tests produce different results, and what those differences reveal about your internet connection.
Speed TestMeasurementNDT - Beginner
FAQ: Test Rate Limits
As a first approximation, M-Lab allows 40 tests per day. The enforced limits are more complex. Learn what this means and how to work within them.
Internet Quality
Tests
- Intermediate
MSAK (Measurement Swiss-Army Knife)
MSAK is M-Lab's configurable multi-stream throughput and UDP latency measurement service — designed for researchers and developers who need more control than single-stream NDT provides.
TestsData AccessBigQueryThroughputLatency - Beginner
Neubot DASH Streaming Test
DASH emulates a video streaming player to measure how well a network connection supports adaptive video streaming, without relying on a real video platform.
TestsData AccessStreamingNetwork Neutrality - Intermediate
WeHe — Traffic Differentiation Detection
WeHe tests whether your ISP is treating traffic from specific apps (like YouTube or Spotify) differently from other traffic — detecting throttling or blocking on a per-application basis.
TestsData AccessBigQueryNet NeutralityThrottling - Advanced
Reverse Traceroute
Reverse Traceroute reconstructs the network path from a client back to an M-Lab server — the direction that standard traceroute cannot see — using a distributed system of vantage points and spoofed probes.
TestsData AccessBigQueryRoutingNetwork Topology - Intermediate
Integrating M-Lab Tests into Your Application
How to embed M-Lab's open source tests in a website, mobile app, or software product — and how integration partners can contribute infrastructure back to the M-Lab community.
TestsNDTNode Operations - Beginner
Client-Integration Registration Service (CIRS)
What CIRS is, why M-Lab is introducing it, and how usage tiers, costs, and the pilot program work for integrators running tests above the standard rate limits.
Node OperationsData Access
Core Services
- Advanced
TCP INFO — M-Lab Core Service
TCP INFO collects detailed TCP socket statistics from the Linux kernel for every connection on the M-Lab platform, capturing congestion control state, RTT, loss, and dozens of other metrics at regular intervals.
Core ServicesData AccessBigQueryTCP - Advanced
Packet Headers (PCAP) — M-Lab Core Service
M-Lab's packet-headers service captures TCP packet headers for every connection on the M-Lab platform, stored as per-flow .pcap files indexed by UUID.
Core ServicesData AccessPCAPTCP - Intermediate
Traceroute — M-Lab Core Service
M-Lab's Traceroute core service automatically runs a network path measurement from every M-Lab server back to the client for every TCP connection, building a continuous record of Internet routing.
Core ServicesData AccessBigQueryRoutingNetwork Topology
Accessing Data
- Beginner
FAQ: Accessing M-Lab Data Buckets
How to access M-Lab's raw NDT7 data in Google Cloud Storage using gcloud without permission errors.
Data Access - Intermediate
M-Lab Network Annotations: Geolocation, ASNs, and What They Mean
How M-Lab annotates measurements with geographic and network metadata, the accuracy and limitations of each annotation type, and how to use them correctly in analysis.
Data AccessInternet Quality - Beginner
M-Lab Monthly Stats: Pre-computed Parquet Summaries
What the Monthly Stats dataset is, how it's derived from NDT measurements, what the parquet files contain, and how to access them without BigQuery.
Data AccessResearch - Intermediate
Reading Percentiles in Monthly Stats
How to interpret percentile columns in M-Lab Monthly Stats data, including the counterintuitive polarity of latency and loss, and what p50 vs p95 tells you.
Data AccessInternet QualityResearch - Intermediate
Exploring Monthly Stats with Python
A practical guide to loading, filtering, and visualising M-Lab Monthly Stats parquet files in Python using pandas, without needing BigQuery or a Google Cloud account.
Data AccessResearch
Running a Node
- Intermediate
Running Your Own M-Lab Node: The BYOS Program
An overview of M-Lab's Bring Your Own Server program — what it is, what's required, and how hosting a node contributes to global internet measurement.
Node Operations - Beginner
FAQ: IP Address Mismatch in BYOS Environment File
How to fix an M-Lab BYOS node that is unreachable due to a mismatch between the env file IP and the server's actual public IP.
Node Operations - Intermediate
FAQ: Docker Compose Troubleshooting - Register Node Issues
Steps to diagnose and fix a stopped or unresponsive register-node component in a Docker BYOS deployment.
Node Operations - Intermediate
FAQ: Docker BYOS Monitoring and Logging
Recommended Prometheus metrics endpoints and Docker logging configuration to prevent disk exhaustion on M-Lab BYOS nodes.
Node Operations