Aviso
Este software está em fase inicial de desenvolvimento e não está pronto para ambientes de produção.
Hoppipolla (islandês para "pular em poças" ) é uma estrutura distribuída para redes responsáveis do lado do usuário baseada no protocolo de Internet SCION. Ele implementa parte da proposta da Internet Responsável com uma abordagem inspirada na arquitetura projetada no documento Accounting Value Effects for Responsible Networking e no projeto User-driven Path verify and control for Inter-domain networks (UPIN).
Uma vez instalado, o Hoppipolla permite ao usuário publicar políticas expressas em Answer Set Programming (ASP) para selecionar nós de rede (ou seja, sistemas autônomos) que as cumpram ao rotear pacotes para outros endereços remotos na rede SCION.
Um exemplo de tal política em linguagem natural:
Do not route network traffic through nodes that are located in country X
Que, usando a sintaxe ASP específica de Hoppipolla, seria semelhante a:
-valid(Path) :- country(Hop, "X"), hop(Hop), path(Path), contains(Path, Hop).
A estrutura é constituída por um conjunto de serviços e SDKs específicos da linguagem usados para interagir com eles do lado do cliente. Todos os serviços expõem uma API gRPC definida na pasta protos
que pode ser usada diretamente no lugar do SDK de sua escolha.
Em termos de dependências externas, Hoppipolla depende exclusivamente da SCION. Espera-se que o usuário forneça um ponto de entrada para a pilha SCION por meio de uma conexão estável com o daemon SCION.
Siga este guia para instalar o SCION e usá-lo no ambiente de teste do SCIONLab.
Nesta fase, Hoppipolla não está pronto para produção num ambiente totalmente distribuído. Portanto, para trabalhos experimentais, é recomendável executá-lo localmente usando docker compose
.
Você pode encontrar um exemplo das opções de configuração que podem ser passadas para os serviços no arquivo .env.example
.
Importante
Mais notavelmente, a variável env HOPPIPOLLA_SCIOND_URI
deve ser definida como o endereço do daemon SCION (por exemplo, 127.0.0.1:30255).
O repositório contém um arquivo docker-compose.yml
que executa todos os serviços necessários. Você pode acelerar o Hoppipolla em sua máquina simplesmente executando:
docker compose up
Aviso
A definir
O trecho a seguir mostra um uso simples do Python SDK:
config = hp.HoppipollaClientConfig() # valores padrãoclient = hp.HoppipollaClient.from_config(config)issuer = client.get_default_issuer()policy1 = client.publish_policy( emissor, '-valid(Path) :- country(Hop, "X") , hop(Hop), caminho(Caminho), contém(Caminho, Hop).')resultado = cliente.ping("1-ff00:0:110,10.0.0.1")
Hoppipolla é licenciado pela GNU GPL v3.0.