Вы находитесь на странице: 1из 8

Network State Analyser - NSA

José Ricardo Soares dos Santos1


1Universidade da Amazônia (UNAMA)
Belém – PA – Brasil
jricardo@prt8.mpt.gov.br

Abstract. This meta-paper describes the style to be used in articles and short
papers for SBC conferences. For papers in English, you should add just an
abstract while for the papers in Portuguese, we also ask for an abstract in
Portuguese (“resumo”). In both cases, abstracts should not have more than
10 lines and must be in the first page of the paper.

Resumo. Este meta-artigo descreve o estilo a ser usado na confecção de


artigos e resumos de artigos para publicação nos anais das conferências
organizadas pela SBC. É solicitada a escrita de resumo e abstract apenas
para os artigos escritos em português. Artigos em inglês deverão apresentar
apenas abstract. Nos dois casos, o autor deve tomar cuidado para que o
resumo (e o abstract) não ultrapassem 10 linhas cada, sendo que ambos
devem estar na primeira página do artigo.

1. Gerência de Redes
Nas últimas décadas as redes de computadores cresceram, tanto em complexidade
quanto em importância, e se multiplicaram de tal forma que gerenciá-las com eficiência
tornou-se um desafio para administradores de rede. Essa constatação é observada na
mudança de característica de redes pequenas, locais e homogêneas para redes grandes,
geograficamente distribuídas e heterogêneas dificultando, assim, o controle e o
monitoramento dessas redes.
A área de gerência de redes foi inicialmente impulsionada pela necessidade de
monitoração e controle do conjunto de dispositivos que integram as redes de
comunicação.
O objetivo da Gerência de Redes é monitorar e controlar os elementos da rede
(sejam eles físicos ou lógicos), assegurando certo nível de qualidade de serviço. Para
realizar esta tarefa, os gerentes de redes são geralmente auxiliados por um sistema de
gerência de redes. Um sistema de gerência de rede pode ser definido como uma coleção
de ferramentas integradas para a monitoração e controle da rede. Este sistema oferece
uma interface única, com informações sobre a rede e pode oferecer também um
conjunto poderoso e amigável de comandos que são usados para executar quase todas as
tarefas de gerência da rede.[Stallings 1998]
Em geral a arquitetura dos sistemas de gerência de redes é constituída de quatro
componentes básicos: elementos gerenciados, estações de gerência, protocolos de
gerência e informações de gerência.
• Os elementos gerenciados são os equipamentos que compõem a rede, tais
como: roteadores, comutadores, repetidores, impressoras, servidores e estações
de rede. Possuem um software especial chamado agente. Este software permite
que o equipamento seja controlado e monitorado através de uma ou mais
estações de gerência;
• As estações de gerência concentram os dados coletados dos elementos
gerenciados. O software da estação de gerência chama-se gerente o qual
conversa diretamente com os agentes nos elementos gerenciados com a
finalidade de coleta de dados para fins de controle e monitoramento;
• Os protocolos de gerência correspondem ao idioma utilizado por agentes e
gerentes de modo que possam conversar entre si. Isto é, este protocolo fornece o
suporte necessário para que os elementos citados falem o mesmo idioma,
permitindo operações de monitoramento (leitura) e controle (escrita);
• As informações de gerência definem os dados podem ser referenciados em
operações de protocolos de gerência, isto é, dados sobre os quais gerente e
agente conversam.
A padronização de solução de gerência mais usada no mundo chama-se
Internet-Standard Network Management Framework. Esta solução é mais conhecida
como gerência SNMP. SNMP (Simple Network Management Protocol) é o protocolo de
gerência deste padrão o qual descreve não apenas o protocolo de gerência, mas também
um conjunto de regras que são usadas para definir as informações de gerência e um
conjunto inicial de informações de gerência que já podem ser utilizadas. [Rose 1995]

