How do I conduct a performance test of my internet connection?
Right now I'm in the process of possibly switching from a Cable provider to a DSL provider. I have both connections live, and before I cancel one or the other, I'm wanting to do some exhaustive testing of the internet connection. I have three major questions:
- What are some approaches that I can quantitatively test the speeds (both up and down) and quality of my internet connections (ping, time connection is down, etc,.)?
- Are there other consideration that should be taken when testing an internet connection?
- Are there any tools that can do this automatically and capture results?
Note: if you decide to suggest a piece of software, please follow these guidelines in doing so. Also I'm looking to be able to save any data from the software for detailed analysis and comparison
Overall, I'm looking to compare the two connections over multiple periods of time such as peak hours (1600 - 2100 in my area), and with different loads such as streaming movies, uploading files, etc,.
This question was Featured in the blog! Read the blog entry for more details or contribute to the blog yourself
Solution 1:
The Broadband Tests and Tools from DSLReports.com include a simple speed test, as well as long- and short-term line quality tests:
-
Speed Tests
Test your maximum upload speed and download speed from several geographically distributed locations.
Java, Flash and iPhone speed test (100% browser) available. -
Smokeping
Intensively monitor an IP address for 24 or more hours to review packet loss and/or excessive latency variability -- from three different US locations
-
Line Quality - Ping Test
Test latency, jitter and packet loss to your IP address, including identification of any problems en-route to you.
The speed test requires Flash or Java; the other two require that your IP is pingable.
In the absence of a specialized tool for long-term speed tests, you could use a command-line network retriever (e.g. Wget or Wget for Windows) and download uncompressable test files with a shell/batch script.
The nearest test files to Arizona I could find are from speedtest.dal01.softlayer.com (Dallas, TX) and speedtest.sea01.softlayer.com (Seattle, WA).
Solution 2:
I've only ever used the online tests like:
Speakeasy SpeedTest
Speedtest.net
Most of the online tests use Flash (which makes it impossible to run from iOS devices). Some of them offer user accounts to record and track runs at different times and in your case with different providers. The other downside is that they only provide a basic upload/download metric (and sometimes ping) and not more details statistics.
Solution 3:
How to test:
I suggest the use of Neubot since it does automated testing on a random periodic basis.
Neubot (the network neutrality bot) is a free software Internet bot, developed and maintained by the Nexa Center for Internet and Society, that gathers network performance data useful to investigate network neutrality. Once installed on the user's computer, it runs in the background and periodically performs active transmission tests with servers hosted by the distributed Measurement Lab server platform
Three different tests can be performed periodically at random intervals of time. You'll be able to directly copy and paste the data from the tool and can also access it via a sql lite interface. It's written in Python so it should have multi-platform support.
There is a possible downside though. Upon installation and running it, it sends all data collected to a central server managed by the creators (a university in Mexico I believe). The data that they send should only be regarding the connection and nothing personal. They do however send your personal public IP Address to that server. This is just a warning in case you're worried about sending such information.
What to test:
Note: I go into more detail on how I tested the connections in the blog post. Read it for more details
In answering what to test on an internet connection there are 3 major things I've identified to look out for:
-
Speed (Down/Up): The rate at which data is transfer from one node to another. This is typically measured in
Mbits / sec
. The higher the better. -
Latency: The time it takes for a data transfer from one node to another. This is typically measure in
sec
and the lower the better. - Connectivity/Reliability: This is somewhat abstract, but you could measure how often your connection fails. What constitutes a failure is pretty subjective, but I would say that a connection that has a very high latency, and lower Speed past certain thresholds could be used.
Final Thoughts:
Realize that in order to get a really good idea of what your connection is really going to do, you'll need to capture a lot of sample points over an extended period of time. I would suggest at least a months worth or more, to really get a good idea of what a typical day/week will bring you. Also, these types of tests are heavily based on other uncontrollable factors i.e.:
- Location: Depending on the connection type, the further you are from the ISP, the slower the connection will be.
- Shared Bandwidth: If you're on a shared connection (most cable providers do this), then you're connection quality and speeds will vary depending on the number of other users using the connection at the same time