XML SNMP () ( ) 2002
XML SNMP Design and Implementation of SNMP Gateway for XML-based Network Management
Design and Implementation of SNMP Gateway for XML-based Network Management by Jeong-Hyuk Yoon Department of Computer and Communications Engineering POSTECH Graduate School for Information Technology A thesis submitted to the faculty of POSTECH Graduate School for Information Technology in partial fulfillment of the requirements for the degree of Master of Engineering in the Department of Computer and Communications Engineering Pohang, Korea December 17, 2001 Approved by Major Advisor
XML SNMP 2001 12 17 ( ) ( ) ( )
MCC 20002616, Jeong-Hyuk Yoon, Design and Implementation of SNMP Gateway for XML-based Network Management, XML SNMP, Department of Computer and Communications Engineering, 2002, 81P, Advisor: J Won-Ki Hong, Text in Korean ABSTRACT The research objective of this thesis is to develop a concrete SNMP MIB to XML translation algorithm and to implement an SNMP-XML gateway using the algorithm The gateway is used to transfer management information between an XML-based manager and SNMP-based agents SNMP is widely used for Internet management, but SNMP is insufficient to manage continuously growing huge networks because of its constraints in scalability and efficiency XML based network management architectures are newly proposed as an alternative to SNMP, but XML-based Network Management System (NMS) can not manage legacy SNMP agents directly We have researched the way to manage legacy SNMP agents with XMLbased manager, and we designed and implemented SNMP gateway for XMLbased NMS We defined both specification translation and interaction translation algorithms We also implemented automatic specification translator (SNMP MIB to XML Translator) and a SNMP gateway The SNMP gateway translates and relays messages between SNMP agent and XML-based manager system The SNMP gateway gives a way to manage networks composed of SNMP agents by using XML-based manager system
1 1 2 4 21 SNMP 4 211 212 213 SNMP SMI7 SNMP MIB 19 SNMP Protocol 22 22 XML 23 221 222 223 224 XML 24 XML DTD XML 26 XML 28 XML 29 3 31 31 SNMP 31 32 XML 33 321 322 323 324 34 XML 35 XML SNMP 37 SNMP MIB XML 37 33 38 4 40 41 40 i
411 412 40 41 42 47 421 422 SMIv1 47 SMIv2 51 43 58 431 432 433 SMIv1 59 SMIv2 60 61 5 63 51 63 52 65 6 SNMP 67 61 67 62 68 621 622 623 68 70-72 63 73 64 74 7 77 79 ii
1 SNMP 5 2 SMIv1 MIB 8 3 SMIv2 MIB 10 4 MIB 20 5 SNMPv2-MIB 21 6 SNMPv1 operations 22 7 SNMPv2 operations 23 8 25 9 XML DOM 29 10 XML 34 11 SNMP MIB to XML 64 12 SNMP-XML 67 13 70 14 1 74 15 2 74 16 3 75 17 XSL 75 18 Notification 76 iii
1 SNMP 6 2 SNMP SMI Data Type 18 3 DTD XML Schema 27 4 40 5 RFC2579 Textual Convention 57 6 SMIv1 XML Schema 60 7 SMIv2 XML Schema 60 8 XML Schema 62 9 SNMP-HTTP 69 iv
1 1980 (WWW: World Wide Web) [1] SNMP (Simple Network Management Protocol) [2] SNMP [3] 1990 SNMP SNMP XML [6] XML XML XML HTTP [3, 4], XML [5] HTTP XML, XML XML, HTTP XML 1
XML, (Embedded Web Server) HTTP XML SNMP SNMP SNMP XML SNMP XML SNMP SNMP MIB (Management Information Base) [17] SNMP XML XML SNMP MIB XML,, SNMP XML (Gateway) XML SNMP SNMP MIB XML, XML XML 2
SNMP 2, 3 4 SNMP MIB XML 5 6 SNMP-XML 7 3
2 SNMP XML 21 SNMP 1980 WWW ICMP (Internet Control Message Protocol) [9], IAB (Internet Archetecture Board) SNMP, CMIP(Common Management Information Protocol) [10] SNMP IETF SNMP CMIP SNMP SNMP 1990 IETF (Internet Engineering Task Force) [32], 1995 SNMPv2 (SNMP version 2) [21], 1999 4
SNMPv3 (SNMP version 3) [22] SNMP SNMPv1 SNMPv2 SNMP 1 / SNMP 1 SNMP (Polling) (trap),, : SNMP SMI (Structure of Management Information) [15, 18] 5
: SNMP MIB (Management Information Base) [17, 21] MIB, MIB (Private MIB) : SNMP (Request)/ (Response) (Trap) SNMP 1 SNMPv1 SNMPv2 SNMPv3 SMIv1 SMIv2 SMIv2 Get, GetNext, Set Trap Get, GetNext, GetBulk Set SNMPv2-trap Inform Get, GetNext, GetBulk Set SNMPv2-trap Inform SMI 1991 1999 1999 1155, 1212, 1213, 1901~1908, 2570~2576 RFC 1215 2578~2580 1 SNMP 1 6
211 SNMP SMI SMI SNMP ASN1 (Abstract Syntax Notation One) [14] MIB XML SMI MIB SNMP SMI SNMP MIB XML SMI OID 2111 SMIv1 SMIv1 (SMI version 1) RFC1155 [15], RFC1212 [16] OBJECT-TYPE SMIv1 internet OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 } directory OBJECT IDENTIFIER ::= { internet 1 } mgmt OBJECT IDENTIFIER ::= { internet 2 } experimental OBJECT IDENTIFIER ::= { internet 3 } private OBJECT IDENTIFIER ::= { internet 4 } enterprises OBJECT IDENTIFIER ::= { private 1 } 2 7
2 SMIv1 MIB internet OBJECT IDENTIFIER ::= { 1 3 6 1 } 1361 SMIv1 ASN1 OBJECT-TYPE RFC1155 RFC1212 OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::= "SYNTAX" type(objectsyntax) "ACCESS " Access "STATUS" Status DescrPart ReferPart IndexPart DefValPart VALUE NOTATION ::= value (VALUE ObjectName) Access ::= "read-only" "read-write" "write-only" "not-accessible" Status ::= "mandatory" "optional" "obsolete" "deprecated" DescrPart ::= "DESCRIPTION" value (description DisplayString) empty ReferPart ::= "REFERENCE" value (reference DisplayString) empty IndexPart ::= "INDEX" "{" IndexTypes "}" empty IndexTypes ::= IndexType IndexTypes "," IndexType IndexType ::= value (indexobject ObjectName) type (indextype) DefValPart ::= "DEFVAL" "{" value (defvalue ObjectSyntax) "}" empty END 8
SYNTAX, ACCESS STATUS, DESCRIPTION REFERENCE MIB DEFVAL 2112 SMIv2 SMIv2 (SMI version 2) SMIv2 RFC2578 (SNMPv2-SMI) [18], RFC2579 (SNMPv2-TC) [19], RFC2580 (SNMPv2-CONF) [20] SMIv2 -- the path to the root 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 } 3 9
3 SMIv2 MIB RFC2578(SNMPv2-SMI) [18], MODULE-IDENTITY MIB MODULE-IDENTITY MACRO ::= BEGIN TYPE NOTATION ::= "LAST-UPDATED" value(update UTCTime) "ORGANIZATION" Text "CONTACT-INFO" Text "DESCRIPTION" Text RevisionPart VALUE NOTATION ::= value(value OBJECT IDENTIFIER) RevisionPart ::= Revisions empty Revisions ::= Revision Revisions Revision Revision ::= "REVISION" value(update UTCTime) "DESCRIPTION" Text -- uses the NVT ASCII character set Text ::= """" string """" END LAST-UPDATED, ORGANIZATION, CONTACT-INFO, 10
DESCRIPTION, REVISION, REVISION DESCRIPTION, SMIv2 OBJECT-TYPE SMIv1 (MO : Managed Object) UNITS ASN1 OBJECT-TYPE MACRO ::= BEGIN TYPE NOTATION ::= "SYNTAX" Syntax UnitsPart "MAX-ACCESS" Access "STATUS" Status "DESCRIPTION" Text ReferPart IndexPart DefValPart VALUE NOTATION ::= value(value ObjectName) Syntax ::= type(objectsyntax) "BITS" "{" Kibbles "}" Kibbles ::= Kibble Kibbles "," Kibble Kibble ::= identifier "(" nonnegativenumber ")" UnitsPart ::= "UNITS" Text empty Access ::= "not-accessible" "accessible-for-notify" "read-only" "read-write" "read-create" Status ::= "current" "deprecated" "obsolete" ReferPart ::= "REFERENCE" Text empty IndexPart ::= "INDEX" "{" IndexTypes "}" "AUGMENTS" "{" Entry "}" empty IndexTypes ::= IndexType IndexTypes "," IndexType IndexType ::= "IMPLIED" Index Index Index ::= value(indexobject ObjectName) Entry ::= value(entryobject ObjectName) DefValPart ::= "DEFVAL" "{" value(defval Syntax) "}" empty Text ::= """" string """" END, NOTIFICATION-TYPE SNMPv2 (trap) ASN1 NOTIFICATION-TYPE MACRO ::= BEGIN TYPE NOTATION ::= ObjectsPart "STATUS" Status "DESCRIPTION" Text 11
ReferPart VALUE NOTATION ::= value(value NotificationName) ObjectsPart ::= "OBJECTS" "{" Objects "}" empty Objects ::= Object Objects "," Object Object ::= value(name ObjectName) Status ::= "current" "deprecated" "obsolete" ReferPart ::= "REFERENCE" Text empty Text ::= """" string """" END OBJECTS, STATUS, DESCRIPTION, REFERENCE MIB, OBJECT-IDENTITY OBJECT IDENTIFIER, ASN1 OBJECT-IDENTITY MACRO ::= BEGIN TYPE NOTATION ::= "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(value OBJECT IDENTIFIER) Status ::= "current" "deprecated" "obsolete" ReferPart ::= "REFERENCE" Text empty Text ::= """" string """" END STATUS, DESCRIPTION, REFERENCE MIB RFC2579(SNMPv2-TC) [19] TEXTUAL-CONVENTION SNMPv2 SNMP MIB TEXTUAL- CONVENTION ASN1 12
TEXTUAL-CONVENTION MACRO ::= BEGIN TYPE NOTATION ::= DisplayPart "STATUS" Status "DESCRIPTION" Text ReferPart "SYNTAX" Syntax VALUE NOTATION ::= value(value Syntax) -- adapted ASN1 DisplayPart ::= "DISPLAY-HINT" Text empty Status ::= "current" "deprecated" "obsolete" ReferPart ::= "REFERENCE" Text empty Text ::= value(ia5string) Syntax ::= type "BITS" "{" NamedBits "}" NamedBits ::= NamedBit NamedBits "," NamedBit NamedBit ::= identifier "(" number ")" -- number is nonnegative END TEXTUAL-CONVENTION DISPLAY-HINT, STATUS, DESCRIPTION, REFERENCE MIB, SYNTAX, BITS TruthValue ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents a boolean value" SYNTAX INTEGER { true(1), false(2) },, 64,, (-) RFC2580(SNMPv2-CONF) [20], OBJECT-GROUP (MO) 13
ASN1 OBJECT-GROUP MACRO ::= BEGIN TYPE NOTATION ::= ObjectsPart "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(value OBJECT IDENTIFIER) ObjectsPart ::= "OBJECTS" "{" Objects "}" Objects ::= Object Objects "," Object Object ::= value(objectname) Status ::= "current" "deprecated" "obsolete" ReferPart ::= "REFERENCE" Text empty Text ::= value(ia5string) END OBJECTS STATUS DESCRIPTION REFERENCE, NOTIFICATION-GROUP OBJECT-GROUP NOTIFICATION NOTIFICATION-GROUP MACRO ::= BEGIN TYPE NOTATION ::= NotificationsPart "STATUS" Status "DESCRIPTION" Text ReferPart VALUE NOTATION ::= value(value OBJECT IDENTIFIER) NotificationsPart ::= "NOTIFICATIONS" "{" Notifications "}" Notifications ::= Notification Notifications "," Notification Notification ::= value(notificationname) Status ::= "current" "deprecated" "obsolete" ReferPart ::= "REFERENCE" Text empty 14
Text ::= value(ia5string) END NOTIFICATIONS STATUS DESCRIPTION REFERENCE, MODULE-COMPLIANCE MIB ASN1 MODULE-COMPLIANCE MACRO ::= BEGIN TYPE NOTATION ::= "STATUS" Status "DESCRIPTION" Text ReferPart ModulePart VALUE NOTATION ::= value(value OBJECT IDENTIFIER) Status ::= "current" "deprecated" "obsolete" ReferPart ::= "REFERENCE" Text empty ModulePart ::= Modules Modules ::= Module Modules Module Module ::= "MODULE" ModuleName MandatoryPart CompliancePart ModuleName ::= identifier ModuleIdentifier empty ModuleIdentifier ::= value(object IDENTIFIER) empty MandatoryPart ::= "MANDATORY-GROUPS" "{" Groups "}" empty Groups ::= Group Groups "," Group Group ::= value(object IDENTIFIER) CompliancePart ::= Compliances empty Compliances ::= Compliance Compliances Compliance Compliance ::= ComplianceGroup Object ComplianceGroup ::= "GROUP" value(object IDENTIFIER) "DESCRIPTION" Text Object ::= "OBJECT" value(objectname) SyntaxPart WriteSyntaxPart AccessPart "DESCRIPTION" Text SyntaxPart ::= "SYNTAX" Syntax empty WriteSyntaxPart ::= "WRITE-SYNTAX" Syntax empty Syntax ::= type "BITS" "{" NamedBits "}" 15
NamedBits ::= NamedBit NamedBits "," NamedBit NamedBit ::= identifier "(" number ")" -- number is nonnegative AccessPart ::= "MIN-ACCESS" Access empty Access ::= "not-accessible" "accessible-for-notify" "read-only" "read-write" "read-create" Text ::= value(ia5string) END STATUS, DESCRIPTION REFERENCE MIB MANDATORY-GROUPS GROUP DESCRIPTION OBJECT SYNTAX OBJECT WRITE-ACCESS SYNTAX MIN-ACCESS OBJECT OBJECT DESCRIPTION OBJECT MODULE-COMPLIANCE XYZv2-MIB xyzmibcompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for XYZv2 entities which implement the XYZv2 MIB" MODULE -- compliance to the containing MIB module MANDATORY-GROUPS { xyzsystemgroup, xyzstatsgroup, xyztrapgroup, xyzsetgroup, xyzbasicnotificationsgroup } GROUP xyzv1group DESCRIPTION "The xyzv1 group is mandatory only for those XYZv2 entities which also implement XYZv1" ::= { xyzmibcompliances 1 } XYZv2-MIB MIB xyzsystemgroup, xyzstatsgroup, xyztrapgroup, xyzsetgroup, xyzbasicnotificationsgroup XYZv2 XYZv1 16
XYZv1Group, AGENT-CAPABILITIES SNMP MIB ASN1 RFC2580 [20] AGENT-CAPABILITIES MACRO ::= BEGIN TYPE NOTATION ::= "PRODUCT-RELEASE" Text "STATUS" Status "DESCRIPTION" Text ReferPart ModulePart VALUE NOTATION ::= value(value OBJECT IDENTIFIER) Status ::= "current" "obsolete" ReferPart ::= "REFERENCE" Text empty ModulePart ::= Modules empty Modules ::= Module Modules Module Module ::= "SUPPORTS" ModuleName "INCLUDES" "{" Groups "}" VariationPart ModuleName ::= identifier ModuleIdentifier ModuleIdentifier ::= value(object IDENTIFIER) empty Groups ::= Group Groups "," Group Group ::= value(object IDENTIFIER) VariationPart ::= Variations empty Variations ::= Variation Variations Variation Variation ::= ObjectVariation NotificationVariation NotificationVariation ::= "VARIATION" value(notificationname) AccessPart "DESCRIPTION" Text ObjectVariation ::= "VARIATION" value(objectname) SyntaxPart WriteSyntaxPart AccessPart CreationPart DefValPart "DESCRIPTION" Text -- must be a refinement for object's SYNTAX clause SyntaxPart ::= "SYNTAX" Syntax empty WriteSyntaxPart ::= "WRITE-SYNTAX" Syntax empty Syntax ::= type "BITS" "{" NamedBits "}" NamedBits ::= NamedBit NamedBits "," NamedBit NamedBit ::= identifier "(" number ")" -- number is nonnegative AccessPart ::= "ACCESS" Access empty Access ::= "not-implemented" -- only "not-implemented" for notifications "accessible-for-notify" "read-only" "read-write" "read-create" -- following is for backward-compatibility only 17
"write-only" CreationPart ::= "CREATION-REQUIRES" "{" Cells "}" empty Cells ::= Cell Cells "," Cell Cell ::= value(objectname) DefValPart ::= "DEFVAL" "{" Defvalue "}" empty Defvalue :: value(objectsyntax) "{" BitsValue "}" BitsValue ::= BitNames empty BitNames ::= BitName BitNames "," BitName BitName ::= identifier Text ::= value(ia5string) END PRODUCT-RELEASE STATUS DESCRIPTION SUPPORTS MIB 2113 Data Type SMI 2 DataType SNMPv1 SNMPv2 INTEGER Unsigned32 Counter32(Counter) Counter64 Gauge32(Gauge) TimeTicks OCTECT STRING IpAddress OBJECT IDENTIFIER Opaque SMIv1 2 SNMP SMI Data Type (Primitive type) INTEGER, OCTET STRING, NULL, OBJECT IDENTIFIER, (Constructor type) SEQUENCE, 18
SEQUENCE-OF 2, (Application-wide Type) Networkaddress, Ipaddress, Counter, Gauge, Timeticks, Opaque 6 SMIv2 Counter64, Unsigned32 212 SNMP MIB MIB SNMP SMI SNMP MIB MIB MIB(standard MIB), MIB(private MIB) SNMPv1 MIB RFC1213 MIB, SNMPv2 MIB RFC1907 SNMPv2-MIB MIB 2121 MIB- SMIv1 MIB RFC1213 [17] MIB 10 mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } system OBJECT IDENTIFIER ::= { mib-2 1 } interfaces OBJECT IDENTIFIER ::= { mib-2 2 } at OBJECT IDENTIFIER ::= { mib-2 3 } ip OBJECT IDENTIFIER ::= { mib-2 4 } 19
icmp OBJECT IDENTIFIER ::= { mib-2 5 } tcp OBJECT IDENTIFIER ::= { mib-2 6 } udp OBJECT IDENTIFIER ::= { mib-2 7 } egp OBJECT IDENTIFIER ::= { mib-2 8 } transmission OBJECT IDENTIFIER ::= { mib-2 10 } snmp OBJECT IDENTIFIER ::= { mib-2 11 } system interface at, transmission 4 mib-2 system, intercaces, at 4 MIB 20
2122 SNMPv2 SMIv2 SNMPv2 MIBRFC1907 [21] MIB snmpv2 { internet 2 } mib-2 system, snmp SNMPv2-MIB 5 5 SNMPv2-MIB 21
213 SNMP Protocol SMI MIB SNMP SNMPv1 6 6 SNMPv1 operations 6 (a) (b) (c) (d) SNMPv2 bulk-transger SNMPv2 7 22
7 SNMPv2 operations SNMPv2 GetBulk inform GetBulk, inform 22 XML XML [6] W3C (World Wide Web Consortium) [33] 1998, SGML (Standard Generalized Markup Language ) [8] XML HTML [7],,, SGML 23
XML HTML HTTP SGML XML XML 221 XML 8 XML <?xml version="10" encoding="utf-8"?> <document pages="1"> <receiver> <name> </name> <address> </address> <phone>054-123-4567 </phone> <fax>054-123-4568 </fax> </receiver> <sender> <name> </name> <address> </address> <phone>054-279-2222 </phone> <fax> 054-279-3333</fax> </sender> <date>20011027</date> <title> </title> <contents> 1 </contents> </document> XML <?xml version="10"?> XML 24
8 XML DTD (Document Type Definition) [30] <?xml version="10" encoding="utf-8"?> <!ELEMENT document (receiver, sender, date, title, contents)> <!ATTLIST document pages CDATA #REQUIRED> <!ELEMENT receiver (name, address, phone, fax)> <!ELEMENT name (#PCDATA)> <!ELEMENT address (#PCDATA)> <!ELEMENT phone (#PCDATA)> <!ELEMENT fax (#PCDATA)> <!ELEMENT sender (name, address, phone, fax)> <!ELEMENT date (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT contents (#PCDATA)> XML (schema) XML 25
<?xml version="10" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://wwww3org/2000/10/xmlschema" elementformdefault="qualified"> <xsd:element name="document"> <xsd:complextype> <xsd:sequence> <xsd:element name="receiver" type="receivertype"/> <xsd:element name="sender" type="receivertype"/> <xsd:element name="date" type="xsd:date"/> <xsd:element name="title" type="xsd:string"/> <xsd:element name="contents" type="xsd:string"/> </xsd:sequence> <xsd:attribute name="pages" type="xsd:int" use="required"/> </xsd:complextype> </xsd:element> <xsd:complextype name="receivertype"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="address" type="xsd:string"/> <xsd:element name="phone" type="phonetype"/> <xsd:element name="fax" type="phonetype"/> </xsd:sequence> </xsd:complextype> <xsd:complextype name="phonetype"> <xsd:simplecontent> <xsd:restriction base="xsd:string"> <xsd:pattern value="0(\d{2} \d{3} c \d{4})-(\d{3} ]d{4})-\d{4}"/> </xsd:restriction> </xsd:simplecontent> </xsd:complextype> </xsd:schema> 222 XML DTD XML DTD XML 10 [6] XML (XML schema) 1 XML-Data [36], RDF [37], IBM DCD(Document Content 1 XML Schema W3C XML schema XML 26
Description) [38] XML W3C XML XML XML Schema [31] XML Schema DTD DTD XML Schema 3 3 DTD XML Schema XML Schema XML 10 DTD 3 XML XML API, 44 (Namespace) 27
223 XML HTML XML, XML HTML XSL (extensible Stylesheet Language) [24] XML XSL XML, XML DTD XML, XML HTML Xlink [34] Xpointer [35], API XML SGML XML DTD DOM(Document Object Model) [25] W3C XML HTML API DOM XML,, SAX (Simple API for XML) [26] XML, 9 DOM XML XML XML 28
29 API DOM API DOM 9 XML DOM 224 XML XML XML SNMP MIB XML HTTP HTTP
30 XML XML API, XML XML SNMP
3 SNMP XML, SNMP XML 31 SNMP SNMP, SNMP, SNMP, MIB MIB (IP routing table, TCP connection table, accounting table ), SNMP 31
[4],, SNMP SNMP get Get-bulk max-repetition, SNMP, CPU, SNMP 32
, SNMP,, SNMP SNMP SNMP SNMP 224 XML 32 XML XML XML XML, XML 33
321 [3] XML XML WBM agent 10 [3] (a) (b) (c) W B M A g e n t GET /MgtConf//Manager HTTP/11 HTTP/11 200 OK <Manager> < UserName> juht </UserName> </Manager> <Manager> < UserName> sehee </UserName> </Manager> POST //ManagerList HTTP/11 <Manager Operation= Add > < UserName> really97 </UserName> </Manager> HTTP/11 200 OK POST /MgmtConf/Alarm/FanStatus HTTP/11 <Alarm> < FanStatus> Fail </FanStatus> </Alarm> HTTP/11 200 OK W B M M a n a g e r 10 XML 10 (a) HTTP GET 34
(b) HTTP POST (c) SNMP get, set, trap HTTP XML, XML XML XML SNMP XML SNMP SNMP XML WBM XML SNMP 322 XML JP Martin-Flatin, XML [4], SNMP 35
SNMP MIB XML Modellevel mapping Metamodel-level mapping Model-level mapping DTD SNMP MIB SNMP XML DTDElement Attribute <interface> <bandwidth type= string >100 Mbit/s</bandwidth> </interface> XML Validation MIBDTD DTD XML MIB Metamodel-level mapping DTD MIB MIB Element Model-level mapping Metamodel-level mapping <class name= interface > <property name= bandwidth type= string > <value>100 Mbit/s</value> </property> </class> Martin-Flatin XML IP, HTTP/XML, SNMP MIB XML 36
, SNMP MIB MIB interface XML SMI 323 XML SNMP XML [5] SNMP MIB SNMP MIB XML XML DOM DOM XML SNMP MIB XML DTD DTD 324, SNMP (trap) 324 SNMP MIB XML SNMP MIB XML, JP Martin-Flatin SNMP MIB XML DTD [4] MIB MIB system interface 37
, Bell CORBA/SNMP [11] SNMP MIB XML MIB DTD XML, Frank Strauss MIB libsmi [12] MIB XML, JAVA, C, IDL DTD MIB OID IBM ASN1 XML [13] ASN1 XML SNMP SMI SNMP MIB, DTD MIB, MIB XML MIB MIB XML 33 SNMP XML 321 XML 38
XML XML XML SNMP XML SNMP SNMP-XML XML HTTP XML, SNMP SNMP SNMP (Specification Translation) (Interaction Translation) SNMP SNMP MIB XML SNMP MIB XML SNMP MIB XML DTD XML Schema SNMP XML HTTP SNMP 39
4 SNMP MIB XML 41 SNMP MIB, XML 4 SNMP SMI XML ( ) (Element) (Attribute) 4 SNMP MIB XML (Element) MIB (Clause) XML (Attribute) 411 SNMP MIB ASN1 DEFINITION BEGIN END 40
modulename DEFINITIONS ::= BEGIN END XML XML ( ), DTD XML Schema XML DTD XML <?xml version="10" encoding="utf-8"?> <!ELEMENT modulename ( )> <?xml version="10" encoding="utf-8"?> <xsd:schema xmlns:xsd="http://wwww3org/2000/10/xmlschema" elementformdefault="qualified"> <xsd:element name="modulename"> <xsd:complextype> <xsd:sequence> ( ) </xsd:sequence> <xsd:attribute name="version" type="xsd:string" use="required"/> </xsd:complextype> </xsd:element> </xsd:schema> 412 4121 OBJECT IDENTIFIER SNMP MIB RFC1213 [17] 41
mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } mgmt mib=2 XML DTD oid <!ELEMENT mgmt (mib-2)> <!ATTLIST mgmt oid CDATA #FIXED "13612"> <!ELEMENT mib-2 ( )> <!ATTLIST mib-2 oid CDATA #FIXED "136121"> XML Schema <xsd:element name="mgmt"> <xsd:complextype> <xsd:sequence> <xsd:element ref="mib-2"/> </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="13612"/> </xsd:complextype> </xsd:element> <xsd:element name="mib-2"> <xsd:complextype> <xsd:sequence> ( ) </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="136121"/> </xsd:complextype> </xsd:element>, oid MIB OID 4122 (leaf node), 42
MIB sysdescr sysdescr OBJECT-TYPE SYNTAX DisplayString (SIZE (0255)) ACCESS read-only STATUS mandatory DESCRIPTION "A textual description of the entity " ::= { system 1 } sysdescr DTD <!ELEMENT sysdescr #PCDATA> <!ATTLIST sysdescr oid CDATA #FIXED "13612111" syntax CDATA #FIXED "DisplayString (SIZE (0255))" access CDATA #FIXED "read-only" status CDATA #FIXED "mandatory" description CDATA #FIXED "A textual description of the entity "> MIB sysdescr #PCDATA XML Schema <xsd:element name="sysdescr"> <xsd:complextype> <xsd:simplecontent> <xsd:restriction base="xsd:string"> <xsd:minlength value="0"/> <xsd:maxlength value="255"/> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="13612111"/> <xsd:attribute name="access" type="xsd:string" use="fixed" value="read-only"/> <xsd:attribute name="status" type="xsd:string" use="fixed" value="mandatory"/> <xsd:attribute name="description" type="xsd:string" use="fixed" value= "A textual description of the entity "/> </xsd:restriction> </xsd:simplecontent> </xsd:complextype> </xsd:element> XML Schema DTD SYNTAX DisplayString (SIZE (0255)) (string) 0 255 DTD XML Schema <restriction> 43
4123 SYNTAX, SEQUENCE OF SNMP MIB id SNMP MIB id SNMPv1 MIBifTable iftable OBJECT-TYPE SYNTAX SEQUENCE OF IfEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "A list of interface entries The number of entries is given by the value of ifnumber" ::= { interfaces 2 } ifentry OBJECT-TYPE SYNTAX IfEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "An interface entry containing objects at the subnetwork layer and below for a particular interface" INDEX { ifindex } ::= { iftable 1 } MIB XML DTD <!ELEMENT iftable (ifentry*)> <!ATTLIST iftable oid CDATA #FIXED "13612122"> <!ATTLIST iftable syntax CDATA #FIXED "SEQUENCE OF IfEntry" access CDATA #FIXED "not-accessible" status CDATA #FIXED "mandatory" description CDATA #FIXED "A list of interface entries The number of entries is given by the value of ifnumber"> <!ELEMENT ifentry (ifindex, ifdescr, iftype, ifmtu, ifspeed, ifphysaddress, ifadminstatus, ifoperstatus, iflastchange, ifinoctets, ifinucastpkts, ifinnucastpkts, ifindiscards, ifinerrors, 44
ifoperstatus, iflastchange, ifinoctets, ifinucastpkts, ifinnucastpkts, ifindiscards, ifinerrors, ifinunknownprotos, ifoutoctets, ifoutucastpkts, ifoutnucastpkts, ifoutdiscards, ifouterrors, ifoutqlen, ifspecific)> <!ATTLIST ifentry oid CDATA #FIXED "136121221" syntax CDATA #FIXED "IfEntry" access CDATA #FIXED "not-accessible" status CDATA #FIXED "mandatory" description CDATA #FIXED "An interface entry containing objects at the subnetwork layer and below for a particular interface" index CDATA #FIXED "ifindex" id CDATA #REQUIRED"> XML Schema <xsd:element name="iftable"> <xsd:complextype> <xsd:sequence> <xsd:element ref="ifentry" minoccurs="0" maxoccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="13612122"/> <xsd:attribute name="access" type="xsd:string" use="fixed" value="not-accessible"/> <xsd:attribute name="status" type="xsd:string" use="fixed" value="mandatory"/> <xsd:attribute name="description" type="xsd:string" use="fixed" value= "A list of interface entries The number of entries is given by the value of ifnumber"/> </xsd:complextype> </xsd:element> <xsd:element name="ifentry"> <xsd:complextype> <xsd:sequence> <xsd:element ref="ifindex" minoccurs="0"/> <xsd:element ref="ifdescr" minoccurs="0"/> <xsd:element ref="iftype" minoccurs="0"/> <xsd:element ref="ifmtu" minoccurs="0"/> <xsd:element ref="ifspeed" minoccurs="0"/> <xsd:element ref="ifphysaddress" minoccurs="0"/> <xsd:element ref="ifadminstatus" minoccurs="0"/> <xsd:element ref="ifoperstatus" minoccurs="0"/> <xsd:element ref="iflastchange" minoccurs="0"/> <xsd:element ref="ifinoctets" minoccurs="0"/> <xsd:element ref="ifinucastpkts" minoccurs="0"/> <xsd:element ref="ifinnucastpkts" minoccurs="0"/> <xsd:element ref="ifindiscards" minoccurs="0"/> <xsd:element ref="ifinerrors" minoccurs="0"/> <xsd:element ref="ifinunknownprotos" minoccurs="0"/> 45
<xsd:element ref="ifoutoctets" minoccurs="0"/> <xsd:element ref="ifoutucastpkts" minoccurs="0"/> <xsd:element ref="ifoutnucastpkts" minoccurs="0"/> <xsd:element ref="ifoutdiscards" minoccurs="0"/> <xsd:element ref="ifouterrors" minoccurs="0"/> <xsd:element ref="ifoutqlen" minoccurs="0"/> <xsd:element ref="ifspecific" minoccurs="0"/> </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="136121221"/> <xsd:attribute name="syntax" type="xsd:string" use="fixed" value="ifentry"/> <xsd:attribute name="access" type="xsd:string" use="fixed" value="not-accessible"/> <xsd:attribute name="status" type="xsd:string" use="fixed" value="mandatory"/> <xsd:attribute name="description" type="xsd:string" use="fixed" value= "An interface entry containing objects at the subnetwork layer and below for a particular interface"/> <xsd:attribute name="index" type="xsd:string" use="fixed" value="ifindex"/> <xsd:attribute name="id" type="xsd:string" use="required"/> </xsd:complextype> </xsd:element> INDEX XML id 4124 IMPORT EXPORT ASN1 SNMP MIB IMPORT EXPORT IMPORT MIB IMPORT, MIB MIB IMPORT, MIB 43 XML (namespace) EXPORTIMPORT MIB 46
MIB, SNMPv2 SMI EXPORT XML EXPORT 42 SNMP MIB SMI XML SNMP SMI 421 SMIv1 SMIv1 OBJECT-TYPE TRAP-TYPE 4211 OBJECT-TYPE OBJECT-TYPE SMIv1 MIB MIB XML OBJECT-TYPE MIB nodename OBJECT-TYPE SYNTAX syntaxtype ACCESS accesstype STATUS statustype DESCRIPTION descriptiontext REFERENCE referencetype INDEX indexlist DEFVAL defaultvalue ::= { parentnodename nodenumber } 47
MIB XML DTD <!ELEMENT parentnodename nodename > <!ELEMENT nodename (#PCDATA elemant names)> <!ATTLIST nodename syntax CDATA #FIXED "syntaxtype" access CDATA #FIXED "accesstype" status CDATA #FIXED "statustype" description CDATA #FIXED "descriptiononnode" reference CDATA #FIXED "referencetype" index CDATA #FIXED "indexlist" defval CDATA #FIXED "defaultvalue" oid CDATA #FIXED "oidvalue"> #FIXED #FIXED DTD XML oid oid DTD XML Schema SYNTAX XML Schema MIB XML Schema <xsd:element name="nodename"> <xsd:complextype> <xsd:simplecontent> <xsd:restriction base="xsd:string"> <xsd:sequence> ( ) </xsd:sequence> 48
<xsd:attribute name="oid" type="xsd:string" use="fixed" value="oidvalue"/> <xsd:attribute name="access" type="xsd:string" use="fixed" value=" accesstype"/> <xsd:attribute name="status" type="xsd:string" use="fixed" value=" statustype"/> <xsd:attribute name="description" type="xsd:string" use="fixed" value= "descriptiontext "/> <xsd:attribute name="reference" type="xsd:string" use="fixed" value= "referencetype"/> <xsd:attribute name="index" type="xsd:string" use="fixed" value= "indexlist"/> <xsd:attribute name="defval" type="xsd:string" use="fixed" value= "defaultvalue"/> </xsd:restriction> </xsd:simplecontent> </xsd:complextype> </xsd:element> nodename XML, ACCESS, STATUS, SYNTAX XML syntaxtype <xsd:restriction base="xsd:string"> type, oid OID SNMP XML oid OID RFC1213 MIB system oid 1361211 use="fixed" XML Schema XML 49
4212 TRAP-TYPE RFC1215 SNMP (trap) TRAP-TYPE MACRO ::= BEGIN TYPE NOTATION ::= "ENTERPRISE" value (enterprise OBJECT IDENTIFIER) VarPart DescrPart ReferPart VALUE NOTATION ::= value (VALUE INTEGER) VarPart ::= "VARIABLES" "{" VarTypes "}" empty VarTypes ::= VarType VarTypes "," VarType VarType ::= value (vartype ObjectName) DescrPart ::= "DESCRIPTION" value (description DisplayString) empty ReferPart ::= "REFERENCE" value (reference DisplayString) empty END nodename TRAP-TYPE ENTERPRISE enterprisename VARIABLES variabletype DESCRIPTION descriptiontext REFERENCE referencetype ::= trapnumber XML <nodename trapnumber= trapnumber enterprise= enterprisename description= descriptiontext reference= referencetype > variabletype </nodename> MIB XML Schema <xsd:element name="nodename"> <xsd:complextype> <xsd:simplecontent> 50
<xsd:restriction base="xsd:string"> <xsd:attribute name="trapnumber" type="xsd:int" use="fixed" value="trapnumber"/> <xsd:attribute name="enterprise" type="xsd:string" use="fixed" value="enterprisename"/> <xsd:attribute name="description" type="xsd:string" use="fixed" value="descriptiontext "/> <xsd:attribute name="reference" type="xsd:string" use="fixed" value="referencetype"/> </xsd:restriction> </xsd:simplecontent> </xsd:complextype> </xsd:element> 422 SMIv2 SNMPv2 SMI OBJECT-TYPE 4221 MODULE-IDENTITY 2112 nodename MODULE-IDENTITY LAST-UPDATED last-updated ORGANIZATION organization CONTACT-INFO contact-info DESCRIPTION description REVISION revision DESCRIPTION revision_description ::= { parentnodename nodenumber } OBJECT IDENTIFIER oid XML Schema <annotation> DTD 51
<!ELEMENT parentnodename (nodename)> <!ATTLIST parentnodename oid CDATA #FIXED "parent_oid"> <!ELEMENT nodename ( )> <!ATTLIST nodename oid CDATA #FIXED "parent_oid nodenumber"> parent_oid parentnodename OID, parent_oid NodeNumber OID XML Schema <xsd:element name=" parentnodename"> <xsd:complextype> <xsd:sequence> <xsd:element ref="nodename"/> </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="parent_oid"/> </xsd:complextype> </xsd:element> <xsd:element name="nodename "> <xsd:complextype> <xsd:sequence> ( ) </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value=" parent_oid nodenumber "/> </xsd:complextype> </xsd:element> 4222 OBJECT-TYPE 2112 SMIv2 OBJECT-TYPE nodename OBJECT-TYPE SYNTAX syntaxtype UNITS unitstype MAX-ACCESS accesstype STATUS statustype DESCRIPTION descriptiontext 52
REFERENCE referencetype INDEX indexlist DEFVAL defaultvalue ::= { parentnodename nodenumber } SMIv1 OBJECT-TYPE DTD, MAX-ACCESS SMIv1 access <!ELEMENT parentnodename nodename > <!ELEMENT nodename (#PCDATA elemant names)> <!ATTLIST nodename syntax CDATA #FIXED "syntaxtype" units CDATA #FIXED "unitstype" access CDATA #FIXED "accesstype" status CDATA #FIXED "statustype" description CDATA #FIXED "descriptiononnode" reference CDATA #FIXED "referencetype" index CDATA #FIXED "indexlist" defval CDATA #FIXED "defaultvalue" oid CDATA #FIXED "oidvalue"> SMIv1 XML Schema <xsd:element name="nodename"> <xsd:complextype> <xsd:simplecontent> <xsd:restriction base="xsd:string"> <xsd:sequence> ( ) </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="oidvalue"/> <xsd:attribute name="units" type="xsd:string" use="fixed" value="unitstype"/> <xsd:attribute name="access" type="xsd:string" use="fixed" value="accesstype"/> <xsd:attribute name="status" type="xsd:string" use="fixed" value="statustype"/> <xsd:attribute name="description" type="xsd:string" use="fixed" value= "descriptiontext "/> <xsd:attribute name="reference" type="xsd:string" use="fixed" value= "referencetype"/> <xsd:attribute name="index" type="xsd:string" use="fixed" value= "indexlist"/> <xsd:attribute name="defval" type="xsd:string" use="fixed" value= "defaultvalue"/> </xsd:restriction> </xsd:simplecontent> </xsd:complextype> </xsd:element> 53
4223 NOTIFICATION-TYPE 2112 NOTIFICATION-TYPE nodename NOTIFICATION-TYPE OBJECTS objectstype STATUS statustype DESCRIPTION descriptiontext REFERENCE referencetype ::= { parentnodename nodenumber } OID XML Schema <xsd:element name="nodename"> <xsd:complextype> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="oidvalue"/> <xsd:attribute name="objects" type="xsd:string" use="fixed" value="objectstype"/> <xsd:attribute name="status" type="xsd:string" use="fixed" value="statustype"/> <xsd:attribute name="description" type="xsd:string" use="fixed" value= "descriptiontext "/> <xsd:attribute name="reference" type="xsd:string" use="fixed" value= "referencetype"/> </xsd:complextype> </xsd:element> oid 4224 OBJECT-IDENTITY OBJECT-IDENTITY nodename OBJECT-IDENTITY STATUS statustype DESCRIPTION descriptiontext 54
REFERENCE referencetext ::= { parentnodename nodenumber } XML DTD <!ELEMENT parentnodename nodename> <!ATTLIST parentnodename oid CDATA #FIXED "oidstring"> <!ELEMENT nodename ( )> <!ATTLIST nodename oid CDATA #FIXED "oidstring"> <!ATTLIST nodename status CDATA #FIXED "statustype"> <!ATTLIST nodename descriptin CDATA #FIXED "descriptiontext "> <!ATTLIST nodename reference CDATA #FIXED " referencetext "> MIB, oid OID XML Schema <xsd:element name="parentnodename"> <xsd:complextype> <xsd:sequence> <xsd:element ref="nodename"/> </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="oidstring"/> </xsd:complextype> </xsd:element> <xsd:element name="nodename"> <xsd:complextype> <xsd:sequence> ( ) </xsd:sequence> <xsd:attribute name="oid" type="xsd:string" use="fixed" value="oidstring"/> <xsd:attribute name="status" type="xsd:string" use="fixed" value="statustext"/> <xsd:attribute name="description" type="xsd:string" use="fixed" value=" descriptiontext "/> <xsd:attribute name="reference" type="xsd:string" use="fixed" value=" referencetext "/> </xsd:complextype> </xsd:element> 55
4225 TEXTUAL-CONVENTION TEXTUAL-CONVENTION NewTypeName ::= TEXTUAL-CONVENTION DISPLAY-HINT display-hinttext STATUS statustype DESCRIPTION descriptiontext REFERENCE referencetext SYNTAX syntaxtype NewTypeName display-hinttext, statustype syntaxtype descriptiontext, referencetext NewTypeName syntaxtype XML Schema <xsd:simpletype name=" NewTypeName"> <xsd:restriction base="xsd: syntaxtype"> ( ) </xsd:restriction> </xsd:simpletype> RFC2579 [19] 5 XML SNMPv2-TC DisplayString ::= TEXTUAL-CONVENTION DISPLAY-HINT "255a" STATUS current SYNTAX OCTET STRING (SIZE (0255)) XML Schema <xsd:simpletype name="displaystring"> <xsd:restriction base="xsd:string"> <xsd:minlength value="0"/> <xsd:maxlength value="255"/> </xsd:restriction> </xsd:simpletype> 56
PhysAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x:" STATUS current DESCRIPTION "Represents media- or physicallevel addresses" SYNTAX OCTET STRING MacAddress ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x:" STATUS current DESCRIPTION "Represents an 802 MAC SYNTAX OCTET STRING (SIZE (6)) TruthValue ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents a boolean value" SYNTAX INTEGER { true(1), false(2) } TestAndIncr ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents integer-valued information used for atomic operations SYNTAX INTEGER (02147483647) AutonomousType ::= TEXTUAL- CONVENTION STATUS current DESCRIPTION "Represents " SYNTAX OBJECT IDENTIFIER VariablePointer ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A pointer to a " SYNTAX OBJECT IDENTIFIER RowPointer ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Represents " SYNTAX OBJECT IDENTIFIER <xsd:simpletype name=" PhysAddress"> <xsd:restriction base="xsd:string"> <xsd:minlength value="0"/> <xsd:maxlength value="255"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" MacAddress"> <xsd:restriction base="xsd:string"> <xsd:minlength value="0"/> <xsd:maxlength value="6"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" TruthValue"> <xsd:restriction base="xsd:int"> <xsd:enumeration value="1"/> <xsd:enumeration value="2"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" TestAndIncr"> <xsd:restriction base="xsd:int"> <xsd:mininclusive value="0"/> <xsd:maxinclusive value="2147483647"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" AutonomousType"> <xsd:restriction base="xsd:string"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" VariablePointer"> <xsd:restriction base="xsd:string"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" RowPointer"> <xsd:restriction base="xsd:string"> </xsd:restriction> </xsd:simpletype> 5 RFC2579 Textual Convention XML (namespace) XML 4226 SNMPv2-CONF OBJECT-GROUP NOTIFICATION-GROUP 57
XML MODULE-COMPLIANCE MIB, AGENT-CAPABILITIES SNMP MIB XML 43 SNMP MIB XML DTD W3C XML Schema XML Schema,, XML (Validation), XML SMI XML Schema SMI (Application)MIB 58
431 SMIv1 SMIv1 XML Schema 6 INTEGER OCTET STRING SMI OBJECT IDENTIFIER NULL SEQUENCE SEQUENCE OF NetworkAddress ::= CHOICE { internet IpAddress } IpAddress ::= OCTET STRING (SIZE (4) Counter ::= INTEGER (04294967295) Gauge ::= INTEGER (04294967295) XML Schema <xsd:simpletype name="int"> <xsd:restriction base="xsd:int"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" OctectString"> <xsd:restriction base="xsd:string"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" ObjectId"> <xsd:restriction base="xsd:string"> </xsd:restriction> </xsd:simpletype> null <xsd:complextype> <xsd:all> <xsd:element name= /> </xsd:all> </xsd:simpletype> <xsd:complextype> <xsd:sequence> <xsd:element name= /> </xsd:sequence> </xsd:simpletype> <xsd:simpletype name="networkaddress"> <xsd:restriction base=" IpAddress"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" IpAddress"> <xsd:restriction base="xsd:string"> <xsd:pattern value="(([1-9]?[0-9] 1[0-9][0-9] 2[0-4][0-9] 25[0-5])\){3}([1-9]?[0-9] 1[0-9][0-9] 2[0-4][0-9] 25[0-5])"/> </xsd:rest riction> </xsd:simpletype> <xsd:simpletype name=" Counter"> <xsd:restriction base="xsd:unsignedint"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" Gauge"> <xsd:restriction base="xsd:unsignedint"> </xsd:restriction> </xsd:simpletype> 59
TimeTicks ::= INTEGER (04294967295) Opaque ::= OCTET STRING <xsd:simpletype name=" TimeTicks"> <xsd:restriction base="xsd:unsignedint"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" Opaque"> <xsd:restriction base="xsd:string"> </xsd:restriction> </xsd:simpletype> 6 SMIv1 XML Schema SEQUENCE SEQUENCE OF IpAddress IP Address [0-255][0-255][0-255][0-255] 432 SMIv2 SMIv2 XML Schema 7 SMI Counter32 ::= INTEGER (04294967295) Counter64 ::=INTEGER (018446744073709551615) Gauge32 ::= INTEGER (04294967295) Unsigned32 ::= INTEGER (04294967295) XML Schema <xsd:simpletype name=" Counter32"> <xsd:restriction base="xsd:unsignedint"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" Counter64"> <xsd:restriction base="xsd:unsignedlong"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" Gauge32"> <xsd:restriction base="xsd:unsignedint"> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" Unsigned32"> <xsd:restriction base="xsd:unsignedint"> </xsd:restriction> </xsd:simpletype> 7 SMIv2 XML Schema 60
XML Schema 433 SNMP MIB DisplayString ::= OCTET STRING DTD XML XML Schema 8 MIB XML Schema Enumerated INTEGERs ( ): SYNTAX INTEGER { up(1), down(2), testing(3) } DisplayString (SIZE (0255)) PhysAddress Integer32 (100200) <xsd:complextype> <xsd:simplecontent> <xsd:restriction base="xsd:int"> <xsd:enumeration value=" 1"/> <xsd:enumeration value=" 2"/> <xsd:enumeration value=" 3"/> </xsd:restriction> </xsd:simplecontent> </xsd:complextype> <xsd:simpletype name=" DisplayString_0_255"> <xsd:restriction base="xsd:string"> <xsd:minlength value="0"/> <xsd:maxlength value="255"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype name=" PhysAddress"> <xsd:restriction base="xsd:string"> <xsd:minlength value="0"/> <xsd:maxlength value="17"/> </xsd:restriction> </xsd:simpletype>, <xsd:simpletype name=" PhysAddress"> <xsd:list itemtype= xsd:binary > <xsd:length value="6"/> </xsd:list> </xsd:simpletype> <xsd:simpletype name="int32_100_200"> <xsd:restriction base="xsd:unsignedint"> <xsd:mininclusive value="100"/> <xsd:maxinclusive value=" 200"/> </xsd:restriction> </xsd:simpletype> ( ) Hex: 00 00 21 DE 16 01 61
Integer32 (-10010 100200) <xsd:simpletype name=" union_example"> <xsd:simpletype> <xsd:restriction base="xsd:int"> <xsd:mininclusive value="-100"/> <xsd:maxinclusive value=" 10"/> </xsd:restriction> </xsd:simpletype> <xsd:simpletype> <xsd:restriction base="xsd:unsignedint"> <xsd:mininclusive value="100"/> <xsd:maxinclusive value="200"/> </xsd:restriction> </xsd:simpletype> </xsd:simpletype> 8 XML Schema,, XML Schema 62
5 4 SNMP MIB XML Schema 51 4 SNMP MIB XML SNMP MIB, URL MIB XML Schema XML DOM XML XML DOM DOM MIB DOM MIB MIB MIB SNMP MIB DOM SNMP DOM 11 63
11 SNMP MIB to XML MIB,, XML Schema XML Schema, XML DOM DOM (SMI syntax analyzer) SNMP MIB ASN1 SMI MIB (node table generator) 64
XML Schema XML Schema (XML Schema generator) W3C XML Schema XML DOM (DOM generator) SNMP MIB DOM DOM SNMP, XML DOM API SNMP MIB IMPORTMIB MIB MIB 52 JDK13, DOM Apache Xerces [28] SNMP MIB public class MibNode { String parent = null; // int myid; // 65
} String oid=null; // OID String name=null; // String syntax=null; // syntax String access=null; //access String status=null; // status String description=null; // description String reference=null; // reference String index=null; // index String defval=null; //defval String units=null; // units String entry_name=null; // String entry=null; // String objects=null; // objects String notifications=null; // notification String type=null; // //OBJECT-TYPE, OBJECT-GROUP int p[] = new int[20]; //OID public void clear() { } // SNMP MIB Textual Convention, XML DTD, XML Schema XML Schema IMPORTMIB MIB MIB 66
6 SNMP 5 SNMP MIB to XML SNMP XML HTTP 61 XML SNMP SNMP XML 12 SNMP-XML XML SNMP SNMP, (SNMP ) XML SNMP-XML 12 67
62 621 6211 DOM / SNMP SNMP MIB 5, DOM MIB DOM 5 HTTP MIB URL MIB DOM http://(gateway_address)/mib?mib=mib_name&source=mib_source&type=new http://(gateway_address)/mib? mib, source, type DOM 68
mib_name MIB URL mib_source MIB mib_name URL 1, 2 type=new DOM MIB type=new MIB MIB DOM MIB 6212 SNMP get, set, trap get SNMP,, OID set SNMP OID,, OID, trap, OID, SNMP HTTP 9 SNMP HTTP Get Set Trap http://(gateway_address)/snmp?host=agent_name &community=community_name&operation=get &xpath=node_name http://(gateway_address)/snmp?host=agent_name &community=community_name&operation=set &xpath=node_name&value=value_string http://(manager_address)/notification/snmp?h ost=host_name 9 SNMP-HTTP HTTP GET HTTP GET/ HTTP POST HTTP POST HTTP HTTP host, operation, 69
community, xpath, value 5 host SNMP operation get set, community SNMP xpath SNMP OID XML Xpath value SNMP set agent Set HTTP POST 622 13 13 70
HTTP handler : HTTP XML HTTP, XML XML request parser : XML HTTP GET HTTP POST XML DOM : MIB MIB2XML DOM XML generator : DOM XML HTTP handler MIB to XML translator : SNMP MIB XML Schema DOM SNMP poller : SNMP SNMP OID DOM Trap receiver : SNMP trap DOM XML Notification XML Scheduler : SNMP poller XSL generator : DOM XML XSL MIB 71
623 - SNMP XML 6231 / (Request/Response), HTTP handler request parser, request parser DOM OID SNMP poller get SNMP get OID OID DOM, DOM XML generator XML XML HTTP handler, HTTP 6232 (Notification) 72
SNMP (Event) trap Trap receiver Trap receiver trap, OID,, DOM XML generator XML HTTP handler HTTP POST 63, JDK13 SNMP MIB XML Schema 5 SNMP SNMP Poller Trap receiver opennms joesnmp [39] SNMPv1, SNMPv2c XML DOM DOM Apache Xerces [28] XML HTTP handler JDK13 HTTP request parser XML generator DOM Xerces MIB SNMP DOM request parser 73
64 SNMP XML 14, 15 internet SNMP 14 1 15 2 74
14 MIB- sysdescr 15 MIB- XML XSL 15 16 17 16 3 17 XSL 75
17 SNMP MIB SNMP SNMP trap Notification 18 18 Notification SNMP trap XML XML 76
7 XML SNMP SNMP MIB XML, SNMP-XML XML SNMP SNMP, SNMP SNMP XML XML XML XML SNMP, HTTP XML SNMP SNMP SNMP 77
XML SNMP XML SNMP (Specification Translation) SNMP SNMP MIB XML SNMP MIB XML (Interaction Translation) HTTP XML SNMP XML XML XML SNMP MIB XML XML SNMP-XML SNMP 78
[1] The World Wide Web Consortium, http://wwww3corg [2] W Stallings, SNMP, SNMPv2, SNMPv3, and RMON 1 and 2, Third edition, Addison-Wesley, Reading, MA, USA, 1999 [3] Hong-Taek Ju, Sehee Han, Yunjung Oh, Jeong-Hyuk Yoon, Hyojin Lee, James W Hong, An Embedded Web Server Architecture for XML-Based Network Management, Accepted to appear in Proc of the IEEE/IFIP Network Operations and Management Symposium (NOMS 2002), April, 2002, Florence, Italy [4] JP Martin-Flatin "Web-Based Management of IP Networks and Systems", PhD thesis, Swiss Federal Institute of Technology, Lausanne (EPFL), Oct 2000 [5],,,,, "SNMP SMI to XML ", Proc of KNOM 2001 Conference, Taejeonn, May, 2001, pp 102-106 [6] W3C, Extensible Markup Language (XML) 10, W3C Recommendation, October 2000, http://wwww3org/tr/rec-xml [7] W3C, HTML 40 Specification, Internet Draft, HTML Working Group, Apr 1998 [8] International Organization for Standardization, "ISO 8879: Standard Generalized Markup Language (SGML)", 1986 [9] Network Sorcery Inc, ICMP, Internet Control Message Protocol, http://wwwnetworksorcerycom/enp/protocol/icmphtm [10] ISO/IEC, CCITT, Information Technology-OSI, Common Management Information Protocol (CMIP)-Part 1: Specification ISO/IEC 9596-1, CCITT Recommendation X711, 1991 [11] Subrata Mazumdar, CORBA/SNMP Gateway, Bell Labs, http://wwwbelllabscom/project/corbasnmp [12] Frank Strauss, A Library to Access SMI MIB Information, http://wwwibrcstu-bsde/projects/libsmi/ [13] Imamura, T and Maruyama, H, Mapping between ASN1 and XML, Applications and the Internet, 2001 Proceedings, IEEE, 2001, pp 57 64 [14] ITU-T, Specification of Abstract Syntax Notation One(ASN1), ITU-T Rec X208, 1998 [15] M Rose, K McCloghrie, Structure and Identification of Management Information for TCP/IP-based Internets, IETF, RFC1155, May 1990 [16] M Rose, K McCloghrie, Concise MIB Definitions, IETF, RFC1212, 79
March 1991 [17] K McCloghrie, M Rose, Management Information Base for Network Management of TCP/IP-based internets: MIB-II, IETF, RFC1213, March 1991 [18] K McCloghrie, et al, Structure of Management Information Version 2 (SMIv2), IETF, RFC2578, April 1999 [19] K McCloghrie, et al, Textual Conventions for SMIv2, IETF, RFC2579, April 1999 [20] K McCloghrie, et al, Conformance Statements for SMIv2, IETF, RFC2580, April 1999 [21] J Case, et al, Management Information Base for Version 2 of the Simple Network Management Protocol (SNMPv2), IETF, RFC1907,January 1996 [22] J Case, Introduction to Version 3 of the Internet-standard Network Management Framework, IETF, RFC2570, April 1999 [23] W3C, Cascading Style Sheets, level 1, Recommendation, Dec 1996, revised Jan 1999, http://wwww3org/tr/rec-css1 [24] W3C, Extensible Stylesheet Language (XSL) Version 10, Recommendation, Oct 2001, http://wwww3corg/style/xsl/ [25] W3C, Document Object Model (DOM) Level 2 Core Specification, Nov 2000, http://wwww3org/tr/dom-level-2-core/ [26] Simple API for XML 20, 1999, http://wwwsaxprojectorg/ [27] W3C, "XML Path Language (XPath) Version 10, Recommendation, Nov 1999, http://wwww3org/tr/xpath [28] Apache XML project, Xerces Java parser, http://xmlapacheorg/xerces-j/ [29] Apache XML project, Xalan - XSLT processor, http://xmlapacheorg/xalan-j/indexhtml [30] W3C, Extensible Markup Language (XML) 10 - DTD, W3C Recommendation, October 2000, http://wwww3org/tr/rec-xml#dtdoctype [31] W3C, XML Schema Part 0: Primer, Recommendation, May 2001, http://wwww3org/tr/xmlschema-0/ [32] Internet Engineering Task Force, http://wwwietforg/, http://wwwietforg/rfchtml [33] World Wide Web Consortium, http://wwww3org/ [34] W3C, XML Linking Language (XLink), Version 10, W3C Proposed Recommendation, Dec 2000, http://wwww3org/tr/xlink/ [35] W3C, XML Pointer Language (XPointer), Version 10, W3C Last Call Working Draft, Jan 2001, http://wwww3org/tr/xptr [36] W3C, XML-Data, http://wwww3org/tr/1998/note-xml-data-0105/ 80
[37] Ora Lassila, Introduction to RDF Metadata, W3C NOTE, Nov 1997, http://wwww3org/tr/note-rdf-simple-intro [38] W3C, Document Content Description for XML, http://wwww3org/tr/note-dcd [39] OpenNMS, http://wwwopennmsorg/ 81
( ) 2 SK,, DPNM,,,,,,,, 9
( ),
: : 1969 12 25 : : 133 ( ) 4 1005 1988 1994 : ( ) 2000 2001 : ( ) 1995 : SK Telecom
? Conference Papers -,,, " SNMP MIB XML, 9,,, 200112, 66-71 - Hong-Taek Ju, Sehee Han, Yunjung Oh, Jeong-Hyuk Yoon, Hyojin Lee, James W Hong, An Embedded Web Server Architecture for XML-Based Network Management, Accepted to appear in Proc of the IEEE/IFIP Network Operations and Management Symposium (NOMS 2002), April, 2002, Florence, Italy? Co-Project Reports - POSCO,,, project report, 2000 -, DPNM project, 2001