2. SNMP
Os protocolos de gerenciamento de rede padronizam a forma de requisição e coleta de
dados de um dispositivo para descobrir informações que permitem ao administrador de
rede monitorar e controlar seu desempenho.
Vários padrões foram desenvolvidos por fabricantes de hardware e
organizações de padrões. Dentre eles o mais utilizado em redes TCP/IP é o SNMP. Esse
protocolo define um espaço de nomes hierárquico de dados de administração e uma
maneira de ler e gravar dados em cada um dos nós da rede.
O protocolo SNMP é um protocolo de gerência típica de redes TCP/IP, da
camada de aplicação, que facilita o intercâmbio de informação entre os dispositivos de
rede, como placas e comutadores. O SNMP possibilita aos administradores de rede
gerenciar o desempenho da rede, encontrar e resolver seus eventuais problemas, e
fornecer informações para o planejamento de sua expansão, dentre outras.
O conjunto de padrões SNMP [Stallings 1998] é formado por:
• Um conjunto de especificações de estrutura e identificação para as informações
gerenciais. Este padrão é chamado SMI (Structure of Management Information).
Estas especificações são encontradas no RFC 1155.
• Um protocolo de comunicação entre o gerente e o agente, chamado
simplesmente de SNMP (Simple Network Management Protocol). A
especificação deste protocolo e apresentada no RFC 1157.
• Uma base de informações gerenciais que especifica quais variáveis são mantidas
pelos elementos de rede. Esta base de informações é denominada MIB
(Management Information Base), e a sua segunda versão, MIB-II, está
especificada pelo RFC 1213.

Este conjunto de padrões pode ser utilizado para outros tipos de aplicações,
além daquelas convencionais de gerência. Uma utilização possível é o uso do SNMP
para fazer o balanceamento de carga em ambientes distribuídos.

2.1 Organização do SNMP


Os dados do SNMP são organizados segundo uma hierarquia padronizada. A hierarquia
de atribuição de nomes é formada por bases de informação de gerenciamento
(Mangement Information Bases - MIBs), arquivos de textos estruturados que descrevem
os dados que podem ser acessados via SNMP. Os MIBs contém descrições de variáveis
de dados específicas, referidas por meio de nomes conhecidos com OIDs(Object
Identifiers).
Um objeto gerenciado representa a visão abstrata de um recurso do sistema.
Assim todos os recursos de rede que devem ser gerenciados são modelados, e as
estruturas dos dados resultantes são os objetos gerenciados. Cada objeto gerenciado
pode ser lido ou alterado.
Os objetos gerenciados são organizados em uma hierarquia em árvore
conhecidos por OID. Essa estrutura é a base do esquema de atribuição de nomes do
SNMP. Um OID de objeto é formado por uma seqüência de inteiros baseada nos nós
das árvores, separada por pontos (.).[Silva]
Por exemplo, o OID que se refere ao tempo de funcionamento do sistema é
1.3.6.1.2.1.1.3.
A hierarquia do SNMP é muito parecida com a de um sistema de arquivos. Por
convenção, os nós recebem também nomes textuais para facilidade de referência, mas
essa atribuição de nomes é na realidade, apenas uma conveniência de alto nível, e não
um recurso da hierarquia.
O MIB SNMP básico, definido pela RFC (Request For Comment) 1066, para
TCP/IP (MIB-I) define o acesso aos dados de gerenciamento comuns: informações
sobre o sistema, suas interfaces, conversão de endereços e operações de protocolos (IP,
ICMP, TCP, UDP e outros).[Nemeth] Um trabalho posterior e mais desse MIB
(denominado MIB-II) é definido na RFC 1213. A maioria dos fabricantes que fornecem
um serviço SNMP suporta o MIB-II. A tabela a seguir apresenta uma amostragem dos
nós do espaço de nomes MIB-II. <<??Não entendi??>>
A evolução do MIB-I conhecido como MIB-II (definido pela RFC 1213)
fornece informações gerais de gerenciamento sobre um determinado equipamento
gerenciado como: número de pacotes transmitidos, estado da interface, número de
pacotes com erro entre outros. A maioria dos fabricantes que fornecem um servidor
SNMP dão suporte ao MIB-II.[Silva]
A tabela a seguir apresenta alguns objetos representados por seus nomes textuais
(espaço de nomes) na MIB-II.

<<Especificar fonte dos parágrafos acima>>


Tabela 1. Exemplos de OIDs selecionados do MIB-II.

OID TIPO CONTEÚDO


