• Nenhum resultado encontrado

Definição das classes do Mib Browser e do módulo central da plataforma

3.3 Projeto

3.3.4 Definição das classes do Mib Browser e do módulo central da plataforma

Na fase de análise do sistema, foram definidas as classes necessárias para o

desenvolvimento do MIB Browser e do módulo central da plataforma, estas classes

também serão utilizadas no desenvolvimento dos outros módulos da plataforma.

Foram definidas 5 classes:

“MibBrowser.class” implementa a interface gráfica do MIB Browser. É

através desta classe que o administrador da rede tem acesso as operações

do SNMP;

“ModuloCentral.class” implementa a interface gráfica do módulo central;

“ArvoreMib2.class” implementa a estrutura da árvore MIB II,

desenvolvida com o objetivo de oferecer uma interface com todos os

objetos pertencentes a RFC 1213;

“OperacoesBD.class” realiza a conexão e as operações com o banco de

dados MySQL;

“OperacoesComuns.class” disponibiliza as operações de imprimir, salvar

arquivo, ler arquivos etc;

“OperacoesSNMP.class” realiza a interface entre as classes do projeto e o

pacote SNMP, implementando as operações pertencentes ao protocolo

SNMP. É através desta classe que é realizada a conexão com o agente, e

realizada as operações de leitura, escrita ou trap.

Na figura 3.4 é possível observar as funções que cada classe desempenha no

projeto.

Figura 3.4 - Interação entre as classes Java

3.4 Conclusão

A modelagem do banco de dados foi realizada tentando obter uma estrutura

de tabelas que proporcionasse um bom desempenho nas operações com o banco de

dados. A quantidade de dados armazenada durante as coletas do módulo central é

relativamente alta e não poderia haver perda destas informações em conseqüência de

um baixo desempenho do banco de dados. Diante destes requisitos, definiu-se a

modelagem do banco de dados e, pelos testes realizados, esta modelagem atendeu as

necessidades do sistema.

Julgou-se adequada a linguagem Java para a implementação do MIB

Browser e do módulo central da plataforma. Após a escolha do pacote SNMP a ser

utilizado e um estudo realizado sobre o seu funcionamento, passou-se à definição das

classes que foram necessárias para a implementação destes dois módulos.

Neste capítulo foi apresentada a modelagem do sistema e do banco de dados.

Destaca-se, neste capítulo, a definição das classes que foram implementadas e os

motivos que levaram à escolha da plataforma Java para o desenvolvimento das classes.

A partir da modelagem do sistema, da modelagem do banco de dados e da

definição das classes, foram desenvolvidos o MIB Browser e o módulo central da

Plataforma de Gerência de Redes. Neste capítulo são apresentadas algumas etapas do

desenvolvimento.

4.1 MIB Browser

Conforme definido nos requisitos funcionais, o MIB Browser destina-se a

oferecer uma interface ao administrador da rede, onde ele possa realizar as operações

de leitura e escrita dos objetos da MIB II. Através do MIB Browser é possível realizar

as operações SNMP em qualquer um dos equipamentos gerenciáveis da rede. A figura

4.1 mostra a interface gráfica desenvolvida para o MIB Browser.

Destacam-se na Figura 4.1, os seguintes ítens:

 IP do Agente corresponde ao endereço IP do agente gerenciável em que se

deseja realizar as operações SNMP;

 Communit é uma senha de acesso do agente, esta senha é configurada em

todos os agentes com suporte ao SNMP. Cada agente pode ter mais do que

uma senha de communit configurada. Em geral, é definida uma senha como

“public” que permite que sejam realizadas somente as operações de leitura

do agente, e uma ou mais senhas privadas, estas configuradas para permitir

leitura e escrita, ou somente leitura ou somente escrita;

 Timeout é o tempo em segundos (de um a quinze segundos) em que o

software vai aguardar um retorno do agente após uma solicitação de leitura

ou escrita. Caso este tempo expire e o agente ainda não tenha efetuado a

operação, o processo é cancelado;

Figura 4.1 - MIB Browser

 No lado esquerdo observa-se a estrutura da árvore MIB II. Nesta árvore estão

definidos todos os objetos, seguindo as definições da RFC 1213, que

