Emulador de Redes Mininet

Este artigo tem como objetivo, apresentar uma visão geral do Mininet, trazendo algumas definições, apresentando alguns recursos (o que é possível fazer) e limitações.

[ Hits: 7.886 ]

Por: José Flauzino em 01/07/2019 | Blog: http://www.inf.ufpr.br/jwvflauzino/


Introdução



No contexto de redes de computadores, bem como em outros ramos ligados à computação, é comum a necessidade de ter que lidar a todo momento com componentes lógicos (softwares de monitoramento e gerência, de segurança, serviços de rede, etc) e componentes físicos (switches, roteadores, cabeamento, dentre outros). Por conta disso, em muitos casos, há certa dificuldade ao projetar ou desenvolver novos recursos (de hardware ou software) para redes, já que nem sempre se tem a disposição um ambiente real para desempenhar tal atividade.

Alguns exemplos podem envolver tarefas, como testar configurações de rede, projetar topologias de redes que atendem casos específicos (como Data Centers), desenvolver novos algoritmos de rede (roteamento, balanceamento de carga, etc.), além de muitas outras possibilidades.

Uma forma interessante de suprir necessidades dessa natureza, é fazer o uso de softwares que fornecem meios de construir ambientes virtuais similares aos reais, onde se pode explorar à vontade, de modo que as experiências obtidas de forma virtual, possam ser aplicadas no mundo real.

O Mininet é, sem dúvidas, uma ótima ferramenta para essa e outras finalidades!

O que é o Mininet

Mininet é um emulador de redes de código aberto (escrito em Python), desenvolvido inicialmente por alunos e professores da Universidade Stanford e atualmente mantido por uma comunidade de desenvolvedores.

O primeiro ponto importante para compreender o Mininet, é ter em mente que ele não é um simulador, mas sim um emulador. Na prática, isso significa que componentes da rede emulada podem executar aplicações reais e até se comunicar com redes reais. É possível, por exemplo, executar scripts, códigos (programas) próprios ou mesmo aplicações prontas (servidor Web, DNS, Firewall, etc.) nos hosts da rede emulada.

Outro aspecto relevante, é que ele constrói ambientes SDN (Redes Definidas por Software). De maneira resumida, SDN é uma nova abordagem para planejar, construir e gerenciar redes, separando o "plano de dados" do "plano de controle". Em outras palavras, em SDN, os elementos da rede se resumem a simples comutadores genéricos que são sabem tomar decisões (definir por conta própria para onde cada dado deve ser direcionado), sabem apenas encaminhar dados seguindo as regras de fluxo que são repassadas pelo(s) controlador(es) da rede.

Isso possibilita uma enorme liberdade para criar topologias e comportamentos das mais variadas formas, já que, por exemplo, um comutador genérico pode se comportar como um switch de camada 2 ou se portar como um roteador (camada 3), de acordo com as regras que o controlador da rede ditar.

Existem três formas de operar o Mininet:
  • Interface gráfica
  • Linha de comando
  • Codificação em Python

Na realidade, elas são complementares. A interface gráfica é provida pelo MiniEdit (um arquivo Python que vem junto à instalação do Mininet), que fornece alguns recursos que possibilitam a criação de topologias de rede de uma forma visual (semelhante ao simulado Cisco Packet Tracker). A linha de comando oferece uma gama ainda maior de funcionalidades e normalmente é utilizada em conjunto com códigos Python.

Talvez o ponto chave do Mininet é sua programabilidade, ou seja, fornecer meios de construir topologias de redes emuladas de forma rápida e automatizada. Por exemplo, é totalmente possível e viável criar cenários manualmente com algumas unidades ou dezenas de elementos (hosts, switches, etc.) utilizando a interface gráfica do MiniEdit, porém é muito trabalhoso e até inviável usar o mesmo método para topologias com centenas ou milhares de elementos. Para escalas maiores (e pequenas também), esse trabalho pode ser feito por scripts Python que fazem tudo de forma automatizada.

Por conta de todas essas características, o Mininet é excelente para pesquisa, desenvolvimento e aprendizagem de redes.

Recursos e Possibilidades

Segue uma pequena lista do que o Mininet suporta:
  • Oferece suporte a vários controladores SDN como POX, Ryu e NOX.
  • Os hosts são Linux "reais" que podem executar, potencialmente, qualquer programa que rode em Linux.
  • Possibilita análise de tráfego através da captura de pacotes usando, por exemplo, o Wireshark ou TCPDUMP.
  • Permite testes de conectividade com ping ou de medidas de desempenho com iperf.
  • É possível criar links com largura de banda (bandwidth) específicos, além de desativar e ativar os links.
  • Configurar diretórios individuais para cada host usar como se fosse seu armazenamento secundário (HD).

Exemplos de algumas tarefas que se pode fazer com Mininet:
  • Criar pequenas topologias para compreender o funcionamento de SDN e aprender a trabalhar com o protocolo OpenFlow.
  • Configurar, por exemplo, um servidor WEB em um determinado host da rede emulada e, em outro host, "chamar" pelo terminal um navegador WEB (Firefox, Google Chrome, etc.) e usá-lo para acessar seu host com o serviço WEB.
  • Montar um cenário com vários elementos de rede e capturar o tráfego que passa por cada um deles para entender como funciona a comunicação em rede.
  • Elaborar cenários para implementar algoritmos de roteamento existentes ou mesmo criar seus próprios.

Na verdade, esses são apenas alguns exemplos do que dá para fazer com o Mininet, de acordo com suas necessidades e imaginação, é possível explorar muitos outros casos de uso.

Veja aqui, outros exemplos de uso do Mininet (incluindo códigos):

Limitações

Atualmente, existem duas principais limitações no Mininet, apresentadas em sua própria página oficial:
  • As redes baseadas em Mininet não podem exceder a CPU ou a largura de banda disponível em seu host real.
  • Não é possível executar switches ou aplicativos OpenFlow não compatíveis com Linux.

São limitações aceitáveis, já que uma é dependente de hardware e a outra está relacionada à plataforma Linux. Além disso, na prática, isso não tem sido um grande problema.

Pode existir ainda outras limitações em casos de uso específicos, mas que normalmente estão mais relacionadas a outras tecnologias (hardware, aplicações, padrões, etc.), do que ao próprio Mininet.

Conclusão

Esse artigo apresentou apenas uma visão geral do emulador de redes Mininet. Espera-se com isso, disseminar informações e colaborar com o despertar de interesse pela ferramenta.

Caso tenha mais informações, ou sugestões interessantes sobre o assunto, sinta-se à vontade para compartilhar com a gente nos comentários!

Referências


   

Páginas do artigo
   1. Introdução
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Balanceamento de links - Load balance + Failover + Failback

Servidor Proxy - Parte I

Criando um template customizado para o CACTI

Montagem de Cluster

icinga no Ubuntu 13.10 - Instalação e configuração

  
Comentários
[1] Comentário enviado por joseflauzino em 24/02/2021 - 10:08h

Oi pessoal, recentemente lancei um curso introdutório do Mininet na Udemy.
Vou deixar um link, pra caso alguém tenha interesse:
https://www.udemy.com/course/introducao-ao-mininet-um-emulador-sdn/?referralCode=CB33B0033004E1A30C9...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts