ALMA MATER STUDIORUM - UNIVERSITA' DI BOLOGNA FACOLTA' DI INGEGNERIA - SEDE DI CESENA LABORATORIO DI INFORMATICA Network Management 3. Il linguaggio ASN.1 3.1 Introduzione, Object Identifier, Esempio Claudio Salati Copyright © 2001 by Claudio Salati 1 1. Linguaggio ASN.1: vedi Lez. 3.2 e TS48 sez. II.2 2. Sintassi di trasferimento BER: vedi TS48 sez. II.3 3. Sistemi di programmazione ASN.1: vedi TS48 sez. II.4 4. RO-notation: vedi Lez. 3.2 e TS48 sez. II.5 5. CMIP: vedi TS48 sez. II.2 6. OBJECT IDENTIFIER per l'Internet Management Framework vedi seguito capitolo 7. Sintassi Astratta SNMPv2: vedi seguito capitolo I punti 2 e 3 non sono coperti in questo corso 2 OBJECT IDENTIFIER e Internet Management Framework itu(0) iso(1) standard(0) joint-iso-ccitt(2) identified-organization(3) dod(6) internet(1) mgmt(2) private(4) mib-2(1) enterprises(1) snmpV2(6) 3 OBJECT IDENTIFIER e Internet Management Framework internet OBJECT IDENTIFIER ::= { iso identified-organization(3) 6 1 } mgmt OBJECT IDENTIFIER ::= { internet 2 } mib-2 OBJECT IDENTIFIER ::= {mgmt 1 } private OBJECT IDENTIFIER ::= { internet 4 } enterprises OBJECT IDENTIFIER ::= { private 1 } snmpV2 OBJECT IDENTIFIER ::= { internet 6 } snmpModules OBJECT IDENTIFIER ::= {snmpV2 3 } -- N.B.: nel gergo SNMP gli OBJECT IDENTIFIER sono di norma -- scritti con una sintassi diversa da quella usata in ASN.1, e.g.: -- internet = iso.3.6.1 -- snmpModules = internet.6.3 o anche iso.3.6.1.6.3 4 OBJECT IDENTIFIER e Internet Management Framework OBJECT IDENTIFIER sono utilizzati per identificare: • I moduli che descrivono l'interfaccia manager-agent (moduli MIB). • I tipi di dati astratti (ADT) che costituiscono l'interfaccia manageragent. (detti object-type e definiti nei moduli MIB. Anche nella TMN gli OBJECT IDENTIFIER sono utilizzati per denominare le classi definite nei modelli informativi) • Le notifiche spontanee agentmanager definite nell'interfaccia manager-agent. (definite nei moduli MIB . Anche nella TMN gli OBJECT IDENTIFIER sono utilizzati per denominare le notifiche definite nei modelli informativi) 5 OBJECT IDENTIFIER e Internet Management Framework OBJECT IDENTIFIER sono utilizzati per identificare: • Le istanze di ADT dell'interfaccia manager-agent allocate sull'agent (nella sua MIB) per descrivere lo stato del sistema gestito. (dette object-instance. Notare che gli OBJECT IDENTIFIER utilizzati per questo scopo sono univoci solo sul singolo sistema gestito) I valori OBJECT IDENTIFIER ammissibili sono contenuti nel sottoalbero internet, e costruiti secondo discipline ben definite per questo motivo l'uso improprio di OBJECT IDENTIFIER per denominare le object-instance nelle MIB dei sistemi gestiti non puo' portare a conflitti con il resto del mondo Viene estesa la semantica degli OBJECT IDENTIFIER definendo sul tipo un ordinamento (totale) lessicografico e.g.: 1.3.6.1 < 1.3.6.1.2, 1.3.6.1.2 < 1.3.6.1.4 6 SNMPv2 Abstract Syntax (RFC 1905) - pag. 1 SNMPv2-PDU DEFINITIONS ::= BEGIN IMPORTS ObjectName, ObjectSyntax, Integer32 FROM SNMPv2-SMI; -- RFC 1902 -- ObjectName ::= OBJECT IDENTIFIER 7 SNMPv2 Abstract Syntax - pag. 2 -- protocol data units PDUs ::= CHOICE { get-request get-next-request get-bulk-request response set-request inform-request snmpV2-trap report } GetRequest-PDU, GetNextRequest-PDU, GetBulkRequest-PDU, Response-PDU, SetRequest-PDU, InformRequest-PDU, SNMPv2-Trap-PDU, Report-PDU, 8 SNMPv2 Abstract Syntax - pag. 3 -- PDUs GetRequest-PDU ::= [0] IMPLICIT PDU GetNextRequest-PDU ::= [1] IMPLICIT PDU Response-PDU ::= [2] IMPLICIT PDU SetRequest-PDU ::= [3] IMPLICIT PDU -- [4] is obsolete GetBulkRequest-PDU ::= [5] IMPLICIT BulkPDU InformRequest-PDU ::= [6] IMPLICIT PDU SNMPv2-Trap-PDU ::= [7] IMPLICIT PDU -- Usage and precise semantics of Report-PDU are not presently -- defined. Any SNMP administrative framework making use of -- this PDU must define its usage and semantics. Report-PDU ::= [8] IMPLICIT PDU -- il tipo (tag) del PDU e' utilizzato come opCode dell'operazione; -- i parametri dell'operazione sono definiti dal contenuto del PDU 9 SNMPv2 Abstract Syntax - pag. 3' • Notare che il tipo (cioe' il tag) di ciascun PDU rappresenta il codice operativo dell'istruzione descritta dal PDU stesso. • I parametri dell'istruzione sono rappresentati dal valore dei campi del PDU. 10 SNMPv2 Abstract Syntax - pag. 4 -- Generic PDU PDU ::= SEQUENCE { request-id error-status error-index variable-bindings Integer32, Error-status, -- sometimes ignored INTEGER (0..max-bindings), -- sometimes ignored VarBindList -- values are sometimes ignored } 11 SNMPv2 Abstract Syntax - pag. 5 -- Generic PDU: Error-status Error-status ::= INTEGER { noError(0), tooBig(1), noSuchName(2), -- for proxy compatibility badValue(3), -- for proxy compatibility readOnly(4), -- for proxy compatibility genErr(5), noAccess(6), wrongType(7), wrongLength(8), wrongEncoding(9), wrongValue(10), noCreation(11), inconsistentValue(12), resourceUnavailable(13), commitFailed(14), undoFailed(15), authorizationError(16), notWritable(17), inconsistentName(18) } 12 SNMPv2 Abstract Syntax - pag. 6 -- Bulk PDU: Error-status BulkPDU ::= SEQUENCE { request-id non-repeaters max-repetitions variable-bindings -- MUST be identical in -- structure to PDU Integer32, INTEGER (0..max-bindings), INTEGER (0..max-bindings), VarBindList -- values are ignored } 13 SNMPv2 Abstract Syntax - pag. 6 -- variable binding VarBind ::= SEQUENCE { name CHOICE { value ObjectName, ObjectSyntax, -- DEFINED BY name -- non ANY! -- solo il sottoinsieme di tipi -- semplici consentito da SMI unSpecified NULL, -- in retrieval requests -- exceptions in responses: noSuchObject [0] IMPLICIT NULL, noSuchInstance [1] IMPLICIT NULL, endOfMibView [2] IMPLICIT NULL } } 14 SNMPv2 Abstract Syntax - pag. 6 -- variable-binding list max-bindings INTEGER ::= 2147483647 VarBindList ::= SEQUENCE (SIZE (0..max-bindings)) OF VarBind END 15