Warning
This software is in early phase of development and is not ready for production environments.
Hoppipolla (Icelandic for "hopping into puddles") is a distributed framework for user-side responsible networking based on the SCION Internet protocol. It implements part of the Responsible Internet proposal with an approach inspired by the architecture designed in the Accounting Value Effects for Responsible Networking paper and by the User-driven Path verification and control for Inter-domain networks (UPIN) project.
Once installed, Hoppipolla allows the user to publish policies expressed in Answer Set Programming (ASP) to select network nodes (i.e., autonomous systems) that comply with them when routing packets to other remote addresses in the SCION network.
An example of such policy in natural language:
Do not route network traffic through AS nodes that operate in country X
Which, using the Hoppipolla-specific ASP syntax would look like:
:- chosen(AS, _, _, _), operates(AS, "X").
The framework consists of a suite of fully-containerized services.
All of the services expose a gRPC API defined in the proto
folder.
In terms of external dependencies, Hoppipolla depends exclusively on SCION. The user is expected to provide an entrypoint to the SCION stack via a stable connection to the SCION daemon.
Follow this guide to install SCION and use it within the SCIONLab testbed.
At this stage, Hoppipolla is not ready for production in a fully distributed
environment. However, for experimental work, one can run it using docker compose
.
The repository contains a docker-compose.yml
file which
contains all the necessary services (including a policy database).
Simply set up the relevant environmental variables and then run:
docker compose up
You can find an example of the configuration options that can be passed to the
services in the .env.example
file.
Important
Most notably, the HOPPIPOLLA_SCIOND_URI
env variable should be set to
the address of the SCION daemon (e.g., 127.0.0.1:30255).
The scenarios
folder contains usage examples using Go and the
gRPC API of the Hoppipolla services.
Warning
This study is under peer review.
Hoppipolla is GNU GPL v3.0 licensed.