NeuBot
General Overview
Implementation overview
Neubot is a python program. It does not use any networking framework and most of the functions are implemented from scratch.
The implementation is highly modular. All the tests are modules that are loosely i
Version
0.4.12
Availability
FLOSS software, released under GPLv3.
Source code available on github: https://github.com/neubot/neubot
Openness
Open Source or Free Software | Open Data | Open Methodologies |
---|---|---|
Free software | y | y |
Platform support
Neubot is available for download on
- MacOS
- Ubuntu
- Windows
- Debian
- Source (any machine with python)
Data Gathered
99% of the data are collected and published by Measurement Lab, while just 1% of the data is collected directly by the Neubot project published at http://releases.neubot.org/data every night.
=== Is the data collected made public under a free license? ===
Yes, Attribution 3.0 Unported (CC BY 3.0).
=== Is the data format that is used for publication easy to interact with? ===
Every test run is stored in a flat file with the results stored in json format.
Intended impact
Research on network performance.
Test methodology
The test uses documented and peer reviewed methodologies for testing:
This the list of publications made by the test authors:
- The Neubot Project: A Collaborative Approach To Measuring Internet Neutrality http://www.neubot.org/neubotfiles/istas08-neubot-paper.pdf
- Rationale, Design, and Implementation of the Network Neutrality Bot http://www.neubot.org/neubotfiles/aica2010-neubot-paper.pdf
- The hitchhiker's guide to the Network Neutrality Bot test methodology http://www.neubot.org/neubotfiles/2011-aica-paper.pdf
- The network neutrality bot architecture: a preliminary approach for self-monitoring of Internet access QoS http://www.neubot.org/neubotfiles/2011-iscc-paper.pdf
Tests performed
The tests are made to neubot test server backends. Periodically the software downloads the master server information on the next test it should perform, including the name of the test, the test server to connect to and other parameters. If updates are available an update is served to the client.
Speed test
The speedtest test uses the HTTP protocol and measures: round trip time, download and upload goodput. It was originally inspired to speedtest.net test, hence the name. The test estimates the round trip time measuring the time required to connect and the average time to request and receive a zero-length resource. It also estimates the download and upload goodput dividing the number of bytes transferred by the time required to transfer them.
Bittorrent test
This emulates the bittorrent protocol and measures round trip time, download and upload goodput.
Since BitTorrent uses small messages, it is not possible to transfer a huge resource and divide the number of transmitted bytes by the time of the transfer. So, the test initially makes many back to back requests to fill the space between the client and the server of many flying responses. The measurement starts only when the requester thinks there are enough responses in flight to approximate a continuous transfer.
Reporting system
The reporting is done over HTTP Post. To create a report the client needs to have token that is given to the client via a negotiation phase.
All of these exchanges are sent unencrypted.
Does this tool offer an anonymous communications channel for submission?
Kind of. No registration is required, but the IP address of the user is stored.
==== If so, does it offer perspective pivoting? ====
No
==== If so, does it offer dynamic confirmation of resources? ====
No.
What impact or outcome is intended by using the tool or collecting data with this tool?
== Strength ==
- Very well designed architecture
- Highly modular and expandable
Weaknesses
- Limited scope of testing
- Reporting is unencrypted
Check list
Open Source or Free Software | Open Data | Open Methodologies | Used by users | User education | Collects sensitive information |
---|---|---|---|---|---|
GPLv3 | Attribution 3.0 Unported (CC BY 3.0) | y | y | y | y |