Mininet


  • Mininet é um emulador de rede que processa um conjunto de terminais, switches, roteadores e links em um único kernel Linux
  • Cria uma rede visual realística, processando kernel real, switches e código de aplicação em uma única máquina (VM, Cloud ou nativa), em segundos, com um simples comando
  • Um host Mininet porta-se como uma máquina real permitindo usar ssh e processar programas arbitrários
  • Os programas podem enviar pacotes através do que se parece com uma interface Ethernet real com um link num certo atraso e numa certa velocidade
  • Pacotes são processados pelo que se parece com um switch ou roteador Ethernet real ou ainda um middlebox com uma dada quantitade de enfileiramento
  • Quando dois programas, como um cliente iperf e servidor, se comunicam através do Mininet, o desempenho medido pode ser o de duas (lentas) máquinas nativas.



  • Devido à facil interação com a rede, usando CLI Mininet (e API) e ainda pela simples customização, compartilhamento com outros e implantação em hardware reais, Mininet é frequentemente usada em desenvolvimento, ensino e pesquisa.
  • Mininet também é uma excelente maneira de desenvolver, compartilhar e experimentar os sistemas OpenFlow e SDN - Software-Defined Networking.


Porque Mininet é interessante?


  1. É rápido já que iniciar uma rede simples pode ser feito em poucos segundos. O esquema de processar-editar-depurar é ágil
  2. Pode-se criar topologias customizadas: um único switch, uma Internet ampla, um backbone Stanford, um data center ou qualquer outra coisa
  3. É possível executar programas reais: qualquer coisa que rode no Linux está disponível para ser processado, de servidores web para janelas TCP sob monitoramento de ferramentas como o Wireshark
  4. Encaminhamento de pacotes podem ser customizados: Switches Mininet são programáveis usando protocolo OpenFlow. Projetos SDN customizados que processam o Mininet podem ser facilmente transferidos para hardware switches OpenFlow pelo encaminhamento de pacotes line-rate
  5. Mininet pode ser executado no laptop, em um servidor, em uma VM ou em um box Linux nativo (Mininet é incluído no Ubuntu 12.10+!), ou na nuvem (exemplo Amazon EC2.)
  6. Os resultados replicados podem ser compartilhados: qualquer computador pode processar seu código uma vez que você o desempacote.
  7. É fácilmente usado: Podemos criar e processar experimentos Mininet usando simples scripts Python (ou mais complexos, se necessário)
  8. Mininet é um projeto OpenSource: seu código pode ser examinado em https://github.com/mininet. Permite modificação, correção, requisição de novas funcionalidades e ainda a submissão de patches.
  9. Está em franco desenvolvimento: Se não funcionar por alguma razão, pode-se participar das discussões e informar à comunidade. Todos que encontram bugs são encorajados a submeter correções atualizando o github sobre casos de testes reproduzíveis.

Quais as limitações do Mininet


  • Mininet é uma ótima ferramenta mas possui algumas limitações, por exemplo:
  1. Processar em um único sistema é conveniente mas isto impõe limites de recursos: Se seu servidor tem 3 GHz de CPU e pode comutar sobre 3 Gbps de tráfego simulado, estes recursos precisarão ser balanceados e compartilhado ao longo dos switvhes e hosts virtuais
  2. Mininet usa um kernel Linux único para todos os hosts virtuais; isto mostra que não se pode executar programas que dependem de BSD, Windows ou outros kernels de sistemas operacionais
  3. Mininet não irá escrever seu controlador OpenFlow; se você precisar customizar roteamento ou procedimentos de comutação, será necessário encontrar ou desenvolver um controlador com os aspectos necessários
  4. Atualmente, Mininet não faz NAT fora do ambiente. Isto mostra que seus hosts virtuais estarão isolados por default de sua rede; isto é normalmente bom mas sinaliza que seus hosts não podem se comunicar diretamente com a Internet a menos que forneçamos um meio para isso
  5. Na versão atual, todos os hosts Mininet compartilham o sistema de arquivo de host e espaçõ PID; isto demonstra que deve se ter cuidado para a execução de daemons que exigem configuração /etc e requer atenção para não se destruir os processos errados.
  6. Ao contrário de um simulador, Mininet não tem efetivamente uma forte noção do tempo virtual, suas medidas de tempo são baseadas no tempo real e portanto resultados mais rápidos que o tempo real (exemplo, redes 100 Gbps) não podem ser fácilmente emulados)


Referências


  • mininet.org/
  • github.com/mininet/mininet‎
  • github.com/mininet/mininet/wiki/Introduction-to-Mininet
  • github.com/CPqD/ofsoftswitch13/wiki/Dpctl-Documentation
  • archive.openflow.org/wk/index.php/OpenFlow_Tutorial
  • eventos.redclara.net/indico/getFile.py/access?contribId=1&resId=3&materialId=slides&confId=197


Apresentação Felipe

Cenários construídos

Primeiro Cenário