system.sysDescr string Informações do sistema
system.sysLocation string Localização física da máquina
interfaces.ifNumber int Número de interfaces de rede presentes
tcp.tcpConnTable table Tabela de conexões TCP atuais
Um MIB é somente uma convenção em relação à atribuição de nomes de dados
para gerenciamento. Para ser útil, um MIB deve ser emparelhado com um código
executado no agente que faz a associação entre o espaço de nomes SNMP e o real
estado do dispositivo. O agente Linux padrão já vem com o código para o MIB básico
(MIB-II). Alguns agentes são extensíveis para incluir MIBs suplementares e outros não.
[Nemeth]
<<Especificar fonte dos parágrafos acima>>

2.2 Operações de protocolos SNMP


Há somente quatro operações SNMP básicas: get, get-next, set e trap.
Get e set são operações básicas de leitura e gravação de dados em nó
identificado por um OID específico. Get-Next investiga uma hierarquia MIB e também
pode ler o conteúdo das tabelas. Trap é uma notificação assíncrona e não solicitada do
servidor (agente) ao cliente (gerente) que relata a ocorrência de um evento ou condição
interessante.
Como mensagens SNMP têm grande potencial para modificar informações de
configuração, é necessário algum mecanismo de segurança. A versão mais simples de
segurança SNMP se baseia no conceito de “string comunitária” SNMP. Normalmente
há um nome comunitário para acesso somente leitura e outro que permite gravação.
Na versão 3 do padrão SNMP foram introduzidos métodos mais eficientes de
autenticação aumentando a segurança de acesso bem como o processo de configuração.
[Nemeth]
<<Especificar fonte dos parágrafos acima>>

2.3 O agente NET-SNMP


A distribuição NET-SNMP é a implementação SNMP gratuita oficial para o Linux.
Vários fornecedores de dispositivos de rede integram o NET-SNMP aos seus produtos.
O NET-SNMP inclui um agente SNMP, algumas ferramentas de linha de comando, um
servidor para receber traps e mesmo uma biblioteca para desenvolver aplicativos
compatíveis com o SNMP.
Como ocorre com outras implementações, o agente coleta informações sobre o
host local e o serve para gerentes SNMP por meio da rede. A instalação padrão inclui
MIBs para estatísticas para interfaces de rede, memória, disco, processos e CPU. O
agente pode ser facilmente ampliado já que é capaz de executar um comando Linux
arbitrário e retornar a saída gerada pelo comando na forma de uma resposta SNMP.
Por padrão, o agente é instalado com /usr/sbin/snmpd. Normalmente ele é
iniciado em tempo de inicialização e extrai informações relativas à configuração de
arquivos contidos no diretório /etc/snmp. O mais importante desses arquivos é o
snmp.conf, que contém a maior parte das informações de configuração, e vem com
uma série de modelos de coleta de dados já ativados. [Nemeth]
<<Especificar fonte dos parágrafos acima>>

3. RRDTool
Dados relacionados à rede são mais bem apreciados nos contextos visuais e históricos.
É importante de alguma maneira monitorar e representar graficamente a métrica do
desempenho.
Assim, Tobias Oetiker1 desenvolveu o RRDTool, um kit de ferramentas para
armazenar e gerar gráficos dos dispositivos da rede. A partir desse momento, todas as
principais soluções de código-fonte aberto para monitoração estão baseados no
RRDTool incluindo o MTRG e o CACTI.
RRDTool é um sistema de base de dados round-robin criado sob licença GNU
GPL. Desenvolvido para armazenar séries de dados numéricos sobre o estado de redes
de computadores, pode, também, ser empregado no armazenamento de qualquer outra
série de dados como temperatura, uso de CPU, etc. RRD é um modo abreviado de se
referir a Round Robin Database (base de dados round-robin).
O monitoramento de dispositivos de rede pode ser feito por scripts Shell
utilizando o RRDTool ou no desenvolvimento de uma aplicação em Perl, Python, Ruby,
PHP ou TCL.[Oetiker]
A base de dados gerada possui um tamanho máximo na qual uma vez atingido
não é ultrapassado. Os dados numéricos armazenados são consolidados conforme a
configuração fornecida, de modo que a resolução deles seja reduzida de acordo com o
tempo que eles estão armazenados. Neste processo, apenas as médias dos valores
antigos são armazenados. [Oetiker]

