게이트웨이를이용한 WBEM 기반의통합관리시스템 1 이소정, 1 유선미, 2 주홍택, 1 홍원기, 3 안창원 1 포항공과대학교컴퓨터공학과 2 계명대학교컴퓨터공학과 3 한국전자통신연구원디지털홈연구단 {annie, sunny81, jwkhong}@ postech.ac.kr, juht@kmu.ac.kr, ahn@etri.re.kr 요 약 WBEM 은 DMTF 에의해서표준화되고있는네트워크및시스템관리기술중에하나로서현재산업계의각광을받고있다. 한편이미설치되었거나설치되고있는많은장치가 만을지원하고있는것도현실이다. WBEM 이통합관리에초점을두고있는만큼 라는서로다른도메인을통합시킬필요가있다. 본논문에서는 게이트웨이에의한 WBEM 기반통합네트워크관리시스템을제안한다. 먼저 WBEM/ Gateway 를위한요구사항을분석하고, 그것을충족시키는 WBEM 기반관리시스템구조를제시하고이구조의핵심요소인 WBEM/ Gateway 그리고 를설계결과를제시한다. WBEM/ Gateway 는관리정보모델변환과관리동작변환이라는두가지메커니즘을제공한다. 마지막으로유효성검증을위해구현한 WBEM/ Gateway 와 WBEM Manager 의프로토타입을설명한다. 1. 서론 거대해지고 복잡해지는 네트워크 관리의 필요성이높아짐에따라, 다양한단체에서표준화 작업이 이루어지고 있다. 그 중에서도 DMTF (Distributed Management Task Force)[1] 는 기업과 인터넷 환경을 위한 관리 표준을 개발하고 채택하여상호운영성을주도하는산업계표준화 기관이다. 현재 DMTF에서는시스템및네크워크 관리와관련하여 CIM(Common Information Model)[2], WBEM(Web-Based Enterprise Management)[3] 등의 기술을표준화하고있다. WBEM은 여러 회사에서 제작한 시스템, 네트워크장비, 어플리케이션등을관리하기위한 표준이다. WBEM은 CIM으로관리정보를정의하고, CIM으로 정의된 관리 정보를 CIM-XML[4] 로 Encoding하여 HTTP[5] 를사용하여전송한다. 현재 Microsoft나 SUN의서버시스템그리고 Cisco의 Network 장비들이 WBEM 에이전트를 탑재하고 있는것을보면 WBEM은더욱확산될것이라 예상된다. 그러나 현재까지는 대부분의 장비가 [6] Agent를탑재하고있었으므로, 서로다른 Domain간에통합관리의필요성은매우높다. WBEM으로 통합 관리하기 위해서는 WBEM/ Gateway가 필요하다. 그러나 현재까지는 WBEM/ Gateway의 open source가 제공되지않는실정이며, 단지 가 Microsoft, SUN에서상업용으로만제공되고있다. 그러므로현재대학이나공공연구소같은곳에서 WBEM와 의통합에대한연구에어려움이 있다. 그러므로 본 논문에서는 WBEM/ Gateway를설계하고프로토타입을개발한결과를 제시한다. 또한 WBEM/ Gateway는서로다른 관리도메인사이에서상호운영되어야하므로, MIB을 MOF로 바꾸는 관리 정보 모델 변환 (Specification Translation) 방법과 CIM Operation을 Operation으로 바꾸는 관리 동작 변환 (Interaction Translation) 방법을 고안한 결과도 제공한다. 본논문의구성은다음과같다. 2 장의관련 연구에서는 WBEM 표준기술과현재제공되고 있는 들그리고 open source 구현물 중의하나인 Pegasus에대해소개한다. 3 장에서는 기존의 WBEM 구현물들에 대해 Benchmarking Test한 결과를 보여준다. 또한 4 장에서는 WBEM/ Gateway를위한요구사항을분석하고 구조를설계하며각각의 Specification Translation 방법과 Interaction Translation 방법에대해설명한다. 5 장에서는프로토타입구현을설명하며, 6 장에서 결론과앞으로의연구방향을제시함로써본논문을 마무리한다. 2. 관련연구 이장에서는본논문의기술적토대인 WBEM 의핵심기술들과현재 Microsoft 와 SUN 에서제공하는 들에대해소개한다. 1
2.1 WBEM 개요 이장에서는본논문의바탕인 WBEM 핵심기술들에대해서소개하고, 현재 Microsoft WMI 와 SUN Solaris 에서제공하는 들에대해간략히설명한다. 관리정보에대한 CIM Operation 을적절한 에게 forwarding 하고, 에서실제로관리자원으로부터필요한정보를가져온다. 2.2 현재제공되는 소개 2.2.1 Microsoft WMI WMI[8] 는 Microsoft Windows 운영체제에 탑재되는 Web-based Enterprise Management System이며, WBEM 표준에 적합한 WBEM Server이다. Database Application WEB Browser ODBC ActiveX Controls 그림 1. WBEM 기술들간의관계 Object Repository CIM Object Manager (CIMOM) 그림 1 에서묘사되어있듯이 WBEM 은세가지기술로구성된다. 이세가지기술은시스템관리정보에대한표준관리데이터모델인 CIM(Common Information Model), 데이터 Encoding 기법으로사용되는 CIM-XML 그리고관리명령과전송프로토콜로사용되는 HTTP 이다. DMTF 는 CIM Schema 를 Management Object Format(MOF)[7], XML 그리고 UML[15] 의세가지로표현한다. WBEM Client WBEM Server CIM-XML Encoder/Decoder Resource HTTP Client HTTP Server CIM-XML Encoder/Decoder CIM Object Manager Resource 그림 2. WBEM 기반관리시스템구조 그림 2 는 WBEM 기반관리시스템구조이다. WBEM 기반관리시스템은 WBEM Client 와 WBEM Server 를포함한다. WBEM Client 는 HTTP Client 를통해 WBEM Server 에연결하며, CIM-XML Encoder/Decoder 를통해요청할메시지를만들거나응답되어온 Message 를 parsing 한다. 마찬가지로 WBEM Server 는 HTTP Server 를통해메시지를주고받으며, CIM-XML Encoder/Decoder 는요청된 CIM-XML Message 를 parsing 하여수행해야할 CIM Operation 를걸러내고다시응답메시지를만들수있다. CIMOM(CIM Object Manager) 은각 Instrumentation Win32 Win32 APIs 그림 3. WMI 의구조 Registry Registry Data 그림 3 은 WMI 의구조를보여준다 WMI 는 CIMOM 과 Object Repository 를가지고있고, Database Application 이나 WEB Browser 등과같은형태로 CIMOM 과통신할수있다. Win32 는 Win32 환경에서운영체제의구성요소들을관리하며, 마찬가지로 Registry 는 Registry data 에접근하여값을 CIMOM 에게보내주고받을수있다. WMI 는 MIB Object variable 들을읽거나쓸수있는 를포함한다. 는각각의 object 들의값을 CIM Class instances 들의 property 값들에 Mapping 시킬수있다. 또한, trap 은자동적으로 WMI event 에 Mapping 될수있다. WMI 는 smi2smir 라는 utility 를포함한다. 변환된결과는 Module Information Repository (SMIR) 라고불리는 schema database 에넣어질수있다. 이때 MIB 파일들은 NOTIFICATION-TYPE Macro, OBJECT-TYPE Macro, TEXTUAL- CONVENTION Macro, Trap-TYPE Macro 와같은매크로들을통해 MIB 으로부터 MOF 로의 Mapping 방법을결정한다. 그중에서도 OBJECT-TYPE macro 는 MIB object 의기본적인특징들을나타내는데필수적인조항들을포함한다. Microsoft WMI 의 의단점은 MIB 에서 MOF 로의변환결과가 WMI 에의존적이라는것이다. ToInstance 와같은 flavor 는다른 WBEM 구현물에는선언되어있지않은새로운 flavor 이므로다른 WBEM 사용하려면 MOF 를또수정해야하는불편함이있다. 또한 2
WMI 의 Interaction Translation 기능을위한 source code 가공개되어있지않다. 무엇보다도 WMI 의 는 Windows 기반의 OS 에서만제공이된다는한계가있다. 2.2.2 SUN Solaris 의 SUN 은 Solaris Operating Environment 용 WBEM 구현물인 Solaris WBEM Services[9] 및 SUN WBEM SDK[10][11] 를제공한다. objects Management application JAVA WBEM Client Interface XML/HTTP CIM Object Manager (CIMOM) JAVA JAVA WBEM Interface Native objects JAVA 그림 4. WBEM Services 의구조 Other objects 그림 4 는 WBEM Services 의구조를보여준다. WBEM Management application 에서는 JAVA Client API 를통해 CIMOM 으로접근할수있다. 또한, CIMOM 에서는 JAVA API 들을통해 Object, Native Object 등의다양한관리객체들로부터정보를가져오거나바꿀수있다. SUN Solaris 에서는 Object 들을관리하기위해 가제공되며, MIB 파일을 MOF 파일로생성시켜줄수있는 MIB2MOF utility 가포함된다. 이때, MOF file 은각각의 group 들을 CIM class 로표현한다. MIB2MOF 는기본적으로 DMTF 에서표준화된 Qualifier 들을사용하여 DMTF 의 MOF 파일들과매우유사하다. SUM Solaris 의단점또한 Interaction Translation 을위한 source code 가공개되어있지않으며 에대한충분한문서가제공되지않는것이다. 또한기본적으로 Solaris 를사용하려면 Solaris 기반의 OS 이어야한다는한계가있다. 2.3 OpenPegasus 소개 본연구에서는 Pegasus[12] 를확장하여 WBEM/ Gateway 프로토타입을구현하였다. Pegasus 는앞에서설명한 Microsoft WMI 나 SUN WBEM 과는달리 DMTF 의 WBEM 기술인 CIM 과 CIM-XML 표준에따라구현한 open source 이다. Pegasus 는 TOG(The Open Group) 가주도적으로이끌어가고있는프로젝트이며, 코드와문서들을모두자유롭게이용할수있고현재 기업체들로부터가장많은관심을받고있다. MOF Compiler CIM/HTTP CIM CIM Clients CIM CIM Server s 그림 5. Pegasus의구조 Repository 그림 5 는 Pegasus 의구조를나타낸다. Pegasus 는 WBEM 표준에따라 CIM Client 와 CIM Server 사이에서 CIM/HTTP 로통신한다. 또한 CIM Server 는 Repository 내의 CIM schema 들에게접근할수있으며, Client 가알고자하는관리정보에대한 를호출할수있다. Pegasus 는 MOF Compiler 기능을하는 cimmof utility 를가지고있다. Pegasus 는 C++ 로구현되어있으며, repository 가 XML[13] 로구현되어있다. 3.WBEM 구현물비교 본연구에서는기존의 WBEM 구현물을확장하여 WBEM/ Gateway 프로토타입을구현하였다. WBEM 구현물들중우수한하나를선택하기위하여 Benchmarking 테스트를실시하였고본장에서는이결과를제시한다. Pegasus 와 WBEM Services 는개발자들이가장많이활용하고있는 open source 들이다. 이두 WBEM 구현물에대해 Pentium 4, 1.6GHz, 256MB RAM 인 Linux 환경에서다음과같은 Benchmarking 테스트를실시하였다. Operation # of classes 100 200 400 800 1600 Enumerate WBEM 377 342 372 359 348 Instances Pegasus 181 183 184 185 315 Enumerate WBEM 222 222 224 227 244 Instances Names Pegasus 41 41 41 44 48 Create WBEM 113 114 114 114 115 Instance Pegasus 15 16 17 18 24 표 1. 첫번째벤치마킹테스트결과 ( 시간단위 : ms) 표 1은 Repository 안에들어간 Class들의수를 100, 200, 400, 1600 으로증가시키면서 EnumerateInstances, Enumerate InstancesNames, CreateInstance operation을수행했을때의수행시간을측정한결과이다. EnumerateInstances를수행했을경우에는 WBEM이 Pegasus보다 1~2 배이상수행시간이길며, EnumerateInstancesNames와 3
CreateInstance 의경우에는 WBEM 이 Pegasus 보다 5~6 배이상수행시간이더걸리는것을확인하였다. Operation # of instances/ class 100 500 EnumerateInstances WBEM 377 1670 Pegasus 181 863 EnumerateInstances WBEM 222 1069 Names Pegasus 41 185 CreateInstance WBEM 113 121 Pegasus 15 31 표 2. 두번째벤치마킹테스트결과 ( 시간단위 : ms) 표 2는 class 당 instance들의수를 100 에서 500 으로증가시키면서 EnumerateInstances, Enumerate InstancesNames, CreateInstance를수행했을때의 latency를측정한결과이다. 이때, class들의수는 1600 개이다. 각 class당 instance의수가 100 개인경우에는 WBEM의수행시간이 Pegasus보다길다. 또한각 class당 instance들의수가 500 개로늘어났을경우에 WBEM 수행시간의증가률은 Pegasus의수행시간증가율보다크다. 결국이두가지 Benchmarking 테스트를통해 class나 instance의수를늘였을때 WBEM Services보다 Pegasus의성능이더좋음을알수있다. WBEM/ Gateway는다수의 Agent를관리하기때문에 Benchmarking 테스트는 Scalability 에중점을두었으며, Pegasus를확장하여 WBEM/ Gateway 프로토타입을구현한다. 4.WBEM/ Gateway 설계 이장에서는 WBEM 기반전체서버관리시스템구조, WBEM/ Gateway 의구조그리고 구조를설명한다. 또한 WBEM/ Gateway 의관리정보변환, 관리동작변환방법을제시한다. 4.1 요구사항분석 관리정보는 CIM Schema로정의되고, XML로 Encoding된후, HTTP payload에 Embedded되어 전송된다. WBEM/ Gateway는기존에사용되어었던 device를통합하기위한기능을제공해야 한다. WBEM/ Gateway는에러가발생했을때, Trap 정보를 export할 수 있는 메커니즘을 제공해야한다. 전체 관리 시스템에서 보안 메커니즘을 제공해야한다. WBEM/ Gateway는 Scalability와 Flexibility 를제공해야한다. 관리자가언제어디서나관리가가능한 Webbased User Interface 를제공해야한다. 4.2 기능구조설계 4.2.1 전체관리시스템구조 Agent Management application HTTP WBEM Manager XML/HTTP WBEM/ Gateway Agent Agent 그림 6. WBEM 기반전체관리시스템구조 그림 6 은 WBEM 기반서버관리시스템의전체구조이다. 기존의 Manager-Agent 구조를따르며, WBEM/ Gateway 가이들사이의상호운영성을제공한다. WBEM Manager 는 WBEM Client, WBEM/ Gateway 는 WBEM Server 에해당된다. 관리자들은관리어플리케이션을통해 WBEM Manager 에접근하며, WBEM Manager 와 WBEM/ Gateway 는 XML/HTTP 를통해, WBEM/ Gateway 는 를통해 Agent 를관리할수있다. 4.2.2 WBEM/ Gateway 구조 WBEM/ Gateway CIM Repository Registration Repository WBEM Manager HTTP Server XML/HTTP CIM-XML Decoder/Encoder CIM Object Manager (CIMOM) Manager Agent Agent HTTP Client Indication Service 그림 7. WBEM/ Gateway 구조 그림 7 은 WBEM/ Gateway 의구조이다. WBEM/ Gateway 내의 HTTP Server 는 WBEM Manager 로부터메시지를받으며, HTTP Client 를통해 trap 정보를 Manager 에게보낼수있다. WBEN/CIM Security 4
Encoder/Decoder 는받은메시지를변환한후, 이를 CIMOM 에게전달한다. 그러면 CIMOM 은적절한 provider 를통해 CIM operation 을결과값이다시 WBEM Manager 에게반환된다. Manager 는다양한 들을 Registration Repository 에저장함으로써관리한다. 이들은 Instance, Method, Association 그리고 Indication 를포함한다. 는다른 들과마찬가지로 의등록절차를거쳐서비스가제공되며, CIM operation 들을 Operation 으로변환함으로써 Interaction translation 을수행할수있다. Indication Service 는 Trap 를받기위해가입한 Agent 들의리스트를생성하고변경삭제하는일을수행한다. 또한보안적인이슈로써 manager 와 agent 사이에 HTTP over SSL(HTTPS)[16] 를사용하면보다안전한통신을할수있으며, WBEM Client 가사용자 ID 와패스워드를전달함으로써사용자인증을할수있다. 또한사용자는 namespace 를접근하기위한읽기 / 쓰기권한을필요로할수있다. 4.2.3 의기능과구조 그림 8 은 의두가지기능을나타낸다. Specification Translation 은 MIB 파일을 MOF 파일로바꾸는것이며, Interaction Translation 은 CIM Operation 을 Operation 으로변환하는것이다. Interaction Translation WBEM Manager Agent CIM operation WBEM / Gateway operation MOF [description( RFC1213-MIB )] Class RFC1213_MIB_system{. } MIB definition RFC1213-MIB DEFINITIONS ::= BEGIN END 그림 8 의기능 Specification Translation 그림 9 는 의구조이다. WBEM/ Gateway 는 MIB 으로정의된관리정보를 MOF 로변환시켜줄수있는 MIB2MOF Translator 를포함한다. 변환된결과로써나온 MOF 파일은 MOF Compiler 를통해서 Repository 에등록된다. 또한 WBEM/ Gateway 는 CIM operation 을 operation 으로시켜줄수있는 를포함한다. 는 CIMOM 으로부터들어온 CIM Operation 들을적절한 CIM Request Handler 를통해처리되게끔할수있다. CIM Request Handler 는각 CIM Operation 에 Mapping 되는 Operation 을호출하고, Stack 에서직접 Agent 에대해 Request 를보낸다. Agent 는해당하는 MIB variable 을 WBEM/ Gateway 에게보내고그값을다시 WBEM Manager 에서확인할수있다. WBEM/ Gateway Request CIM Request Handler Request CIMOM Stack WBEM WBEM Manager Request MIB Variables for Request Response MIB Definition Response Agent Agent Repository MOF compiler XML Definition 그림 9. 의구조 4.3 관리정보모델변환 MOF Definition MIB to MOF Translator Specification Translation 을위해 SMI[17] 데이터타입은해당되는 CIM 데이터타입으로변환된다. 표 3 과같이 MIB 의 SYNAX 정보인 OBJECT 데이터타입은 CIM 데이터타입으로 Mapping 된다. SMI CIM Ver. Datatype Datatype INTEGER v1 Sint32 OCTET STRING v1 String OBJECT IDENTIFIER v1 String IpAddress v1 String Counter v1 Unit32 Gauge v1 Unit32 TimeTicks v1 Unit32 Opaque v1 Sint8[ ] DisplayString v1 String NetworkAddress v1 String Counter32 v2 Unit32 Counter64 v2 Unit64 Integer32 v2 Sint32 Gauge32 v2 Unit32 Unsigned32 v2 Unit32 TruthValue v2 Sint32 BITS v2 String 표 3. 데이타타입매핑방법 표 4에서보여주듯이, MIB의 ACCESS, STATUS, DESCRIPTION 정보는 DMTF에서 5
표준화한 CIM specification의 qualifier를 통해 선언한다. OBJECT TYPE MACRO CIM Qualifier Read Only Read ACCESS Read Write Read, Write Write-only Write Not-accessible (write nothing) Mandatory Required STATUS Optional (write nothing) Obsolete (write nothing) Deprecated (write nothing) DESCRIPTION Description 표 4. OBJECT TYPE MACRO와 CIM Qualifier의매핑 방법 본연구에서는현재 DMTF 에서제공되고 CIM Class 들중하나를상속을받아새롭게 Extended class 를정의함으로써 object 관리정보의계층구조를정의한다. 그림 10 과같이, RFC1213-MIB 의 system group, interface group 은새롭게정의한 mib-2 클래스를상속받았으며, ManagedElement 클래스의자식클래스인 ManagedSystemElement 클래스로부터다시상속받는다. 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 그림 10. RFC1213-MIB 을위한 CIM Class 들간상속관계 그림 11 은 RFC1213-MIB 의 system group 내용을, 그림 12 는 interface group 의내용을 MOF 로변환한것이다. 각 MIB 트리의 group node 들은 CIM 클래스이름으로, 각 leaf node 들은클래스의속성으로들어간다. 또한, MIB 의데이터타입과 OBJECT TYPE MACRO 는 CIM 의데이터타입과 Qualifier 로대체된다. [description( RFC1213-MIB )] class mib_2:cim_managedsystemelement{ [Key, Read, Description("."), Required] string sysipaddress; }; [description( RFC1213-MIB ), group_objectid( 1.3.6.1.2.1.1 )] class _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; 그림 11 RFC1213-MIB system group 의 MOF 정의 class _RFC1213_MIB_interfaces : mib_2{ [object_identifier( 1.3.6.1.2.1.2.1 ), Read, Write, Description("."), Required] sint32 ifnumber; }; [description( RFC1213-MIB ), module_name( RFC1213-MIB ), group_objectid( 1.3.6.1.2.1.2 )] class _RFC1213_MIB_ifTable : _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; }; 그림 12. RFC1213-MIB interface group 의 MOF 정의 본논문에서정의한 MOF 는 DMTF 표준에따라서정의를하였으므로벤더나장비에의존적인한 WBEM 구현물에서만사용되는것이아니라 WBEM 표준을따르는모든구현물에서사용될수있다. 4.4. 관리동작변환 Agent 들을관리하기위해서는 CIM Operation 들을 Operation 들로변환할수있는 Interaction Translation 방법이필요하다. 표 5 는 CIM Operation 을각각 의 operation 으로 Mapping 하는방법이다. 기본적인읽기를위한 EnumerateInstances, GetInstance 그리고 GetProperty 는 MIB tree 의 leaf node 인 property 정보를가져온다. EnumerateInstance, GetInstance 그리고 GetProperty Operation 의차이는다음과같다. EnumerateInstance 의경우에는생성된모든 Instance 들에대한 property 정보를가져온다. 그러므로 Agent 당하나의 instance 를생성한다고할때, 이 operation 으로여러 agent 들의관리정보를가져올수있다. 그러나 GetInstance 의 6
경우에는특정한키를포함한오직하나의 Instance 에대한정보를가져온다. 키값이 IP 주소라고하면, 하나의 Agent 에대한관리정보만가져올수있다. 마지막으로 GetProperty 는하나의 Instance 로부터하나의 property 정보를가져온다. 그러므로 EnumerateInstances operation 은 Get, GetNext operation 으로변환되고, GetInstance, GetProperty operation 은 Get operation 으로변환된다. 기능 기본적인읽기 기본적인변경스키마조작 인스턴스조작 Association 순회 Qualifier 선언 CIM Operation GetClass, EnumerateClasses, EnumerateClassNames, GetInstance, EnumerateInstances, EnumerateInstanceNames, GetProperty SetProperty CreateClass, ModifyClass, DeleteClass CreateInstance, ModifyInstance, DeleteInstance Associators, AssociatorNames, References, ReferenceNames GetQualifier, SetQualifier, DeleteQualifier, EnumerateQualifier Operation Get, GetNext Set 없음 Set 없음 없음 질의 ExecQuery 없음 표 5. Interaction Translation 을위한매핑방법 인스턴스조작이나기본적인변경을위한 ModifyInstance 와 SetProperty operation 은 MIB tree 의 leaf node 에해당하는 property 값을바꿀수있다. 그러므로이 operation 들은 Set Operation 으로변환된다. 그러나기본적인읽기기능을하는것들중 GetClass, EnumerateClasses, EnumerateClassNames, EnumerateInstanceNames 그리고기본적인스키마조작기능을하는 CreateClass, ModifyClass, DeleteClass 의경우에는 Agent 에접근하지않으므로 Operation 으로변환할필요가없다. 또한 Association 순회와 Qualifier 선언또는질의를하는경우에는해당되는 Operation 이없으므로대체되지않는다. 5. 프로토타입구현 이장에서는앞에서설계한 WBEM/ Gateway 와 WBEM Manager 의프로토타입구현에대해설명한다. 5.1 WBEM/ Gateway 구현 Specification Translation 을위해서우리는 MIB2MOF Translator 를구현하였다. 이것을통해 MIB 으로정의된모든관리정보는 MOF 로변환될수있다. 그러면 MOF compiler 를통해 MOF 파일을 compile 하여 repository 에관리정보를등록할수있다. Interaction Translation 을위해서는, 의 backend interface 를구현해야한다. WBEM/ Gateway 포함되어있는 는 NET-[14] API 를통해 RFC1213- MIB 의 System Group 정보를가져오거나변경할수있다. 는 Instance 이며, Instance 에해당하는 function 이구현된다. 5.2 WBEM Manager 구현 WBEM Manager 을위해사용자가언제어디서나접속할수있는 Web User Interface 를구현하였다. 사용자는화면에보여지는메뉴를통해원하는 CIM operation 을수행할수있다. 즉, 사용자는화면에서보여지는입력창을통해관리하고자하는 Agent 의 IP Address, 속성이름혹은변경하고자하는속성값을파라미터로원하는 Operation 을수행할수있다. 예를들어, GetProperty 를수행하기위해서는 Agent IP Address 를입력하고왼쪽트리에서가져오고자하는속성이름을선택해야하며, SetProperty 를수행하기위해서는추가로변경하고자하는속성값또한입력해야한다. 그림 13 EnumerateInstances 를수행한결과 7
그림 13 은입력파라미타없이 WBEM Manager UI 에서 EnumerateInstances 를수행한결과이다. 6. 결론 본 연구에서는 DMTF의 서버 관리 표준인 WBEM 기술에대해파악하고, 현재제공되고있는 Microsoft WMI와 SUN Solaris의 들에 대해설명하였다. 또한, WBEM 기반의전체관리 시스템, WBEM/ Gateway의구조그리고 의 구조를 설계하고, WBEM/ Gateway의관리정보모델변환방법과관리동작 변환방법을제시하였다. 마지막으로 WBEM/ Gateway와 WBEM Manager의 프로토타입을 구현하였다. 기존의 Microsoft의 WMI나 SUN Solaris에서도 WBEM/ Gateway 기능을제공해주고자하는 노력이있었으나, 관리정보모델변환의경우변환 결과가구현물에의존적이었다. 뿐만아니라관리 동작변환의경우에는 OS나장비에의존적으로만 수행이 되고, 소스 코드가 공개되어있지 않아 개발이나확장이어렵다. 그러므로본논문에서는 어떤환경에서나실행될수있고 DMTF의표준을 따르는 WBEM/ Gateway를개발하였다. 향후의연구계획은표준 MIB뿐만아니라 Enterprise MIB에대해서도수용해나가는것이며, 많은 Agent들을 관리하여 우리가 설계, 구현한 WBEM/ Gateway에 대한 유효성을 검증하는것이다. 또 다른 한가지로는 CIM Server의 기능별, 모듈별 성능 테스트를 통한 Lightweight한 CIM Server에대한연구를하는것이다. url=/library/enus/wmisdk/wmi/wmi_reference.asp. [9] Sun Microsystems, Solaris WBEM Service, http://www.sun.com/software/solaris/8/ds/dswbem24/. [10] Sun Microsystems, Java Web Based Enterprise Management (WBEM Services) [11] http://wbemservices.sourceforge.net [12] Pegasus, http://www.pegasus.org [13] Tim Bray, Jean Paoli and C. M. Sperberg-McQueen, "Extensible Markup Language (XML) 1.0," W3 Recommendation REC-xml-19980210, Feb. 1998 [14] Net-, http://net-snmp.sourceforge.net/. [15] OMG(Object Management Group), UML(Unified Modeling Language),http://www.uml.org/ [16] Apache-SSL, http://www.apache-ssl.org [17] Frank Strauss et al, A Library to Access SMI MIB Information, http://www.ibr.cs.tubs.de/projects/libsmi/. 참고문헌 [1] DMTF, http://www.dmtf.org [2] DMTF, "Common Information Model (CIM) Specification, Version 2.2", June 1999 [3] WBEM, WBEM Initiative, http://www.dmtf.org/wbem [4] DMTF, Representation of CIM in XML, Version 2.0, June 1999 [5] R. Fielding, J. Gettys, J. Mogul, H. Frystyk Nielsen, L. Masinter, P. Leach and T. Berners-Lee, "Hypertext Transfer Protocol - HTTP/1.1", RFC 2616, IETF HTTP WG, June 1999. [6] J. Case, M. Fedor, M. Schoffstall, and J. Davin (Eds), A Simple Network Management Protocol (), RFC 1157, IETF, May 1990. [7] DMTF, "Management Object Format (MOF)," http://www.dmtf.org/education/mof [8] Microsoft, Windows Management Instrumentation (WMI),http://msdn.microsoft.com/library/default.asp? 8