Giter Site home page Giter Site logo

marinoandrea / hoppipolla Goto Github PK

View Code? Open in Web Editor NEW
3.0 3.0 0.0 281 KB

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

License: GNU General Public License v3.0

Python 55.16% Shell 0.42% Dockerfile 0.50% JavaScript 0.52% TypeScript 43.40%
asp network-routing networking policies scion responsible-internet policy-based-routing sdk sustainability green-it

hoppipolla's Introduction


License: GPL v3

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 nodes that are located in country X

Which, using the Hoppipolla-specific ASP syntax would look like:

-valid(Path) :- country(Hop, "X"), hop(Hop), path(Path), contains(Path, Hop).

The framework is constituted by a suite of services and the language-specific SDKs used to interact with them from the client side. All of the services expose a gRPC API defined in the protos folder that can be used directly in place of the SDK of choice.

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. Therefore, for experimental work, it is recommendend that you run it locally using docker compose.

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 repository contains a docker-compose.yml file which runs all the necessary services. You can sping up Hoppipolla on your machine simply by running:

docker compose up

Documentation

Warning

TBD

Examples

The following snippet shows a simple usage of the Python SDK:

config = hp.HoppipollaClientConfig() # default values
client = hp.HoppipollaClient.from_config(config)

issuer = client.get_default_issuer()

policy1 = client.publish_policy(
    issuer,
    '-valid(Path) :- country(Hop, "X"), hop(Hop), path(Path), contains(Path, Hop).'
)

result = client.ping("1-ff00:0:110,10.0.0.1")

License

Hoppipolla is GNU GPL v3.0 licensed.

hoppipolla's People

Contributors

marinoandrea avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.