Skip to content

A responsible networking framework for norm-aware user-driven path control built on top of SCION protocol.

License

Notifications You must be signed in to change notification settings

marinoandrea/hoppipolla

Repository files navigation


License: GPL v3 Build Test

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.

Installation

Dependencies

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.

Docker Compose

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).

Examples

The scenarios folder contains usage examples using Go and the gRPC API of the Hoppipolla services.

Citation

Warning

This study is under peer review.

License

Hoppipolla is GNU GPL v3.0 licensed.

About

A responsible networking framework for norm-aware user-driven path control built on top of SCION protocol.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages