Protocolo SNMP

Revisão de 15h48min de 30 de outubro de 2017 por Lusmar Mendes (discussão | contribs) (Conceitos do protocolo: Foram realizadas algumas alterações na página como: correção de erros ortográficos, organização e modificação do conteúdo presente, incremento de informações. Sempre com o objetivo de melhorar o conteúdo.)

Conceitos do protocolo

As informações que circulam em uma rede de computadores devem ser transportadas de modo confiável e rápido. Para que isso aconteça é importante que os dados sejam monitorados de maneira que os problemas que porventura possam existir sejam resolvidos rapidamente. Uma rede sem mecanismos de gerência pode apresentar problemas como congestionamento do tráfego, recursos mal utilizados, recursos sobrecarregados, problemas com segurança e outros.

No inicio da década de 80 o protocolo SNMP(Simple Network Management Protocol) começou a ser desenvolvido pelo IETF(Internet Engineering Task Force), com o objetivo de disponibilizar uma forma simples e prática de realizar o controle de equipamentos em uma rede de computadores. Atualmente as pesquisas na área de gerenciamento de redes possuem o objetivo de obter da rede seu rendimento máximo.

O SNMP  é um protocolo de gerência definido em nível de aplicação, é utilizado para obter informações dos dispositivos conectados em uma rede e foi projetado para ser o mais simples possível. Uma ou mais estações na rede são designadas como gerentes e são responsáveis por executar um software de gerenciamento que monitora e controla os elementos da rede. Essas estações trocam informações com todos os outros elementos gerenciáveis da rede, designadas como agentes. Através do processamento dessas informações, é possível gerenciar toda a rede e detectar facilmente os problemas ocorridos.

As trocas de informações são realizadas utilizando os serviços do protocolo de transporte UDP (User Datagram Protocol) para enviar e receber mensagens através da rede. As informações são armazenadas em MIB's (Managemant Information Base) presentes nas máquinas agentes. A MIB é um banco de dados lógico que funciona como uma árvore hierárquica, dividida por tipos de informação.

O SNMP é baseado apenas em estações de gerenciamento de rede e elementos da rede. As estações de gerenciamento da rede são responsáveis por rodar aplicações de gerenciamento que monitorem e controlem os elementos da rede.

Os elementos da rede são hubs inteligentes, roteadores e pontes possuem agentes que estão localizados dentro do limites dos elementos, que são responsáveis por realizar as funções que são requisitadas pelas estações de gerenciamento.

Cada maquina gerenciada é vista como um conjunto de variáveis que representam informações referentes ao seu estado atual, estas informações ficam disponíveis ao gerente através de consulta e podem ser alteradas por ele. Cada máquina gerenciada pelo SNMP deve possuir um agente e uma base de informações MIB.

O SNMP é o meio pelo qual a estação de gerenciamento e os elementos de rede se comunicam. É um protocolo simples que permite a um administrador inspecionar ou alterar variáveis em um elemento de rede a partir de uma estação de gerenciamento remota.

Todo o monitoramento SNMP é realizado pelo sistema de gerenciamento de rede. As estações de gerenciamento acessam os elementos de rede para obter a informação desejada ou para mudar uma variável. Nesse caso estará sendo realizada uma operação de polling.

Vantagens do SNMP

Uma das principais vantagens do SNMP é a sua simplicidade de implementação. Concentra a maior parte do processamento na máquina gerente possibilitando que os elementos da rede utilizem o protocolo mesmo possuindo pouco poder de processamento. Devido a sua popularidade para o gerenciamento de redes, muitos fabricantes de dispositivos para redes os projetam para suportar o uso do SNMP, facilitando a configuração dos agentes na rede. Inclusive, os fabricantes projetam MIB’s privadas contendo informações específicas do dispositivo.

Adicionalmente, o SNMP é um protocolo de gerenciamento flexível e extensível permitindo que um gerente de redes programe as variáveis que deseja monitorar, facilitando a administração do gerente.

A rapidez e uma característica do SNMP, pois o gerente não precisa efetuar um login no agente e estabelecer uma conexão TCP/IP para receber seus dados.

Com a implementação do protocolo SNMP componentes de redes, locais ou não, podem ser monitorados e gerenciados em princípio, igualmente. 

Desvantagens do SNMP

A simplicidade do protocolo SNMP, ao mesmo tempo que traz vantagens na sua utilização, pode se tornar um problema em equipamentos que contenham muitos itens em sua base de dados MIB, dificultando a busca de informações caso não conheça bem a estrutura da MIB.

Além disso, equipamentos com quantidades elevadas de interfaces e/ou estatísticas relacionadas a ele podem retornar muitas estatísticas desnecessárias a necessidade do usuário, tornando mais difícil a utilização do protocolo e sobrecarregando a rede de transmissão de dados.

