O sdnify
é uma aplicação que simplifica e automatiza algumas funcionalidades disponibilizadas pelo controlador Faucet SDN.
- Automatização da criação e manutenção de políticas de classificação de pacotes para limitação de tráfego;
- Simplificação no estabelecimento de redundância numa rede, através da feature
stacking
; - Monitoramento e disponibilizção de um dashboard para avaliar a operação da rede;
- Interface de comando simplificada.
Para a testagem de cada funcionalidade a aplicação conta com um ambiente de testagem em containers docker
, onde é possível instanciar uma rede virtual utilizando switches Open vSwich (OVS).
Para testar cada funcionalidade é necessário inicializar o ambiente docker
através da execução dos seguintes scripts na raíz do projeto:
setup.sh
para fazer as instalações necessárias e criar a imagem do container de testes (É necessário conexão com a Internet para a instalação dos pacotes que vão ser utilizados no container);run-test-env.sh
para executar o container de testes.
Esse projeto foi prototipado para ser executado em ambientes
Linux
e depende da instalação de dependências como: Docker Engine, Docker Compose e Python 3.10.
O diretório examples
conta com diversos arquivos .sh
e .json
, que definem exemplos prontos para serem executados para cada funcionalidade da aplicação. Cada exemplo é definido por um nome, ou seja:
simple-network
(instanciação de uma rede com dois hosts e uma switch e execução de interação entre os hosts);rate-limits
(imposição de limitações na banda para tráfegos simulados);stacking
(aplicação de uma rede com três switches interligadas e configurações de redundância).
Para executar um exemplo garanta que você já esteja conectado no container de testes. Em seguida utilize a interface de linha de comando sdnify
seguida do nome do exemplo desejado.
sdnify <nome-do-exemplo>
É também possível executar um exemplo customizado definido pelo usuário. Para isso utilize a mesma interface com as mesmas opções. Por padrão os arquivos .sh
e .json
do <nome-do-exemplo>
passado por parâmetro são procurados pela aplicação nos diretórios raíz e e no subdiretório examples
, nessa ordem. Caso desejado o usuário pode definir um diretório base para que a aplicação procure pelos arquivos, basta utilizar a opção --base-dir
, definido abaixo:
sdnify <nome-do-exemplo> --base-dir <caminho-absoluto-do-diretorio-base>
A coleta e agregação de métricas e disponibilização de alertas é realizada pelo Prometheus. A visualização dos dados coletados pode ser feita através de dashboards personalizáveis utilizando o Grafana. Ambos os serviços disponibilizam interfaces para o usuário.
Acesso às interfaces:
- Prometheus:
http://localhost:9090/
- Grafana:
http://localhost:3000/