Iplementação de uma ferramenta de apoio à gerência de redes IPv6
Transcrição
Iplementação de uma ferramenta de apoio à gerência de redes IPv6
VINÍCIUS DE MIRANDA RIOS DESENVOLVIMENTO DE UMA FERRAMENTA DE APOIO À GERÊNCIA DE REDES IPv6 Palmas 2005 VINÍCIUS DE MIRANDA RIOS DESENVOLVIMENTO DE UMA FERRAMENTA DE APOIO À GERÊNCIA DE REDES IPv6 "Trabalho de Conclusão de Curso apresentado como requisito parcial de disciplina Prática de Sistemas de Informação II do curso de Sistemas de Informação, orientado pelo Prof. Ricardo Marx Costa Soares de Jesus". Palmas 2005 VINÍCIUS DE MIRANDA RIOS DESENVOLVIMENTO DE UMA FERRAMENTA DE APOIO À GERÊNCIA DE REDES IPv6 Trabalho de Conclusão de Curso apresentado como requisito parcial de disciplina Prática de Sistemas de Informação II do curso de Sistemas de Informação, orientado pelo Prof. Ricardo Marx Costa Soares de Jesus . BANCA EXAMINADORA _______________________________________________ Prof. Ricardo Marx Costa Soares de Jesus Centro Universitário Luterano de Palmas _______________________________________________ Profª. M.Sc Madianita Bogo Centro Universitário Luterano de Palmas _______________________________________________ Prof. M.Sc Fabiano Fagundes Centro Universitário Luterano de Palmas Palmas 2005 SUMÁRIO 1 INTRODUÇÃO................................................................................................8 2 REVISÃO DE LITERATURA .....................................................................10 2.1 3 IPV6..........................................................................................................10 2.1.1 Principais características ....................................................................12 2.1.2 Roteamento ..........................................................................................16 2.1.3 Fragmentação ......................................................................................17 2.1.4 Segurança do Protocolo IPv6..............................................................18 2.2 API DE SOCKET ........................................................................................19 2.3 GERÊNCIA DE REDES ................................................................................20 2.3.1 Conceitos sobre gerência.....................................................................21 2.3.2 Áreas funcionais de gerencia de redes ................................................25 MATERIAIS E MÉTODOS .........................................................................28 3.1 LOCAL E PERÍODO .....................................................................................28 3.2 MATERIAIS ...............................................................................................28 3.2.1 Hardware:............................................................................................28 3.2.2 Software: ..............................................................................................28 3.2.3 Fontes Bibliográficas: .........................................................................29 3.3 METODOLOGIA .........................................................................................29 4 RESULTADOS E DISCUSSÕES.................................................................30 5 CONCLUSÕES ..............................................................................................46 6 REFERENCIAS.............................................................................................48 LISTA DE FIGURAS Figura 1 Endereço IPv6 representado na notação decimal pontuada [COMER, 1998]. ..13 Figura 2 Endereço IPv6 representado na notação hexadecimal [COMER,1998].............13 Figura 3 Formas de representação de um endereço IPv6 [COMER, 1998]......................13 Figura 4 - Formato básico do cabeçalho IPv6 [MARTINI, 2003].......................................14 Figura 5 Modelo de roteamento proposto pelo protocolo IPv6. .......................................17 Figura 6 - Comunicação TCP entre socket cliente e servidor [BUZATO, 2005]. ...............20 Figura 7 Modelo de Gerenciamento SNMP [BRISA, 1997]. ...........................................24 Figura 8. Fluxo de trabalho da ferramenta FAGRI..............................................................31 Figura 9. Trecho do código de leitura do arquivo eth0.log do MRTG. ...............................33 Figura 10. Inserção do caracter $ indicando fim dos dados de uma estação da rede........34 Figura 11. Arquivo gerado pelo coletor de dados................................................................34 Figura 12. Exemplo de seleção de dados dos disposistivos.................................................37 Figura 13. Tratamento e inserção dos dados no banco de dados. ........................................37 Figura 14. Resultado do processo de armazenamento e amostra das informações. ............39 Figura 15. Utilização do comando unlink para exclusão do arquivo tcc.txt....................39 Figura 16. Obtenção do total percentual dos dispositivos. ..................................................40 Figura 17. Obtenção da porcentagem da utilização dos dispositivos. .................................40 Figura 18. Geração do gráfico e seu percentual...................................................................41 Figura 19. Tela para busca das informações........................................................................42 Figura 20. Resultado de uma consulta de todo o ano de coleta de informações. ................43 LISTA DE TABELAS Tabela 1. Tabela criada para o armazenamento dos dados................................................. 35 LISTA DE ABREVIAÇÕES IPv4 - Internet Protocol Version 4 IPv6 - Internet Protocol Version 6 IPng - Internet Protocol Next Generation IETF - Internet Engineering Task Force SIPP - Simple Internet Protocol Plus SIP - Session Initiation Protocol IPSec - Internet Protocol Security SPD - Security Policy Database VPN - Virtual Private Networks MTU - Maximum Transmission Unit LAN - Local Area Network API - Application Programming Interface SNMP - Simple Network Management Protocol CMIP - Cammon Management Information Protocol MRTG - Multi Router Traffic Grapher RAM - Random Access Memory TCP - Transmission Control Protocol UDP - User Datagram Protocol IP Internet Protocol RESUMO Devido à expansão do protocolo de rede IPv6 e as limitações apresentadas pelo IPv4 surgiu a necessidade de criação de ferramentas que contribuam para a administração, análise e gerência das informações que trafegam pela rede. O IPv6 apresenta algumas características diferenciadas, como possibilidade de um número maior de hosts, maior segurança nos dados trafegados e uma maior mobilidade na gerência de redes. O gerenciamento apresenta algumas formas de auxiliar a administração e assegurar o controle de um grande fluxo de informações. A ferramenta de gerência foi desenvolvida utilizando a linguagem PHP e o banco de dados MySQL, baseando-se nas informações disponibilizadas pelo MRTG para apresentar gráficos que demonstram o andamento dos dispositivos selecionados em cada estação de trabalho, utilizando-se de sockets, pelo fato do mesmo ter uma grande mobilidade de conexão entre clientes remotos na transmissão dos dados entre estações de trabalhos e servidores. Palavras chave: IPv6, gerência de redes, sockets, ferramenta de gerência . ABSTRACT Because of the great expansion of net protocol IPv6 and the IPv4 presented limitations, a tools creation necessity appears for administration, analysis and management of the information that pass through the net. The IPv6 presents some differentiated characteristics, like the possibility of a bigger number of hosts, bigger security in data traffic and a bigger mobility in net management. The management presents some ways to assist the administration and assures the control of a great information flow. The management tool was developed using the PHP language and the database MySQL, based on information yielded by MRTG to present graphics that show the course of the selected devices on each workstations, using sockets, because itself has great connection mobility on remote clients in data transmitions between workstations and servers. Keywords: IPv6, networks management, sockets, management tool. 8 1 INTRODUÇÃO Com o crescimento da utilização de hosts válidos, ou seja, todo computador cujo IP é reconhecido pela Internet, causando escassez do IPv4 e a criação do novo protocolo de rede IPv6, surgiu a necessidade da criação de uma ferramenta que monitorasse este novo protocolo dando suporte a decisões mais bem fundamentadas, além de promover um maior controle do que se passa nas estações presentes no ambiente de rede. O processo de gerência de redes tem como objetivo assegurar as informações trafegadas na rede, bem como as contidas nas estações de trabalho. Para isso são utilizadas ferramentas no sentido de garantir a disponibilidade e apresentação destas informações de forma a se tornarem úteis ao administrador de redes. Visando suprir esta necessidade, propõe-se neste trabalho o desenvolvimento de uma ferramenta que mostre de forma simplificada e abrangente o consumo e a utilização de dados e aplicativos em um ambiente de redes IPv6 auxiliando na administração e gerência desta. A ferramenta realizará a monitoração dos dispositivos de rede, disco rígido, memória RAM e da CPU. Para a realização do trabalho e implementação da ferramenta foi necessário um processo de pesquisa bibliográfica durante a fase de definição e construção da ferramenta de gerência de redes, sendo que esta é apresentada na revisão de literatura. O presente trabalho tem como objetivo apresentar a implementação da ferramenta FAGRI, possibilitando a monitoração de redes UNIX unificando todas as informações 9 referentes aos seus dispositivos em um único servidor e também os conceitos relevantes para a compreensão do conteúdo. Desta forma, busca-se diversificar a apresentação dos dados em gráficos para uma melhor visualização percentual da quantidade de informações utilizadas, acessadas ou sem nenhum tipo de utilização. 10 2 REVISÃO DE LITERATURA 2.1 IPv6 O protocolo IP (Internet Protocol) é responsável por mudanças dramáticas na tecnologia de hardware e também no aumento de acesso a serviços on-line. Este protocolo composto por uma seqüência de números de 32 bits foi desenvolvido para possibilitar a comunicação padronizada entre computadores, mesmo sendo eles de plataformas diferentes. O datagrama IP consiste em duas áreas distintas que é a área de cabeçalho e a área de dados, nele se encontra as informações do endereço destino e o tipo de protocolo utilizado como TCP (Transmission Control Protocol) ou UDP (User Datagram Protocol), sendo fundamental para Internet pelo fato de transmitir pacotes entre seus hosts, ou seja, quando um determinado aplicativo transfere dados entre computadores os dados são encapsulados neste datagrama. Quando se iniciou o seu uso do protocolo IP, a sua finalidade era de atender apenas universidades, indústrias de alta tecnologia e órgãos governamentais dos Estados Unidos. Mas, devido a sua exploração a partir de meados da década de 90, ele deixou de ser usado por um grupo reduzido de pessoas e se expandiu para escritórios e residências se tornando popular no mundo inteiro. Ficou claro que o protocolo IP atual precisava evoluir para tornar-se mais flexível e poder se adequar a essas novas necessidades [COMER, 1998]. 11 Quando o protocolo IP foi projetado não se imaginava que teria um aumento da quantidade de hosts como existe atualmente e também pela falta de segurança nos dados trafegados entre as redes através dele, por este motivo, foi necessário criar um novo protocolo IP que comportasse mais máquinas passando a ter um novo formato de endereçamento, aumentando de 32 bits para 128 bits. Com este novo formato, o protocolo passou a ser denominado IPv6 (Internet Protocol version 6) ou IPng (Internet Protocol Next Generation) como também pode ser chamado [COMER, 2001]. Com a visão dos problemas que estavam surgindo e os que possivelmente viriam a acontecer, a IETF (Internet Engineering Task Force) [IETF, 2005] órgão formado por pesquisadores e técnicos responsáveis pelos padrões da Internet e o desenvolvimento de protocolos de comunicações e aplicações, como também a operação, segurança e o gerenciamento desta rede, começou a trabalhar na nova versão do protocolo IP, a qual, tinha o objetivo de desenvolver novas funcionalidades em relação ao IPv4 (Internet Protocol version 4). Para que fosse possível estabelecer um melhor desempenho no tráfego de dados pelas redes, mas mantendo as características essenciais do IPv4 [SILVA, 1998]. foram definidos alguns objetivos que o IPv6 deveria alcançar, podendo-se citar os seguintes [MURHAMMER, 2000]: aceitar bilhões de hosts; reduzir o tamanho das tabelas de roteamento; ser um protocolo mais simplificado para permitir que os roteadores processem os pacotes com mais rapidez; oferecer mecanismo de segurança nativo no protocolo; permitir que o protocolo evolua no futuro; permitir a coexistência entre o IPv4 e IPv6 durante anos. Inicialmente, a IETF convocou os interessados a apresentarem propostas para o novo protocolo. Foram recebidas vinte e uma respostas, as quais foram analisadas e selecionadas sete, dentre as quais havia propostas que sugeriam desde pequenos ajustes no 12 IP à sua eliminação total para a criação de um protocolo totalmente diferente [TANENBAUM, 2003]. Após várias reuniões, discussões e disputas, em 1994 foram selecionadas duas propostas, as quais deram origem ao protocolo SIPP (Simple Internet Protocol Plus) [HINDEN, 2004]. O SIPP era uma proposta baseada na junção do SIP (Simple IP Plus) com o PIP (Paul´s Internet Protocol). A finalidade do SIP era de aumentar para 64 bits o tamanho do endereçamento deixando a fragmentação de pacotes, pois esta funciona muito bem no atual protocolo, retirando algumas características não usadas pelo IPv4. Já o PIP criaria uma nova forma de roteamento, a qual seria baseada em listas de diretivas para melhorar a implantação de políticas de roteamento, o que facilitaria o conceito de mobilidade [MARTINI, 2003]. Após certo tempo foi decidido que a proposta denominada SIPP, ao invés de usar os 64 bits propostos, usaria 128 bits, o que acarretaria no aumento de 3,4x1038 endereços. Isto significa que se colocarmos um computador em cada pedaço de terra e água do nosso planeta haveria 7x1023 endereços IP por metro quadrado [SILVA, 1997]. 2.1.1 Principais características A proposta do protocolo IPv6 era de manter certas funções do IPv4 as quais não causariam problemas futuros, estas conseguiriam adaptar-se às novas tecnologias e também criar funções que venham dar novas características a ele [COMER, 1998], como tratadas a seguir. 2.1.1.1 Aumento de endereçamento Pode-se dizer que esta é a principal característica que difere o IPv6 do IPv4, pois se quadruplicou o número de octetos, uma vez que o seu tamanho passou de 32 para 128 bits e de 4 para 16 octetos. Com este tamanho é possível garantir que o IPv6 seja capaz de tolerar qualquer mudança no esquema de endereçamento. Em decorrência da mudança para 13 128 bits do endereçamento IP, gerou-se um problema que é o tamanho extenso do endereço IPv6 [COMER, 1998], como exemplificado na Figura 1. 255.255.255.255.255.255.255.255.255.255.255.255.255.255.255.255 Figura 1 Endereço IPv6 representado na notação decimal pontuada [COMER, 1998]. Com um tamanho do endereço tão extenso haveria certa dificuldade para que as pessoas que trabalham com interligações de redes manipulem tais endereços, visto que elas necessitam a todo instante ler e memorizar estes endereços. Devido a estes problemas foi criada uma nova notação para a representação do endereço IPv6, denominada colon hex. Com esta notação os endereços são representados por 8 partes de 16 bits separadas por dois pontos com os valores em hexadecimal, obtendo assim uma vantagem na utilização de menos dígitos e menos caracteres separadores do que a notação decimal [COMER,1998]. A figura 2 ilustra um exemplo do endereço IPv6 representado na notação colon hex. FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF Figura 2 Endereço IPv6 representado na notação hexadecimal [COMER,1998]. Apesar da notação em hexadecimal reduzir pela metade o endereço IPv6, este ainda continua extenso o que levou os pesquisadores a buscarem novas alternativas para a representação do endereço. Dentre várias tentativas pesquisadas foram estabelecidas duas formas para simplificar a sua representação [COMER, 1998]. 1 0000:0000:0000:0000:0000:0000:0128.0010.0002.0001 2 0:0:0:0:0:0:128.10.2.1 3 ::128.10.2.1 Figura 3 Formas de representação de um endereço IPv6 [COMER, 1998]. Uma destas formas é a substituição de seqüências de 16 bits com valores iguais a zero pela agregação :: , a qual torna os endereços bem menores e mais compreensíveis. A outra seria suprir os zeros da esquerda de cada parte de 16 bits do endereço. Para se ter uma visão mais clara da utilização destas formas, a Figura 3 apresenta alguns exemplos de representação do endereço IPv6 [COMER, 1998]. 14 2.1.1.2 Cabeçalho Simplificado Para que o IPv6 tenha uma maior flexibilidade e consiga adaptar-se a futuras mudanças tecnológicas, o seu cabeçalho básico foi simplificado. Alguns campos que eram fixos no IPv4 se tornaram opcionais, o que resultou em um menor processamento, tornando o IPv6 extremamente útil para redes de alta velocidade [MARTINI, 2003]. Os campos opcionais do IPv6 são denominados cabeçalhos de extensão. Cada pacote IPv6 pode conter zero ou n cabeçalhos de extensão, sendo que nestes cabeçalhos existem informações das mais diversas como: informações para roteadores, fragmentação do datagrama IP, informações sobre o conteúdo cifrado, além de outras que existem e que poderão ser criadas futuramente [MARTINI, 2003]. Como questão de exemplificação será demonstrada na Figura 4 a forma do cabeçalho básico IPv6 e posteriormente serão descritos alguns cabeçalhos de extensão. Figura 4 - Formato básico do cabeçalho IPv6 [MARTINI, 2003]. Como apresentado na Figura 4 o IPv6 oferece um cabeçalho padrão simplificado o que o torna mais rápido no processamento pelos roteadores, visto que, em comparação com o IPv4 que contém 14 campos, este contém apenas 8. 15 2.1.1.3 Cabeçalhos de Extensão O IPv6 possui cabeçalhos de extensão que podem ser adicionados ao cabeçalho básico, sendo a finalidade destes cabeçalhos é acrescentar mais informações sobre o datagrama, para que este seja processado de maneira adequada tanto pelos roteadores como pela máquina destino. Todos os cabeçalhos, incluindo o cabeçalho básico IPv6, trazem o campo próximo cabeçalho , o qual deve ser o primeiro campo existente em todos os tipos de cabeçalhos de extensão. Este campo identifica o tipo de cabeçalho que segue o cabeçalho corrente. Caso não existam cabeçalhos de extensão, este campo identifica o protocolo de camada superior. Desta forma, o tipo de cada cabeçalho de extensão é referenciado por um valor numérico que é usado no campo próximo cabeçalho do cabeçalho anterior. Os cabeçalhos de extensão são divididos em seis tipos, como apresentado a seguir [BRISA, 1997]: cabeçalho de Opções Hop-by-Hop - neste cabeçalho são inseridas informações que devem ser tratadas pelas máquinas que o datagrama vai passar até o seu destino; cabeçalho de Roteamento - através deste cabeçalho a máquina que origina o datagrama pode controlar a rota que o mesmo irá percorrer pela rede, pois nele estão contidas informações de roteamento, incluindo os endereços IP das máquinas pelas quais deve passar; cabeçalho de Fragmentação - este cabeçalho contém informações que serão utilizadas pela máquina destino para a remontagem do datagrama quando o mesmo é fragmentado; cabeçalho de Autenticação - este cabeçalho possui as informações necessárias para prover autenticação e integridade dos datagramas; cabeçalho de Privacidade provê confidencialidade e integridade dos dados, pois contem no seu campo de dados o próprio datagrama IP ou mensagem de um protocolo de camada superior criptografados; cabeçalho de Opções do Destinatário através deste cabeçalho são enviadas informações adicionais para a máquina destino. Os cabeçalhos de extensão, geralmente, são examinados ou processados somente pela máquina destino, exceto o cabeçalho de extensão Hop-by-hop, que precisa estar 16 imediatamente após o cabeçalho IPv6, pois armazena informações que devem ser utilizadas no processo de roteamento do pacote. Se durante o processamento do pacote houver um cabeçalho indicado pelo campo próximo cabeçalho que seja de um tipo desconhecido pela máquina, esta deve descartar o pacote e gerar uma mensagem de erro ICMP apropriada [COMER, 1998]. 2.1.2 Roteamento A forma de roteamento também foi outra significativa mudança que ocorreu no protocolo IPv6, pois este permite especificar uma rota de origem livre com o uso do cabeçalho de extensão. Neste cabeçalho estão contidas informações necessárias para a compreensão do roteamento de um datagrama, como o endereço IP das máquinas intermediárias através dos quais o datagrama deve passar, o número total de endereços da lista, um campo que especifica o próximo endereço, entre outras. Com estas informações a máquina origem pode controlar a rota que o seu datagrama vai seguir pela rede, além de facilitar o trabalho dos roteadores, pois os mesmos não terão a responsabilidade de encontrar a próxima rota para o datagrama [MARTINI, 2003]. O IPv6 também resolve um outro problema comum nos roteadores que utilizam o IPv4, que é o tamanho exorbitante das tabelas de roteamento em suas memórias. Tal problema vem fazendo com que os roteadores não calculem de forma eficiente a melhor rota para o destino de um datagrama, visto que estes armazenam um grande número de endereços [COMER, 2001]. Visando solucionar o problema de armazenamento de tabelas em memórias do roteador, o IPv6 fará roteamento por domínios, que seria a criação de uma hierarquia através dos provedores, neste conceito as rotas seriam propagadas através dos domínios de cada provedor, a Figura 6 demonstra como ficaria esta hierarquia [COMER, 2001]. 17 Figura 5 Modelo de roteamento proposto pelo protocolo IPv6. Com esta solução os clientes poderão receber somente endereços derivados do prefixo que o provedor possui o que pode ocasionar na dependência de uma determinada empresa com um provedor, pois se a empresa desejar mudar de provedor, a mesma terá que mudar todo o seu endereçamento [COMER, 2001]. 2.1.3 Fragmentação Ao contrário do IPv4, em que um datagrama era fragmentado durante o caminho para o destino, no IPv6 a fragmentação é efetuada na máquina origem. Isto significa que, antes de enviar o datagrama pela rede, é feito uma prévia do caminho a ser percorrido e identificada a MTU (Maximum Transmission Unit) ou máxima unidade de transmissão mínima até o destino, sendo assim a máquina origem fragmenta o datagrama em pedaços que tenham um tamanho inferior à menor MTU identificada [COMER, 1998]. Com esta técnica de fragmentação consegue-se uma significante diminuição no processamento dos roteadores, o que possibilita aos mesmos processar um maior número de datagramas por unidade de tempo. Apesar de haver vantagens nesta forma de fragmentação, também há uma desvantagem, visto que as rotas não podem ser alteradas durante o caminho do datagrama, pois isso poderia acarretar na mudança da MTU [MARTINI, 2003]. 18 A solução para tal inflexibilidade na fragmentação do IPv6, foi a de permitir que roteadores intermediários passem por IPv6 através de IPv6, ou seja, quando um roteador necessitar fragmentar um datagrama, será criado um novo datagrama divido em fragmentos, com o mesmo procedimento da máquina origem [COMER, 1998]. 2.1.4 Segurança do Protocolo IPv6 Como comentado anteriormente, a Internet tem crescido muito durante o passar dos anos, o que vem ocasionando vários problemas relacionados a segurança, os quais o protocolo IPv4 não administra muito bem. Visando prover uma melhor segurança, foram implantadas no IPv6 algumas características diferenciadas do IPv4, como os cabeçalhos AH (Authentication Header), ESP (Encapsulating Security Payload) e a arquitetura IPSec (IP Security), que serão descritos a seguir. O protocolo de autenticação AH fornece características para propiciar segurança no tráfego de datagramas IP inter-rede, que são a autenticação do seu cabeçalho e a integridade, ou seja, o IP de origem chega ao destino da mesma forma como saiu [GODINHO, 2004]. Com o uso deste protocolo pode-se evitar alguns tipos de ataques de personificação, como o IP Spoofing, que é a troca do IP original por um de outro host. Com o protocolo ESP é possível garantir que os dados trafegados na rede não sofram nenhum tipo de análise durante o decorrer do seu trajeto, garantindo assim a confidencialidade e integridade das informações [GODINHO, 2004]. A característica de confidencialidade garante a impossibilidade do ataque eavesdropping. O IPSec é uma estrutura nativa do IPv6 formado pelos protocolos AH e ESP que tem como características propiciar a integridade, a autenticidade, o controle de acesso e a confidencialidade dos datagramas IP [GODINHO, 2004]. Com o IPSec é possível evitar ataques maliciosos, como os programas sniffers, os quais têm a finalidade de extrair informações do tráfego e conseguir acesso a um determinado sistema na rede. 19 Pode-se verificar que o IPv6 está com a sua estrutura amplamente voltada para a segurança e um melhor desempenho do roteamento das informações que trafegam na rede através dos datagramas IP, estrutura esta que o IPv4 não possuía nativamente, possibilitando ataques maliciosos dos mais diversos tipos e um sistema de roteamento fraco onde há grandes possibilidades de colisões entre roteadores. 2.2 API de Socket A base para transmissão e recepção da rede UNIX é denominada socket. Este pode ser definido como um mecanismo de acesso aos arquivos do UNIX, o qual fornece um ponto para comunicação. A API (Application Program Interface) pode ser designada como um conjunto de aplicativos que interagem com o software de protocolo de transporte, definindo operações a serem executadas ao se interagir com este protocolo [COMER, 2001]. Devido a grande popularização dos sockets e visto que esses existiam somente nos sistemas UNIX e os que derivam dele, outros sistemas operacionais decidiram implantar os sockets em seus códigos, passando estes a se chamarem API de sockets, ou seja, ao invés destes sistemas alterarem seus códigos, estes criaram uma biblioteca de procedimento aonde a mesma contém os nomes e argumentos que os sockets possuem [COMER, 2001]. Os programas cliente e servidor necessitam utilizar protocolos de transporte para se comunicarem em uma rede de computadores. Para que ocorra essa interação com o software de protocolo, ele tem que especificar alguns detalhes, como se ele é um servidor e por isso deve esperar passivamente a comunicação ou se ele é um cliente e deve iniciar ativamente a comunicação [OLIVEIRA, 2002]. Na Figura 6 é demonstrado um exemplo de comunicação TCP entre socket cliente e servidor. 20 Figura 6 - Comunicação TCP entre socket cliente e servidor [BUZATO, 2005]. A Figura 6 ilustra a comunicação TCP entre um socket cliente e um socket servidor no qual o servidor deve estar antes em execução para criar a porta que aguarda o contato do cliente; neste momento o cliente gera uma conexão TCP chamada de Three-way handshake ou aperto de mão triplo firmando conexão na porta na qual ele fará contato pelo endereço IP especificado. A partir deste momento está criada a conexão TCP entre o cliente e o servidor. O protocolo UDP (User Datagram Protocol) envia dados entre computadores sem a necessidade de estabelecer uma conexão, não garantindo a entrega ou a verficação da seqüência em que esses pacotes estão sendo enviados. Portanto em alguns casos o protocolo UDP se faz necessário por ser mais rápido na entrega dos dados do que o TCP, pois este estabelece uma conexão segura com a máquina destino para que se possa começar a enviar os dados. 2.3 Gerência de Redes Devido à grande expansão que as redes de computadores estão sofrendo atualmente no âmbito da comunicação pessoal e empresarial e também dos dados trafegados entre seus computadores, é necessário que haja uma prevenção contra possíveis danos no tráfego dos dados, bem como sua integridade até o destinatário. Outro problema encontrado em 21 ambientes de redes principalmente no âmbito empresarial é que estes são formados por uma grande variedade de recursos provenientes de vários fornecedores, ou seja, são equipamentos e softwares os quais possui pouca ou até mesmo nenhuma interoperabilidade. Para que se garanta confiabilidade aos serviços oferecidos e uma comunicação adequada entre estes recursos, é necessário que as redes de computadores sejam gerenciadas. Este gerenciamento envolve o monitoramento e o controle de recursos oferecidos pelas mesmas assegurando que os sistemas de informação utilizados através da rede estejam operacionais e eficazes a todo instante. Outro fator que demonstra a necessidade de gerenciamento é o fato de ser necessário um planejamento futuro visto que as redes promovem facilidades aos usuários de determinados sistemas, isto estimula o seu crescimento e traz consigo também uma demanda de manutenção. Considerando-se uma rede dentro de um ambiente em que a mesma seja distribuída em várias salas ou em prédios distintos, a manutenção torna-se complexa, consumindo tempo e recursos [BRISA, 1997]. Sendo assim o gerenciamento de uma rede por si só já é complexo devido às redes estarem se tornando maiores em extensão, complexas por causa do surgimento de novas tecnologias a todo instante, heterogêneas, pois podem ser usadas por plataformas de hardware e softwares distintas não podendo ser realizado apenas pelo esforço humano, o que leva os administradores de rede buscarem soluções automatizadas de gerenciamento. 2.3.1 Conceitos sobre gerência Nas seções a seguir serão apresentados alguns conceitos relacionados aos componentes e protocolos da gerência de redes. 22 2.3.1.1 Software de gerência de redes Para que os administradores de redes consigam monitorar de forma eficaz e abrangente todo ambiente de rede, podem ser desenvolvidos softwares para controlar e monitorar componentes, como hosts, roteadores, bridges, demonstrando seus status, bem como obter statisticas do funcionamento destes. Com isso o administrador da rede tem a possibilidade e flexibilidade de alterar configurações da rede para que seus componentes trabalhem da melhor forma possível [COMER, 2001]. Atualmente existem dezenas de softwares que tem a finalidade de gerenciar uma rede, dentre estes pode-se citar os seguintes: ARGUS - que é um software usado no ambiente UNIX, para monitorar dispositivos como hubs, switchs, roteadores e as máquinas do ambiente de rede, demonstrando os status e as estatísticas destes componentes graficamente; MRTG - este tem a finalidade de monitorar o status dos componentes das máquinas no ambiente de rede, podendo ser usado tanto para o sistema operacional UNIX ou Windows, este também demonstra de forma gráfica o desempenho dos componentes gerenciados. Assim os administradores, além de poderem criar seu próprio software com as particularidades e funções que o seu ambiente de rede necessita, podem utilizar softwares já existentes no mercado, configurando-os de forma a gerencar sua rede. 2.3.1.2 Componentes do gerenciamento Para se gerenciar uma rede de computadores, alguns componentes são necessários para que haja uma comunicação entre os computadores conectados entre si. Estes componentes são os gerentes, agentes e os objetos gerenciados. A seguir serão descritos os conceitos dos mesmos [BRISA, 2001]: gerentes têm por finalidade controlar os objetos gerenciados de uma determinada máquina, para obter informações do seu funcionamento e as transmitir para os agentes; 23 agentes estes recebem as informações geradas pelos objetos gerenciados através dos gerentes e executam as ações necessárias de acordo com o que a máquina necessita; objetos gerenciados são componentes que os sistemas de gerenciamento se propõem a controlar. Eles são formados através de informações como, suas características, funções que exercem e relacionamentos com outros objetos gerenciados. As informações destes objetos formam a MIB (Management Information Base). A gerência de redes trabalha em nível de aplicativo, se utilizando de protocolos de transporte como o SNMP (Simple Network Management Protocol) e o CMIP (Common Management Information Service Over TCP), para administrar e controlar os componentes de uma rede, ou seja, quando um gerente precisa interagir com um dispositivo especifico, o software de gerencia segue o modelo cliente-servidor convencional: um programa aplicativo no computador do gerente atua como cliente, e um programa no dispositivo de rede atua como servidor [COMER, 2001]. Na seção a seguir será descrito o funcionamento do protocolo SNMP e CMIP. 2.3.1.3 SNMP (Simple Network Management Protocol) Como descrito anteriormente o SNMP é utilizado para administrar uma inter-rede, tendo como função definir como o gerente irá se comunicar com o agente. É através dele que são estipulados os formatos de requisições que o gerente irá enviar e das respostas que o agente irá retornar. Nele também podem ser definidas as codificações das mensagens que o mesmo retorna [COMER, 2001]. O SNMP é apenas o protocolo de acesso entre os objetos gerenciados, onde os dados a serem coletados ou o status dos componentes gerenciados ficam por conta da MIB. Sendo assim as MIB podem ser definidas com vários padrões diferentes ou até mesmo por grupos de pessoas que tenham alguma necessidade diferente das já implementadas, sem que haja necessidade de alteração do protocolo de transporte [COMER, 2001]. A Figura 7 demonstra um exemplo de gerenciamento do protocolo SNMP. 24 Figura 7 Modelo de Gerenciamento SNMP [BRISA, 1997]. Um outro ponto relevante a se ressaltar sobre o SNMP, é a forma de execução de seus comandos, pois em vez do mesmo ter um grande número destes, ele agrupa todas as suas operações em um paradigma de busca e armazenamento. Desta forma fica mais acessível ao administrador criar softwares que usam o protocolo, pois o SNMP terá apenas dois comandos, que são o de buscar e armazenar o valor de um dado. O restante das operações necessárias é em decorrência destes comandos [COMER, 1998]. Devido as suas características o SNMP é um protocolo que pode ser usado no desenvolvimento de softwares para verificar o status de um componente de uma máquina, como também alterar o estado de um dispositivo em uma máquina através das informações coletadas pelo SNMP geradas pelas MIB. 2.3.1.4 CMIP (Common Management Information Service Over TCP) O CMIP é um protocolo baseado no modelo de gerenciamento OSI (Open System Interconection). Em comparação com o protocolo SNMP o CMIP, possui uma quantidade 25 menor de componentes que o implementam. Outra característica a se destacar neste protocolo é o fato deste ter um número bem maior de operações, o que o torna mais versátil no controle do ambiente de redes [PEREIRA, 2001]. O CMIP pode ser de grande relevância quando for necessário ter qualidade nas informações obtidas, pelo fato deste ter a capacidade de coletar informações complexas. Por ter esta característica, o CMIP é mais lento na sua execução, pois necessita de uma grande quantidade de memória e processamento. Para utilização do CMIP é necessário que os componentes da rede tenham algum tipo de gerenciamento implementado pelos seus fabricantes, para que este possa obter informações destes componentes e processá-las enviando-as a um integrador. O integrador pode ser definido por três níveis que são: o nível baixo que contém informações do agentes e dos componentes gerenciados, o intermediário que possui somente as informações referentes ao sistema de gerenciamento e por fim o nível mais alto que integra os sistemas que fazem parte do gerenciamento [PEREIRA, 2001]. O CMIP apesar de ser mais versátil em obter informações de um ambiente de rede, perde na rapidez e na compatibilidade de gerenciamento entre as variáveis dos objetos gerenciados, visto que cada fornecedor possui características específicas dos seus equipamentos. 2.3.2 Áreas funcionais de gerência de redes Para se ter um melhor controle do gerenciamento de uma rede, esta foi dividida em áreas as quais tem por objetivo resolver de forma específica cada particularidade da rede, como falhas de componentes, configuração do ambiente, segurança e desempenho [COMER, 1998]. Desta forma o administrador tem um melhor controle do gerenciamento, pois pode analisar as informações separadamente de cada área. A seguir serão descritas as cinco áreas de gerenciamento que são: gerenciamento de falhas, configuração, desempenho, segurança e contabilização. 26 2.3.2.1 Gerenciamento de falhas Tem por finalidade analisar os status dos objetos gerenciados, identificando se os mesmos estão funcionando corretamente, em mau uso ou sem funcionamento e partir desta análise iniciar algum tipo de manutenção ou correção que venha a ser necessária, restabelecendo as conexões com as unidades que venham a dar problema. Este gerenciamento pode também executar seqüências de testes criando diagnósticos do ambiente gerenciado [BRISA, 1997]. 2.3.2.2 Gerenciamento de configuração Tem a função de controle, manutenção e monitoramento da estrutura física e lógica de um ambiente gerenciado. Sendo assim este gerenciamento é responsável pela iniciação, continuidade e suspensão dos serviços de interconexão em uma ambiente de rede. Devido a estas funcionalidades, este tipo de gerenciamento torna mais fácil controlar os objetos gerenciados, identificando e coletando seus dados [BRISA, 1997]. 2.3.2.3 Gerenciamento de desempenho Este gerenciamento é formado por um grupo de funções responsáveis por não deixar que um determinado recurso do ambiente de rede ultrapasse a sua capacidade total de serviço, ocorrendo a inoperabilidade da rede. Neste gerenciamento também é possível avaliar e relatar informações sobre os níveis de desempenho do ambiente de rede, podendo assim utilizar estas para fins de planejamento e controle na qualidade de serviços [BRISA, 1997]. 2.3.2.4 Gerenciamento de segurança O objetivo deste gerenciamento é de assegurar a integridade e a confiabilidade das informações trocadas entre o gerente e o agente, para que não haja dados alterados por um intruso nas informações relativas a um objeto gerenciado. Para isso criou-se uma MIB especial denominada de SMIB (Security Management Information Base) que notifica o 27 gerente a cada resposta enviada pelo agente ou vice-versa caso haja algum tipo de problema na rede [BRISA, 1997]. 2.3.2.5 Gerenciamento de contabilidade Tem por objetivo de identificar os recursos e mensurar a quantidade de utilização destes no ambiente de rede calculando os custos de utilização de cada um. A partir disto identificar gastos futuros com o aumento da rede, usuários e conexões inter-redes [BRISA, 1997]. Visto que as áreas de gerenciamento têm funcionalidades e finalidades diferentes, estas têm a possibilidade de trocar informações entre si, o que ajuda na tomada de decisão entre elas, podendo assim gerenciar suas próprias partes e a da rede como um todo. 28 3 MATERIAL E MÉTODOS Para a produção desse trabalho, vários recursos foram utilizados, material bibliográfico, hardware e software. Utilizando ferramentas adequadas, aliadas a uma orientação, tornou-se possível à elaboração do mesmo. 3.1 Local e Período Esse trabalho teve seu desenvolvimento no segundo semestre de 2005 como parte da disciplina de Prática em Sistemas de Informação II. O desenvolvimento deste trabalho ocorreu no Laboratório de Redes de Computadores (LARC) no Centro Universitário Luterano de Palmas - CEULP/ULBRA. 3.2 Material Os materiais utilizados para a realização deste trabalho (Hardware, Software e material bibliográfico) foram disponibilizados pelo CEULP/ULBRA, além de consultas a Internet. 3.2.1 Hardware: Pentium IV 2.4 Ghz, 512Mb de RAM. 3.2.2 Software: LINUX Slackware 10.0; MRTG; 29 API de Socket IPv6; PHP; MySQL; 3.2.3 Fontes Bibliográficas: Sites diversos; Trabalhos de conclusão de curso; Relatórios de Pós-graduação; Publicações científicas; Livros. 3.3 Metodologia Todo o material foi coletado visando um maior conhecimento sobre redes IPv6, gerenciamento e ferramentas de monitoramento. O conhecimento adiquirido sobre IPv6, sockets e gerência de redes foi de grande importância para a conclusão deste trabalho, pois, apesar do protocolo IPv6 estar em fase adiantada de testes, este é relativamente novo, existindo somente adaptações para estabelecer conexões com o protocolo IPv4. Devido a isso, este estudo se mostrou de grande importância para esclarecer dificuldades que comumente são encontradas por administradores de ambientes redes de computadores IPv6. Para a realização deste trabalho foram adotados alguns procedimentos como a instalação do LINUX Slackware 10.0 por ter suporte nativo ao IPv6, bem como suportar máquinas de pequeno porte sendo a base para a instalação, configuração e testes da ferramenta. Estes procedimentos foram divididos em cinco etapas com o objetivo de me minimizar o caminho crítico do desenvolvimento, sendo eles: instalação e configuração do MRTG, coleta dos dados do log do MRTG, envio dos dados coletados, recebimento dos dados coletados e resultados obtidos dos testes são apresentados na próxima seção. 30 4 RESULTADOS E DISCUSSÕES A ferramenta FAGRI (Ferramenta de Apoio a Gerência de Redes IPv6) foi desenvolvida para gerenciar e administrar várias estações de trabalho de um ambiente de redes IPv6, com o intuito de verificar os dispositivos de rede e hardware como: disco rígido, memória RAM e processamento da CPU em cada máquina, disponibilizando o consumo de dados nestes dispositivos através de gráficos que são disponibilizados na WEB. O sistema consiste em cinco etapas distintas que são desempenhadas por módulos do FAGRI e pela ferramenta MRTG (Multi Router Traffic Grapher). O sistema atende a todo ambiente de rede em nível de gerenciamento de configuração contendo o sistema operacional Linux e o protocolo IPv6 instalado e funcionando corretamente. Outro requisito básico a ser atendido para o funcionamento da ferramenta é a necessidade da utilização do sistema operacional Linux no servidor de redes, contendo o protocolo de rede IPv6, o banco de dados MYSQL, sockets IPv6, um servidor de páginas WEB e o interpretador PHP instalados e funcionando em perfeito estado. Na Figura 8 é ilustrado o fluxo de trabalho do FAGRI. 31 Figura 8. Fluxo de trabalho da ferramenta FAGRI. A Figura 8 demonstra a arquitetura da ferramenta de gerência de redes de computadores em um ambiente de redes IPv6 com a finalidade de monitorar e gerir os computadores de forma segura e simples. O MRTG monitora os dados que estão sendo passados pelos dispositivos de rede, disco rígido, memória RAM e CPU e os grava em um arquivo de log gerado para cada um desses dispositivos, como ilustrado pela letra a da Figura 8. Em seguida esse arquivo é lido, como demonstrado pela letra b da Figura 8, por um programa que coleta apenas os dados importantes de cada log e gera um outro arquivo com esses dados e em um formato pré-definido, como ilustrado na letra c , para logo após ser lido pelo programa socket cliente e enviá-lo através de socket UDP, pelo fato deste ser mais rápido na entrega dos dados ao servidor como ilustrado pela letra d . Após os dados serem enviados, o programa socket servidor recebe os dados e os monta em um arquivo, como ilustrado na letra e , que será lido pelo sistema Web, como demonstrado pela letra f , e terá dados gravados em um banco de dados, como ilustrado pela letra g . Por fim, estes dados são analisados e mensurados resultando em gráficos, 32 como demonstrado na letra h , que mostrarão a porcentagem de uso de cada dispositivo da estação de trabalho no ambiente rede. Portanto, a Figura 8 demonstra de maneira simplificada todo o processo de funcionamento da arquitetura da ferramenta de gerência de recursos de computadores de um ambiente de redes IPv6, denominado FAGRI, com a finalidade de monitorar e gerir os computadores de forma segura e simples. Esta demonstra desde a leitura dos logs dos dispositivos monitorados até a disponibilização dos resultados através de gráficos e informações, sendo todos os processos descritos no decorrer do trabalho. Conforme mencionado na metodologia do trabalho, a primeira etapa de desenvolvimento do software de apoio e gerência de redes IPv6 foi a instalação e configuração do MRTG, que é o responsável por gerar os arquivos de log dos dispositivos monitorados. Assim abriu-se espaço para a utilização do primeiro módulo da ferramenta de apoio a gerência de redes IPv6, o qual consiste em um coletor de dados responsável pela captura das informações nos logs dos periféricos de cada estação de trabalho monitorada pelo MRTG, sendo concluída a segunda etapa do trabalho descrito na metodologia. O coletor de dados é um programa que foi implementado utilizando a linguagem de programação C, tendo em vista que esta linguagem é confiável, robusta, multi-plataforma e é nativa no Linux, com inúmeras funções para leitura e criação de arquivos, bem como na utilização de conexão via socket que será discutido posteriormente. Seu objetivo é acessar os arquivos de log de cada dispositivo monitorado gerado pelo MRTG, lendo a primeira linha de cada arquivo e armazenando esses dados em um novo arquivo gerado automaticamente. A Figura 9 apresenta o trecho de código responsável pela obtenção dos dados do arquivo de log. 33 1 2 3 4 5 6 7 8 9 10 11 12 fp0 = fopen("tcc.txt", "w+"); fp1 = fopen("/var/www/htdocs/mrtg/eth0.log", "r+"); c = fgetc(fp1); while(c!='\n') { x[i] = c; i++; c = fgetc(fp1); } fputs(x,fp0); fputs('#',fp0); fclose(fp1); Figura 9. Trecho do código de leitura do arquivo eth0.log do MRTG. Na Figura 9 é ilustrado um trecho do código fonte do programa que realiza a leitura dos arquivos de log gerados pelo MRTG. Na linha 1 é utilizado o comando fopen para criar um arquivo com permissão de escrita e leitura. Nesse arquivo serão armazenadas apenas as informações consideradas importantes, que são obtidas do arquivo de log do MRTG, que é acessado na linha 2 através do comando fopen para leitura do arquivo chamado eth0.log. A linha 3 é responsável pela captura do primeiro caractere utilizando o comando fgetc. Da linha 4 até a linha 9 é realizado um loop em que cada caractere lido é armazenado em uma variável do tipo vetor, sendo que este será finalizado quando a variável encontrar o caractere correspondente a uma quebra de linha, ou seja, um enter. A quebra de linha é representada pelo caractere ASCII \n . A variável c receberá dados do arquivo de log até o momento em que for encontrado o caractere \n . Logo após a finalização do loop, a variável que recebeu os dados no caso denominada x , será gravada no arquivo com o nome de tcc.txt, como ilustrado na linha 10. Ao término do processo de gravação ainda será realizado outro processo de gravação para a inserção do caractere # , como ilustrado na linha 11 da Figura 9, para indicar a finalização dos dados referentes ao dispositivo de rede eth0 e finalmente fecha-se a conexão com o arquivo de log, como demonstrado na linha 12, mantendo o arquivo do coletor aberto para inserção dos dados dos demais dispositivos. A inserção do caracter # faz-se necessária para delimitar a finalização do log de cada dispositivo, já que este arquivo irá conter todas as informações dos mesmos. 34 Da mesma maneira foi necessário identificar o final da linha que representa todas as informações de uma estação utilizando o caracter $ já que o mesmo arquivo será utilizado para o armazenamento das demais estações da rede conforme demonstrado na Figura 10. 1 fputs('$',fp0); Figura 10. Inserção do caracter $ indicando fim dos dados de uma estação da rede. Com a finalização do processo de implementação do coletor, este foi instalado em cada estação de trabalho do ambiente de rede IPv6. Cada dispositivo, como mencionado, tem o seu próprio arquivo de log, sendo que no adaptador de rede foram encontradas algumas particularidades que o diferenciam dos outros dispositivos, no caso, o disco rígido, a memória RAM e a CPU. Pois o dispositivo de rede é o único que apresenta entrada e saída de dados, ao passo que nos outros dispositivos é calculado o percentual utilizado desses periféricos. O resultado final do processo de coleta das informações é apresentado na Figura 11, tendo como exemplo a coleta dos dados em três estações no ambiente de rede. Figura 11. Arquivo gerado pelo coletor de dados. Apenas a primeira linha dos arquivos de log foi interessante ao processo de desenvolvimento já que esta faz referência ao total de dados de entrada e saída da placa de rede, enquanto que as demais linhas demonstram resultados parciais dos intervalos de tempo. No caso do disco rígido, memória RAM e a CPU a primeira linha demonstra a porcentagem total utilizada. Estas informações são coletadas ao final do dia, definido através do crontab, que é um programa de gerenciamento de execução de processos ou programas. 35 O segundo e o terceiro módulo do sistema consistiu na utilização de um socket cliente e um socket servidor, o primeiro com a finalidade de enviar os dados obtidos pelo coletor de dados ao servidor do ambiente de redes. O socket cliente consiste em um daemon que foi desenvolvido na linguagem de programação C com objetivo de realizar a leitura dos dados salvos no arquivo gerado pelo coletor de dados além de estabelecer uma conexão com o servidor para o envio e armazenamento dos dados neste. O socket cliente foi instalado juntamente com o MRTG e o coletor nas estações de trabalho. Seu funcionamento consiste em abrir o arquivo criado pelo coletor de dados, mencionado anteriormente, ler o arquivo linha a linha, gravar as informações em uma variável do tipo vetor e, por fim, realizar uma conexão com o servidor e enviar os dados em formato pré-definido para que o socket servidor possa recebê-los corretamente. Assim finaliza-se a terceira etapa do processo de desenvolvimento da ferramenta. A quarta etapa, ou terceiro módulo do sistema consistiu na utilização do socket servidor. Da mesma forma que o socket cliente, o servidor consiste em um daemon desenvolvido na linguagem de programação C, com a finalidade de coletar os dados enviados pelo socket cliente e a partir disso, criar um arquivo com estas informações. Este socket foi instalado no servidor do ambiente de rede para receber os dados de cada estação e criar um arquivo com as informações de cada dispositivo monitorado pelo MRTG, sendo que estes dados são armazenados da mesma maneira que é repassado pelo socket cliente, possibilitando que o sistema de gerência possa lê-lo e interpretá-lo futuramente. O sistema de gerência tem o objetivo de mensurar os dados coletados e gerar gráficos com as informações sobre o que foi consumido pelos dispositivos presentes no ambiente de rede durante o dia. Foi desenvolvido utilizando a linguagem script PHP 4.0 juntamente com o banco de dados MySQL, que foi o responsável por armazenar as informações que são repassadas pelo socket servidor e interpretadas pelo código PHP. 36 Foi utilizada o SGBD MySQL por ser um banco de dados de livre utilização, ou seja, sem ônus e sua versão 4.023 pelo fato de ser a última estável disponibilizada. Após o processo de instalação foi realizada a criação de uma tabela para a inserção dos dados monitorados conforme apresentado na Tabela 1. Tabela 1. Tabela criada para o armazenamento dos dados. Nome do Campo Tipo id data int date ip redex varchar int redey int memx int memy int cpux int cpuy Int hdx Int hdy Int Especificação Chave primária da tabela Data da leitura das informações gravadas no banco de dados. Armazena o endereço IPv6 da máquina monitorada. Armazena o montante de entrada de dados do dispositivo de rede. Armazena o montante de saída de dados do dispositivo de rede. Armazena o montante percentual do que está sendo utilizado pela memória RAM. Armazena o montante percentual do que não está sendo utilizado pela memória RAM. Armazena o montante percentual do que está sendo utilizado pela CPU. Armazena o montante percentual do que não está sendo utilizado pela CPU. Armazena o montante percentual de espaço ocupado no disco rígido. Armazena o montante percentual de espaço livre no disco rígido. Ao fim do processo de criação da tabela, em que são armazenadas as informações, foi realizado o processo de leitura e escrita destes dados, para que o sistema de gerência propicie a realização de buscas que posteriormente serão ilustrados através de gráficos. Uma vez criada a tabela, o funcionamento do FAGRI, que consiste em abrir o arquivo gerado pelo socket servidor, selecionar os dados necessários de cada dispositivo e estação presente no ambiente de rede. Conforme mencionado anteriormente, o caracter $ , ilustrado na Figura 11, é o responsável por delimitar os dados coletados referentes a cada estação. 37 A Figura 12 apresenta o trecho de código que faz referência ao procedimento de seleção da estação e de seus dispositivos. Da linha 1 a linha 5 é realizado um loop para realizar a leitura das informações de cada máquina da rede. Na linha 6 a variável dadox recebe o resultado obtido através da utilização do comando substr, eliminado os dados que não são importantes para a análise do tráfego da rede da estação. O conteúdo gravado nesta variável é utilizado por outra denominada t , que utiliza o mesmo comando citado anteriormente para capturar o montante dos dados de entrada da rede da estação, como demonstrado na linha 8. Este mesmo procedimento é feito pela variável xy para captura dos dados de saída da máquina na rede, como ilustrado na linha 11. Estes procedimentos são utilizados também pelos outros dispositivos. 1 2 3 4 5 6 7 8 9 10 11 while($c!='$') { $x = $x.$c; $c = fgetc($fp); } $dadox = substr($x,strpos($x,'#')+1); //eth0 in $t = substr($dadox,0,strpos($dadox,'#')); $xx = substr($dadox,strpos($dadox,'#')+1); //eth0 out $xy = substr($xx,0,strpos($xx,'#')); Figura 12. Exemplo de seleção de dados dos disposistivos. Após a realização da leitura e divisão dos dados salvos em cada uma das variáveis é feito o tratamento das informações e a inserção dos dados em um banco de dados de forma a tornar estas informações persistentes para consultas posteriores, conforme pode ser observado na Figura 13. 1 2 3 4 5 6 7 8 $totalmem = (100 - $ee); $totalcpu = (100 - $ccc); $data = enviaData($hhh); $sql= "INSERT INTO tccprog VALUES ('','$data','$iii','$t','$xy', $totalmem','$ee','$totalcpu', '$ccc','$fff','$ggg')"; $db->Executar($sql); Figura 13. Tratamento e inserção dos dados no banco de dados. 38 Na Figura 13 é efetuada uma subtração dos dados da memória RAM e da CPU pelo fato do arquivo de log gravar apenas a porcentagem de utilização das mesmas, não havendo a taxa de ociosidade destas, como demonstrado na linha 1 e linha 2 da Figura 13. Na linha 3 a variável data recebe os dados convertidos do padrão americano para o padrão brasileiro para serem gravados no banco de dados. Da linha 4 a 7 é montado o comando sql para fazer a inserção das informações no banco de dados e na linha 8 é feito a gravação dos dados dentro do SGBD. Logo após os dados serem gravados, estes são apresentados em uma página WEB, que apresenta gráficos que mostram o IP, a data e a porcentagem de consumo de todos os dispositivos de cada estação de trabalho durante o dia. Estas informações são de grande importância para a busca do que está acontecendo na rede, já que se trata de informações que correspondem as mais atualizadas no momento. A figura 14 apresenta o resultado do processo. 39 Figura 14. Resultado do processo de armazenamento e amostra das informações. Após o término do processo apresentado anteriormente é realizada a exclusão do arquivo criado pelo socket servidor, com a finalidade de garantir a consistência dos próximos dados a serem inseridos no banco de dados, conforme é demonstrado na Figura 15. Para realização deste processo é utilizada a função do PHP unlink que exclui o arquivo passado como parâmetro. 1 @unlink( tcc.txt ); Figura 15. Utilização do comando unlink para exclusão do arquivo tcc.txt. Para a geração dos gráficos foram utilizadas funções da linguagem script PHP, com a finalidade de obter o percentual total da utilização de cada dispositivo. Foi necessário a realização da soma de valores para se chegar ao valor total das informações de cada 40 dispositivo. Por exemplo, é efetuada a soma do total da entrada e saída das informações do dispositivo de rede. Outro exemplo é a soma dos valores referentes ao tempo total livre e usado da memória RAM, procedimento semelhante é realizado com os valores referentes à CPU e o disco rígido conforme é ilustrado na Figura 16. 1 2 3 4 5 $total_rede = $rsDados->Valor('redex') + $rsDados->Valor('redey'); $total_mem = $rsDados->Valor('memx') + $rsDados->Valor('memy'); $total_hd = $rsDados->Valor('hdx') + $rsDados->Valor('hdy'); $total_cpu = $rsDados->Valor('cpux') + $rsDados->Valor('cpuy'); Figura 16. Obtenção do total percentual dos dispositivos. Como pode ser observado na Figura 16, foram criadas variáveis que armazenam o valor total de cada dispositivo. Esses valores são utilizados na obtenção do percentual de consumo de entrada e saída e ou livre e usado. A Figura 17 apresenta o trecho de código responsável pelo cálculo. 1 2 3 4 5 6 7 8 $porcen_redex = round((($rsDados->Valor('redex')*100)/$total_rede),2); $porcen_redey = round((($rsDados->Valor('redey')*100)/$total_rede),2); $porcen_memx = round((($rsDados->Valor('memx')*100)/$total_mem),2); $porcen_memy = round((($rsDados->Valor('memy')*100)/$total_mem),2); $porcen_cpux = round((($rsDados->Valor('cpux')*100)/$total_cpu),2); $porcen_cpuy = round((($rsDados->Valor('cpuy')*100)/$total_cpu),2); $porcen_hdx = round((($rsDados->Valor('hdx')*100)/$total_hd),2); $porcen_hdy = round((($rsDados->Valor('hdy')*100)/$total_hd),2); Figura 17. Obtenção da porcentagem da utilização dos dispositivos. A Figura 17 o código que faz a conversão da porcentagem para duas casas decimais após a vírgula, realizada pela função PHP round. Esta função formata o resultado obtido pela consulta ao banco de dados referentes aos dispositivos multiplicados por 100 e em seguida divididos pelo total encontrado anteriormente e armazenado nas variáveis conforme ilustra a Figura 16. Por fim, os dados gerados por essa operação são mantidos em variáveis para a geração dos gráficos. A criação do gráfico é realizada pela alteração da propriedade width das imagens e7.gif e e5.gif, presentes na linha 2 e 5 da Figura 18. Nas linhas 3 e 6 da mesma figura é efetuada a operação de multiplicação de cada valor obtido pelo método de busca ao banco de dados pelo valor 95 que é o percentual referente a taxa de ocupação da propriedade 41 width da tag <TD> em que estão contidas as imagens. Por fim, o total desta operação é dividido pelo valor obtido na operação ilustrada na Figura 16. Finalizado este procedimento, a imagem será gerada e posteriormente será escrito seu percentual de utilização. 1 2 3 4 4 5 6 7 <td width="71%" colspan="2"> <img src="images/e7.gif" width="<? echo ( $rsDados->Valor('redex')*95/$total_rede); ?>" height="10"> </td> <td width="71%" colspan="2"> <img src="images/e5.gif" width="<? echo ( $rsDados->Valor('redey')*95/$total_rede); ?>" height="10"> </td> Figura 18. Geração do gráfico e seu percentual. Com o fim do processo de geração dos gráficos foi necessária a criação da funcionalidade de busca do sistema de gerência. Esta, por sua vez, tem a finalidade de encontrar os dados gravados no decorrer de sua vida útil no servidor. Isso ocorre pelo fato dos dados estarem armazenados na base de dados. As pesquisas são feitas escolhendo o dia, o mês, a maior entrada e a maior saída de dados, a menor entrada e a menor saída de dados dos dispositivos de rede, o maior consumo de espaço dos discos rígidos e o maior consumo de processamento de memórias e da CPU, livre e usado, que deseja verificar como demonstrado na Figura 19. 42 Figura 19. Tela para busca das informações. Tentou-se parametrizar a busca de forma que, a partir dos dados selecionados, fossem montados gráficos com as informações dos dispositivos nas datas selecionadas, dando uma visão abrangente aos administradores do ambiente de rede o que aconteceu com cada estação de trabalho nos últimos tempos. Por exemplo, se a necessidade se caracterizar por obter as informações da maior entrada de dados no ano inteiro seria necessário somente a seleção do campo ano deixando os outros campos sem modificação, ou seja, seria obtido como resultado a estação de trabalho com o seu IP, data e o consumo percentual no dispositivo. Essas informações ajudariam por exemplo o suporte técnico da Secretaria da Saúde do Estado do Tocantins a saber o consumo utilizado por cada máquina da rede e fazer as 43 prevenções necessárias afim de evitar que arquivos muito grandes sobrecarreguem a rede sem nenhuma necessidade. O procedimento adotado na funcionalidade de busca é comum às demais consultas a serem realizadas nos dados referentes aos outros dispositivos. O resultado obtido pelo processo de busca específica a necessidade de um administrador é apresentado na Figura 20 que se difere da Figura 14 em que são apresentadas todas as informações referentes a todos os dispositivos no dia corrente de funcionamento das estações de trabalho. Na consulta a seguir é solicitado a busca de todo o tráfego nos dispositivos de redes do ambiente IPv6 durante o todo o ano. Figura 20. Resultado de uma consulta de todo o ano de coleta de informações. 44 Durante o processo de implementação da ferramenta de gerência de redes IPv6, foram encontradas algumas dificuldades para a realização de instalação e configuração das ferramentas que compõem as etapas de criação do sistema. Dentre estas dificuldades podese mencionar a configuração do MySQL 2.023. Devido a este ser nativo na versão LINUX Slackware 10.0, o que ocasionou erros na função DAY, que foi utilizada para selecionar o dia do campo data, que é necessário no processo de busca das informações de cada estação de trabalho. Sendo assim, foi feito à remoção desta versão e instalação da nova que é a 2.024 que solucionou este problema. O processo de geração de imagens utilizado tem como objetivo apresentar de forma simplificada a qualquer usuário desta ferramenta a verificação e abstração das informações geradas. Imagens, como as geradas pelo MRTG, são confusas não mostrando de forma objetiva para o usuário o que de fato está ocorrendo em seu ambiente de rede. Ao longo do processo de pesquisa para criar a ferramenta FAGRI foram descobertas algumas estruturas do próprio Linux que fornecem, através de scripts feitos, os recursos utilizados por cada dispositivo na estação de trabalho. Não haveria, portanto a necessidade da instalação do MRTG para este tipo de coleta de informações, ficando o FAGRI um software independente de outras ferramentas e com uma estrutura única. Pelo fato do Linux disponibilizar de forma nativa todas as informações necessárias através dos comandos top para processamento da CPU e utilização da memória RAM e df para disponibilizar informações referentes a porcentagem de uso e tamanho do HD e, por fim, a utilização do arquivo x que armazena a quantidade de entrada e saída de dados na placa de rede. Ainda neste processo, constatou-se que poderia se fazer um servidor compartilhado pelo samba, em que os dados gerados pelo MRTG fossem copiados para o servidor e nele serem lidos, montados e posteriormente armazenados em um arquivo central que a ferramenta FAGRI utilizaria. Esta solução, porém, funcionaria em um ambiente de rede IPv6 interno, com as máquinas no mesmo local ou com uma VPN para máquinas 45 fisicamente separadas. Ao passo que na utilização de sockets possibilita o acesso remoto de qualquer rede. 46 5 CONCLUSÕES O desenvolvimento do FAGRI foi finalizado com êxito e mostrou-se eficiente na captura das informações geradas pelos dispositivos do ambiente de rede IPv6. Porém, algumas considerações podem ser feitas no sentido de se obter um melhor desempenho na como, por exemplo, a não utilização do MRTG, diminuindo assim o atraso das informações capturadas. Outro ponto a ser mencionado é o processo de continuidade desta ferramenta, em que podem ser inseridas novas funcionalidades para alguns tipos de dispositivos, como placas de rede wireless, a serem monitoradas, por exemplo, inserindo um módulo de rastreamento no qual seria possível a visualização do que cada estação da rede está acessando. A utilização de sockets foi de grande valia para a conexão remota entre as estações de trabalho e também com o servidor, pelo fato deste utilizar-se do protocolo UDP, que torna mais rápida a conexão entre a estação de trabalho e o servidor, além de poder se conectar entre redes diferentes. Pode-se verificar também que não haveria a necessidade do socket em redes internas, havendo uma forma de criar uma pasta virtual via samba [WOOD, 2000] e criar um script copiando esses arquivos para este diretório, ou seja, esse script seria desenvolvido na linguagem C e faria a copia de cada arquivo de log gerado em cada estação de trabalho, para dentro desta pasta virtual criada, não havendo a necessidade da comunicação entre sockets. 47 Por fim, vale salientar que algumas dificuldades foram encontradas no processo de desenvolvimento, devido à complexidade e falta de material adequado para o protocolo de rede IPv6, como livros, apostilas e artigos, visto que, alguns livros trazem apenas alguma referência sobre o assunto. Já as apostilas e os tutoriais, às vezes não são claros em explicar a forma como o IPv6 trabalha juntamente com as suas características. 48 6 REFERENCIAS [BRISA, 1997] Sociedade Brasileira para Interconexão de Sistemas Abertos. Arquitetura de redes de computadores, 2º edição revisada e ampliada. ed. Makron Books. [BUZATO, 2005] Buzato, Luiz Eduardo. INF501:Redes de Computadores I. Disponível em <http://www.ic.unicamp.br/~buzato/extension/inf501/cap2b.ppt#317,15,Comunicação entre sockets>, acessado em 20 de novembro de 2005. [COMER, 1998] Comer, Douglas E. Interligação em redes com TCP/IP. Rio de Janeiro, 1998. ed. Campus. [COMER, 2001] Comer, Douglas E. Interligação em redes com TCP/IP. Rio de Janeiro, 2001. ed. Campus. [GODINHO, 2004] Godinho Júnior, Luís.. Análise da Utilização do IPSec como Garantia de Segurança na Comunicação em Redes TCP/IP. CEULP/ULBRA 2004. [IETF, 2005] IETF. The Internet Engineering Task Force. Disponível em <http://www.ietf.org/>, acessado em 23 de novembro de 2005. [HINDEN, 2004] Hinden, R. Simple Internet Protocol Plus White Paper. Internet Engineering Task Force. Disponível em <http://www.ietf.org/rfc/rfc1710.txt>, acessado em 23 de novembro de 2005. 49 [MARTINI, 2003] Martini, Fernando Zucuni. Análise e Proposta de Implantação de um Ambiente IPv6. CEULP/ULBRA 2003. [MURHAMMER, 2000] Murhammer, Martin W. et al. TCP/IP Tutorial e Técnico. São Paulo, 2000. ed. Makron Books. [OLIVEIRA, 2002] Oliveira, Civio Couto et al. Programação Distribuída: Sockets. Disponível em <http://www2.fundao.pro.br/articles.asp?cod=121>, acessado em 02 de setembro de 2005. [PEREIRA, 2001] Pereira, Mateus Casanova. Administração e Gerência de Redes de Computadores. Disponível em <http://www.lrg.ufsc.br/ine6404/Mateus.pdf>, acessado em 02 de novembro de 2005. [ROLAND, 2003] Roland, André. Trabalho Final de Curso: IPSec. Disponível em <http://www.dcc.unicamp.br/~rdahab/cursos/inf541/trabalhos/IPSec/trabalho_ipsec.pdf>, acessado em 25 de outubro de 2005. [ROTOLE, 2002] Rotole, Erick Dantas. Arquitetura IP Security - Criptografia e Segurança na Informática. Disponível em <http://www.cic.unb.br/docentes/pedro/trabs/IPsec.rtf>, acessado em 15 setembro de 2005. [SILVA, 1998] SILVA, Adailton J. S. O IPv6 na RNP e no Brasil. Disponível em < http://www.6bone.rnp.br/ipv6-artigo.html>. Acessado em 18 de março de 2005. [TANENBAUM, 1997] Tanenbaum, Andrew S. Computer Network, Prentice Hall, third edition 1997. ed. Campus. [WOOD, 2000] Wood, David. SMB HOWTO. Disponível em <http://www.tldp.org/HOWTO/SMB-HOWTO.html>, acessado em 23 de novembro de 2005. This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.