RING

The first multi-vendors bandwidth marketplace


Last update (03/03/21): RING now supports Mysterium API 2

What is RING?

RING is the first multi-vendors bandwidth marketplace. RING' software allows its users to conveniently and securely share their spare home bandwidth in exchange of a cryptocurrency compensation. RING currently incorporates three popular bandwidth marketplaces: Mysterium, Sentinel, and Tachyon. RING software allows its users to maximize their profit by concurrently joining these marketplaces, thus attracting more traffic, while also dynamically allocating bandwidth limits to each marketplace, for example preferring the one whose cryptocurrency is soaring. RING offers a friendly user interface from where its users can:
  1. Manually set bandwidth limits
  2. Visualizes traffic and income produced by each marketplace
  3. Join or leave each marketplace at anytime
  4. Control which incoming traffic they are serving and set simple allowlist for highest security

RING is part of a research project at Northwestern university. Traffic summaries and user operations are sent to our backend anonymously, i.e., no user information is collected. Our code is open source and we welcome both investigation and bug reporting. Users are requested to opt-in in this data reporting when they first launch RING' software.

Screenshots from RING interface

(click on the images to view them full size)
Traffic Monitoring
Access Control
dVPN Control
User Agreement
User Agreement
User Agreement
×

Method

Concurrency: To achieve RING’s concurrency goal, we adopt Docker containers which allow to run each marketplace in isolation. We create Docker virtual network interfaces which map to the physical network interface on different ports, based on the requirement of each marketplace. This further eases traffic monitoring and rate limiting.
Security: To protect its users from unwanted traffic, RING allows fine-grained authorization of which traffic category to carry. The categories are based on McAFee Database.

System Requirements

OS Requirements: Debian GNU/Linux
Hardware Requirements: at least 4GB RAM, 2 cores, and 20 GB of storage

Installation & Usage Guide

1. Open Terminal or ssh onto the machine where RING will run
2. Run the following commands or manually go through steps 2.1-2.3 listed below:
echo '$USER ALL=(ALL) NOPASSWD:ALL' | sudo EDITOR='tee -a' visudo
hash git > /dev/null
if [ $? -ne 0 ]
then
   sudo apt-get install git
fi
git clone https://github.com/yunmingxiao/RING.git
cd RING && ./start.sh
2.1 Make sure that you have root access and allow it without password
Run the following command to download the repository using git:
git clone https://github.com/yunmingxiao/RING.git
2.2 Run following command to start RING:
cd RING && ./start.sh
2.3 If Docker was not installed on your machine, the process may be stopped at this time.
If this happens (you'll see "Please re-run the start.sh script" or "newgrp docker" printed in the last line); just redo Step 2.2
3. Once the script shows the message "RING started successfully!", you can exit the terminal and move on to next step
4. In your browser navigate to URL: http://your.machine.IP:45679/
Replace your.machine.IP with the IP address of the machine where RING is running. If you are using this machine, the IP address should be 127.0.0.1. If this is a machine in your home network, ssh to the machine and use the command "ifconfig" to find its IP. In case of a remote machine, you can visit https://ifconfig.me/ from the machine to look it up. In case of a successful setup, you should see the following interface (click on the images to view them full size)
User Agreement
5. Read the user agreement. If you agree, click "Yes, I agree" and proceed
If you have any question, click the "Help" in the menu bar for more information
* In addition, while RING will use UPnP to allow access from WAN to your machine for certain ports, it may not work depending on different routers. If that happenes, please manually open the ports 1194, 3000 (for Sentinel), 25000 (for Mysterium), 80, 443, 9080, 29444 (for Tachyon) so your machine can be accessed from WAN. Further information can be found here: (external link)