Mininet: Uma Rede Virtual Instantânea no Seu PC

Baseado no texto de introdução presente no site oficial do Mininet (www.mininet.org) apresento esta ferramenta que possibilita a desenvolvedores e pesquisadores a criação de uma rede virtual realista, executando um kernel real, switch e código de aplicação, em uma única máquina (VM, cloud ou nativa), em segundos, com comandos simples.

A rede virtual criada pelo Mininet é escalável, uma rede definida por software em um único PC utilizando processos do Linux. Isso possibilita um meio inteligente de realizar testes e simulações de uma rede antes de implementá-la em meio físico, caso esse seja o objetivo.

Para baixar Mininet e começar, acesse o MininetGettingStarted. O código fonte do Mininet está hospedado no GitHub em http://github.com/mininet/mininet. Ao término dessa publicação você pode querer saber mais sobre o Mininet, para isso recomendo a documentação da ferramenta, disponível no site oficial.


Instalação

O Mininet pode ser baixado diretamente do repositório oficial do projeto, através do seguinte comando (no Linux):
git clone git://github.com/mininet/mininet

Ao término da cópia dos arquivos do repositório para a máquina local, é possível acessar o script de instalação:
mininet/util/install.sh -a

Este último comando realiza a instalação do switch e o controlador de referência OpenFlow, o Mininet e suas dependências, e o Open vSwitch.

A instalação foi realizada utilizando o sistema operacional Ubuntu 12.04.2 LTS, que foi executado numa máquina virtual (VMWare Player).

Avaliação

Uma das curiosidades da instalação do Mininet é que ela implementa também o Wireshark, um dissecador para o OpenFlow que analisa a rede.

Para iniciar o Wireshark e visualizar o controle de tráfego, basta abrir o Wireshark em background:
sudo wireshark &

O controle utilizado nesta avaliação definiu o filtro of no Wireshark, relativo ao OpenFlow. Sendo assim, apenas tráfego OpenFlow será analizado.

Ainda descrevendo a análise, nesta publicação marquei a interface lo para ser analisada pelo Wireshark. A aplicação registra pacotes, equipamentos, duração de fluxos e várias outras informações relevantes para os administradores da rede virtualizada.

Interação com Hosts e Switches

Com a instalação do Mininet realizada com sucesso, é possível, finalmente, utilizá-lo. O comando básico para sua utilização é o:
mn

Ao executar este comando pela primeira vez, o Mininet já cria uma topologia de rede mínima, composta por um switch de kernel OpenFlow conectado a dois hosts, além do controlador OpenFlow de referência. Se nenhuma outra operação for requisitada ou realizada, a linha de comando (CLI) do Mininet começa a operar.

Todas as quatro entidades citadas estão, agora, sendo executadas na máquina virtual do Mininet.

A partir daí é possível visualizar diversas informações da rede. Um dos comandos que compõe esta funcionalidade é o nodes, que exibe todos os nós que compõem a rede.
Já o comando net exibe os links na rede criada.

Para verificar informações mais detalhadas sobre todos os nós da rede o comando dump pode ser utilizado, como a seguir:

O Mininet também consegue oferecer informações sobre nós específicos da rede, como por exemplo:

Em caso de modificações na rede o Mininet oferece nativamente um teste de regressão automatizado, o comando para realizar o teste é o mn --test pingpair.
A topologia inicial definida pelo Mininet pode ser variada utilizando o comando mn --test pingall –topo. Um exemplo de utilização deste comando é a definição de um switch com três hosts:
mn --test pingall --topo single,3.

Topologias customizadas podem ser implementadas a partir de scripts python.

A partir da utilização dos comandos básicos relatados aqui, o Mininet mostra-se como uma ferramenta poderosa para avaliação e experimentos de redes definidas por software. Além da alta quantidade de ferramentas, o Mininet mostrou-se de fácil utilização, sem apresentar erros durante a elaboração desta publicação.

Felipe Alencar

Felipe Alencar é doutorando em Ciência da Computação na UFPE, professor, desenvolvedor e acredita que só não virou jogador de futebol, surfista ou músico profissional por falta de tempo e talento.

10 comentários:

  1. Este comentário foi removido por um administrador do blog.

    ResponderExcluir
  2. Ótimo tutorial, funcionou perfeitamente no meu notebook, parabéns e obrigado!

    ResponderExcluir
    Respostas
    1. Opa, valeu! Qualquer dúvida é só perguntar. :)

      Excluir
    2. Bom resumo do site cara bela explicação, ajudou muito, parabéns!

      Excluir
  3. Olá, Felipe. Você teria um script para simular uma comunicação multicast no Mininet?

    ResponderExcluir
    Respostas
    1. No repositório oficial do Mininet tem esse exemplo.

      Source: https://github.com/mininet/mininet

      Excluir
  4. Respostas
    1. Opa Tiago,

      Segundo a documentação do repositório oficial do Mininet (https://github.com/mininet/mininet/wiki/Introduction-to-Mininet), você não pode rodar outros sistemas operacionais:
      "Mininet uses a single Linux kernel for all virtual hosts; this means that you can't run software that depends on BSD, Windows, or other operating system kernels."

      Entretanto, você pode conectar máquinas virtuais às instâncias do Mininet.

      Espero ter ajudado de alguma forma.

      []'s

      Excluir