What is M-Lab?
Measurement Lab (M-Lab) is the largest open source Internet measurement effort in the world. (Open source refers to source code that is made available for free so that anyone can use or modify it to fit their own purposes.) M-Lab provides Internet measurement tests that help consumers develop an accurate picture of their Internet service by offering a state-of-the-art server platform that supports many measurement needs. The data are collected and then released to the public for use by policymakers, researchers, and others who are interested in Internet issues.
The graphic below illustrates the relationship between tests run by consumers and M-Lab’s data collection.
Where are M-Lab Servers hosted?
M-Lab hosts our servers, which we call “pods”, in Tier 1 data-centers, connected to the Internet with links between 1-10 Gbps. In major metro areas, M-Lab strives to maintain multiple pods, each connected to as many distinct transit providers as possible. You can view where M-Lab servers are hosted on our platform status page.
Once an M-Lab pod is online we make no changes in our systems for the life of each pod. Whenever there is a substantial change to our sites, such as renumbering of IP addresses, we retire the pod, retain its naming and metadata in our systems, and treat the pod as brand new.
M-Lab’s Tests and Data
What measurement tests can I run?
Right now, people can use M-Lab tests to measure their broadband speed, analyze application performance, and run diagnostics. The most commonly run test is the Network Diagnostic Tool (NDT), which provides measurements like upload speed, download speed, and other data points that help to measure speed and quality issues on your connection. To read about all of the tests available on the platform, please visit our tests page.
What data will be collected when I run a test?
Since all data collected through experiments is released publicly, M-Lab’s Acceptable Use Policy requires the submission of only specific technical Internet measurements and prohibits the collection of sensitive personal information, such as physical location or web browser history.
Information collected under our Acceptable Use Policy includes:
- Measurement Data: Performance variables describing the state of connection during the test, such as average download and upload speed; latency and topology of the path between the client and server; and, whether the application or protocol is manipulated or discriminated against in transit.
- Connection Data: Information necessary to characterize performance data including the Internet Protocol (IP) address of the client that conducted the measurement and the date and time of the test.
- Metadata: Descriptive information about the user’s environment to support analysis of measurement data. Metadata varies by experiment and client but may include the name and version of the web browser software, software application, or operating system used to conduct the test.
Specific information on what type of data is collected by each M-Lab test and how it can be accessed is available on our tests page.
Will these tests monitor my private Internet activity, like email messages or, browsing and search history?
M-Lab collects and publishes all test data, which include the IP address assigned to your device by your Internet service provider (ISP). However, this does not include any personal information about you as an Internet user, where you browse, or any other details that could be used to associate you with your history of tests.
Who is collecting data? Where is it stored?
For most tests, M-Lab collects and stores raw test data and makes the data publicly available using Google Cloud Storage. Data for some tests is additionally made available through Google BigQuery so that users can run SQL queries on the data.
For some tests, such as the Broadband Internet Service Benchmark (BISmark), the test maintainers collect their test’s data and publish it on their own site.
How is data collected through M-Lab tests used?
Since all data collected through M-Lab tests is released into the public under a Creative Commons Public Domain Dedication (CC0 1.0) license, everyone is free to use M-Lab data for any purpose, without needing to seek prior permission from M-Lab. M-Lab cannot assert control over third parties’ use of the published data.
How long is data stored?
To allow research and transparency into long-term trends in Internet performance, all data is stored and published indefinitely.
Can I delete my test data?
M-Lab does not authenticate users or allow storage of information on the platform that would associate individuals or clients with their history of tests, and IP addresses may be dynamic and vary across tests. Accordingly, M-Lab is generally unable to identify any specific test data as relating to any specific individual. Users may initiate new tests, which will be included in the public dataset in addition to prior results.
Where can I explore M-Lab data?
You can explore visualizations of M-Lab’s NDT speed test data. M-Lab data for NDT, Paris Traceroute, and Sidestream tests are searchable using BigQuery, and data for all tests can be downloaded in raw compressed file format. Please visit the tests page and click on the section on data for more information about how to access the data using BigQuery or other tools.
Why are my M-Lab results different from other speed tests?
Internet performance tests may provide different results for a lot of reasons. Three of the main reasons for different results among tests are listed below:
1. Differences in the location of testing servers
Every performance test has two parts:
- client: This is the software that runs on the user’s machine and shows the user their speed results.
- server: This is the computer on the Internet to which the client connects to complete the test.
A test generates data between the client and the server, and measures performance between these two points. The location of these two points is important in terms of understanding the results of a given test.
If the server is located within your Internet Service Provider’s (ISP’s) own network (also known as the “last mile”), this is referred to as an “on-net” measurement. This approach lets you know about how your Internet connection is performing intra-network within your ISP, but it does not necessarily reflect the full experience of using the Internet, which almost always involves using inter-network connections (connections between networks) to access content and services that are hosted somewhere outside of your ISP. Results from on-net testing are often higher than those achieved by using other methods, since the “distance” traveled is generally shorter, and the network is entirely controlled by one provider (your ISP).
“Off-net” measurements occur between your computer and a server located outside of your ISP’s network. This means that traffic crosses inter-network borders and often travels longer distances. Off-net testing frequently produces results that are lower than those produced from on-net testing.
M-Lab’s measurements are always conducted off-net. This way, M-Lab is able to measure performance from testers’ computers to locations where popular Internet content is often hosted. By having inter-network connections included in the test, test users get a real sense of the performance they could expect when using the Internet.
2. Differences in testing methods
Different Internet performance tests measure different things in different ways. M-Lab’s NDT test tries to transfer as much data as it can in ten seconds (both up and down), using a single connection to an M-Lab server. Other popular tests try to transfer as much data as possible at once across multiple connections to their server. Neither method is “right” or “wrong,” but using a single stream is more likely to help diagnose problems in the network than multiple streams would. Learn more about M-Lab’s NDT methodology.
3. Changing network conditions and distinct test paths
The Internet is always changing, and test results reflect that. A test conducted five minutes ago may show very different results from a test conducted twenty minutes ago. This can be caused by the test traffic being routed differently. For example, one test might travel over a path with broken router, while another may not. A test run today may be directed to a test server located farther away than a test run yesterday. Additionally, IPv4 and IPv6 routes may take different physical paths. Some IPv6 routes may be tunneled through IPv4, from the client, or at any point after the client depending on local network management.
In short, running one test will give you a sense of network conditions at that moment, across the best network path available at that time, to the specific server coordinating the test. But because Internet routing and infrastructure change dynamically, testing regularly and looking at the data over time are much more reliable ways to gauge representative performance.
NDT measurements satellite Internet connections
The NDT test sometimes presents unexpected results when measuring a satellite Internet connection. ISPs that use a proxy prior to the satellite uplink terminate the TCP flow at the proxy. As a result, NDT is measuring the speed and latency to the proxy rather than all the way through the proxy. M-Lab is working on updates to NDT which we hope will resolve this issue for satellite customers in the future.
How do I report issues with M-Lab tests?
Most M-Lab tests should take less than thirty seconds to complete, so if your particular test is taking longer, there may be something wrong. First, do the following:
- Try running the test again. Perhaps an unusual network issue caused the problem.
- Try running the test from a different location. For example, if it failed at your home, does the test work at a coffee shop?
- If the test doesn’t start or never completes, is your connection behind a firewall? This may be the case at some workplaces where the network is actively managed.
If none of the above solves the issue you are experiencing, you can report a bug by emailing email@example.com.
When reporting a bug, please provide (if at all possible) the following specific information:
- Your operating system
- Your browser name and version
- The name of the test that is not working
- Any error messages you have received
M-Lab support will usually reply within five business days. You can also ask other M-Lab users about the issue you are reporting in the M-Lab-Discuss group.
What firewall ports does NDT require to be open?
If you are unable to run NDT at all, you may be using a computer that is firewalled, for example at your workplace. A network administrator will need to open ports 3001-3010 and 32768-65535 in the firewall for this test to function properly.
For network administrators, the patterns below can be used in your firewall rules to whitelist M-Lab servers and tests:
- all tests the M-Lab platform:
- only NDT tests:
- specfic NDT servers by metro using IATA code:
Who are M-Lab’s supporting partners?
M-Lab is a community-based effort. We currently receive resources and financial assistance from our partners and welcome others who would like to support the platform’s growth.
M-Lab is supported by academic institutions, private foundations, private companies, and public interest organizations. M-Lab’s partners have committed resources to M-Lab in the form of infrastructure, funding, data storage/analysis, staffing, and other assistance dedicated to furthering M-Lab’s mission. For a list of M-Lab’s partners, please see our list of supporters.
How does M-Lab choose the tests it hosts?
The Internet measurement tests running on the M-Lab platform are built and maintained by researchers interested in understanding the Internet and how people experience it. Interested researchers can build their own open source tests and apply to host them with M-Lab. Applications for new tests are reviewed by our operations team and our Experiment Review Committee, and if approved, they are then installed on M-Lab’s global Internet measurement infrastructure. By making researchers’ tests available in this way and promoting their use by consumers, M-Lab serves both consumers and researchers, as well as regulators and others, by providing data collected over a period of time that is openly available for analysis. For more information, please see our FAQ: Can I use M-Lab’s platform to host my own measurement experiment?
How can I contact M-Lab?
Supporting or Contributing to M-Lab
How can individuals get involved and support M-Lab?
For individuals, the best way to support M-Lab is to regularly use our tests. You gain the benefit of understanding more about your connection to the Internet, and the research community and the public benefits from the resulting public data.
People who have expert knowledge in web or application development, data analysis, or data presentation in a graphic format may also be interested in working with M-Lab’s tests, data, and analysis tools, all of which are open source and openly licensed. More information can be found in the links below, or you can contact us at firstname.lastname@example.org to learn more.
How can companies or other organizations get involved and support M-Lab?
By becoming an M-Lab supporting partner, companies, nonprofit organizations, academic institutions, and other organizations can help M-Lab in a number of key ways, including the following:
- By providing hardware to grow the M-Lab platform, and donating the cost of network connectivity and hosting.
- By contributing resources for data storage, aggregation, and publication.
- By providing data analysis or by presenting data in graphic form.
- By embedding an M-Lab client tool in an application or service, allowing M-Lab to reach more people and generate more data.
- By providing direct financial support.
How can researchers get involved?
M-Lab welcomes researchers who want to dig into the M-Lab data. Our team provides documentation and support for those interested. If you are interested in working with M-Lab data in your research, check out our data documentation to help get you started and contact us with any questions. We also suggest you join our M-Lab Discuss Group for news and announcements.
Can I use M-Lab to host my own measurement experiment?
M-Lab is open to applications from researchers who develop and maintain open source network measurement tests that conform to our goals and support our mission. However, the vast majority of proposed M-Lab tests are not accepted because of the high standard that M-Lab sets for the tests that we host and the restrictions that the platform imposes with respect to the collection of personal data.
The researchers who are managing the current tests on the M-Lab platform have secured sufficient funding to support the test’s continued development, deployment, and maintenance throughout its entire life cycle. Your decision to host a particular test on the M-Lab platform is a commitment to provide substantial resources over a period of years and to an ongoing relationship with the M-Lab operations team.
Applications for new tests are reviewed by M-Lab’s operations team and Experiment Review Committee. The number of slots available is finite, so M-Lab will consider only serious inquiries from researchers who are working on mature tests that both align with the M-Lab mission and do not significantly overlap with the functionality of existing tests.
If you are interested in deploying a new tool or test on the M-Lab platform, please first read our document outlining M-Lab’s requirements and procedures for accepting new tools on the platform, and then contact the M-Lab Operations team for more information.
How can I add an M-Lab test to my website, app or other software?
M-Lab’s open source tests can be added to your website, mobile application, or other software. The Network Diagnostic Tool (NDT) has been used by a number of third party websites and application developers, including internethealthtest.org, the city of Seattle’s broadband map, Bittorrent’s uTorrent client, and several others.
The M-Lab team regularly consults with and supports application and web developers interested in integrating our client tests. If you are interested in adding an M-Lab test to your website or application, please review our developer guide or contact us.