4. Os Motivos
O Ministério Público do Trabalho, ramo do Ministério Público da União, no que se
refere a 8ª Região compreende jurisdicionalmente os estados do Pará e Amapá.
Também conhecida como Procuradoria Regional do Trabalho da 8ª Região, a PRT8 tem

1 Inserir informações sobre esse autor.


sua sede localizada na cidade de Belém/PA e subsedes nas cidades de Marabá-PA,
Santarém/PA e Macapá/AP.
A rede de informática é provida por um vpn (virtual private network),
interligando todas a sedes e subsedes de todas as regiões à Procuradoria Geral do
Trabalho (PGT) em Brasília/DF.
Com o objetivo de monitorar os servidores de rede da sede e subsedes visando a
prevenção de eventuais problemas técnicos surgiu a necessidade de utilização de uma
ferramenta destinada a prover tais funcionalidades. Por questões de licenciamento essa
ferramenta deveria ser baseada inteiramente em software livre. O MRTG (Multi Router
Traffic Grapher) e o Cacti foram cogitados por serem softwares bastante completos. No
entanto, optou-se pelo desenvolvimento de uma solução mais simples e customizável,
ou seja, que se adequasse as necessidades pertinentes à Procuradoria. Além disso seria
necessário que determinadas informações pudessem ser recuperadas mesmo após
eventuais interrupções de conexão entre a sede e as subsedes.

5. O pacote RRDTool
A base para o desenvolvimento da ferramenta de monitoramento foi o RRDTool
(Round Robin Databse Tool) , uma evolução do MTRG, entretanto mais rápido e
flexível. Round Robin significa que o RRDTool trabalha com uma fila circular, fazendo
que o tamanho da base de dados seja fixa.
O RRDtool permite que em um mesmo banco de dados sejam criadas diversas
filas, mas com precisões diferentes. Um dado inserido recentemente possui uma
precisão maior, mas, com o passar do tempo, ele acaba convergindo para uma fila de
menor precisão. O RRDtool também permite que sejam gerados gráficos a partir dos
dados armazenados. Esses gráficos são bastante dinâmicos, sendo possível até mesmo
incluir várias entradas de bancos de dados diferentes em um único gráfico.[Balbinot]
Uma das grandes vantagens do RRDtool está nas interfaces de programação. Ao
mesmo tempo o RRDtool possui interfaces para as linguagens C/C++, Perl e Tcl, além
de permitir que todas as funções sejam realizadas através da linha de comando de um
shell, fazendo com que praticamente todas as linguagens capazes de fazer chamadas do
externas através de pipes sejam capazes de utilizar as suas facilidades.[Balbinot]