padroniza a MIB II;

 Logo abaixo da árvore há um campo que apresenta os dados referentes ao

objeto selecionado na árvore. Ao ser realizada a navegação, este campo vai

mostrar o OID correspondente ao objeto, o seu nome, sua sintaxe, tipo de

acesso e seu status. Com um clique do botão direito do mouse neste campo é

possível visualizar a descrição do objeto.

 À direita está a área de resultados; a cada operação efetuada o resultado é

adicionado nesta área. Os dados consultados são gerados como um arquivo

texto comum, possibilitando a edição, impressão e armazenamento das

informações.

4.1.1 Árvore MIB

A árvore MIB foi implementada de acordo com a RFC-1213. Na figura 4.2

pode-se visualizar um fragmento de código da implementação (ArvoreMib2.class).

Figura 4.2 - Fragmento do código “ArvoreMib2.class”

No fragmento apresentado na figura 4.2, destaca-se o método onde a

estrutura da árvore é formada. Neste fragmento de código estão sendo definidos os nós

iniciais da árvore (linhas 2 a 7) até se chegar ao nó mib2 (linha 9), onde são inseridos

os objetos do grupo system (linhas 10 a 16) e iniciada a definição dos objetos do grupo

interface (linha 17). Na continuação deste código estão todos os outros objetos

pertencentes a MIB-II.

Após o administrador da rede selecionar o objeto a ser consultado, é

