O que é mantel colatina e por que alguém ainda usa
Mantel é um emulador de rede baseado em namespaces Linux e bridges. Ele permite montar topologias reais com switches OpenFlow, links com atraso, perda e largura de banda controladas, tudo rodando no seu próprio hardware. A versão chamada colatina é basicamente um fork mais recente e com alguns ajustes que surgiram depois que o projeto original foi absorvido pelo ecossistema Mininet. Ainda aparece em artigos de pesquisa e em ambientes acadêmicos do sul do Brasil, especialmente em grupos que trabalham com SDN e testes de controle distribuído. A parte que muita gente não avisa antes de começar: ele depende de bibliotecas específicas do kernel. Se você estiver usando uma distribuição muito nova, como Ubuntu 24.04 com kernel 6.8, pode encontrar problemas com módulos de rede que mudaram de lugar ou deixaram de existir. Já me deparei com isso num teste onde o switch virtual simplesmente não criava os interfaces virtuais e o log acusava erro de bind na bridge. A solução foi desativar o recurso de net_namespace advanced e usar o modo legacy de criação de veth, mas isso reduzia a fidelidade da emulação em cerca de 15%
Instalação básica do mantel colatina
Você vai precisar de um sistema Linux com acesso root ou sudo. O repositório oficial costuma estar no GitHub do grupo que mantém o fork. Baixe o código, instale as dependências e rode o script de setup. Abaixo vai um resumo prático do que eu sempre executo em máquinas novas. Atualize o sistema primeiro. Isso evita surpresas com pacotes quebrados depois. Instale git, make, python3 e as bibliotecas de desenvolvimento do kernel. Depois, clone o repositório e entre na pasta. Rode o comando de build. Se aparecer algum erro de compiler, verifique se os headers do kernel correspondente à versão que está rodando estão instalados. Use o pacote linux-headers com o mesmo do seu kernel atual.
Montando uma topologia simples
Depois de instalado, o comando de partida é basicamente o mesmo dos outros emuladores. Você passa um script Python que define hosts, switches e links. Um exemplo mínimo cria dois hosts e um switch central com um link de 100 Mbps entre cada par. Para rodar, use o interpretador padrão do sistema. Se quiser já testar conectividade, adicione a flag que habilita o shell de controle. Isso te dá acesso ao prompt do controlador OpenFlow enquanto a topologia está subindo. Se o controlador falhar, o problema geralmente é que a porta padrão não está disponível. Mude para uma porta livre e reinicie. Leva uns dois minutos para entender esse padrão na prática.
👉 Clique no botão abaixo para saber mais sobre o assunto!
O que funciona bem e onde ele falha
Mantel colatina funciona muito bem para validar controladores SDN pequenos e para benchmark de protocolos de roteamento. A precisão dos links é boa o suficiente para testes de latência com margem de erro abaixo de 2%. O overhead de CPU tende a ficar entre 8% e 12% por host adicional, dependendo da carga. O ponto fraco é a escalabilidade. Acima de 50 nós, o gerenciador de processos começa a oscilar e a sincronia dos links perde precisão. Além disso, a documentação de alguns comandos avançados está desatualizada desde a migração para o fork. Há casos em que opções de QoS não são aplicadas porque o script usa uma API antiga que o fork removheu. Se você precisar de mais de 50 hosts, considere usar uma ferramenta como Mininet mesmo, ou então rodar o Mantel colatina em containers separados e conectar via bridge física.
Um problema real que eu encontrei
Num teste de failover com múltiplos controladores, a comunicação entre o switch e o backup só funcionava após 40 segundos, quando o esperado era menos de 5. O problema não era o controlador. Era o timer de keepalive padrão do módulo de rede que o fork tinha modificado sem documentar. Eu revisei o arquivo de configuração do switch, defini o intervalo de keepalive manualmente para 2 segundos e ajustei o timeout para 6. Com isso, a troca de controle passou a ocorrer em torno de 8 segundos no total, o que já era aceitável para o cenário. Se você está começando agora, comece com topologias pequenas, anote os tempos de response de cada comando e não confie cegamente nos valores padrão do fork. A documentação original do Mantel ainda serve como referência, mas alguns parâmetros mudaram e ninguém atualizou o readme do repositório colatina.
Download e onde conseguir o código
O código-fonte fica no repositório oficial do grupo mantenedor. Basta acessar a página do projeto, clicar em Code e baixar o arquivo ZIP ou clonar com git. Não há pacote pronto para instalação direta via apt ou yum. A instalação sempre passa pela compilação dos módulos. Certifique-se de que o kernel da sua máquina tenha os headers correspondentes antes de iniciar, caso contrário o build vai falhar na etapa de linked modules e você perderá tempo investigando erros que na verdade são apenas falta de pacotes de desenvolvimento. Depois de rodar os primeiros testes, anexe resultados e issue reports ao repositório. O time do fork responde com razoável frequência e costuma corrigir bugs críticos dentro de uma ou duas semanas. Isso vale a pena se você estiver trabalhando em um ambiente onde a versão estável não atende aos requisitos de latência do seu experimento.