Outra desvantagem é que, caso haja impossibilidade de comunicação entre gerente e algum agente da rede, através do protocolo SNMP não será possível obter ou alterar as estatísticas desse equipamento.

Comandos

Quando e feira a conexão SMTP, o servidor envia uma identificação:

<< 220 AVG ESMTP Proxy Server 7.0.300/7.0300 [265.8.8]

Após essa identificação, o cliente deve se identificar enviando um comando HELO:

>> HELO agnetron.com.br

<< 250 localhost Hello agnetron.com.br

Para iniciar uma sessão de e-mail, o cliente envia um comando MAIL informando o remetente:

>> MAIL FROM: usuário@dominio.com.br

>> 250 Sender ok

Em seguida, e identificado o destinatário usando o comando RCPT:

>> RCPT TO: usuario2@dominio.com.br

<< 250 Recipient ok

Logo apos, deve-se enviar o conteudo da mensagem por meio do comando DATA:

>> DATA

<< 354 Ok, send the message

>> Subject: Teste

>>

>> Mensagem Teste

>>

<< 254 Ok: queued as 13E4A7B

Note que o código de retorno do comando DATA começa com 3, indicando que esta tudo OK, mas precisa-se enviar mais dados para completar a operação.

Note também que e usada linha contendo somente um ponto para informar o final da mensagem.

Se uma linha contendo somente um ponto fizer parte do corpo da mensagem, deve-se colocar dois pontos, como no exemplo:

>> DATA

<< 354 Ok, send the message

>> Subject: Teste 2

>>

>> Mensagem Teste Parte 1

>>..

>> Mensagem Teste Parte 2

>>.

<< 250 Ok: queued as 1413196

No exemplo acima, a mensagem ao ser lida num cliente de e-mail apresentaria apenas um ponto entre a parte1 e a parte 2 da mensagem. Ficando dessa forma:

Mensagem Teste Parte 1

Mensagem Teste Parte 2

Portanto, ao criar um programa que envie e-mails, lembre-se de sempre verificar lnhas contendo somente um ponto, para colocar dois no lugar, do contrario o servidor SMTP interpretara aquele ponto como marcador de fim de mensagem.

