DMTF DMI 2.0를 이용한PC Server 관리 시스템 개발
1997. 11. 27
POSTECH DPE Lab김 종서
97-11-27 2
순서
• 배경 및 목적• 시스템 관리 (System Management)• DMTF DMI• 설계• 구현• 시스템 시험• 결론 및 향후 과제
97-11-27 3
배경
• 중앙 집중식 환경에서 분산 환경으로의변화
• NT를 기반으로 한 Server 시스템의 확산• PC Server 시스템에 대한 관리의 필요성
대두• 시스템 관리 표준
– SNMP (Simple Network Management Protocol)– DMI (Desktop Management Interface)
97-11-27 4
목적
• DMTF (Desktop Management Task Force)에서 제정한 DMI ver 2.0을 이용하여 PC Server 장비에 대한 관리 시스템 설계 및구현, 검증을 목적으로 한다.
97-11-27 5
시스템 관리 (1)
• 정의– 망에 연결되어 있는 모든 시스템 (소프트웨어 + 하
드웨어)에 대한 관리
• 망 관리– 망에 연결되어 있는 물리적인 하부 구조 (허브, 스위
치, 라우터, 게이트웨이 등)에 대한 관리
• 두 용어에 대한 명확한 구분은 힘들고 대부분의 제품들은 이들을 통합하여 기능을 제공
97-11-27 6
시스템 관리 (2)
• 시스템 관리 구조
97-11-27 7
시스템 관리 (3)
• 시스템 관리 표준– IETF (Internet
Engineering Task Force)의 SNMP
– DMTF (Desktop Management Task Force)의 DMI
– 상호 보완적인 관계
97-11-27 8
시스템 관리 (4)SNMP와 DMI의관리대상객체들
97-11-27 9
시스템 관리 (5)
• 시스템 관리요구 기능– OSI에서의
시스템 관리 기능
Faultmanagement
Accountingmanagement
Performancemanagement
Securitymanagement
Configurationmanagement
Event-reportmanagement
Logcontrol
Security-audit trail
Accesscontrol
Security-alarmreporting
Objectmanagement
Relationshipmanagement
Alarmreporting
Statemanagement
Accountingmeter
Testmanagement Summarization
Workloadmonitoring
Systems management functions
Specific management functional areas
Event report
Create Delete Cancel-Get
Get Set Action
CMISE services
97-11-27 10
시스템 관리 (6)
• 시스템 관리요구 기능– 본 시스템
에서 제공할 시스템관리 기능
Fault management
Configuration management
Performancemanagement
Securitymanagement
Objectmanagement
Statemanagement
Relationshipmanagement
Alarmreporting
Event-reportmanagement
Logcontrol
Accesscontrol
Workloadmonitoring
System Management Functions
Management Interface
Initializationfunctions
Operationfunctions
Listfunctions
Database Adminfunctions
MA providerfunctions
Securityfunctions
Event-log Adminfunctions
97-11-27 11
DMI (1)
• DMTF (Desktop Management Task Force)– PC를 효율적으로 관리하기 위해 조직된 산
업 공동체 (Consortium)– Apple, Compaq, DEC, HP, IBM, Intel,
Microsoft, Symantec, Novell 등
• 현재 DMI Ver 2.0까지 제안 (1996. 3.)• Ver 3.0 진행 중
97-11-27 12
DMI (2)
Local BlockInterfaceApplication
MI InterfaceClient
IndicationServer
RPC Support
MI InterfaceClient
IndicationServer
RPC Support
Data Block MgmtInterface (Ver 1.X)
Data Block ComponentInterface (Ver 1.X)
RPC Support
Management Interface Server Indication Client
Procedural Component Interface (Ver 2.0)
DMI Service Provider
Block CIComponent(HW/SW)
Procedural CIHardware
Component
Procedural CISoftware
Component
Procedural CIFirmware
Component
SP DB
(MIF)
RPC to/fromremote system
기본구조
97-11-27 13
DMI (3)
• MIF (Management Information Format)– 관리 객체를 정의하
는 스키마 (schema)– SNMP의 MIB과 유사
– 일반 Text 형태• ASCII or UNICODE
System
Component A Component B Component DComponent C
Group 3
Group 2
Group 2
Group 3
Group 2
Group 3
Group 4
Group 5
Group 2
Group 3
Attribute 1Attribute 2Attribute 3
Attribute 1Attribute 2Attribute 3
Attribute 1Attribute 2Attribute 3Attribute 4Attribute 5Attribute 6Attribute 7Attribute 8Attribute 9
Attribute 1
Attribute 1Attribute 2
Attribute 1Attribute 2
Attribute 1Attribute 2
Attribute 1Attribute 2
Attribute 1Attribute 2Attribute 3Attribute 4Attribute 5Attribute 6
Attribute 1Attribute 2Attribute 3Attribute 4
97-11-27 14
DMI (4)
• Service Provider (SP)– Console로부터의 요구를 받아 관리 객체에 대한 관
리를 대행 (agent)– 관리 객체들로부터의 이벤트들을 console으로 전달
Component Interface
Management Interface
Requests
Requests
Indications
Events
MIF Access
MIF Set
MIF Install
MIF Database
Command Processing Event Processing MIF Processing
Synchronization and Flow Control
97-11-27 15
DMI (5)
• MI (Management Interface)– SP와 console사이에
규정된 인터페이스함수들
– SP가 제공해야 하는함수들과 console (Management Application)이 제공해야 하는 함수들로 구성
Service Provider
Management Application
Discovery Operation DatabaseInitialization
MA Provider API
DmiRegisterDmiUnregisterDmiGetVersionDmiGetConfigDmiSetConfig
DmiListComponentsDmiListComponents-ByClassDmiListLanguagesDmiListClassNamesDmiListGroupsDmiListAttributes
DmiAddRowDmiDeleteRowDmiGetAttributeDmiSetAttributeDmiGetMultipkeDmiSetMultiple
DmiAddComponentDmiAddLanguageDmiAddGroupDmiDeleteComponentDmiDeleteLanguageDmiDeleteGroup
DmiDeliverEventDmiComponentAddedDmiComponentDeletedDmiLanguageAddedDmiLanguageDeletedDmiGroupAddedDmiGroupDeletedDmiSubscriptionNotice
Request
Event/Indication
97-11-27 16
DMI (6)
• CI (Component Interface)– SP와 관리 객체
(component)사이에 규정된 인터페이스 함수들
– SP가 제공해야 하는함수들과 관리 객체가 제공해야 하는 함수들로 구성
Component
Service Provider
Service Provider Functions for ComponentsDmiRegisterCi
DmiUnregisterCiDmiOriginateEvent
Component Provider FunctionsCiGetAttribute,CiSetAttributeCiGetNextAttribute,CiReserveAttributeCiReleaseAttribute,CiAddRowCiDeleteRow
Request
Request/Event
97-11-27 17
설계 (1)
• 전체 구조– Console– Event Viewer– SP– MIF DB– Component
MI MI
MI Module
CI Module
Core Module
CI
Component Instrumentation Code
MIFDB
ServiceProvider
Component
Console Event Viewer
Request
Request Event
Event/Indication
97-11-27 18
설계 (2)
• SP 구조– MI 모듈
– Core 모듈
– CI 모듈
Component
MI Module
Core Module
CI Module
InitializationFunctions
DiscoveryFunctions
OperationFunctions
DatabaseAdministration
Functions
MemoryHandlingFunctions
DatabaseHandlingFunctions
CI Functions for Components
MIFDB
ServiceProvider
SerializationFunctions
Management Application
97-11-27 19
설계 (3)
• MA 구조– UI– MAF– MI
Service Provider
Management Interface (MI)
Management Application Functions (MAF)
User Interface User Interface
Management Application (MA)
Console (CO) Event Viewer (EV)
Request Event/Indication/Response
Request
Request Event/Indication/Response
Response Event/Indication/ResponseRequest
97-11-27 20
구현
• 개발 환경– OS: Win95 and NT– 개발 도구: Microsoft Visual C++– Language: C and C++
• RPC가 C code를 생성하므로 C와 C++을 혼용
97-11-27 21
구현 - SP (1)
• MI– DCE, ONC
or TI RPC– Microsoft
RPC 사용(DCE RPC와 호환)
Initialization
DmiRegisterDmiUnregisterDmiGetVersionDmiGetConfigDmiSetConfig
DiscoveryDmiListComponentsDmiListComponents -ByClassDmiListLanguagesDmiListClassNamesDmiListGroupsDmiListAttributes
Opeartion
DmiAddRowDmiDeleteRowDmiGetAttributeDmiSetAttributeDmiGetMultipkeDmiSetMultiple
Database Administration
DmiAddComponentDmiAddLanguageDmiAddGroupDmiDeleteComponentDmiDeleteLanguageDmiDeleteGroup
Added Functions
DmiCheck _Register
MA Provider APIDmiDeliverEventDmiComponentAddedDmiComponentDeletedDmiLanguageAddedDmiLanguageDeletedDmiGroupAddedDmiGroupDeletedDmiSubscriptionNotice
MI for SP
MI for MA
97-11-27 22
구현 - SP (2)
• CI– 실행 파일간의 함수 제
공– Microsoft RPC 사용
– 장점:• Remote Component도 관
리 가능
• 구현이 쉽다
CI for Component CI for SP
DmiRegisterCiDmiUnregisterCi
DmiOriginateEvent
CiGetAttributeCiSetAttributeCiGetNextAttributeCiReserveAttributeCiReleaseAttributeCiAddRowCiDeleteRow
97-11-27 23
RPC를 이용한 code 생성 과정
DMI 2.0IDL Definition File
(*.idl)
ACF File(*.acf)
IDL Compiler (midl.exe)
ServerStub File(*_s.c)
Header File(*.h)
Server CodeModule
(*.c or *.cpp)
C compiler andObject Module Linker
(Visual C++)
Service ProviderMI Server or Client
Management ApplicationMI Server or Client
ComponentCI Server or Client
ClientStub File(*_c.c)
Client CodeModule
(*.c or *.cpp)
97-11-27 24
구현 - SP (3)전체 구성 MA
MI Client for MAcode
MI Server for SPcode
MI Server for SPThread
CI Client for componentcode
ComponentCI Server for SP
code
MI Server for MAThread
CI Server for componentThread
MI Client for SPcode
CI Client for SPcode
CI Server for SPThread
Serialization Functions
fork
fork
SP
fork
fork
DB Handling Functions
Memory Handlin Functions
MIFDB
Request
Request
Event
Request
Event
Request/Event
Event
97-11-27 25
구현 - SP (4)DB 처리
함수
DB Handling Functions
MIF DB Handling Functions Event DB Handling Functions
DmiDBListComponentsDmiDBListComponents-ByClassDmiDBListLanguagesDmiDBListClassNamesDmiDBListGroupsDmiDBListAttributes
DmiDBAddRowDmiDBDeleteRowDmiDBGetAttributeDmiDBSetAttributeDmiDBGetMultipkeDmiDBSetMultiple
DmiDBAddComponentDmiDBAddLanguageDmiDBAddGroupDmiDBDeleteComponentDmiDBDeleteLanguageDmiDBDeleteGroup
MIF Decode Functions
MIF Syntax Checker Functions
EventDBDeliverEventEventDBComponentAddedEventDBComponentDeletedEventDBLanguageAddedEventDBLanguageDeletedEventDBGroupAddedEventDBGroupDeletedEventDBSubscriptionNotice
97-11-27 26
구현 - SP (5)메모리
처리 함수Memory Handling Functions
Memory Malloc Functions Memory Free Functions
MallocAttributeDataMallocAttributeIdsMallocAttributeInfoMallocAttributeListMallocAttributeValuesMallocClassNameInfoMallocClassNameListMallocComponentInfoMallocComponentListMallocDataUnionMallocEnumInfoMallocEnumListMallocFileDataInfo
MallocRowDataMallocRowRequestMallocStringListMallocFileDataListMallocGroupInfoMallocGroupListMallocMultiRowDataMallocMultiRowRequestMallocNodeAddressMallocOctetStringMallocStringMallocDate
FreeAttributeDataFreeAttributeIdsFreeAttributeInfoFreeAttributeListFreeAttributeValuesFreeClassNameInfoFreeClassNameListFreeComponentInfoFreeComponentListFreeDataUnionFreeEnumInfoFreeEnumListFreeFileDataInfo
FreeRowDataFreeRowRequestFreeStringListFreeFileDataListFreeGroupInfoFreeGroupListFreeMultiRowDataFreeMultiRowRequestFreeNodeAddressFreeOctetStringFreeStringFreeDateFreeAttributeDataPtrFreeMultiRowDataPtrFreeMultiRequestPtr
97-11-27 27
구현 - SP (6)
• Serialization 함수– 다수 개의 작업들에 대한 동기화 처리 함수
– Single-writer/Multiple-reader Guard (SWMRG)라는 구조체를 사용하여 동기화 처리
97-11-27 28
동기화 처리
SWMRGInitialize
SWMRG 객체를 초기화하는 함수로서 프로그램의 시작 시에 main에서 한 번만 호출.
SWMRGDelete
SWMRG 객체를 해지하는 함수로서 프로그램의 종료 시에 호출.
SWMRGWaitRead읽기 작업이 필요한 thread인 경우 먼저 쓰기 작업을 하는 thread가
있는지를 확인하고 없어질 때까지기다린 뒤 작업을 수행
.
.SWMRGDoneReading
작업이 끝난 경우에 쓰기 thread가진행을 할 수 있도록 event를 보낸다
SWMRGWaitWrite쓰기 작업이 필요한 thread인 경우
읽기나 쓰기 작업을 하고 있는thread가 있는지를 확인하고
없어질 때까지 기다린 뒤 수행..
SWMRGDoneWriting쓰기 작업이 끝난 경우에 다른 일기/쓰기 thread가
진행을 할 수 있도록 event를 보낸다
event
Multi Readers
Single Writer
97-11-27 29
구현 - MA (1)전체 구성
MI for MA MI for SP SP
Server Threadfor SP
Console Event ViewerRequest
Request
Event
Event
Eventfork
User Interface User Interface
MI for MA
MI for SP
MAF
admin classserver class
component classgroup class
attribute classenum class
mem_free class
MAF
server classmem_free class
User
97-11-27 30
구현 - MA (2)• UI
– Microsoft Foundation Class (MFC)를 사용
– MS-Windows를기반
97-11-27 31
구현 - MA (3)• MAF
– C++ 클래스로서구현 CServer
CEnum
CAttribute
CGroup MI
CAdmin
Cmem_Free
CAdmin: Administration classCserver: Server classCgroup: Group classCattribute: Attribute classCenum: Enumeration classCmem_Free: Memory Free classMI: Management Interface
97-11-27 32
class CServer{public:
CServer();~CServer();CComponent* pComponent;DMI_Mem_Free Dmi_Free;int Server_Number_Of_Components;
protected:unsigned char* pszNetworkAddress;char* DMI_Server_Description;
public:char* Get_Server_Description ();int Disconnect_From_Server ();int Connect_To_Server(char *addr);
int Verify_DMI_Agent();int Get_Component();int Get_Group(int compId);int Get_Attribute_Structure(int compId,int grpId);int Get_Table_Attributes( int compId, int grpId);int Set_Table_Attributes( int compId, int grpId, int row);int Change_Password(char* id, char* old_pass, char* new_pass);int Check_Password_Register (char* id, char* passwd);
int OnCListAttr( int compId, int grpId, DmiAttributeList_t **reply);int OnCListComp(DmiComponentList_t** reply);int OnCListGroup(int compId, DmiGroupList_t** reply);
int OnDAddComp(char *name, char *body, int type, int *cid);int OnDAddGroup(char *name, char *body, int type, int cid, int* gid);int OnDDelComp(int cid);int OnDDelGroup(int cid, int gid);int OnOAddRow(int cid, int gid, DmiRowData_t* rowData);int OnODelRow(int cid, int gid, DmiRowData_t* rowData);
int OnOGetAttr( int cid, int gid, int aid);int OnOGetMulti(DmiMultiRowRequest_t* request,
DmiMultiRowData_t** rowData);int OnOSetAttr( int cid, int gid, int aid);int OnOSetMulti(DmiMultiRowData_t* rowData);
};
Server 클래스
97-11-27 33
구현 - 기타 기능 (1)
• Ping 기능– 특정 시스
템에 SP가작동하고있는지를판단
SPPing Server Thread
MA
Ping Client Function
CAdmin class
Port 2000
Port 2001
pingmessage
pingmessage
O: AliveX: Dead
fork
97-11-27 34
구현 - 기타 기능 (2)• Auto-
discovery 기능– 특정 도메
인 내부에서 SP가 작동하고 있는 모든 시스템을 탐색, 발견
SP
MACAdmin class
For ( k=from; k<=to; k++) sendToSP (ping_message)
Sender Thread Receiver Thread
Sleep (5000);while (1) { recvFrom () srv_addr[k++] = sender.addr}
fork
fork
forkPing server Thread
Port 2000
Port 2001
Pingmessage
Pingmessage
97-11-27 35
구현 - 기타 기능 (3)• 보안 기능
– 허가된 사용자에게만 SP에서제공하는인터페이스 함수를사용할 수있도록 하는 기능
MA SPConnect
DmiCheckRegister (id, passwd)
(handle)
DmiListComponent (handle ..)
DmiGetAttribute (handle ..)
DB
NULL
ID와 password로써Access 권한 검사
O
X
O X
97-11-27 36
구현 - 기타 기능 (4)
• 이벤트 메일 전송 기능– SP에서 발생하는 각종 event나 indication들을 인터
넷 메일을 통해 시스템 관리자에게 전달하는 기능
– SMTP 서버의 포트 25번으로 SMTP 메일을 작성, 전송
• 이벤트 로그 데이타 제공 기능– SP에서 발생하는 각종 event나 indication들을 로그
데이타로서 저장, 시스템 관리자가 요구시 이를 제공
– 필터링 기능, 삭제 기능
97-11-27 37
시스템 시험 (1)
• 시험 환경– DPE Lab– NT 또는
win95 를기반으로하는 시스템
141.223.82.25 141.223.82.17
141.223.82.23
DPE Lab Network
PC ServerSystem
DesktopPC
DesktopPC
97-11-27 38
시스템 시험 (2)
• Console 초기 화면– 자동으로
SP가 작동하는 시스템을 탐색하여 화면표시
PC Server 시스템 (NT)
Deshtop PC (Win 95)
수동으로 특정한 시스템에서의 agent 작동 여부제공자동으로 특정한 도메인내부에서의 agent 작동 시스템 탐지
현재 서버 리스트 화면에 새로운 서버를 추가
현재 서버 리스트 화면에서 특정한 서버를 삭제
서버 시스템에 대한 간략한 설명 (위치, 소유자 등)
97-11-27 39
시스템 시험 (3)
• SP 실행 화면– NT 시스템
이 부팅될때 자동으로실행되어 백그라운드 작업으로 수행
Windows 환경내에서제어판/서비스
Service Provider프로그램
Component Instrumentation code
97-11-27 40
시스템 시험 (4)
• Console 화면(기본 정보)– 관리 대상
시스템 내부의 관리 객체들에 대한자세한 정보를 보여준다
141.223.82.25 시스템정보 화면
141.223.82.17 시스템정보 화면
97-11-27 41
시스템 시험 (5)Console 화면(보조 기억장치 정보)
현재 시스템에서의 기억 장치에 대한 정보를 보여주고 있다.하드 디스크가 4개이고 플로피 디스크가 1개임을 알 수 있다
97-11-27 42
시스템 시험 (6)
• Event Viewer 화면– SP로부터
의 event나indication들을 실시간으로 화면에 표시
97-11-27 43
시스템 시험 (7)
• Event 로그데이타 보기– SP에 저장
된 이벤트로그 데이타들을 보여준다
97-11-27 44
결론
• 전체 코드의 라인 수– 31931 (SP) + 30889 (CO) + 14386 (EV) = 77206
• 서버 시스템에서 제공하는 각종 소프트웨어, 프린터, 자원들 (CPU, I/O 장치, 메모리 등)을효율적으로 관리 가능
• 서버급 PC이외의 데스크탑 PC, NetPC의 경우도 약간의 수정으로 관리 가능
97-11-27 45
향후 과제• DMI Ver 3.0 고려
• Web을 통한 시스템 관리 고려
• Web-based Enterprise Management (WBEM) 구조 고려
Management Solutions
Web-based Enterprise Management
MIB MIF MOF Private
SNMP DMI CMIP Private
Networkdevices
Desktopsystems
Telecomdevices
ApplicationServers
ManagementApplications
ManagementInfrastructure
APIs andProtocol
PhysicalManagedObjects