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.