Você está na página 1de 4

SNMPv2 SNMPv2

• História
▫ revisão SNMPv2
▫ duas vertentes  1996
 Secure SNMP  segurança foi retirada
 propostas para segurança
 falta de consenso
 SMP (Simple Management Protocol)  pouca adoção
 propostas para flexibilidade, eficiência e  SNMPv2 chamado de SNMPv2c (community
compatibilidade
based SNMPv2)
▫ definição inicial SNMPv2
 março 1993
 RFC 1450 - SNMPv2

SNMPv2 SNMPv2
• Maiores melhorias • Problemas do SNMPv1
▫ Novos tipos de dados. ▫ Ineficiente na recuperação de tabelas.
▫ Novas macros.  Ex.: Tabela com 4 colunas e 2000 linhas
▫ Convenções textuais. ▫ Problema de segurança com o uso da string de
▫ Melhoramentos na recuperação de informações. comunidade.
▫ Códigos de erros mais precisos. • Problemas com o SMI de SNMPv1:
▫ Máximo inteiro 2^32 - 1.
▫ Solução
 Introdução de Counter 64 (2^64 - 1).

SNMPv2 - Novas Mensagens SNMPv2


• InformRequest
• Entidades SNMP podem comportar-se como
– Permite a comunicação gerente/gerente.
– Para arquiteturas hierárquicas e distribuídas.
agentes ou gerentes
• GetBulkRequest ▫ Comunicação gerente-gerente
– Com uma chamada recupera N objetos. • Três tipos distintos de acessos:
– Otimiza o uso de GetNextRequest. ▫ gerente-agente
• SNMPv2-Trap ▫ gerente-gerente
• Report ▫ agente-gerente
– Usado para comunicação interna do protocolo para relatar erros
excepcionais ocorridos durante o processamento das requisições.
– Definido da versão 2, mas não implementado.

1
SNMPv2 SNMPv2
• Novas PDUs com códigos de erro e exceções • Tipos de PDUs
▫ GetRequest[0]
▫ GetNextRequest[1]
Versão
Comu-
nidade
SNMPv2 PDU ▫ Response[2]
▫ SetRequest[3]
Tipo Status Índice
▫ GetBulkRequest[5]
Request Objeto 1, Objeto 2,

▫ InformRequest[6]
de de do ...
ID Valor 1 Valor 2
PDU Erro Erro

VarBindList
▫ SNMPv2-Trap[7]

SNMPv2 SNMPv2
• Operações
PDU Agente Gera Agente Recebe Gerente Gera Gerente Recebe

GetRequest X X
▫ GetRequest
GetNextRequest X X
▫ GetNextRequest
▫ GetBulkRequest
Response X X X

SetRequest X X
▫ SetRequest
GetBulkRequest X X

InformRequest X X

SNMPv2-Trap X X

SNMPv2 SNMPv2
• GetRequest • GetNextRequest
▫ Idêntico ao SNMPv1, apenas respostas são tratadas de
forma diferente. ▫ Em relação SNMPv1 não é mais atômica,
▫ Em SNMPv1 a operação é atômica. retornando o maior número de variáveis
 Se uma variável não pode ser acessada, nenhum valor é possível.
retornado, mas um erro é sinalizado.
 A VarBindList contém sempre variáveis que podem ser ▫ Processamento das variáveis da VarBindList:
retornadas, com seus respectivos valores.
▫ No SNMPv2 existe uma VarBindList, mesmo que nem todos  A próxima variável da árvore da MIB, se existir, é
os valores possam ser retornados. acessada e seu valor recuperado.
▫ Se uma exceção relativa a uma variável é encontrada, esta é  Se não houver esta variável, então no lugar do
sinalizada:
 noSuchObject
valor temos endOfMibView.
 noSuchInstance ▫ Outros erros e tooBig o comportamento é igual
 endOfMibView
a GetRequest.
▫ A exceção é associada a variável, no lugar do valor
requisitado.

2
SNMPv2 SNMPv2
 GetNextRequest (sysUpTime,
▫ Exemplo:
Interface Number Network Address Physical Address Type
ipNetToMediaPhysAddress.1.9.2.3.4,
1 9.2.3.4 00:00:10:54:32:10 Dynamic ipNetToMediaType.1.9.2.3.4)
1 10.0.0.51 00:00:10:01:23:45 Static  Response ( (sysUpTime.0 = “123461”),
2 10.0.0.15 00:00:10:98:76:54 Dynamic
(ipNetToMediaPhysAddress.1.10.0.0.51=“000010012345”),
(ipNetToMediaType.1.10.0.0.51 = “static”) )
....
 GetNextRequest (sysUpTime, ipNetToMediaPhysAddress,
ipNetToMediaType)  GetNextRequest (sysUpTime,
 Response ( (sysUpTime.0 = “123456”), ipNetToMediaPhysAddress.2.10.0.0.15
(ipNetToMediaPhysAddress.1.9.2.3.4 = ipNetToMediaType. 2.10.0.0.15)
“000010543210”),  Response ( (sysUpTime.0 = “123461”),
(ipNetToMediaType.1.9.2.3.4 = “dynamic”) ) (ipNetToMediaNetAddress.1.9.2.3.4 = “9.2.3.4”),
(ipRoutingDiscards.0 = “2”) )

SNMPv2 SNMPv2
• GetBulkRequest ▫ As tabelas são retornadas linha por
– Minimiza o número de mensagens na recuperação de um linha
grande número de dados, principalmente tabelas.
– Usa o mesmo princípio de GetNextRequest: são recuperadas
▫ Exemplo:
GetBulkRequest (non-repeaters = 1, max-repetitions = 4,
as próximas variáveis na árvore da MIB.
(sysUpTime, ipNetToMediaPhysAddress, ipNetToMediaType)
– Pode-se especificar entretanto quantas variáveis sucessoras
queremos recuperar.
Response ( (sysUpTime.0 = “123456”),
(ipNetToMediaPhysAddress.1.9.2.3.4 = “000010543210”),
(ipNetToMediaType.1.9.2.3.4 = “dynamic”), ....
(ipNetToMediaAddress.1.9.2.3.4 = “9.2.3.4”),
(ipRoutingDiscards.0 = “2”) )

SNMPv2 SNMPv2
• SetRequest ▫ 1ª fase: Validação de cada VarBind da
▫ Primeiro o agente verifica o tamanho da PDU de VarBindList
resposta. Caso exista alguma limitação local então  noAccess
é gerado tooBig e VarBindList vazia.  notWritable
 wrongType
▫ Então, as variáveis são processadas em duas fazes
 wrongLength
distintas:
 noCreation
 Cada VarBind é validado.
 genErr
 Se OK, então para cada VarBind são feitas as
alterações.
▫ Logo, SetRequest é atômico. Ou todas as variáveis
são alteradas ou nenhuma é alterada.

3
SNMPv2
▫ 2ª fase: Execução das modificações
 Cada variável da VarBindList é criada se
necessário e o valor informado é atribuído.
 Se houver alguma falha, mesmo depois da
primeira fase, então todas as atribuições são
desfeitas e é gerado o erro commitFailed, com
error-index apontando para a variável com
problema.
 Se as atribuições não podem ser desfeitas então é
gerado o erro undoFailed, com error-index em
zero.

Você também pode gostar