Baixe o app para aproveitar ainda mais
Prévia do material em texto
(83) 3322.3222 contato@joinbr.com.br www.joinbr.com.br AUTOMAÇÃO DE REDES UTILIZANDO PYTHON Autor (Uênio Vicente Rocha); Orientador (Marcelo Portela Sousa); Instituto Federal da Paraíba - Campus Campina Grande uenio.v.rocha@ieee.org; marcelo.portela@ieee.org INTRODUÇÃO Com o passar dos anos, as redes de computadores começaram a consumir cada vez mais recursos e serviços. Este crescimento trouxe a necessidade de controle mais eficaz dos dados trafegados. Os diversos dispositivos de redes existentes, como Switches e Roteadores, contêm novos aplicativos e estes fazem com que as redes apresentem demandas mais complexas para gerenciar e controlar os dados. A formação em redes de comunicação de dados é muitas vezes projetada para administradores de redes e possui foco nas diversas especificações de protocolo de rede, arquitetura, projetos e ferramentas para administrar as redes [1]. Programas que reproduzem características e funcionalidades de dispositivos de rede tornam- se amplamente disponíveis. Um software emulador é uma ferramenta que reproduz uma plataforma virtualizada que permite que uma dada arquitetura de computador consiga executar sistemas que foram desenvolvidos para outra arquitetura específica [2]. No intuito de realizar a implantação ou modificação da rede, o administrador muitas vezes precisa acessar o equipamento físico, em que precisa dispor de um acesso console, ou acessá-lo pela rede, quando este, possui Telnet ou SSH previamente configurados, e assim realizar as alterações necessárias em todos os equipamentos [3]. Porém, isso torna um trabalho árduo e cansativo, aumentando a possibilidade de cometer erros, quando se tem uma rede escalável. Avaliando esse problema, é possível alterar esse cenário, utilizando scripts em Python, a fim de automatizar o processo de configuração dos equipamentos de redes [4]. Python é uma linguagem de programação de codificação flexível e simples, definida nos seus documentos da seguinte forma: “Python é uma linguagem de programação de grande propósito, dinâmica, orientada a objetos e de uso geral que usa Intérprete e pode ser usado em um vasto domínio de aplicativos” [5][6]. O Python é ideal para a prototipagem, implantação e aplicações de rede. Isso torna o processo de configuração mais rápido e eficaz e menos susceptível a erros [7]. (83) 3322.3222 contato@joinbr.com.br www.joinbr.com.br O trabalho está definido da seguinte maneira: na etapa Justificativa, é apresentada a pesquisa na área de automação e seus objetivos; em Metodologia, o modelo de configuração realizada no emulador GNS3 e no cenário real, e a organização do código em Python; e por fim, os resultados obtidos e as conclusões do trabalho realizadas. JUSTIFICATIVA E OBJETIVOS Como foi apresentado na seção anterior, um campo de pesquisa que tem atraído grande interesse na área de Redes de Computadores tem sido o de automação de redes. Diferentemente do modelo de gerência das redes tradicional, no qual o administrador realiza a configuração manual e individualizada dos equipamentos, fazendo uso de um conjunto de comandos de baixo nível e específicos para cada equipamento, nas redes programáveis, é possível elevar o nível de abstração do processo de elaboração de políticas de gerência e favorecer a instalação destas regras em dispositivos distintos de rede [8]. Em linhas gerais, este recente paradigma propõe uma abordagem inovadora, a fim de controlar e reconfigurar o comportamento global de uma rede de computadores: retirar a lógica de controle da infraestrutura da rede e centralizá-la em um sistema operacional, deixando os equipamentos de rede como meros comutadores de pacotes, os quais serão orquestrados por uma interface não proprietária. O “cérebro” de uma rede utilizando automação em Python estará, portanto, completamente desacoplado dos vários dispositivos de baixo nível da rede o que representa uma ruptura expressiva da tradicional verticalização (o acoplamento entre os planos de controle e dados) observada nas arquiteturas de redes convencionais [9]. METODOLOGIA O GNS3 é um aplicativo gratuito sob licença da GNU que prevê uma interface gráfica e permite ao usuário construir a topologia de rede que pretende configurar. Ele reúne diversos emuladores de sistemas operacionais. As etapas aplicadas nesse trabalho seguem essa sequência: automação com Script em Python; emulação de equipamentos dos fabricantes Cisco, Hewlett-Packard, Mikrotik e Juniper no GNS3; e um cenário real com equipamentos do fabricante Cisco. (83) 3322.3222 contato@joinbr.com.br www.joinbr.com.br EMULAÇÃO NO GNS3 A Figura 1 exibe a topologia criada no GNS3, e está definida da seguinte maneira: foi utilizada uma máquina com o sistema operacional Ubuntu 16.04 LTS para fazer o gerenciamento da rede e sua interface está configurada como Acesso; os Switches receberam endereçamento IPv4 192.168.0.1/24 a 192.168.0.4/24 na interface virtual Vlan 1; os Roteadores receberam endereçamento IPv4 192.168.0.21/24 a 192.168.0.24/24 na interface GigabitEthernet 1/0; todos os equipamentos foram configurados com acesso Telnet; na execução do Script foi utilizado o Python 2.7; as interfaces GigabitEthernet 2/0 foram configurados como interface Acesso e as portas dos Switches conectadas aos roteadores nas interfaces GigabitEthernet 1/0 foram configurados como Tronco; no GNS3 foi utilizado um cenário mais simples como teste para automação em Python. Figura 1 - Cenário Emulado Com Diferentes Fabricantes. APLICAÇÃO EM UM CENÁRIO REAL A Figura 2 apresenta o cenário real. O rack da esquerda possui 12 Switches do fabricante Cisco, modelo 2960, o rack da direta possui 12 Roteadores do fabricante Cisco, modelo 1941 e 12 PCs. Os Switches receberam endereçamento IPv4 192.168.0.1/24 a 192.168.0.12/24 na interface virtual Vlan 1; os Roteadores receberam endereçamento IPv4 192.168.0.21/24 a 192.168.0.32/24 na interface GigabitEthernet 1/0; o acesso Telnet foi configurado em todos os equipamentos. (83) 3322.3222 contato@joinbr.com.br www.joinbr.com.br Figura 2 - Cenário Real Com Equipamentos Cisco. CÓDIGO EM PYTHON Na Figura 3 o código em Python é descrito da seguinte maneira: na linha 1, a biblioteca de automação pexpect é chamada; na linha 7, as funções de configurações dos equipamento é definida; na linha 27, é criado um dicionário que relaciona cada função; na linha 31, a biblioteca pexpect é invocada, para realizar a conexão Telnet; e na linha 32, o comando get relaciona a função que implementa o dicionário. ESQUEMA DE CONFIGURAÇÕES DOS SWITCHES E ROTEADORES No Script as configurações dos dispositivos de redes segue essa sequência: o hostname foi configurado nos Switches; a criação de VLANs; atribuição de nome as VLANs; a Vlan 10 foi atribuída as interfaces FastEthernet 1/5 a 1/9; o hostname foi configurado nos Roteadores; as interfaces GigabitEthernet 2/0 receberam enderençamento IPv4 10.0.21.254/24 a 10.0.32.254/24; apenas uma área foi utilizada na configuração do OSPF do inglês (Open Shortest Path First) na (Área 0); e a interface GigabitEthernet 2/0 foi configurada como passiva. (83) 3322.3222 contato@joinbr.com.br www.joinbr.com.br Figura 3 - Código em Python RESULTADOS E DISCUSSÃO Na Tabela 1 apresenta o método de configuração manual, copiar e colar do inglês (copy and paste) que utilizou 769 linhas de código, para configurar 12 Switches Cisco e 176 linhas de código para configurar 12 Roteadores Cisco. Já no processo de configuração automatizado por Python foinecessário 27 linhas de código para configurar 12 Switches Cisco e 19 linhas de código para configurar 12 Roteadores Cisco. Além disso, foi calculado o percentual de decréscimo entre os dois procedimentos, resultando em uma melhoria expressiva quando se utiliza um Script para automação de redes com Python. Número de Linhas de Configuração e Percentual de Decréscimo Procedimento Manual Automatizado Decréscimo Switches 769 27 96% Roteadores 176 19 89% Tabela 1 - Linhas de Configurações e Percentual de Decréscimo. CONCLUSÕES O correto funcionamento do cenário implantado no GNS3 possibilitou a realização em ambiente real. Assim, pode ser realizada a comparação entre o processo manual e automatizado, da (83) 3322.3222 contato@joinbr.com.br www.joinbr.com.br implantação ou a modificação da rede. O protocolo OSPF foi utilizado de maneira bem sucedida, tanto no ambiente emulado, quanto nos equipamentos reais. Assim, pode-se definir que, a automação com o uso de Script em Python obteve êxito, tanto no ambiente emulado como nos equipamentos reais e utilizando uma menor quantidade de código de configurações, como descreve a Tabela 1. Foi avaliado também o percentual de decréscimo, entre o procedimento manual e automatizando, para os Switches esse decréscimo foi de 96%, e para os Roteadores 89%. REFERÊNCIAS BIBLIOGRÁFICAS [1] BRITO, S. H. B. Laboratórios de Tecnologias Cisco em Infraestrutura de Redes: Laboratórios do Primeiro Brasileiro Certificado em IPv6. [s.l.] Novatec Editora, 2014. [2] CARDOSO, W. S. E. O. G. A. M. T. G. S. M. P. S. et al. Uso de Redes Definidas por Software para Controle de Roteamento. 2016. [3] SOUSA, M. P. T. O. J. S. W. S. Y. C. U. R. Simuladores e Emuladores de Rede para o Projeto e Solução de Problemas em Ambientes de Produção. Revista de Tecnologia da Informação e Comunicação, v. 6, n. 2, 2016. [4] GORDON, M. An introduction to network programming the python way [book review]. IEEE Distributed Systems Online, v. 6, n. 10, 2005. [5] JAMBUNATHA, K. Design and implement Automated Procedure to upgrade remote network devices using Python. Advance Computing Conference (IACC), IEEE International. Anais. 2015. [6] Nosrati, M. 2011. Python: An appropriate language for real world programming. World Applied Programming 110–117, 1 (2011). [7] Tischer, R. J. G. Programming and automating Cisco networks. Cisco Press. 2017. [8] WELSH, C. GNS3 network simulation guide. [s.l.] Packt Publishing. 2013. [9] Vasconcelos, R. C. M. C. R. Gomes, F. B. F. A. Costa, and C. D. D. Silva, “Towards an SDN- App Store: A Generic Northbound API for Software-Defined Networks,” in Proceedings of the 14th International Conference WWW/INTERNET 2015 (ICWI), (Maynooth, Dublin, Ireland), pp. 173– 176, IADIS, October 2015.
Compartilhar