A evolução do SNMP João Neves, 2007 1 As Limitações do SNMPv1 Para a gestão de grandes redes o polling pode representar um problema de desempenho O SNMP não é adequado para a transferência de grandes quantidades de informação As mensagens de trap não são confirmadas (não há a garantia que uma mensagem crítica seja entregue! Ou que seja proveniente de quem diz ser...) A autenticação baseada em community strings é trivial (será recomendável então usar o SNMP somente para monitorizar e não para controlar!) O despoletar de um evento resulta somente da alteração de um valor, e não, por ex., da conjugação de factores ou execução de procedimentos... João Neves, 2007 2 João Neves 1
As Limitações do SNMPv1... O modelo da MIB é limitado (não está pensado para manipulações ou consultas complexas de valores e tipos de dados) A comunicação é sempre entre o Gestor e o Agente (não há comunicação Gestor <-> Gestor) As mensagens SNMP são transportadas somente em UDP E o facto é que a Indústria tinha assumido que o SNMP seria apenas a solução provisória até a gestão de redes OSI baseada em CMIS/CMIP amadurecesse!... João Neves, 2007 3 Melhoramentos Os maiores melhoramentos ou novidades incluídos no foram: Extensão da árvore de OIDs Tipos de dados Macros Convenções textuais ( textual conventions ) Operações do Protocolo que facilitam a transferência de grandes quantidades de dados Códigos de erro Suporte ao transporte em múltiplos protocolos João Neves, 2007 4 João Neves 2
SMIv2 RFC 2578 (STD 58) Structure of Management Information Version 2 (SMIv2) A árvore de objectos da SMI é estendida com a adição do ramo snmpv2 à sub-árvore internet O OID para o novo ramo é { 1.3.6.1.6 } ou iso.org.dod.internet.snmpv2 Abaixo deste existem: Transport domains (snmpdomains), Transport proxies (snmpproxys) e Module identities (snmpmodules) João Neves, 2007 5 -SMI DEFINITIONS ::= BEGIN -- the path to the root SMIv2 RFC 2578 (STD0058) org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1 dod OBJECT IDENTIFIER ::= { org 6 } internet OBJECT IDENTIFIER ::= { dod 1 } directory OBJECT IDENTIFIER ::= { internet 1 } mgmt OBJECT IDENTIFIER ::= { internet 2 } mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } transmission OBJECT IDENTIFIER ::= { mib-2 10 } experimental OBJECT IDENTIFIER ::= { internet 3 } private OBJECT IDENTIFIER ::= { internet 4 } enterprises OBJECT IDENTIFIER ::= { private 1 } security OBJECT IDENTIFIER ::= { internet 5 } snmpv2 OBJECT IDENTIFIER ::= { internet 6 } -- transport domains snmpdomains OBJECT IDENTIFIER ::= { snmpv2 1 } -- transport proxies snmpproxys OBJECT IDENTIFIER ::= { snmpv2 2 } -- module identities snmpmodules OBJECT IDENTIFIER ::= { snmpv2 3 } João Neves, 2007 6 João Neves 3
Árvore OIDs João Neves, 2007 7 Novos Tipos de Dados Tipo de Dados Integer32 Counter32 Counter64 Gauge32 Unsigned32 BITS Descrição O mesmo que um INTEGER, valores entre -2 31 e 2 31 1 inclusive. O mesmo que Counter; é um inteiro não negativo que é sucessivamente incrementado até ao valor máximo de 2 32 1, depois recomeça do 0. Semelhante ao Counter32, mas o valor máximo é 2 64 1. É usado em objectos que rapidamente atingem o máximo com um Counter32. O mesmo que Gauge, é um inteiro não negativo que aumenta ou diminui mas nunca excede o máximo de 2 32 1. Valores decimais entre 0 e 2 32 1 inclusive. Enumeração de named bits. João Neves, 2007 8 João Neves 4
A Macro OBJECT-TYPE <name> OBJECT-TYPE SYNTAX <datatype> UnitsParts <Optional> MAX-ACCESS Access STATUS Status Text AUGMENTS { <name of table> } ::= { <Unique OID that defines the object> } UnitsParts MAX-ACCESS STATUS AUGMENTS Descrição textual das unidades usadas para para representar o objecto (ex. seconds, packets, etc.) Pode ser por ordem crescente: not-accessible, accessible-for-notify, read-only, readwrite, read-create ::= current deprecated obsolete Permite estender uma tabela adicionando uma ou mais colunas João Neves, 2007 9 Novas Macros NOTIFICATION-TYPE MODULE-COMPLIANCE OBJECT-GROUP AGENT-CAPABILITIES João Neves, 2007 10 João Neves 5
Convenções Textuais (TC) RFC 2579 (STD0058) Textual Conventions for SMIv2 São definidos novos tipos de dados com sintaxe semelhante (formal) mas mais precisos na semântica (significado). A grande vantagem é permitir a leitura mais inteligível para os humanos de um módulo de uma MIB João Neves, 2007 11 TC DisplayString ::= TEXTUAL-CONVENTION DISPLAY-HINT "255a" "Represents textual information taken from the NVT ASCII character set, as defined in pages 4, 10-11 of RFC 854. To summarize RFC 854, the NVT ASCII repertoire specifies: - the use of character codes 0-127 (decimal) - the graphics characters (32-126) are interpreted as US ASCII - NUL, LF, CR, BEL, BS, HT, VT and FF have the special meanings specified in RFC 854 - the other 25 codes have no standard interpretation - the sequence 'CR LF' means newline - the sequence 'CR NUL' means carriage-return - an 'LF' not preceded by a 'CR' means moving to the same column on the next line. - the sequence 'CR x' for any x other than LF or NUL is illegal. (Note that this also means that a string may end with either 'CR LF' or 'CR NUL', but not with CR.) Any object defined using this syntax may not exceed 255 characters in length." SYNTAX OCTET STRING (SIZE (0..255)) João Neves, 2007 12 João Neves 6
TC [ ] PhysAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x:" "Represents media- or physical-level addresses." SYNTAX OCTET STRING MacAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x:" "Represents an 802 MAC address represented in the `canonical' order defined by IEEE 802.1a, i.e., as if it were transmitted least significant bit first, even though 802.5 (in contrast to other 802.x protocols) requires MAC addresses to be transmitted most significant bit first." SYNTAX OCTET STRING (SIZE (6)) [ ] João Neves, 2007 13 TC (cont.) Convenção DisplayString PhysAddress MacAddress TruthValue TestAndIncr Descrição Informação textual do conjunto de caracteres NVT ASCII Endereço físico representado como uma OCTECT STRING Seis octetos Valor booleano, true ou false. Usado para evitar que duas NMS modifiquem o mesmo objecto ao mesmo tempo AutonomousType Um OID usado para definir uma sub-árvore adicional InstancePointer Obsoleto no RFC 1903 VariablePointer Apontador para uma instancia de um objecto RowPointer Apontador para uma linha de uma tabela RowStatus Usado para criar ou apagar linhas de uma tabela TimeStamp Valor do objecto sysuptime numa ocorrência. TimeInterval Intervalo de tempo em centésimos de segundo. DateAndTime OCTECT STRING com o dia e hora StorageType Tipo de memória usada no agente TDomain Tipo de serviço de Transporte TAddress Endereço do serviço de Transporte, 1 255 octetos João Neves, 2007 14 João Neves 7
Operações get get-next get-bulk () set get-response (no simplifica o nome) trap notification (, PDU igual ao set e get) inform (, manager-to-manager) report (, previsto mas nunca implementado) João Neves, 2007 15 PDU João Neves, 2007 16 João Neves 8
PDU - Origem e Destino PDU Gerado no Agente Recebido no Agente Gerado no Manager Recebido no Manager GetRequest X X GetNextRequest X X Response X X X SetRequest X X GetBulkRequest X X InformRequest X X -Trap X X João Neves, 2007 17 PDU (cont.) SNMPv1 João Neves, 2007 18 João Neves 9
Mensagens de Erro Normalmente não é usado, o nosuchname é equivalente Resposta genérica Resposta genérica para as operações de set Não é usado no, de acordo com RFC 1901 João Neves, 2007 19 Error Index e.g. errorstatus=nosuchname errorindex=2 You can only know that there was a nosuchname error for the varbind at position 2 In that case you can't know whether any other value is valid... João Neves, 2007 20 João Neves 10
Transporte João Neves, 2007 21 snmpdomains snmpudpdomain (1) snmpconsdomain (3) snmpddpdomain (4) snmpipxdomain (5) João Neves, 2007 22 João Neves 11
Transporte sobre UDP sobre OSI sobre AppleTalk Datagram Delivery Protocol (DDP) sobre Novell Internetwork Packet Exchange (IPX) João Neves, 2007 23 -TM DEFINITIONS ::= BEGIN Transport Mappings IMPORTS MODULE-IDENTITY, OBJECT-IDENTITY, snmpmodules, snmpdomains, snmpproxys FROM -SMI TEXTUAL-CONVENTION FROM -TC; snmpv2tm MODULE-IDENTITY LAST-UPDATED "200210160000Z" ORGANIZATION "IETF SNMPv3 Working Group" "The MIB module for SNMP transport mappings. Copyright (C) The Internet Society (2002). This version of this MIB module is part of RFC 3417; see the RFC itself for full legal notices. " REVISION "200210160000Z" "Clarifications, published as RFC 3417." REVISION "199601010000Z" "Clarifications, published as RFC 1906." REVISION "199304010000Z" "The initial version, published as RFC 1449." "The initial version, published as RFC 1449." ::= { snmpmodules 19 } João Neves, 2007 24 João Neves 12
sobre UDP -- SNMP over UDP over IPv4 snmpudpdomain OBJECT-IDENTITY "The SNMP over UDP over IPv4 transport domain. The corresponding transport address is of type SnmpUDPAddress." ::= { snmpdomains 1 } SnmpUDPAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1d.1d.1d.1d/2d" "Represents a UDP over IPv4 address: octets contents encoding 1-4 IP-address network-byte order 5-6 UDP-port network-byte order " SYNTAX OCTET STRING (SIZE (6)) João Neves, 2007 25 sobre UDP João Neves, 2007 26 João Neves 13
-- SNMP over OSI sobre OSI snmpclnsdomain OBJECT-IDENTITY "The SNMP over CLNS transport domain. The corresponding transport address is of type SnmpOSIAddress." ::= { snmpdomains 2 } snmpconsdomain OBJECT-IDENTITY "The SNMP over CONS transport domain. The corresponding transport address is of type SnmpOSIAddress." ::= { snmpdomains 3 } SnmpOSIAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "*1x:/1x:" "Represents an OSI transport-address: octets contents encoding 1 length of NSAP 'n' as an unsigned-integer (either 0 or from 3 to 20) 2..(n+1) NSAP concrete binary representation (n+2)..m TSEL string of (up to 64) octets " SYNTAX OCTET STRING (SIZE (1 4..85)) João Neves, 2007 27 -- SNMP over DDP sobre AppleTalk snmpddpdomain OBJECT-IDENTITY "The SNMP over DDP transport domain. The corresponding transport address is of type SnmpNBPAddress." ::= { snmpdomains 4 } SnmpNBPAddress ::= TEXTUAL-CONVENTION "Represents an NBP name: octets contents encoding 1 length of object 'n' as an unsigned integer 2..(n+1) object string of (up to 32) octets n+2 length of type 'p' as an unsigned integer (n+3)..(n+2+p) type string of (up to 32) octets n+3+p length of zone 'q' as an unsigned integer (n+4+p)..(n+3+p+q) zone string of (up to 32) octets For comparison purposes, strings are case-insensitive. All strings may contain any octet other than 255 (hex ff)." SYNTAX OCTET STRING (SIZE (3..99)) João Neves, 2007 28 João Neves 14
sobre IPX -- SNMP over IPX snmpipxdomain OBJECT-IDENTITY "The SNMP over IPX transport domain. The corresponding transport address is of type SnmpIPXAddress." ::= { snmpdomains 5 } SnmpIPXAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "4x.1x:1x:1x:1x:1x:1x.2d" "Represents an IPX address: octets contents encoding 1-4 network-number network-byte order 5-10 physical-address network-byte order 11-12 socket-number network-byte order " SYNTAX OCTET STRING (SIZE (12)) João Neves, 2007 29 SNMPv1/ Proxy RFC 2576 Coexistência do SNMPv1 e V2 O Manager é bilingue ou então usa-se um proxy João Neves, 2007 30 João Neves 15
Segurança Houveram várias tentativas para resolver o problema da segurança das community strings, daí as várias versões... Party-based * Common c u... sem consenso! Só uma nova versão do SNMP poderá resolver o problema! João Neves, 2007 31 Versões do Protocolo Simple-Based Management SNMPv1 Party-based Common * SNMPv3 c u Management Information Definitions (MIB Documents) RFC 1155 Format RFC 1212/1215 Format RFC 1442-4 Format RFC 1902-4 Format RFC 2578-80 Format João Neves, 2007 32 João Neves 16
Evolução do Protocolo Generation Protocol Operations Transport Mappings Security & Administration 1 st RFC 1157 (1988 1993) Communitybased 2 nd RFC 1905 (1993- ) RFC 1906 (1993- ) Party-based RFC 1445-47 (1993-1995) 3 rd SNMP EOS (new work) User-based RFC 2570-76 (1998- ) João Neves, 2007 33 Bibliografia Stallings, William SNMP,, SNMPv3 and RMON 1 and 2 Addison-Wesley Publishing Company, 3rd Ed. (1999) ISBN 0-20-148534-6 João Neves, 2007 34 João Neves 17