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.