segunda-feira, 16 de janeiro de 2012

A MIB

A MIB (Management Information Base - Base de Informações de Gerenciamento) é um conjunto dos objetos gerenciados, com o objetivo de abranger informações necessárias para a gerência da rede, é importante salientar que a MIB não contém objetos reais, somente os organiza.

Objetos Gerenciados

São “estruturas de dados” resultantes da modelagem dos recursos da rede a serem gerenciados, podem ter permissões para serem lidos ou alterados sendo que cada leitura representará o estado real do recurso e cada alteração será refletida no próprio recurso, isso permite automatização de grande parte das tarefas de gerência.

Modelos de Gerenciamento
O padrão OSI define três modelos para gerenciamento de redes:
  • Modelo Organizacional
  • Modelo Informacional
  • Modelo Funcional
Modelo organizacional
Descreve a forma pela qual a gerência pode ser distribuída entre domínios e sistemas dentro de um domínio.

Modelo funcional
Descreve as áreas funcionais e seus relacionamentos.

Modelo informacional
Provê a base para a definição de objetos gerenciados e suas relações, classes atributos, ações e nomes.

Características do Modelo OSI
Na definição de objetos gerenciados é utilizada a orientação a objetos. Objetos com características semelhantes são agrupados em classes de objetos, uma classe pode ser uma subclasse de outra, e a primeira herda todas as propriedades da segunda.

Classe, Subclasse e Superclasse

Uma classe é definida por:
  • Atributos da classe
  • Ações que podem ser invocadas
  • Eventos que podem ser relatados
  • Subclasse a qual ela deriva
  • Superclasse na qual ela está contida
Hierarquias dos Objetos Gerenciados:
Para a definição dos objetos gerenciados deve-se considerar três hierarquias:
  • Hierarquia de herança
  • Hierarquia de nomeação
  • Hierarquia de registros usados na caracterização e identificação de objetos gerenciados

Hierarquia de Herança
Conhecida também como hierarquia de classe, tem como objetivo facilitar a modelagem dos objetos, através da utilização do paradigma da orientação a objetos. Ferramenta que facilita a definição de classes, superclasses, subclasses.

Hierarquia de Nomeação
Hierarquia usada para identificar uma instância de um objeto. Conhecida como Hierarquia de containment, descreve a relação de "estar contido em" aplicado aos objetos.

Um objeto gerenciado está contido dentro de um (e somente um) objeto gerenciado, um objeto gerenciado existe somente se o objeto que o contém existir.

Hierarquia de Registro

Hierarquia usada para identificar os objetos, independentemente das hierarquias de heranças e nomeação. É especificada segundo regras estabelecidas pela notação ASN.1 (Abstract Syntax Notation. One).
Cada objeto é identificado por uma sequência de números, correspondente aos nós percorridos desde a raiz, até o objeto em questão.

MIB da Internet
O RFC (Request for Comments) 1066 apresentou a primeira versão da MIB, a MIB-1, o IAB (Internet Activities Board) aceita MIB como padrão no RFC 1156.

O RFC 1158 propôs uma segunda MIB, a MIB-II, aceita e formalizada como padrão no RFC 1213.

A árvore da MIB II
Usa arquitetura de árvore de registro, cada parte da informação da árvore é um nó rotulado formado por:
Identificador de objetos (OID): 1.3.6.1.1

Descrição textual: directory(1)

O nó raiz da árvore (MIB) possui três sub-árvores:
  • ccitt(0): Administração CCITT (Comite Consultatif Internationale de Telegraphie et Telephonie)
  • iso(1): Administração ISO
  • joint-iso-ccitt(2): Administração ISO e CCITT

 Sob o nó iso(1) temos as subárvores:
  • org(3)
  • dod(6)
  • Internet(1)

O nó Internet(1) possui quatro subárvores:
  • directory(1): Contém informações sobre o serviço de diretórios OSI
  • mgmt(2): Informações de gerenciamento
  • experimental(3): Objetos em pesquisa pela IAB
  • private(4): Objetos definidos por outras organizações

Abaixo do nó mgmt(2) estão os objetos usados para se obter informações específicas de rede.

A árvore da MIB II

Objeto System (1.3.6.1.2.1.1)

Exemplos de Grupos
Grupo System - Sistema de operação dos dispositivos da rede
Descrição textual: iso.org.dod.internet.mgmt.mib-2.system
OID: 1.3.6.1.2.1.1

