Escolar Documentos
Profissional Documentos
Cultura Documentos
• 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).
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.