1 LABORATORIO DI INFORMATICA Network Management 3. Il linguaggio ASN Introduzione, Object Identifier, Esempio Claudio Salati Copyright © 2001 by Claudio Salati ALMA MATER STUDIORUM - UNIVERSITA' DI BOLOGNA FACOLTA' DI INGEGNERIA - SEDE DI CESENA
2 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
3 OBJECT IDENTIFIER e Internet Management Framework itu(0)iso(1)joint-iso-ccitt(2) standard(0)identified-organization(3) dod(6) internet(1) mgmt(2)private(4)snmpV2(6) mib-2(1)enterprises(1)
4 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 snmpModules = internet.6.3 o anche iso
5 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 manager- agent. (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 agent manager 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)
6 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.: < , <
7 SNMPv2 Abstract Syntax (RFC 1905)- pag. 1 SNMPv2-PDU DEFINITIONS ::= BEGIN IMPORTS ObjectName, ObjectSyntax, Integer32 FROM SNMPv2-SMI; -- RFC ObjectName ::= OBJECT IDENTIFIER
8 SNMPv2 Abstract Syntax- pag protocol data units PDUs ::= CHOICE { get-requestGetRequest-PDU, get-next-requestGetNextRequest-PDU, get-bulk-requestGetBulkRequest-PDU, responseResponse-PDU, set-requestSetRequest-PDU, inform-requestInformRequest-PDU, snmpV2-trapSNMPv2-Trap-PDU, reportReport-PDU, }
9 SNMPv2 Abstract Syntax- pag 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
10 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.
11 SNMPv2 Abstract Syntax- pag Generic PDU PDU ::= SEQUENCE { request-idInteger32, error-statusError-status, -- sometimes ignored error-indexINTEGER (0..max-bindings), -- sometimes ignored variable-bindingsVarBindList -- values are sometimes ignored }
12 SNMPv2 Abstract Syntax- pag 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) }
13 SNMPv2 Abstract Syntax- pag Bulk PDU: Error-status BulkPDU ::=-- MUST be identical in SEQUENCE {-- structure to PDU request-idInteger32, non-repeatersINTEGER (0..max-bindings), max-repetitionsINTEGER (0..max-bindings), variable-bindingsVarBindList -- values are ignored }
14 SNMPv2 Abstract Syntax- pag variable binding VarBind ::= SEQUENCE { nameObjectName, CHOICE { valueObjectSyntax, -- DEFINED BY name -- non ANY! -- solo il sottoinsieme di tipi -- semplici consentito da SMI unSpecifiedNULL, -- in retrieval requests -- exceptions in responses: noSuchObject[0] IMPLICIT NULL, noSuchInstance[1] IMPLICIT NULL, endOfMibView[2] IMPLICIT NULL }
15 SNMPv2 Abstract Syntax- pag variable-binding list max-bindings INTEGER ::= VarBindList ::= SEQUENCE (SIZE (0..max-bindings)) OF VarBind END