Componentes:
sysDesc(1): Descrição do sistema, nome completo e versão do tipo de hardware, sistema operacional e software de rede.

sysObjectId(2): OID de registro (fabricante do sistema).

sysUpTime(3): Tempo de atividade do sistema (1/100 s).

sysContact (4): Pessoa ou grupo responsável pelo nó.

sysName(5): Nome do nó na rede.

sysLocation(6): Localização física do nó.

sysServices(7): Flags indicando serviços suportados.

Grupo Interfaces - Interface da rede com o meio físico
Descrição textual: iso.org.dod.internet.mgmt.mib-2.interface
OID: 1.3.6.1.2.1.2

Componentes:
ifNumber(1): Número de interfaces de rede (independentemente do seu estado atual) presentes no sistema.

ifTable(2): A tabela de informações sobre cada interface de rede, o número de interfaces é dado pelo valor do ifNumber.

ifEntry(ifTable 1):  Entradas de valores sobre cada uma das interfaces

ifIndex(ifEntry 1): Um valor único para cada interface, permite identificar a interface.

ifDescr(ifEntry 2): Identificação da interface, deve incluir o nome do fabricante, o nome do produto e a versão da interface.

ifType(ifEntry 3): Tipo de interface.

ifMtu(ifEntry 4): Tamanho máximo do datagrama suportado pela  interface, especificado em octetos.

ifSpeed(ifEntry 5): Uma estimativa da largura de banda atual da interface em bits por segundo. Para interfaces que não variam em largura de banda ou para aqueles onde não precisa estimativa pode ser feita, este objeto deve conter a largura de banda nominal.

ifPhysAddress(ifEntry 6): Endereço físico da interface, Para interfaces que não têm tal endereço (por exemplo, uma linha serial), este objeto deve conter um octeto string de comprimento zero.

ifAdminStatus(ifEntry 7): Indica o estado desejado da interface.

ifOperStatus(ifEntry 8): Indica o estado atual de funcionamento do interface.

up(1), -- pronto para passar pacotes
down(2), -- interface desabilitada
testing(3) -- indica que nenhum pacote em estado operacional podem ser passados.

ifLastChange(ifEntry 9): O tempo de funcionamento desde que a interface entrou em estado operacional.

ifInOctets(ifEntry 10): O número total de octetos recebidos na interface, incluindo caracteres de enquadramento (framing characters).

ifInUcastPkts(ifEntry 11):  O número de pacotes unicast entregues a um protocolo de camada superior.

ifInNUcastPkts(ifEntry 12): O número de pacotes não unicast (ou seja, broadcast ou multicast) entregues a um protocolo de camada superior. "

ifInDiscards(ifEntry 13):  O número de pacotes de entrada que foram escolhidos para serem descartados, mesmo que nenhum erro tenha sido detectado, impede a entrega dos pacotes a um protocolo de camada superior. Uma razão possível para descartar tais pacotes poderia ser para liberar espaço de buffer.

ifInErrors(ifEntry 14):  O número de pacotes de entrada que continham erros que impedem seu fornecimento a um protocolo de camada superior.

ifInUnknownProtos(ifEntry 15): O número de pacotes recebidos através da interface que foram descartados por causa de um protocolo desconhecido ou não suportado.

ifOutOctets(ifEntry 16):  O número total de octetos transmitidos na interface, incluindo caracteres de enquadramento (framing characters).

ifOutUcastPkts(ifEntry 17):  O número total de pacotes que o protocolo de camada superior solicitou que fossem transmitidos, incluindo aqueles que foram descartados ou não enviados.

ifOutNUcastPkts(ifEntry 18):  O número total de pacotes não unicast (ou seja, broadcast ou multicast)  que o protocolo de camada superior solicitou que fossem transmitidos, incluindo aqueles que foram descartados ou não enviados.

ifOutDiscards(ifEntry 19):  O número de pacotes de saída que foram escolhidos para serem descartados, mesmo que nenhum erro tenha sido detectado, impede a transmissão dos pacotes. Uma razão possível para descartar tais pacotes poderia ser para liberar espaço de buffer.

ifOutErrors(ifEntry 20):  O número de pacotes de saída que não puderam ser transmitidos devido a erros.

ifOutQLen(ifEntry 21):  O comprimento da fila de saída de pacotes (em pacotes).

