Design and Implementation of WBEM/SNMP Gateway December 21, 2004 So-Jung Lee annie@postech.ac.kr DPNM Lab., Dept. of -1-
목차 1. 서론 2. 관련연구 3. WBEM Implementations 분석 4. WBEM/SNMP Gateway 설계 5. Prototype 구현 6. 결론및향후과제 -2-
배경및동기 서론 (1) 거대해지고복잡해지는네트워크의관리가필요하고, 또한네트워크관리를위한표준화가필요함 DMTF에서는 CIM, WBEM 등의관리기술을표준화하고있음 WBEM은더욱확산될것으로추정 SNMP 기반네트워크관리기술은현재가장널리쓰이고있는네트워크관리표준임 WBEM과 SNMP이라는서로다른 domain 사이에통합관리에대한필요성은매우높음 WBEM/SNMP Gateway 가요구됨 WBEM/SNMP Gateway의부재 WBEM/SNMP Gateway를위한freely available한문서나소스가충분히제공되지않음 대학이나공공연구소에서통합에관한연구에어려움이있음 -3-
목표 서론 (2) WBEM/SNMP Gateway를설계및개발 WBEM/SNMP Gateway를개발함에있어 Scalability를핵심요구사항으로선정 WBEM/SNMP Gateway를위해Specification Translation 방법과 Interaction Translation 방법을제공 -4-
관련연구 (1) WBEM (Web-based Enterprise Management) DMTF에서표준화하고있는기술 Enterprise Network에서이기종의시스템들간에상호운영관리를가능하게함 CIM (Common Information Modeling) : 정보모델링방법 CIM-XML : Encoding 방법 HTTP : 전송방법 -5-
WBEM Architecture 관련연구 (2) WBEM Client CIM-XML Encoder/Decoder HTTP Client WBEM Server HTTP Server CIM-XML Encoder/Decoder CIM Object Manager Provider Resource Provider Resource -6-
관련연구 (3) 현재제공되는 SNMP Provider 소개 Microsoft WMI Database Application WEB Browser ODBC ActiveX Controls Object Repository CIM Object Manager (CIMOM) SNMP Provider Win32 Provider Registry Provider SNMP Instrumentation Win32 APIs Registry Data Microsoft의 Windows OS에탑재되는 WBEM Win32 provider, Registry provider 등다양한 provider들을관리함 SNMP Provider: SNMP Agent를관리하기위한 Gateway 역할을수행 smi2smir이라는 utility 제공 -7-
SUN WBEM Services 관련연구 (4) Management application JAVA WBEM Client Interface XML/HTTP CIM Object Manager (CIMOM) SNMP SNMP objects JAVA JAVA WBEM Provider Interface Native objects JAVA Other objects SUN Microsystems의 Solaris에서제공되는 WBEM JAVA로구현된 Implementation JAVA기반의 CIMOM이며 Client와 Provider를위한JAVA API를제공 mib2mof utility 제공 -8-
OpenPegasus 소개 관련연구 (5) CIM/HTTP CIM CIM Clients Clients MOF Compiler CIM CIM Server Server Repository Providers Providers DMTF의표준을따르는 WBEM Implementation TOP (The Open Group) 에의해주도되는 Open Source C++ 로구현된 Implementation Repository가 XML로되어있다는것이장점 아직까지 SNMP Provider는제공하지않음 -9-
관련연구 (6) WMI 와 Solaris SNMP Provider 의한계 Microsoft WMI의 SNMP Provider는 Windows 환경에서만제공이되는 WBEM이므로 OS에의존적으로밖에사용할수가없음 SUN Microsystems의 SNMP Provider는 Solaris 장비에서만제공이되며, WBEM/SNMP Gateway 개발을위한확장을할때에 License 문제가생김 둘다Interaction Translation에대한구체적인방법이코드나문서로제공되어있지않음 -10-
WBEM Implementations 분석 (1) 기존 WBEM Implementations 에대한 Benchmarking test WBEM/SNMP Gateway의 prototype은기존의 WBEM Implementation을확장하여구현 WBEM/SNMP Gateway가여러대의SNMP Agent들을관리해야하는 Scalability 측면에중점을두어, Benchmarking Test를수행 기존의 WBEM Implementation들중, Pegasus와 SUN WBEM이개발자들이가장활발하게활동하고있는것들임 Pegasus와 SUN WBEM에대해benchmarking test 수행 Test Machine: Pentium 4, 1.6GHz CPU and 256 MB RAM running Linux -11-
WBEM Implementations 분석 (2) 1 st experiment Class 의수를 100, 200,..., 1600 개로늘려가면서 latency 를측정 operation # of classes 100 200 400 800 1600 EnumerateInstances SUN WBEM 377 342 372 359 348 Pegasus 181 183 184 185 315 EnumerateInstances Names SUN WBEM Pegasus 222 41 222 41 224 41 227 44 244 48 CreateInstance SUN WBEM 113 114 114 114 115 Pegasus 15 16 17 18 24 Time unit: ms -12-
WBEM Implementations 분석 (3) 2 nd experiment Instance의수를100에서 500개로늘려가면서 latency를측정 1600개의 class로측정 operation # of instances / class 100 500 EnumerateInstances SUN WBEM 377 1670 Pegasus 181 863 EnumerateInstancesNames SUN WBEM 222 1069 Pegasus 41 185 CreateInstance SUN WBEM 113 121 Pegasus 15 31 Time unit: ms -13-
WBEM Implementations 분석 (4) Benchmarking test 결과 다음을수행했을때, Pegasus가 SUN WBEM보다성능이좋음 EnumerateInstances EnumerateInstanceNames CreateInstance Pegasus에서의개발자들의활동이가장활발 Pegasus를확장하여WBEM/SNMP Gateway prototype 구현 -14-
WBEM/SNMP Gateway 설계 (1) WBEM 기반관리시스템을위한요구사항분석 Functional Requirements 관리정보는 CIM Schema로정의되고, XML로 Encoding된후, HTTP payload에 Embedded되어전송됨 WBEM/SNMP Gateway는기존에사용되어졌던 SNMP device 들을통합하기위한기능을제공해야함 WBEM/SNMP Gateway는에러가발생했을때, Trap정보를 export할수있기위해연결을초기화할수있는메커니즘을제공해야함 전체관리시스템에서보안메커니즘을제공해야함 Nonfunctional Requirements WBEM/SNMP Gateway는 Scalability와 Flexibility를제공해야함 관리자가언제어디서나관리가가능한 Web-based User Interface를제공해야함 -15-
WBEM/SNMP Gateway 설계 (2) 전체관리시스템구조 Management application HTTP WBEM Manager XML/HTTP WBEM/SNMP Gateway SNMP SNMP SNMP SNMP Agent SNMP Agent SNMP Agent 기본적으로 Manager-Agent 구조를따름 WBEM Manager: WBEM Client WBEM/SNMP Gateway: WBEM Server -16-
WBEM/SNMP Gateway 설계 (3) WBEM/SNMP Gateway 구조 WBEM/SNMP Gateway WBEM WBEM Manager Manager XML/HTTP HTTP Server HTTP Client CIM Repository Provider Registration Repository CIM-XML Decoder/Encoder CIM Object Manager (CIMOM) Provider Manager Indication Service SNMP Provider Security SNMP SNMP SNMP Agent Agent -17-
WBEM/SNMP Gateway 설계 (4) WBEM/SNMP Gateway 의기능 WBEM Manager [description( RFC1213-MIB )] Class RFC1213_MIB_system{. } MOF 정의 Interaction Translation CIM operation Specification Translation WBEM / SNMP Gateway SNMP Agent SNMP operation RFC1213-MIB DEFINITIONS ::= BEGIN END MIB 정의 Specification Translation: MIB Definition에서 MOF Definition으로관리정보모델변환 Interaction Translation: CIM Operation 과 SNMP Operation의상호동작변환 -18-
WBEM/SNMP Gateway 설계 (5) SNMP Provider 의구조 SNMP Provider Request WBEM/SNMP Gateway CIMOM WBEM WBEM Manager Manager Response Repository XML Definition CIM Request Handler Send oid SNMP Stack MIB Variables for Request MOF compiler MIB Definition MOF Definition MIB to MOF Translator SNMP Request SNMP Response SNMP SNMP Agent Agent -19-
WBEM/SNMP Gateway 설계 (6) 관리정보모델변환 SNMP SMI Datatype SNMP Ver. CIM Datatype INTEGER V1 Sint32 OBJECT TYPE MACRO ACCESS Read-Only Read-Write Write-only Notaccessible CIM Qualifier Read Read, Write Write. OCTET STRING OBJECT IDENTIFIER IpAddress Counter Gauge TimeTicks V1 V1 V1 V1 V1 V1 String String String Uint32 Uint32 Uint32 Mandatory Required Opaque V1 Sint8[ ] STATUS Optional Obsolete.. DisplayString NetworkAddress V1 V1 String String Description Deprecated. Description Counter32 Counter64 Integer32 V2 V2 V2 Uint32 Uint64 Sint32 Gauge32 V2 Uint32 Unsigned32 V2 Uint32 TruthValue V2 Sint32 BITS V2 String -20-
WBEM/SNMP Gateway 설계 (7) CIM Class 들간의상속관계정의 ManagedElement ManagedSystemElement Mib-2 RFC_1213_MIB_system RFC_1213_MIB_interfaces RFC_1213_MIB_at RFC_1213_MIB_ip RFC_1213_MIB_icmp RFC_1213_MIB_tcp RFC_1213_MIB_udp RFC_1213_MIB_egp RFC_1213_MIB_transmission RFC_1213_MIB_snmp -21-
WBEM/SNMP Gateway 설계 (8) RFC1213-MIB 안에 system group 의 MOF 정의 [description( RFC1213-MIB )] class mib_2:cim_managedsystemelement{ [Key, Read, Description("."), Required] string sysipaddress; }; class SNMP_RFC1213_MIB_system : mib_2{ [object_identifier( 1.3.6.1.2.1.1.1 ), Read, Description("."), Required] string sysdescr; [object_identifier( 1.3.6.1.2.1.1.2 ), Read, Description("."), Required] string sysobjectid; [object_identifier( 1.3.6.1.2.1.1.3 ), Read, Description("."), Required] uint32 sysuptime; [object_identifier( 1.3.6.1.2.1.1.4 ), Read, Write, Description("."), Required] string syscontact; [object_identifier( 1.3.6.1.2.1.1.5 ), Read, Write, Description("."), Required] string sysname; [object_identifier( 1.3.6.1.2.1.1.6 ), Read, Write, Description("."), Required] string syslocation; [object_identifier( 1.3.6.1.2.1.1.7 ), Read, Write, Description("."), Required] sint32 sysservices; }; -22-
WBEM/SNMP Gateway 설계 (9) RFC1213-MIB 안에 Interface group 의 MOF 정의 class SNMP_RFC1213_MIB_interfaces : mib_2{ [object_identifier( 1.3.6.1.2.1.2.1 ), Read, Write, Description("."), Required] sint32 ifnumber; }; class SNMP_RFC1213_MIB_ifTable : SNMP_RFC1213_MIB_interfaces{ [object_identifier( 1.3.6.1.2.1.2.2.1.1 ), Read, Description("."), Required] sint32 ifindex; [object_identifier( 1.3.6.1.2.1.2.2.1.2 ), Read, Description("."), Required] string ifdescr; [object_identifier( 1.3.6.1.2.1.2.2.1.3 ), Read, Description("."), Required] string iftype; [object_identifier( 1.3.6.1.2.1.2.2.1.4 ), Read, Description("."), Required] sint32 ifmtu; [object_identifier( 1.3.6.1.2.1.2.2.1.5 ), Read, Description("."), Required] uint32 ifspeed; [object_identifier( 1.3.6.1.2.1.2.2.1.6 ), Read, Description("."), Required] string ifphysaddress; [object_identifier( 1.3.6.1.2.1.2.2.1.7 ), Read, Description("."), Required] sint32 ifadminstatus; [object_identifier( 1.3.6.1.2.1.2.2.1.8 ), Read, Description("."), Required] sint32 ifoperstatus; [object_identifier( 1.3.6.1.2.1.2.2.1.9 ), Read, Description("."), Required] uint32 iflastchange; [object_identifier( 1.3.6.1.2.1.2.2.1.10 ), Read, Description("."), Required] uint32 ifinoctets; [object_identifier( 1.3.6.1.2.1.2.2.1.11 ), Read, Description("."), Required] uint32 ifinucastpkts; [object_identifier( 1.3.6.1.2.1.2.2.1.12 ), Read, Description("."), Required] uint32 ifinnucastpkts; [object_identifier( 1.3.6.1.2.1.2.2.1.13 ), Read, Description("."), Required] uint32 ifindiscards; [object_identifier( 1.3.6.1.2.1.2.2.1.14 ), Read, Description("."), Required] uint32 ifinerrors; [object_identifier( 1.3.6.1.2.1.2.2.1.15 ), Read, Description("."), Required] uint32 ifinunknownprotos; [object_identifier( 1.3.6.1.2.1.2.2.1.16 ), Read, Description("."), Required] uint32 ifoutoctets; [object_identifier( 1.3.6.1.2.1.2.2.1.17 ), Read, Description("."), Required] uint32 ifoutucastpkts; [object_identifier( 1.3.6.1.2.1.2.2.1.18 ), Read, Description("."), Required] uint32 ifoutnucastpkts; [object_identifier( 1.3.6.1.2.1.2.2.1.19 ), Read, Description("."), Required] uint32 ifoutdiscards; [object_identifier( 1.3.6.1.2.1.2.2.1.20 ), Read, Description("."), Required] uint32 ifouterrors; [object_identifier( 1.3.6.1.2.1.2.2.1.21 ), Read, Description("."), Required] uint32 ifoutqlen; [object_identifier( 1.3.6.1.2.1.2.2.1.22 ), Read, Description("."), Required] string ifspecific; }; -23-
WBEM/SNMP Gateway 설계 (10) 관리동작변환 기능 Basic Read Basic Write Schema Manipulation Instance Manipulation Association Traversal Qualifier Declaration Query SetProperty Associators, AssociatorNames, References, ReferenceNames InvokeMethod CIM Operation GetClass, EnumerateClasses, EnumerateClassNames, GetInstance, EnumerateInstances, EnumerateInstanceNames, GetProperty CreateClass, ModifyClass, DeleteClass CreateInstance, ModifyInstance, DeleteInstance GetQualifier, SetQualifier, DeleteQualifier, EnumerateQualifier SNMP Operation SNMP Get, SNMP GetNext SNMP Set. SNMP Set... -24-
Prototype 구현 (1) WBEM/SNMP Gateway 구현 Pegasus 를선택하여 WBEM/SNMP Gateway 로확장 Linux 환경에서 C++, NET-SNMP API 이용 Specification Translation RFC1213-MIB 의 system group, interface group 정보를 MOF 로정의 MOF Compiler 를통해컴파일하여 Repository 에서제공 Interaction Translation MIBIIProvider 모듈을 C++ 작성 Instance 를조작할수있는 Instance Provider 구현 CreateInstance EnumerateInstances EnumerateInstancesNames GetInstance ModifyInstance -25-
Prototype 구현 (2) WBEM Manager 구현 기존에연구, 개발된 XNMS 를 WBEM Manager 로확장 Management Application WBEM Manager HTTP HTTP Server HTTP Client CIM/XML Decoder/Encoder Management Script Event Reporter Trap Accounting Manager Mgmt. Server Manager Monitoring Manager Node Logging Config. Analyzer Manager Manager Indication Handler Presenter XML/HTTP DOM API XMLDB XSL Template Repository WBEM/SNMP Gateway -26-
Prototype 구현 (3) WBEM Manager Web User Interface - 27 -
결론 기존의 SNMP Agent를관리하기위해서는 WBEM/SNMP Gateway가필요 WBEM/SNMP Gateway 설계 전체관리시스템설계 WBEM/SNMP Gateway 설계 SNMP Provider 설계 Scalable 한 WBEM/SNMP Gateway 를구현 Pegasus를확장하여 WBEM/SNMP Gateway의 prototype 구현 XNMS를확장하여 WBEM Manager의 prototype 구현 -28-
향후과제 다수의 SNMP Agent들을관리함으로써 WBEM/SNMP Gateway의 Scalability에대한Validation Lightweight WBEM Agent에대한연구 -29-
Q & A -30-