Após o envio da mensagem, deve-se recomeçar a sessão (enviando-se um novo comando RCPT) ou finalizá-la (através do comando QUIT, como no exemplo:

>> QUIT

<< 221 Asta la vista

(servidor fecha a conexão)

Para verificar se o servidor retornou um erro ao enviar o e-mail, basta verificar se o primeiro caractere do código de retorno e 4 ou 5.

Exemplos de outros protocolos

Existem diversos tipos de protocolos de rede, variando de acordo com o serviço a ser utilizado.

De maneira geral há dois tipos de protocolos: Abertos e Proprietários ou Específicos.

Os protocolos Abertos são os protocolos padrões da internet. Este podem comunicar-se com outros protocolos que utilizam o mesmo padrão de protocolo.

Um exemplo seria o TCP/IP, pois ele pode comunicar com varias plataformas com Windows, Linux, Mac e outros.

Já os protocolos Proprietários são feitos para ambientes específicos (daí o seu nome), pois ele apenas pode comunicar com uma plataforma padrão.

Exemplos desse tipo de protocolo: IPX/SPX, NETBIOS e outros.

São exemplos de protocolos de rede: IP (Internet Protocol), DHCP (Dynamic Host Configuration), TCP (Transmission Control Protocol), HTTP (Hypertext Transfer Protocol), FTP (File Transfer Protocol), Telnet (Telnet Remote Protocol), SSH (SSH Remote Protocol), POP3 (Post Office Protocol 3), SNTP (Simple Mail Transfer Protocol), IMAP (Internet Message Access Protocol).

Alguns serviços monitorados pelo protocolo

De uma forma resumida, o protocolo e um conjunto de regras que controlam o formato e o significado das informações trocadas pelas entidades pares contidas numa camada, sendo que as entidades utilizam protocolos com a finalidade de implemente ar as suas definições de serviços e as entidades tem a liberdade de trocarem os seus protocolos, desde que não alterem o serviço visível para os seus utilizadores.

Um serviço de rede e um conjunto de operações implementado por um protocolo através de uma interface, e oferecido a camada imediatamente superior.

Ele define o que uma camada e capaz de executar sem se preocupar com a maneira pela qual as operações serão executadas.

Cada serviço e utilizado por aplicações diferentes, podendo uma aplicação utilizar vários serviços, como, por exemplo, um browser como o Mozilla Firefox. Este utiliza, por exemplo, HTTP, SHTTP, DNS.

Os serviços podem ser orientados a conexão ou não. Serviços relacionados a família TCP são orientados a conexão, enquanto serviços relacionados ao protocolo UDP são sem conexão.

Serviços orientados a conexão: e o serviço TCP. Antes do envio de dados, um processo conhecido como handshaking cria uma conexão fraca entre os hosts. Basicamente, esse processo prepara o receptor para a recepção de pacotes. Esta conexão previa possibilita verificar se todos os pacotes irão chegar corretamente ao destino, e em caso negativo, solicitar o reenvio dos mesmos (quando o receptor recebe um pacote, ele envia uma mensagem de confirmação ao transmissor. Se a confirmação na chegar, o pacote e reenviado), gerando uma transferência de dados confiável.; Também pode fazer-se um controle de fluxo e congestionamento, para casos em que o receptor não suporta a velocidade de envio dos pacotes, ou quando algum roteador na rede esta congestionado (e enviada uma mensagem ao transmissor, reduzindo ou interrompendo a velocidade envio de pacotes). Como exemplo de serviços orientados a conexão, TCP, temos: HTTP, FTP, Telnet.

Serviços sem conexão: e o serviço UDP (Protocolo de Diagrama de Usuário). Não há o processo de handshaking. Assim, uma aplicação apenas envia dados para um host, e com isso não há como saber se todos os pacotes chegaram. E mais rápido, mesmo por não haver a etapa da handshaking, mas e menos confiável, alem de não possuir a possibilidade de controle de fluxo e congestionamento presentes no TCP. Algumas aplicações que usam o UDP: conferencia de vídeo e telefone por internet.

MIBs

MIB (Management Information Base) pode ser definido como uma base de dados que armazena todo o conjunto de objetos gerenciados de um dado elemento de rede.Um objeto gerenciado é a visão abstrata de um recurso real do sistema. Os objetos gerenciados podem ter permissões para serem lidos ou alterados, sendo que cada leitura representara o estado real do recurso e cada alteração será refletida no próprio recurso.

As informações mais importantes são padronizadas, no seu formato e conteúdo, para facilitar a utilização. As regras de construção das estruturas da MIB são descritas através da SMI(Structure of Management Information). Os objetos de uma MIB são especificados de acordo com a ASN.1 (Abstract Syntax Notation One), uma linguagem introduzida pela CCITT (hoje TU-T) nas recomendações X208 e X209, e escolhida pela ISO para definir os objetos gerenciáveis da MIB.

A RFC (Request For Comments) 1066 apresentou a primeira versão da MIB, a MIB I. Este padrão explicou e definiu a base de informação necessária para monitorar e controlar redes baseadas na pilha de protocolos TCP/IP. A evolução aconteceu com RFC 1213 que propôs uma segunda MIB, a MIB II, para uso baseado na pilha de protocolos TCP/IP.

Desta forma, a MIB é o conjunto dos objetos gerenciados, que procura abranger todas as informações necessárias para a gerência da rede.

Basicamente são definidos três tipos de MIBs: MIB II, MIB experimental, MB privada.

A MIB II, que é considerada uma evolução da MIB I, fornece informações gerais de gerenciamento sobre um determinado equipamento gerenciado. Através da MIB II podemos obter informações como: número de pacotes transmitidos, estado da interface, entre outras.

A MIB experimental é aquela em que seus componentes (objetos) estão em fase de desenvolvimento e teste, em geral eles fornecem características mais específicas sobre a tecnologia dos meios de transmissão e equipamentos empregados.

 MIB privada é aquela em que seus componentes fornecem informações específicas dos equipamentos gerenciados, como configuração, colisões e também é possível reinicializar, desabilitar uma ou mais portas de um roteador.

De acordo com [RM01], no modelo SNMP, os recursos de uma rede são representados como objetos. Cada objeto é, essencialmente, uma variável que representa um aspecto do dispositivo gerenciado. Todos os objetos (variáveis) são armazenados na MIB. 

Agentes

O agente é um módulo de software de gestão de rede armazenado e executado nos dispositivos de redes gerenciáveis. A maioria dos dispositivos IP já vem de fábrica com algum tipo de agente SNMP embutido. Os agentes SNMP são responsáveis pelo monitoramento de recursos específicos naquele dispositivo. O que ele realiza na verdade é coletar dados de um dispositivo e armazená-los na MIB.

Principais funções:

  • Atender as requisições enviadas pelo gerente
  • Enviar informações de gerenciamento ao gerente quando for programado para isso.

No modelo de gerenciamento SNMP, hosts, bridges, roteadores, hubs, etc, devem ser equipados com agentes SNMP para que possam ser gerenciados pela estação de gerenciamento (Network Management Station – NMS) através do gerente SNMP. O agente responde a requisições da estação de gerenciamento, que pode ser o envio de informações de gerência ou ações sobre as variáveis do dispositivo onde está.

A comunicação entre agente e gerente é realizada através de troca de mensagens, o gerente envia uma requisição para o agente, o agente então envia uma resposta ao gerente. Essa requisição enviada pelo gerente pode ser solicitando o retorno ou a alteração de alguma informação. Além disso, a comunicação em alguns casos pode ser realizada de forma assíncrona, onde o agente pode enviar mensagens espontaneamente ao gerente sem que haja uma requisição. Isso ocorre quando o agente detecta, a partir da análise do contexto da MIB, alguma situação inesperada. Neste momento, o agente gera uma mensagem especial (traps) e a envia ao gerente relatando sobre a situação.

Para o tratamento destas exceções e o envio de traps, é concedido ao agente um certo poder de decisão, cabendo a ele, a partir da análise do contexto da MIB, decidir se é ou não necessário enviar o trap ao gerente. Esse poder de decisão é concedido ao agente para que em certas situações, como na inicialização do sistema, traps desnecessários não sejam trafegados pela rede, o que, em se tratando de dezenas de agentes, poderia interferir no desempenho global da rede.

Cabe ao agente um papel fundamental em todo o processo de gerenciamento da rede, acessando e disponibilizando informações de gerência contidas na MIB, além de indicar situações inesperadas de funcionamento do dispositivo que estiver gerenciando através do envio de traps ao gerente.

O funcionamento desta estrutura só e possível graças ao acesso direto a MIB que o agente possui, pois todas as informações de gerencia. Ao receber uma mensagem SNMP do gerente, o agente identifica que operação esta sendo requisitada e qual(is) a(s) variável(is) relacionada, e a partir dais executa a operação sobre a MIB. Em seguida, monta uma nova mensagem de resposta, que será enviada ao gerente.

Gerente

São softwares executados em uma ou mais estações de gerenciamento, capazes de realizar tarefas de gerenciamento da rede. Responsáveis pelo polling (é o ato de consultar um agente por alguma informação) e recebimento de traps (é uma forma do agente dizer a estação de gerenciamento que alguma coisa aconteceu) de agentes na rede.

A estação de gerenciamento é responsável pelo processamento das informações recebidas do agente, monitoramento e controle dos sistemas de hardware e software que compõe a rede.

Seu trabalho consiste em detectar e corrigir problemas que causem ineficiência na comunicação e eliminar as condições que podem levar ao reaparecimento do problema.

O gerente utiliza as chamadas de sistema para realizar o monitoramento das informações da máquina e utiliza as RPC (Remote Procedure Call) para o controle das informações da máquina.

Cabe ao gerente enviar comandos aos agentes, solicitando informações sobre variáveis de um objeto gerenciado ou modificando o valor de determinada variável.

Os gerentes então processam estas informações colhidas pelos agentes e as repassam a aplicação que as requisitou. A comunicação entre o gerente e as aplicações é possível através da utilização da API do gerente SNMP pelo sistema.

A API (Application Program Interface) é um conjunto de funções que fazem o intermédio na execução de comandos entre um programa e outro, de forma a simplificar a um programa o acesso a funções de outro programa e que, no caso do SNMP, fazem o intermédio das execuções entre uma aplicação de gerência e o gerente SNMP.

Quando uma solicitação da aplicação de gerência chega ao gerente, através da API, o gerente mapeia esta solicitação para um  ou mais comandos SNMP que, através da troca de mensagens apropriadas, chegarão aos agentes correspondentes.

Deve-se ressaltar que este comando SNMP montado pelo gerente pode ser enviado a um outro gerente, que pode ou não repassá-lo a um agente. Só que a comunicação gerente-gerente só é possível na versão estendida do SNMP, o SNMPv2, e não faz parte do SNMP padrão.

Cabe também ao gerente encaminhar a aplicação de gerência os traps que porventura sejam enviados pelos agentes. Assim, o software de gerência terá conhecimento da presença de um novo equipamento na rede ou do mal funcionamento de algum dos dispositivos da rede.

Quando da inicialização do software de gerência, nada se sabe a configuração ou funcionamento da rede. Essas informações vão sendo conhecidas através de traps que são enviados pelos agentes. A partir daí o gerente realiza polling a fim de manter a comunicação com os agentes, possibilitando ao software de gerência mapear, monitorar e controlar a rede.

Referências bibliográficas

1 – WWW.pt.wikibooks.org (Wikilivros Livros abertos por um mundo aberto)

2 – WWW.linhadecodgo.com.br

3 -  Livro: Plataforma de Gerenciamento para Redes Locais e Backbones Metropolitanos

4 – Construção de Agentes SNMP em Ambientes Linux. Mamografia de Jose Messias Alves da Silva, de Lavras Minas Gerais – Brasil 2005