ifSpecific(ifEntry 22):  Uma referência a definições MIB específicos para uma mídia em particular, sendo usado para realizar a interface com o objeto. Por exemplo, se a interface é realizado por uma ethernet, então o valor deste objeto refere-se a um documento que define objectos específicos para ethernet. Se esta informação não é presente, seu valor deve ser definido como OBJECT IDENTIFIER { 0 0 }, que é uma sintaxe válida para identificador de objeto, e estará em conformidade com qualquer implementação de ASN.1 e BER que devera ser capaz de gerar e reconhecer esse valor.

Grupo at (Address Translation) - Mapeamento de endereços IP em endereços físicos.
Descrição textual: iso.org.dod.internet.mgmt.mib-2.at
OID: 1.3.6.1.2.1.3

Componentes:
atTable(1): As tabelas de tradução de endereços, devem conter o endereço de rede para seu endereço físico equivalente.

Algumas interfaces não usam tabelas de conversão para determinar equivalências endereço (por exemplo, DDN-X.25 tem um método algorítmico), se todas as interfaces são deste tipo, então a tabela Address Translation está vazia, ou seja, tem zero entradas.

atEntry(atTable 1): Cada entrada contém um endereço de rede para seu endereço físico equivalente.

atIfIndex(atEntry 1): A interface identificada por um determinado valor deste índice é a mesma interface identificada pelo mesmo valor de ifIndex.

atPhysAddress(atEntry 2):  Endereço físico da interface.

atNetAddress(atEntry 3): O endereço da rede (por exemplo, o endereço IP).

Grupo ip - Protocolo IP
Descrição textual: iso.org.dod.internet.mgmt.mib-2.ip
OID: 1.3.6.1.2.1.4

Componentes (Apenas Alguns):
ipForwarding(1): (forwarding(1), not-forwarding(2)): Se o IP Forward está ou não habilitado no dispositivo.

ipInReceives(3):  O número total de datagramas de entrada recebidos pela interface,incluindo aqueles recebidos com erro.

ipInAddrErrors(5): O número de datagramas de entrada descartados porque o endereço IP de destino em seu campo de cabeçalho IP não era um endereço válido. Essa contagem inclui endereços inválidos (por exemplo, 0.0.0.0) e os endereços de Classes não suportsadas (por exemplo, Classe E).

ipInUnknownProtos(7): O número de datagramas recebido com sucesso, mas descartados por causa de um protocolo desconhecido ou não suportado.

ipOutDiscards(11): O número de datagramas IP de saída para os quais não foram encontrados problemas para impedir a sua transmissão ao seu destino, mas que foram descartados (por exemplo, por falta de espaço de buffer).

ipOutNoRoutes(12): O número de datagramas IP descartados, porque nenhuma rota podia ser encontrada para transmiti-los aos seus destinos.

ipAddrTable(20): Tabela de endereçamento IP.

ipAdEntReasmMaxSize(ipAddrEntry 5): O tamanho do maior datagrama IP que esta entidade pode re-montar a partir dos datagramas IP fragmentados recebidos por esta interface.

ipRouteTable(21): Tabela de roteamento IP.

ipRouteDest(ipRouteEntry 1): Endereço IP do destino da rota. Uma entrada com valor 0.0.0.0 é considerada uma rota padrão.

ipRouteMetric1(ipRouteEntry 3): A métrica de roteamento primário para esta rota. A semântica desta métrica é determinada pelo protocolo de roteamento especificado na rota do valor ipRouteProto. Se essa métrica não é utilizada, seu valor deve ser definido como -1.

ipRouteNextHop(ipRouteEntry 7): O endereço IP do próximo salto da rota. (No caso de uma rota ligada a uma interface que se realiza através de uma mídia de broadcast, o valor deste campo é o endereço IP do agente daquela interface.)

Grupo icmp – Protocolo ICMP
Descrição textual: iso.org.dod.internet.mgmt.mib-2.icmp
OID: 1.3.6.1.2.1.5

Componentes (Apenas Alguns):
icmpInMsgs(icmp 1): O número total de mensagens ICMP que a entidade recebeu. Note que a contagem inclui todos os contadores de icmpInErrors.

icmpInErrors(icmp 2): O número de mensagens ICMP que a entidade recebeu, mas determinada por erros ICMP específicos (ICMP checksums com erro, erro no tamanho, etc.)

icmpInDestUnreachs(icmp 3): O número de mensagens ICMP recebidas com destino inacessível.

icmpInTimeExcds(icmp 4): O número de mensagens ICMP recebidas com tempo excedido.