6. Descrição da Ferramenta
A ferramenta de monitoração é constituída de dois módulos principais: um que fica
instalado e configurado em um computador central denominado gerente e outro em cada
um dos servidores de rede denominados agentes. Todos os servidores monitorados
apresentam sistema operacional GNU/Linux derivado da distribuição Debian, no
entanto todo o sistema é perfeitamente compatível com distribuições Suse, RedHat entre
outras.
No módulo Agente devem ser instalados os pacotes RRDTool, snmp e snmpd da
distribuição. A configuração dos arquivos snmp.conf, snmpd.conf e no caso de
distribuições Debian o arquivo snmpd deve estar compatível com a do gerente para que
este possa realzar as consultas. Essa configuração deve obdecer especialmente o
sincronismo com a configuração do gerente principalmente no que concerne a versão do
SNMP utilizado, nos primerios testes foi adotada a versão 2 do SNMP.
Também no módulo I devem ser configurados scripts que possam criar e
alimentar base de dados do RRDTool. O RRDtool possui interfaces para as linguagens
C/C++, Perl, Bash, Python e Tcl, além de permitir que todas as funções sejam realizadas
através da linha de comando de um shell, fazendo com que praticamente todas as
linguagens capazes de fazer chamadas externas através de pipes sejam capazes de
utilizar as suas facilidades.[Balbinot]
Cada script é executado como um cron job podendo o programa ser disparado a
cada 60, 120, 300 segundos ou qualquer outro intervalo de tempo. Utilizando dessa
forma o SNMP para coletar as informações do servidor e inseri-los na base .rrd o qual
após algum tempo será abastecido gerando os gráficos previamente configurados.
Os gráficos criados e atualizados são periodicamente transferidos à estação
gerente através de um script executado pelo agendador de tarefas. Nessa transferência
optou-se pelo uso do ssh (Secure Shell) que fornece uma conexão criptografada. A
única exigência está relacionada a configuração da relação de confiança ente as
estações, bem como às permissão de escrita na pasta destino.
O módulo II ou módulo Gerente é aquele que exibe a interface com o usuário e
gerencia o próprio sistema. Subidivide-se em dois submódulos: administração e
monitoração.
Na administração os usuários cadastrados e com as devidas permissões
habilitadas podem realizar operações de inclusão, alteração e remoção do servidores a
serem monitorados com algumas , além de quaisquer outras funcionalidades da
aplicação como novas páginas, outros usuários e grupos.
O desenvolvimento do módulo de gerenciamento foi realizado utilizando a
linguagem python, o framework Django, ambos em produção no servidor web Apache
e o banco de dados MySQL. Essa estrutura possibilitou um desenvolvimento
relativamente ágil e bastante flexível possibilitando alterar de acordo com a
conveniência os parâmetros a serem pesquisados via protocolo SNMP e por
consequência os gráficos apresentados.
Por que a utilização do Python
Dentre diversas linguagens a escolha do python deveu-se a:
Qualidade de software : O código python foi projetado para ser legível e, portanto, fácil
de manter – muito mais que as linguagens de scripts tradicionais. Além de possuir
excelente suporte para mecanismos de reutilização de código, como a programação
orientada a objetos (POO).
Produtividade do desenvolvedor: O python aumenta a produtividade do desenvolvedor
muitas vezes além do que conseguem as linguagens compiladas ou estaticamente
tipadas, como C, C++ ou Java. O código em Python normalmente tem de 1/3 a 1/5 do
tamanho do código equivalente a C++ ou Java. Menos digitação significa menos
depuração e menos manutenção após o desenvolvimento.
Referências
PESQUISA, Rnp - Rede Nacional de Ensino e (Org.). Introdução a Gerenciamento de
Redes TCP/IP. Disponível em: <http://www.rnp.br/newsgen/9708/n3-2.html>.
Acesso em: 18 maio 2009.
<<??RNP é Rede Nacional de Pesquisa e está especificado Rede Nacional de Ensino.
Está correto???>>>
Ricardo, verifiquei novamente a url e o site mostra “Rede Nacional de Ensino e
Pesquisa”
Stallings, W. SNMP, SNMPv2, SNMPv3 and RMON1 and 2. Terceira Edição.
Editora Addison-Wesley, 1998.
Rose, T.M., McCloghrie, K. How to Manage Your Network using SNMP: The
Network Management Practicum. Editora Prentice Hall, Janeiro, 1995.
Rose, T.M., McCloghrie, K. How to Manage Your Network using SNMP: The
Network Management Practicum. Editora Prentice Hall, Rio Janeiro, 1995.
<<??Não é Editora Prentice Hall: Rio de Janeiro, 1995???>ok corrigido
RRDTOOL. Disponível em: <http://pt.wikipedia.org/wiki/RRDTool>. Acesso
em: 08 maio 2009.
Ricardo, no site da wikipedia não consigo encontrar o nome dos autores dos
artigos
<<Tem autor??>>

OETIKER, Tobias. About RRDtool. Disponível em: http://oss.oetiker.ch/rrdtool/>.


Acesso em: 08 maio 2009.
NEMETH, Evi; SNYDER, Garth; HEIN, Trent. Manual Completo do Linux: Guia do
administrador. 2. ed. São Paulo: Person Education do Brasil, 2007.
SILVA, Rafael Sales Santelli da. Simple Network Management Protocol: SNMP.
Disponível em: <http://www.gta.ufrj.br/grad/04_1/snmp/mib.htm>. Acesso em: 22
maio 2009.
BALBINOT, Luís Felipe; ANDRADE, Maiko de. Uma ferramenta flexível para a
medição de tráfego baseada no RRDtool. Disponível em:
<http://www.rnp.br/newsgen/0007/art7.html>. Acesso em: 07 jun. 2009.

Вам также может понравиться