Historie von SNMP Version SMI MIB Protokoll SGMP RFC1028, 11/87 RFC1028, "Simple Gateway Monitoring Protocol" SNMPv1 RFC1065-1067, 08/88 RFC1098, 04/89 RFC1065 "Structure and identification of management information for TCP/IP-based internets", ( RFC1155) RFC1066 "Management Information Base for network management of TCP/IP-based internets" ( RFC1156) RFC1067 "Simple Network Management Protocol" ( RFC1098) RFC1098 "Simple Network Management Protocol SNMP", ( RFC1157) RFC1155-1158, 05/90 RFC1155 (STD 17), "Structure and Identification of Management Information for TCP/IP-based Internets" ( RFC1212) RFC1212-1215, 03/91 RFC1212 (STD 16) "Concise MIB Definitions" RFC1351-1353, 07/92 RFC1156 "Management Information Base for Network Management of TCP/IP-based internets" ( RFC1158) RFC1158 "Management Information Base for Network Management of TCP/IP-based internets: MIB-II", ( RFC1213) RFC1213 (STD 17) "Management Information Base for Network Management of TCP/IPbased internets: MIB-II" RFC1215 "A Convention for Defining Traps for use with the SNMP" Secure SNMP RFC1157 (STD 15) "A Simple Network Management Protocol (SNMP)" M. Leischner Netzmanagement Folie 1
Erweiterte Datentypen: Hochschule 64 bit Counter Erhöhte Effizienz: get-bulk Operator Historie von SNMP Version SMI MIB Protokoll SNMPv2 RFC1441-1452, 05/93 RFC1442 "Structure of Management Information for version 2 of the Simple Network Management Protocol" ( RFC1902) RFC1450 "Management Information Base for version 2 of the Simple Network Management Protocol (SNMPv2)" ( RFC1907) RFC1451 "Manager to Manager Management Information Base" RFC1448 "Protocol Operations for version 2 of the Simple Network Management Protocol (SNMPv2)" ( RFC1905) RFC1449 "Transport Mappings for version 2 of the Simple Network Management Protocol (SNMPv2)" ( RFC1906) RFC1452 "Coexistence between version 1 and version 2 of the Internet-standard Network Management" ( RFC1908) RFC1902-1908, 01/96 RFC2578, 04/99 Redesign von SNMPv2 mit dem Ziel, dessen Schwächen zu beheben: RFC1902 "Structure of Management Information for Version 2 of the Simple Network Management Protocol" ( RFC2578 RFC2578 (STD58) "Structure of Management Information Version 2 (SMIv2)" RFC1907 "Management Information Base for Version 2 of the Simple Network Management Protocol (SNMPv2)" RFC1905 "Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)" RFC1906 "Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)" RFC1908 "Coexistence between Version 1 and Version 2 of the Internet-standard Network Management Framework" SNMPv3 RFC2271-2274, 01/98 (Draft) RFC3410-3415, 12/02 RFC 3410, "Introduction and Applicability Statements for Internet Standard," RFC 3411, "An Architecture for Describing SNMP Management Frameworks," RFC 3412, "Message Processing and Dispatching for the Simple Network Management Protocol (SNMP)," RFC 3413, "Simple Network Management Protocol (SNMP) Applications," RFC 3414, "User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)," RFC 3415, "View-based Access Control Model (VACM) for the Simple Network Management Protocol (SNMP)". M. Leischner Netzmanagement Folie 2
Modul 4 SNMP-Managementinformation M. Leischner Netzmanagement Folie 3
Objektorientierte Konzepte in Management-Frameworks Klasse Instanz Identifikation oo-konzept (allgemein) Objektklasse, Klasse, Typ Objekt, Instanz, Ausprägung, Wert implizit über Variablendeklaration OSI-Management managed object class managed object Klassen: Vererbungsbaum Obekte: management information tree Dokumente: ISO- Registrierungsbaum Funktionen ja action, event integriert in Klassen Veerbung ja strict inheritance, allomorphismus SNMP- Management managed object managed object, object instance, object value Klassen/Objekt: object identifier tree Dokumente: ISO- Registrierungsbaum trap als eigenes Objekt keine Vererbung M. Leischner Netzmanagement Folie 4
SNMP Managementinformation: Grundprinzipien Managementinformationen werden in elementaren Objektklassen beschrieben. objektorientiert: nicht die Instanz wird beschrieben, sondern die Klasse elementar: es gibt nur Objektklassen für attributartige Objekt, alles andere wird künstlich erzeugt. attributartige Objektklassen basierend auf SNMP-Base-Types: INTEGER, Integer32, Unsigned32, Gauge, Gauge32, Counter, Counter32, Counter 64, TimeTicks, OCTET STRING, OBJECT IDENTIFIER, Network Address, IpAddress, Opaque, BITS Neben den attributartigen Objektklassen gibt es im Wesentlichen nur (künstlich erzeugte) Tabellen Als universelles Strukturierungsmittel für Klassen und Objekte fungiert der OID tree M. Leischner Netzmanagement Folie 5
4.1 SNMP Base Types M. Leischner Netzmanagement Folie 6
SNMP Base Types Verschieden Arten von Datentypen: ASN.1 Universal Types: nur: INTEGER, OCTET STRING, OBJECT IDENTIFIER Direkt aus ASN.1 übernommen. INTEGER wegen zu großem Wertbereich in der jetzigen SNMP-Version nicht mehr erlaubt. ASN.1 Application Types: Hier finden sich die speziellen Typen für das Management, z.b. Gauge (diese erhalten zwar einen eigenen Tag, sind aber nur Restriktionen der Universal Types) SNMP Pseudotypes: Keine echten ASN.1 Types, lediglich andere Interpretation eines vorhandenen Types. (Beispiel BITS als Interpretation von OCTET STRING) Textual Conventions: Übliche (immer gleiche) Namen für bestimmte Typ-Restriktion. M. Leischner Netzmanagement Folie 7
SNMP Base Types INTEGER, Integer32 INTEGER problematisch, da keine Beschränkung des Wertbereichs. Daher in Version 2 (v2) nicht mehr erlaubt. Integer32 ASN.1-Typ: [UNIVERSAL 2] IMPLICIT INTEGER (-2 31.. 2 31-1) Version SMI: v2 Verhalten: - Unsigned32 ASN.1-Typ: [APPLICATION 2] IMPLICIT INTEGER(0..2 32-1) Version SMI: v2 Verhalten: - M. Leischner Netzmanagement Folie 8
SNMP Base Types Gauge, Gauge32 Gauge in Version v2 nicht mehr erlaubt. Gauge32 ASN.1-Typ: [APPLICATION 2] IMPLICIT INTEGER(0..2 32 ) Version SMI: v2 Verhalten: Einschränkung des Wertebereichs erlaubt. Wert ist stets im spezifizierten Bereich. max min M. Leischner Netzmanagement Folie 9
SNMP Base Types Counter, Counter32, Counter 64 Counter in Version v2 nicht mehr erlaubt. Counter32 ASN.1-Typ: [APPLICATION 1] IMPLICIT INTEGER(0..2 32-1) Version SMI: v2 Verhalten: Counter64 Keine Einschränkungen des Wertebereichs erlaubt. Startwert undefiniert. Zähler kann enabled und disabled werden. Nach Überschreiten von Maximalwert beginnt Zählen wieder von 0, dies muss bei Auswertung des Counters berücksichtigt werden! ASN.1-Typ: [APPLICATION 6] IMPLICIT INTEGER(0..2 64-1) Version SMI: v2 Verhalten: wie bei Counter32 M. Leischner Netzmanagement Folie 10
SNMP Base Types TimeTicks ASN.1-Typ: [APPLICATION 3] IMPLICIT INTEGER(0..2 32-1) Version SMI: v1/v2 Verhalten: OCTET STRING zählt in hundertstel Sekunden hoch. Bei Überlauf Beginn bei 0. Startwert undefiniert. Es muss separat definiert sein, welche Epoche gemessen wird (bzw. wann ein neuer Beginn stattfindet.) ASN.1-Typ: OCTET STRING Version SMI: v1/v2 Verhalten: - In Version v2 maximale Länge von OCTET STRING auf 2 16-1 festgelegt. M. Leischner Netzmanagement Folie 11
SNMP Base Types Well-Known Textual Conventions Beispiele: DisplayString OCTET STRING (SIZE(0..255)) -- Druckbarer ASCII-String MACAddress OCTET STRING (SIZE(6)) -- MAC-Adresse M. Leischner Netzmanagement Folie 12
SNMP Base Types OBJECT IDENTIFIER ASN.1-Typ: OBJECT IDENTIFIER Version SMI: v1/v2 Verhalten: - Network Address, IpAddress Network Adress war definiert als eine Vereinigung von Typen von Netzwerkadressen. Problem: Beim Hinzukommen einer neuen Art ändert sich dieser Typ, daher wurde er abgeschafft. IpAddress ASN.1-Typ: [APPLICATION 0] IMPLICIT OCTET STRING (SIZE(4)) Version SMI: v1/v2 Verhalten: - M. Leischner Netzmanagement Folie 13
IPv6-Adresse nach RFC 2465 Pragmatische Definition einer IPv6-Adresse als textuelle Konvention ( keine Änderung des Informationsmodells) Nachteil: Applikation muss diese Interpretation der Daten kennen (da diese durch keinen ASN.1-Typ gekennzeichnet ist). Ipv6Address ::= TEXTUAL-CONVENTION DISPLAY-HINT "2x:" STATUS current DESCRIPTION "This data type is used to model IPv6 addresses. This is a binary string of 16 octets in network byte-order." SYNTAX OCTET STRING (SIZE (16)) M. Leischner Netzmanagement Folie 14
IPv6-Adresse nach RFC 4001 InetAddressIPv6 ::= TEXTUAL-CONVENTION DISPLAY-HINT "2x:2x:2x:2x:2x:2x:2x:2x" STATUS current DESCRIPTION "Represents an IPv6 network address: Octets Contents Encoding 1-16 IPv6 address network-byte order The corresponding InetAddressType value is ipv6(2). This textual convention SHOULD NOT be used directly in object definitions, as it restricts addresses to a specific format. However, if it is used, it MAY be used either on its own or in conjunction with InetAddressType, as a pair." SYNTAX OCTET STRING (SIZE (16)) M. Leischner Netzmanagement Folie 15
SNMP Base Types Opaque ASN.1-Typ: [APPLICATION 4] IMPLICIT OCTET STRING Version SMI: v1/v2 Verhalten: BITS Wert dieses Typs muss ein gemäß BER verschlüsselter Wert sein. Anwendung: Rückwärtskompatibilität bei Erweiterung von Typen, neue private Typen. Doppel-Wrapping bei Gebrauch von Opaque-Type ASN.1-Typ: OCTET STRING Version SMI: v2 Bemerkung: Pseudotyp zur Darstellung von gelabelten Bits. Nummerierung der Bits von links nach rechts. Beispiel: BITS {red(0), green(1), blue (2)} M. Leischner Netzmanagement Folie 16
4.2 Object Identifier Tree, Tabellen, Managed Object und Instanzen M. Leischner Netzmanagement Folie 17
Object Identifier Tree (OID tree) Beispiel: sysdescr: 1.3.6.1.2.1.1.1 <root> ccitt(0) iso(1) standard(0) org(3) dod (6) internet (1) directory (1) mgmt (2) mib (1) system (1) sysdescr (1) experimental (3) private (4) enterprises (1) SNI (231) snmpv2 (6) joint-iso-ccitt(2) M. Leischner Netzmanagement Folie 18
ifnumber (1) interfaces (mib-2 2) iftable (2) Bespiel: Betriebszustand des Interfaces Nr. 5 ifoperstatus.5 1.3.6.1.2.1.2.2.1.8.5 ifindex (1) ifdescr (2) iftype (3) ifmtu (4) ifspeed (5) ifphysaddress (6) ifadminstatus (7) ifoperstatus (8) iflastchange (9) ifinoctets (10) ifinucastpkts (11) ifentry (1) ifspecific (22) ifoutqlen (21) ifouterrors (20) ifoutdiscards (19) ifoutnucastpkts (18) ifoutucastpkts (17) ifoutoctets (16) ifunknownprotos (15) ifinerrors (14) ifindiscards (13) ifinnucastpkts (12) Legend: INDEX in bold nach: Minhua Wang (http://www.homepages.dsu.edu/wangm/) M. Leischner Netzmanagement Folie 19
SNMP-Tabellen Grundprinizip: Tabelle wird (followed religiously) als dreistufige Struktur im OID Tree aufgebaut: <name>table (t) Name der Tabelle <name>entry (1) Steht als Verzweigpunkt für die Spalten der Tabelle <nameabbr><desccol> (i) Spaltenobjekt internet (1) directory (1) mgmt (2) mib (1) system (1) sysdescr (1) interfaces (2) ifnumber (1) iftable (2) ifentry (1) ifindex (1) ifdesc (2) iftype (3) ifmtu (4) ifspeed (5) M. Leischner Netzmanagement Folie 20
Identifikation von Managed Objects in SNMP Prinzip: Benutzung des OID Trees für die Identifikation der Objektinstanzen Schema für Identifikator einer SNMP Objektinstanz (SNMP-Variable): <Object Identifier>.<Suffix> Fall 1: Instanz eines einfachen (nichtzusammengesetzten) Objekts Es existiert nur eine Instanz suffix = 0 Beispiel: sysdescr.0 1.3.6.1.2.1.1.1.0 Fall 2: Instanz eines Spaltenobjekts <Object Identifier> <Suffix> identifiziert Spalte der Tabelle Suchindex in der Tabelle (wird in der MIB-Beschreibung festgelegt) M. Leischner Netzmanagement Folie 21
Beispiel: Verbindungsstatus einer TCP-Verbindung TcpConnEntry ::= SEQUENCE { tcpconnstate INTEGER, tcpconnlocaladdress IpAddress, tcpconnlocalport INTEGER (0..65535), tcpconnremaddress IpAddress, tcpconnremport INTEGER (0..65535) } OID von tcpconnstate: 1.3.6.1.2.1.6.13.1.1 M. Leischner Netzmanagement Folie 22
Identifikation von Instanzen von Managed Objects (am Beispiel des Verbindungsstatus einer TCP-Verbindung) Struktur des Suffix: INDEX { tcpconnlocaladdress, tcpconnlocalport, tcpconnremaddress, tcpconnremport } Somit ergibt sich als Identifier der entsprechenden Obiektinstanz: tcpconnstate.iplocal.portlocal.ipdest.portdest 1.3.6.1.2.1.6.13.1.1.194.23.86.23.2045.194.23.86.15.80 OID OCTET STRING INT OCTET STRING INT M. Leischner Netzmanagement Folie 23
4.3 SNMP Events M. Leischner Netzmanagement Folie 24
Events Außergewöhnliche Ereignisse der Ressource (Events) lösen im SNMP- Agenten eine Meldung an das Managersystem aus. Diese Meldungen werden als Traps (im Falle von SNMPv1) bzw. Notifications (im Falle von SNMPv2) bezeichnet. Ein Event enthält eine Fehlernummer (und bei Bedarf weitere Informationen). Im Rahmen von SNMP wird als Managementkonzept das sogenannte "trap directed polling"-modell verwendet (Polling der benötigten Information nach einem Hinweis durch einen Trap). Die Traps bzw. Notifications werden in SNMP nicht bestätigt. Insgesamt wird der Eventmechanismus von SNMP als sehr unzureichend beurteilt. M. Leischner Netzmanagement Folie 25
4.4 Structure of Management Information (SMI) M. Leischner Netzmanagement Folie 26
Structure of Management Information (SMI) Datentyp des MOs SMI definiert den ASN.1 basierenden syntaktischen Aufbau eines MIB-Moduls Ein MIB-Modul umfasst: Organisatorische Information (Autor,.) Beschreibung der MOs (mittels ASN.1-Konstrukt OBJECT TYPE) Einhängen des MOs in den OID-Tree Beispiel für eine MO-Definition mittel des OBTECT-TYPE-Macros: ifinoctets OBJECT-TYPE Einhängen in den OID-tree SYNTAX Counter MAX-ACCESS read-only STATUS mandatory DESCRIPTION M. Leischner Netzmanagement Folie 27 "The total number of octets received on the interface, including framing characters." ::= { ifentry 10 } not-accessible / read-only / read-write / accessiblefor notify (bei notification) current (gültig) OCTET STRING, der die Semantik des Objekts beschreibt deprecated (missbilligt, braucht nicht mehr implementiert werden, wird bald ungültig) obsolet
Einfaches Beispiel für allgemeinen Modulaufbau SNMPv2 KURS-MGMT-MIB DEFINITIONS ::= BEGIN IMPORTS OBJECT-TYPE, Integer32, experimental FROM SNMPv2-SMI kursmgmt MODULE-IDENTITY LAST-UPDATED "050402" ORGANISATION "FH " CONTACT-INFO "Martin Leischner DESCRIPTION "MIB fuer die Verwaltung von Kursen" ::= { experimental 1 } teilnehmer OBJECT IDENTIFIER ::= {kursmgmt 1 } tnanzahl OBJECT TYPE SYNTAX Integer32 (1..100) MAX-ACCESS read-write STATUS current DESCRIPTION "Anzahl der Kursteilnehmer (maximal 100)" ::= { teilnehmer 1 } END --Ende des Moduls M. Leischner Netzmanagement Folie 28 Object Type Macro zur Definition eines MOs Einbinden des MOs in OID-tree
Komplexeres Beispiel KURS-MGMT-MIB DEFINITIONS ::= BEGIN IMPORTS OBJECT-TYPE, Integer32, experimental FROM SNMPv2-SMI kursmgmt MODULE-IDENTITY LAST-UPDATED "050402" ORGANISATION "FH " CONTACT-INFO "Martin Leischner DESCRIPTION "MIB fuer die Verwaltung von Kursen" ::= { experimental 1 } kursmgmtevents OBJECT IDENTIFIER ::= {kursmgmt 1 } teilnehmer OBJECT IDENTIFIER ::= {kursmgmt 2 } M. Leischner Netzmanagement Folie 29
Komplexeres Beispiel Forts. tntable OBJECT TYPE SYNTAX SEQUENCE OF TnEntry ACCESS not-accessible STATUS current DESCRIPTION "Eine Liste der Kursteilnehmer. Die Anzahl der Kursteilnehmer ist durch tnanzahl gegeben." ::= { teilnehmer 2 } tnentry OBJECT-TYPE SYNTAX TnEntry -- TnEntry: erster Buchstabe groß! MAX-ACCESS not-accessible STATUS current DESCRIPTION "Tabelleneintrag Teilnehmerliste" INDEX { tnmatrikelnr ) ::={ tntable 1 } M. Leischner Netzmanagement Folie 30
Komplexeres Beispiel Forts. TnEntry ::= SEQUENCE { -- TnEntry: erster Buchstabe groß! tnmatrikelnr Integer32, tnname OCTET STRING, tnpunkte Integer32 } tnmatrikelnr OBJECT TYPE SYNTAX Integer32 (9000000..9999999) MAX-ACCESS read-write STATUS current DESCRIPTION "Matrikelnummer" ::= { tnentry 1 } tnname OBJECT TYPE SYNTAX OCTET STRING (0..40) MAX-ACCESS read-write STATUS current DESCRIPTION "Name des Studenten" ::= { tnentry 2 } M. Leischner Netzmanagement Folie 31
Komplexeres Beispiel Forts. tnpunkte OBJECT TYPE SYNTAX Integer32 (0..100) MAX-ACCESS read-write STATUS current DESCRIPTION "Anzahl der bereits erhaltenen Punkte" ::= { tnentry 3 } punkteaenderungevent NOTIFICATION-TYPE STATUS current DESCRIPTION "Wird bei jeder Aenderung der Punktezahl ausgelöst" ::= { kursmgmtevents 1 } END --Ende des Moduls M. Leischner Netzmanagement Folie 32
Ende M. Leischner Netzmanagement Folie 33