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?
- É rápido já que iniciar uma rede simples pode ser feito em poucos segundos. O esquema de processar-editar-depurar é ágil
- Pode-se criar topologias customizadas: um único switch, uma Internet ampla, um backbone Stanford, um data center ou qualquer outra coisa
- É 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
- 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
- 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.)
- Os resultados replicados podem ser compartilhados: qualquer computador pode processar seu código uma vez que você o desempacote.
- É fácilmente usado: Podemos criar e processar experimentos Mininet usando simples scripts Python (ou mais complexos, se necessário)
- 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.
- 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:
- 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
- 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
- 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
- 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
- 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.
- 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