1.public ArvoreMib2(){

2.

add(iso);

3.

iso.add(org);

4.

org.add(dod);

5.

dod.add(internet);

6.

internet.add(mgmt);

7.

mgmt.add(mib2);

8.

9.

mib2.add(system);

10. system.add(sysDescr);

11. system.add(sysObjectID);

12. system.add(sysUpTime);

13. system.add(sysContact);

14. system.add(sysName);

15. system.add(sysLocation);

16. system.add(sysServices);

17. mib2.add(interfaces);

necessário utilizar o protocolo SNMP para realizar as operações de leitura e escrita dos

objetos gerenciáveis. Estas operações foram implementadas através da classe

OperacoesSNMP.class (figura 4.3).

Figura 4.3 - Fragmento do código “OperacoesSNMP.class”

No fragmento da figura 4.3 é apresentado uma parte do código onde está

sendo realizada a operação get do SNMP. Destaca-se no código a obtenção do sufixo

do objeto através do seu prefixo (linhas 7 a 10), uma vez que se obteve o sufixo é

realizada a leitura do objeto no agente (linha 12).

Ainda, no desenvolvimento do MIB Browser, foi necessário utilizar funções

para limpar a tela, salvar arquivos etc.

No fragmento de código da figura 4.4, destaca-se o método utilizado para

1.while((itemID.indexOf(parOid)>=0)&&(verifTentativas !=

0)){

2.

verifLeitura = true;

3.

SNMPObject snmpValue = null;

4.

do{

5.

verifTentativas--;

6.

try{

7.

SNMPVarBindList newVars =

interfaceSnmp.getNextMIBEntry( itemID );

8.

SNMPSequence pair =

(SNMPSequence)(newVars.getSNMPObjectAt(0));

9.

SNMPObjectIdentifier snmpOID =

(SNMPObjectIdentifier)pair.getSNMPObjectAt(0);

10.

itemID = snmpOID.toString();

11.

//realiza a leitura do objeto no agente

12.

snmpValue = pair.getSNMPObjectAt(1);

13.

verifLeitura = false;

14.

verifTentativas = parTentativas;

15. }catch(Exception ex){

verifLeitura = true; }

16. }while((verifLeitura)&&(verifTentativas != 0));

17. if(verifLeitura){

salvar os dados obtidos nas consultas em alguma unidade de disco selecionada pelo

administrador.

Figura 4.4 - Fragmento do código “OperacoesComuns.class”

Na figura 4.5, observa-se a opção de leitura em grupo do MIB Browser; que

permite ao administrador selecionar um conjunto de objetos e definir um período e

intervalo de tempo entre as coletas. Nesta opção é possível, por exemplo, selecionar os

objetos ifInOctets e ifOutOctet e configurar as leituras, de forma que sejam repetidas

por um período de 2 horas com intervalos de 10 minutos. Isto permite ao

administrador deixar o MIB Browser realizando as coletas enquanto ele realiza outras

atividades. Ao final da leitura, o administrador pode imprimir ou salvar o arquivo

1.public void salvarArquivo( JTextArea jta ){

2.

JFileChooser fc = new JFileChooser();

3.

fc.setDialogType(JFileChooser.SAVE_DIALOG);

4.

fc.setDialogTitle("Salvar Resultados:");

5.

fc.setApproveButtonText("Salvar");

6.

if(fc.showSaveDialog( this ) ==

JFileChooser.CANCEL_OPTION )

7.

return;

8.

try{

9.

File f = fc.getSelectedFile();

10. FileOutputStream fos = new FileOutputStream(f);

11. DataOutputStream dos = new DataOutputStream(fos);

12. dos.writeBytes( jta.getText() );

13. }catch(FileNotFoundException fnfe){

14. //System.out.println("File not found");

15. }catch(IOException ioe){

16. //System.out.println("IOException");

17. }catch(Exception e){

18. //System.exit(0);

19. }

20.}

gerado para uma análise posterior.

Figura 4.5 - Opção de leitura em grupo

As operações (Leitura Individual e Leitura em Grupo) são independentes.

Caso o administrador queira deixar um conjunto de leituras em grupo sendo

executadas enquanto utiliza a opção leitura individual, basta que ele navegue entre as

duas opções, podendo realizar leituras individuais utilizando outro endereço IP,

timeout ou senha de communit.

4.2 Módulo central

O módulo central da plataforma tem o objetivo de realizar a leitura e

armazenamento dos objetos gerenciáveis, disponibilizando assim uma base de dados

dos objetos do agente. Os dados armazenados no banco de dados serão utilizados pelos

outros módulos da plataforma. Este módulo têm como função apenas realizar a leitura

e gravação dos dados no banco de dados, não executando nenhuma operação sobre

eles.

Seu funcionamento é similar à Leitura em Grupo utilizada no MIB Browser,

tendo como maior diferença o fato das leituras aqui serem armazenadas em um banco

de dados. A Figura 4.6 mostra a interface do módulo central executando dois

processos. Cada processo é uma conexão com um agente gerenciável diferente, que vai

ficar realizando a leitura de todos os seus objetos (MIB II). As leituras são repetidas a

cada intervalo de tempo e período informado pelo administrador. Para adicionar um

novo processo, basta que o administrador informe:

 ‘IP do Agente’ é o endereço IP do agente gerenciável, caso já exista um

processo em execução com o mesmo IP, o processo será rejeitado;

 ‘Communit’ é a senha de communit do agente;

 ‘Timeout’ é o tempo em segundos (de um a quinze segundos) em que o

software vai aguardar um retorno do agente após uma solicitação de leitura,

caso este tempo expire e o agente ainda não tenha retornado algo, o sistema

vai verificar a ‘Qtda de tentativas’;

 ‘Qtda Tentativas’ é um contador que toda vez que o limite de timeout

estourar vai verificar se deve ou não realizar a releitura do objeto. Caso a

leitura falhe em todas as tentativas o objeto vai ser gravado no banco de

dados com valor null;

 ‘Tempo Coleta’ é o tempo em que o processo vai permanecer em execução,

caso este valor seja deixado em zero, o processo vai permanecer em

execução por aproximadamente um ano;

 ‘Intervalo’ é o intervalo em minutos entre duas leituras consecutivas.

Após a informação dos dados, basta que o administrador pressione o botão

‘Iniciar’, desta forma, o processo entra na fila dos Processos em Execução. Para

cancelar um processo, basta que seja selecionado o processo e pressionada a tecla

DEL, o programa vai concluir a leitura dos objetos que restavam durante aquele ciclo,

salvar no banco de dados e eliminar o processo. Os dados que já haviam sido

realizados e salvos no banco de dados vão permanecer como histórico.

desenvolvimento da classe OperacoesBD.class, responsável pela conexão e

armazenamento dos dados no banco de dados. Na figura 4.7 pode-se visualizar um

fragmento de código desta classe.

Figura 4.6 – Módulo central

No fragmento de código apresentado na figura 4.7 destacam-se os métodos

utilizados para realizar a conexão e as operações com o banco de dados.

Figura 4.7 - Fragmento do código “OperacoesBD.class”

4.3 Conclusão

No pacote SNMP utilizado, estão definidos os valores padrões das portas do

SNMP. Quando se tentou realizar as alterações necessárias no pacote para permitir a

flexibilização da configuração do número da porta, constatou-se que, mesmo

possuindo distribuição open-source, o pacote não permitia alterações em seus arquivos

.class. Acredita-se que os códigos fonte disponibilizados no site do desenvolvedor não

sejam de uma mesma versão dos arquivos .class disponibilizados, impossibilitando

desta forma que as classes pertencentes ao pacote sejam recompiladas. No entanto, os

valores padrões das portas não são comumente alterados.

Dentre os requisitos do MIB Browser está definido o uso dos objetos da

1.public void conectarBanco() throws Exception {

2.

final String driver = "com.mysql.jdbc.Driver";

3.

final String url =

"jdbc:mysql://127.0.0.1:3306/plataformaBD";

4.

final String usuario = "root";

5.

final String senha = "";

6.

Class.forName(driver);

7.

conexao = DriverManager.getConnection(url ,

usuario , senha);

8.}

9.public void operacaoDados(String dados) throws

SQLException{

10. instrucao = conexao.createStatement();

11. if(instrucao.executeUpdate(dados) != 1){ }

12. instrucao.close();

13. //conexao.close();

14.}

MIB-II. Mas, é comum os fabricantes de equipamentos de redes, criarem suas próprias

MIBs com objetos específicos. A leitura dos objetos destas outras MIBs estão

limitadas a uma opção do MIB Browser onde o administrador de redes tem que indicar

o valor do OID correspondente ao objeto desejado.

Neste capítulo foi realizada uma descrição de algumas etapas da

implementação do módulo central e do MIB Browser da plataforma de gerência de

redes. Pode-se observar que o pacote SNMP escolhido, o uso do paradigma de

orientação a objetos e a linguagem Java foram adequados para as implementações

realizadas. Os códigos fontes completos das implementações estão nos apêndices.

As redes de computadores foram concebidas, inicialmente, como um meio de

compartilhar dispositivos periféricos mais caros como impressoras, modens de alta

velocidade etc. Entretanto, à medida que as redes crescem e tornam-se integradas às

organizações, o compartilhamento dos dispositivos toma aspecto secundário em

comparação às outras vantagens oferecidas. Desta forma, as redes passam a fazer parte

do cotidiano dos usuários como uma ferramenta que oferece recursos e serviços que

permitem a integração e o aumento de produtividade.

A gerência de redes está associada ao controle de atividades e ao

monitoramento do uso de recursos da rede. As tarefas básicas da gerência de redes são:

obter informações da rede, tratar estas informações de maneira a possibilitar um

diagnóstico e encaminhar as soluções dos problemas. Para cumprir estes objetivos, as

funções de gerência devem ser embutidas nos seus diversos componentes,

possibilitando descobrir, prever e reagir a problemas.

O desenvolvimento de sistemas de gerência de redes foi facilitado com a

padronização dos protocolos de gerência, destacando a definição do modelo de

referência OSI (protocolo CMIP) e posteriormente, o modelo de referência Internet

(protocolo SNMP). O objetivo destes modelos são definir um padrão comum a todos

os fabricantes, permitindo assim uma compatibilidade maior entre as atividades de

gerência. Atualmente, praticamente todos os equipamentos de redes gerenciáveis,

oferecem acesso através do protocolo SNMP.

Este trabalho, teve enfoque na gerência de redes do modelo Internet,

portanto, foi utilizado o protocolo SNMP. As informações que se pode monitorar com

o SNMP variam de itens relativamente simples e padronizados, como o volume de

tráfego fluindo em uma interface, até itens mais complexos de hardware de

fornecedores específicos, por exemplo, a temperatura do ar dentro de um roteador. O

SNMP oferece aos usuários operações para leitura e escrita que permitem o

gerenciamento remoto dos dispositivos da rede. O SNMP vem sofrendo atualizações

visando melhorar o seu desempenho, segurança e adaptações às necessidades dos

novos paradigmas de rede que estão surgindo. O SNMPv2, lançado em 1992, já está

consolidado pelo IETF, porém, devido à diferenças em como implementar alguns

destes conceitos, resultou em duas abordagens diferentes chamadas de SNMPv2 e

SNMPv2*. Visando consolidar estas duas abordagens em uma única proposta, além de

implementar novas melhorias, foi criado pelo IETF o SNMPv3, que deve ser a

próxima versão a alcançar o status de padrão.

Uma MIB pode ser considerada um banco de dados de objetos gerenciados

que o agente rastreia. Todo tipo de informação sobre o status ou estatísticas acessadas

pelo gerenciador é definida em uma MIB. Um agente pode implementar várias MIBs,

mas todos os agentes implementam a MIB-II, que é padronizada pela RFC 1213. Este

padrão define variáveis para elementos como dados estatísticos de uma interface,

assim como outros aspectos relacionados ao próprio sistema. A MIB-II, oferece um

conjunto de informações padrões, porém, há situações em que é necessário outras

informações adicionais às contidas na MIB-II. Dentre os requisitos do MIB Browser

foi definido o uso dos objetos da MIB-II. Mas, é comum os fabricantes de

equipamentos de redes criarem suas próprias MIBs com objetos específicos. A leitura

dos objetos destas outras MIBs esta limitada a uma opção do MIB Browser, onde o

administrador de redes deve indicar o valor do OID correspondente ao objeto

desejado. Sugere-se como trabalho futuro, a implementação de uma árvore que

possibilite carregar outras MIBs de forma dinâmica, facilitando a leitura destes objetos

específicos.

Em paralelo a este trabalho, estão sendo desenvolvidos os módulos

relacionados à gerência de desempenho e à gerência de falhas. Porém, estes dois

módulos estão limitados à geração de informações a partir de consultas aos dados

armazenados pelo módulo central no banco de dados, estes dois módulos estão sendo

desenvolvidos em PHP. Portanto, há a necessidade de realização de testes de

acoplamento entre as classes desenvolvidas em Java e PHP (Hypertext Preprocessor).

Pretende-se, utilizar as classes já implementadas e testadas para realizar consultas

SNMP através do PHP, possibilitando a geração de gráficos e informações em tempo

real, através da Web.

Durante o segundo semestre de 2003, na disciplina de Análise de

Desempenho, foi realizado um teste de uso do MIB Browser. Os acadêmicos do 6

º

semestre, utilizaram o software para coleta de informações em equipamentos

gerenciáveis. Através da observação do uso do software e dos comentário realizados

pelos alunos, foi identificada a ausência de informações adicionais sobre os objetos

consultados, através do botão direito do mouse (help), entre outras. Diversas

deficiências foram corrigidas. Porém, destaca-se a necessidade de um teste de uso mais

refinado, feito com administradores de redes da região do Planalto Catarinense.

O objetivo principal deste trabalho foi o desenvolvimento do MIB Browser e

do módulo central de uma plataforma para gerência de redes. Pode-se observar que a

linguagem Java e o pacote SNMP escolhido para o desenvolvimento das classes

modeladas foram adequados. A modelagem do banco de dados, atendeu aos requisitos

estabelecidos na fase de projeto.

COMER, D. E. Interligação em Redes com TCP/IP. Rio de Janeiro: Campus, 1998.

v. 1. 672 p.

DE FRANCESCHI, A. S. M. Aplicação de Técnicas de Inteligência Artificial

Conexionista no Desenvolvimento de Agentes para Gerência de Redes. 2003. 114

f. Tese (Doutorado em Engenharia Elétrica) – Programa de Pós-graduação em

Engenharia Elétrica, Universidade Federal de Santa Catarina, Florianópolis.

DEITEL, H. M.; DEITEL, P. J. JAVA Como Programar. 3, ed. Porto Alegre:

Bookman, 2001. 1201 p.

LOPES, R. V.; SAUVÉ, J. P.; NICOLLETTI, P. S. Melhores Práticas para Gerência

de Redes de Computadores. Rio de Janeiro: Campus, 2003. 373 p.

MAURO, D. R.; SCHMIDT, K. J. SNMP Essencial. Tradução de Teresa Cristina

Feliz de Souza. Rio de Janeiro: Campus, 2001. 316 p.

MEIRELLES, L. F. T. Gerenciamento de Redes: Apostilas. UCPel, 1999. Disponível

em: <http://redes.ucpel.tche.br/ensino/070020/html/apostila.html >. Acesso em: 09

mai. 2003.

MORAES, R. A. R.; DE FRANCESCHI, A. S. M.Metodologia para o

desenvolvimento de uma Plataforma de Gerência de Redes utilizando agentes

inteligentes. In: XX Simpósio Brasileiro de Telecomunicações - SBrT, 2003, Rio de

Janeiro - RJ.

RAMOS, A. C. Desenvolvimento de um protótipo de MIB-Browser em Delphi.

2001. 74 f. Trabalho de Conclusão de Curso (Bacharelado em Informática) –

Departamento de Ciências Exatas e Tecnológicas, Universidade do Planalto

Catarinense, Lages.

SEVY, J. JAVA SNMP Stack And Applications. Drexel University’s, 2000.

Disponível em: <http://edge.mcs.drexel.edu/GICL/people/sevy/ >. Acesso em: 10 jun.

2003.

SZTAJNBERG, A. Gerenciamento de Redes: Conceitos básicos sobre os protocolos

SNMP e CMIP. Disponível em: <http://www.gta.ufrj.br/~alexzt/ger/snmpcmip.html>.

Acesso em: 01 mai. 2003.

ALBUQUERQUE, F. TCP/IP Internet: Programação de sistemas distribuídos

HTML, Javascript e JAVA. Rio de Janeiro: Axcel, 2001. 492 p.

ARTOLA, E. S. MIB (Management Information Base). Universidade Federal do

Rio Grande do Sul, 1995. Disponível em: <http://penta.ufrgs.br/gr952/e_capa.html>.

Acesso em: 01 mar. 2003.

COELHO, L.; MORAES, R. A. R.; DE FRANCESCHI, A. S. M. Uma versão

preliminar do MIB Browser de uma plataforma de gerência de redes. In: Encontro

de Ciência e Tecnologia - ECTEC, 2003, Lages - SC.

CHESANI, L. SNMP - Simple Network Management Protocol. Universidade

Federal do Rio Grande do Sul, 1995. Disponível em:

<http://penta.ufrgs.br/gr952/trab1/snmp_snmp.html>. Acesso em: 06 mar. 2003.

DE FRANCESCHI, A. S. M.; MORAES, R. A. R. Agentes inteligentes:

Desenvolvimento de baselines utilizando redes neurais artificiais. In: IV Simpósio

de Informática do Planalto Médio, 2003, Passo Fundo - RS.

TORRES, G. Redes de Computadores: Curso completo. Rio de Janeiro: Campus,

2001. 664 p.

STALLINGS, W. SNMP, SNMPv2, SNMPv3, and RMON 1 and 2. 3. ed.

Massachusetts: Addison Wesley Longman, 1999. 619 p.

POSTEL, J. User Datagram Protocol. RFC 768. USC/Information Sciences Institute,

November 1980. Disponível em: <http://www.rfc-editor.org/rfcsearch.html>. Acesso

em: 05 mai. 2003.

MILLER, M. A. Managing Internetworks With SNMP. 3. ed. Canadá: IDG Books,

1999. 661.

 Apêndice 1: MIBBROWSER.JAVA

 Apêndice 2: MODULOCENTRAL.JAVA

 Apêndice 3: ARVOREMIB2.JAVA

 Apêndice 4: OPERACOESSNMP.JAVA

 Apêndice 5: OPERACOESCOMUNS.JAVA

 Apêndice 6: OperacoesBD.java

/**

MibBrowser.java

Desenvolvida por Luciano Coelho

Quando instanciada esta classe, o resultado vai ser a interface com o usuário do Mib Browser

*/

/** Importação de pacotes necessarios */ import java.awt.*; import java.awt.event.*; import java.util.*; import java.text.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.tree.*; import javax.swing.event.*; import javax.swing.text.MaskFormatter;

Documentos relacionados