Grupo TCP – Protocolos TCP
Descrição textual: iso.org.dod.internet.mgmt.mib-2.tcp
OID: 1.3.6.1.2.1.6

Componentes (Apenas Alguns):
tcpConnTable(13): Uma tabela contendo informações de conexão TCP específicas.

tcpConnState(tcpConnEntry 1): O estado da conexão TCP.

tcpConnLocalAddress(tcpConnEntry 2): O endereço IP local para esta conexão TCP. No caso de uma conexão no estado ouvindo disposta a aceitar conexões para qualquer interface IP associado ao nó, o valor 0.0.0.0 é usado.

tcpConnRemAddress(tcpConnEntry 4): O endereço IP remoto para essa conexão TCP.

tcpConnRemPort(tcpConnEntry 5): O número da porta remota para esta conexão TCP.

Grupo UDP – Protocolos UDP
Descrição textual: iso.org.dod.internet.mgmt.mib-2.udp
OID: 1.3.6.1.2.1.7

Componentes:
udpInDatagrams(1): O número total de datagramas UDP entregues aos usuários UDP.

udpNoPorts(2): O número total de datagramas UDP recebidos para os quais não houve aplicação na porta de destino.

udpInErrors(3): O número de datagramas UDP recebidos que não puderam ser entregues por outras razões que a falta de uma aplicação na porta de destino.

udpOutDatagrams(4): O número total de datagramas UDP enviados a partir desta entidade.

udpTable(5): Uma tabela contendo informações sobre os ouvintes UDP.

udpEntry(udpTable 1): Informações sobre um determinado ouvinte UDP.

udpLocalAddress(udpEntry 1): O endereço IP local para este ouvinte UDP. No caso de um ouvinte UDP que está disposto a aceitar datagramas para qualquer interface IP associado com o nó, o valor 0.0.0.0 é usado.

udpLocalPort(udpEntry 2): O número da porta local para este ouvinte UDP.

Grupo EGP – Protocolo EGP
Descrição textual: iso.org.dod.internet.mgmt.mib-2.egp
OID: 1.3.6.1.2.1.8

Componentes (Apenas Alguns):
egpInMsgs(1): O número de mensagens EGP recebidas sem erro.

egpInErrors(2): O número de mensagens EGP recebidas com erro.

egpOutMsgs(3): O número total de mensagens EGP gerados localmente.

egpOutErros(4): O número de mensagens EGP gerados localmente não enviadas devido a limitações de recursos dentro de uma entidade EGP.

egpNeighTable(5): A tabela de vizinhos EGP.

Grupo cmot – Protocolo CMOT
Descrição textual: iso.org.dod.internet.mgmt.mib-2.cmot
OID: 1.3.6.1.2.1.9

Histórico (alguns dizem histérico)

Grupo Transmission – Meios de Transmissões
Descrição textual: iso.org.dod.internet.mgmt.mib-2.transmission
OID: 1.3.6.1.2.1.10

Histórico (alguns dizem histérico)

Grupo SNMP – Protocolo SNMP
Descrição textual: iso.org.dod.internet.mgmt.mib-2.snmp
OID: 1.3.6.1.2.1.11

Componentes:
snmpInPkts(1): O número total de mensagens entregues à entidade SNMP pelo serviço de transporte.

snmpOutPkts(2): O número total de mensagens SNMP que foram passados da entidade protocolo SNMP para o serviço de transporte.

snmpInBadVersions(3): O número total de mensagens SNMP que foram entregues à entidade protocolo SNMP, mas eram de uma versão SNMP não suportada.

snmpInBadCommunityNames(4): O número total de mensagens SNMP entregues à entidade protocolo SNMP, mas que usaram um nome da comunidade SNMP desconhecida pela entidade.

snmpInBadCommunityUses(5): O número total de mensagens SNMP entregues à entidade protocolo SNMP que representaram uma operação SNMP que não era permitido pela comunidade SNMP nomeada na mensagem.

snmpInASNParseErrs(6): O número total de erros ASN.1 ou BER encontrados pela entidade protocolo SNMP quando decodificou as Mensagens SNMP recebidas.

-- (7): Não é usado

snmpInTooBigs(8): O número total de PDUs SNMP que foram entregues à entidade protocolo SNMP e para os quais o valor do campo status de erro é `tooBig '.

SnmpInNoSuchNames(9): O número total de PDUs SNMP que foram entregues à entidade protocolo SNMP e para os quais o valor do campo status de erro é `noSuchName '.

