Setting up and running a DARP node

DARP is the decentralized autonomous routing protocol that Syntropy uses to understand and analyze the internet’s pathways. DARP nodes constantly share latency information, creating a global intelligence layer to identify the optimal routes.

We're excited to invite you to join our DARP network. 🚀

Prerequisites to run a DARP node

A quick checklist to make sure you're all set to run a DARP node:

  • Docker is set up and running - most important of all!
  • Make sure your firewall isn't blocking UDP traffic
  • Expose UDP port 9835
  • Expose port 80 to see your local DARP UI

❗️

Be wary of cloud costs

DARP may generate a large amount of traffic. Every second your node sends and receives measurements packets and could generate up to 250GB of measurement traffic per month. For some cloud deployments, this may prove costly. For example, at AWS egress traffic fee of 8.5 cents/GB, measurement traffic alone may cost up to $21.25 per month.

Light DARP version (without a local UI) consumes up to 4 times less bandwidth.

Please make sure you constantly monitor your cloud bill to avoid any unpleasant surprises 🤕

Set up your DARP node

DARP nodes are distributed via Dockerhub, source code itself will be open-sourced soon.

You can opt for either the DARP Node containing the UI, or the light node which doesn't provide you a local UI. They are completely equivalent, so choose the one you prefer!

DARP Node containing UI
🔹Dockerhub link

sudo docker run -d --rm --name syntropynet-darp -p 9835:9835/udp -p 80:80 syntropynet/darp-ui:latest

Light DARP Node (no UI)
🔹Dockerhub link

sudo docker run -d --rm --name syntropynet-darp -p 9835:9835/udp syntropynet/darp:latest

Deploy DARP with Ansible

Create darp.yaml file and DARP role:

cd roles/ && ansible-galaxy init darp && cd ../

File content:

---
# tasks file for darp
---
- name: pull an image
  docker_image:
    name: syntropynet/darp-ui:latest
    force_source: yes
  tags:
    - pull_darp

- name: Stop and remove old container
  docker_container:
    name: syntropynet-darp
    state: absent
    image: "syntropynet/darp-ui:latest"
  tags:
    - remove_darp

- name: Create darp container and connect to darpnet
  docker_container:
    networks_cli_compatible: yes
    name: syntropynet-darp
    restart_policy: unless-stopped
    ports:
      - "80:80"
      - "9835:9835/udp"
    image: "syntropynet/darp-ui:latest"
  tags:
    - start_darp
---
# This playbook deploys the whole application stack in this site.

# Apply common configuration to all hosts
- hosts: all

  roles:
  - darp

Then run ansible playbook:

ansible-playbook darp.yaml

Windows setup video walkthrough

Kudos to our absolutely the best community and Luciano for producing this video.

🚧

Facing any issues running a DARP node?

Join our developers' community in Discord! Navigate to a relevant channel (#darp_support_linux or #darp_support_windows) and seek community support there.

As always, be respectful and help others if you can.

Access your DARP node UI locally

You can simply use localhost or a combination of Your Docker IP:Port in the browser address field. Usually Port 80 is used here. If the host IP is used, then it depends on which port the Docker port 80 is exposed to.

Navigate DARP UI

Public DARP UI is always available via https://darp.syntropystack.com/.

The UI is pretty simple - we have a constantly pulsating matrix of nodes and some filtering options.

There are three ways to read Matrix:

  • Routed latency
  • Public latency
  • Relay latency

Routed latency

This section is all about the improvements. Every colored tile represents the potential gains DARP finds by routing packets through some relay.

Clicking on a specific cell shows the detailed information about the connection - direct latency, routed latency and the resulting gains. It also shows the best route with the relay node.

Connections that cannot be improved, or improved by less that 10ms (which at this stage we consider a marginal increase and don't account for), will be represented by white cells.

Public latency

This is the most basic piece of information - here you can see the actual latencies between nodes, also separated by the color intensity - the lighter it is, the better.

Red cells represent connections for which packets cannot be sent and received directly. There can be multiple reasons for it, which require detailed investigation for every separate case.

Relay latency

This is the latest addition to the analysis setup of the matrix and allow you to actually 'stand in the shoes' of a node to understand how much it could optimize the connections of the current DARP group.

You can select the node in the upper left dropdown to see the improvements where it could contribute.

Even though the node can improve a lot of connections, so do the other nodes. You can tell where the selected node is absolutely the best by looking for bright green cells or applying a filter.

Node routes tab

Matrix can be overwhelming, so you can also opt for a table view for a specific node and its connections.

There you can see the destination nodes, direct latency, gained optimizations and the optimal route itself.

Filters

To cut through the noise - use filters. You can filter by Country, City or ISP to build a small matrix of the most interesting nodes.

Node Routes section can be filtered by the latency and improvement metrics.

FAQ

  • How many NOIA tokens do I need to join?

The access is completely free and voluntary at this stage. To simplify access and broaden community participation, tokens will be enabled once DARP is connected with the rest of the tech stack to facilitate route optimizations

  • I'm looking for a VPS, what specs should I look for?

To be on the safe side - 1 GB RAM and 1 vCPU should be enough.

  • What happens if nodes become inactive at some point?

In case the Genesis node doesn't receive any packets from the participating node in 60s - that participating node will be removed from the group, so that it would consist only of the active nodes. This isn't a ban though - nodes can always reconnect.

  • How to know which node is mine?

Simple, just go to your local UI and the node that will be picked there in Node Routes section by default is yours.

  • How long should I wait for the matrix to populate with the results?

It should be pretty much immediate. If it isn't - there might be issues that are explained below.

  • I think I've set up the node, but everything I see are just white cells - the matrix is blank

This means your node doesn't have a connection to other nodes. Maybe a firewall is blocking, maybe a different port/NAT session was opened. Check these first and if it doesn't help, jump on to our Discord.

  • Is there a simpler way to run a node, like an app or something like that?

Our current exploratory DARP nature requires us to utilize Docker images for delivery, however, we are continuously working to make it as easy as possible for everyone to join.

...we'll add more as we go!


Did this page help you?