SnmpInBadValues(10): O número total de PDUs SNMP que foram entregues à entidade protocolo SNMP e para os quais o valor do campo status de erro é `badValue '.

snmpInReadOnlys(11): O número total válido de PDUs SNMP que foram entregues à entidade protocolo SNMP e para os quais o valor do campo status de erro é 'readOnly'. Note-se que é um erro de protocolo para gerar um PDU SNMP que contém o valor `readOnly ' no campo erro de status, como tal este objeto é fornecido como um meio de detectar implementações incorretas do SNMP.

snmpInGenErrs(12): O número total de PDUs SNMP que foram entregues à entidade protocolo SNMP e para os quais o valor do campo status de erro é `genErr'.

snmpInTotalReqVars(13): O número total de objetos MIB que foram recuperados com sucesso pela entidade protocolo SNMP como o resultado de receber PDUs SNMP Get-Request e Get-Next válidos.

snmpInTotalSetVars(14): O número total de objetos MIB que foram alterados com sucesso pela entidade protocolo SNMP como o resultado de receber PDUs SNMP Set-Request válidos.

snmpInGetRequests(15): O número total de PDUs SNMP Get-Request que foram aceitas e processadas pela entidade protocolo SNMP.

snmpInGetNexts(16): O número total de PDUs SNMP Get-Next que foram aceitas e processadas pela entidade protocolo SNMP.

snmpInSetRequests(17): O número total de PDUs SNMP Set-Request que foram aceitas e processadas pela entidade protocolo SNMP.

snmpInGetResponses(18): O número total de PDUs SNMP Get-Response que foram aceitas e processadas pela entidade protocolo SNMP.

snmpInTraps(19): O número total de PDUs SNMP Trap que foram aceitas e processadas pela entidade protocolo SNMP.

snmpOutTooBigs(20): O número total de PDUs SNMP que foram gerados pela entidade protocolo SNMP e para os quais o valor do campo status de erro é `tooBig '.

snmpOutNoSuchNames(21): O número total de PDUs SNMP que foram gerados pela entidade protocolo SNMP e para os quais o valor do campo status de erro é ` noSuchName '.

snmpOutBadValues(22): O número total de PDUs SNMP que foram gerados pela entidade protocolo SNMP e para os quais o valor do campo status de erro é ` badValue '.

-- (23): Não é usado

snmpOutGenErrs(24): O número total de PDUs SNMP que foram gerados pela entidade protocolo SNMP e para os quais o valor do campo status de erro é ` genErr '.

snmpOutGetRequests(25): O número total de PDUs SNMP Get-Request que foram gerados pela entidade protocolo SNMP.

snmpOutGetNexts(26): O número total de PDUs SNMP Get-Next que foram gerados pela entidade protocolo SNMP.

snmpOutSetRequests(27): O número total de PDUs SNMP Set-Request que foram gerados pela entidade protocolo SNMP.

snmpOutGetResponses(28): O número total de PDUs SNMP Get-Response que foram gerados pela entidade protocolo SNMP.

snmpOutTraps(29): O número total de PDUs SNMP Trap que foram gerados pela entidade protocolo SNMP.

snmpEnableAuthenTraps(30): (enabled(1), disabled(2)): Indica se o processo do agente SNMP esta configurado para gerar traps de falha de autenticação. O valor deste objeto substitui qualquer informação de configuração, como tal, fornece um meio pelo qual todos os traps de falha de autenticação possam ser desabilitados.

Note que é altamente recomendável que esse objeto seja armazenados em memória não-volátil para que ele permaneça constante entre as reinicializações do sistema de gerencia de rede.

Referências:
RFC1213
Pessoal o material usado como base para a criação destes textos, veio de amigos, listas de distribuição e pesquisas na internet, portanto não possuo referências sobre os mesmos, mas se você identificar algum material de sua autoria, por favor entre em contato que os devidos créditos serão atribuídos.

2 comentários:

Marcos Roberto Artimundo disse...

Cara encontrei seu blog e posso dizer que o conteúdo é muito bom, estou estudando Gerenciamento de Redes e vai me ajudar bastante..
Parabéns"""

André Déo disse...

Que bom Marcos,

O incentivo a continuar escrevendo é justamente os comentários. Dá uma olhada na minha apostila:

http://andredeo.blogspot.com.br/2012/04/apostila-do-treinamento-gerenciamento.html

Abraços,