CIMOM Implementation What is Pegasus Pegasus is an

  • Slides: 69
Download presentation
CIMOM Implementation

CIMOM Implementation

What is Pegasus? • Pegasus is an open-source reference implementation of the DMTF WBEM

What is Pegasus? • Pegasus is an open-source reference implementation of the DMTF WBEM specifications • Pegasus is a work project of the TOG Enterprise Management Forum • Pegasus is a platform for building application management • Pegasus is a function-rich, production-quality open-source implementation designed to be used in high volume server implementations.

Why Produce Pegasus? • • Demonstrate manageability concepts. Provide additional standards for WBEM Provide

Why Produce Pegasus? • • Demonstrate manageability concepts. Provide additional standards for WBEM Provide a working implementation of WBEM technologies Provide an effective modular implementation Support other Open Group manageability standards Base Platform for Open Group Application management Projects Help make WBEM real Pegasus was Initiated in 2000 by the Open Group in collaboration with: §BMC Software §IBM §Tivoli Systems

Key Pegasus Objectives Standards Based Open Source Portable Efficient And Lightweight Pegasus Production Quality

Key Pegasus Objectives Standards Based Open Source Portable Efficient And Lightweight Pegasus Production Quality Continuity Modular And Extensible

Pegasus Working Group Philosophy • Manageability not management – The Pegasus working group’s objective

Pegasus Working Group Philosophy • Manageability not management – The Pegasus working group’s objective is not to manage systems but to make them manageable by promoting a standard instrumentation environment – The actual management of systems is left to systems management vendors • No standards without implementation – The process of implementation provides a rigorous process for testing the validity of standards – Therefore all standards must be validated by implementation

Open Source • Code and documentation freely available – Open Group and Source Forge

Open Source • Code and documentation freely available – Open Group and Source Forge • MIT source license • Open to contributions • No commitment to Open Group to use code

Portable • Designed for multi-platform, multi-OS, multi-compiler implementation • Platforms ported today – –

Portable • Designed for multi-platform, multi-OS, multi-compiler implementation • Platforms ported today – – UNIX (AIX, HPUX, Solaris, Tru-Unix) Linux Windows Platforms (NT, 2000, 9 x) Compaq Himalaya (Tandem)

Efficient and Lightweight • Core written in C++ • Designed for execution efficiency •

Efficient and Lightweight • Core written in C++ • Designed for execution efficiency • Designed to be production-quality solution

Standards Based • • Based on DMTF CIM and CIM-XML specifications Open Group is

Standards Based • • Based on DMTF CIM and CIM-XML specifications Open Group is active partner in DMTF Growth through participation in specification growth Commitment to continue DMTF compliance

Modular and Extensible • Minimize core object broker. • Maximize extensibility through plug-in components

Modular and Extensible • Minimize core object broker. • Maximize extensibility through plug-in components • Component types – – – – Providers Provider interfaces Clients Repositories (additional repository handlers) Manageability service extensions Protocol Adapters Modules (extend and modify core functions) Modularity is key to doing parallel development and allowto extensibility

Project for Continued Development • WBEM will continue to develop functionality and standards •

Project for Continued Development • WBEM will continue to develop functionality and standards • Open Group will develop application management partly around Pegasus • Pegasus Development will continue beyond current versions – Integrate contributions – Add basic new functionality – Etc.

The Open Group • Enterprise Management Forum – Projects include: • Pegasus • Ex-SNIA

The Open Group • Enterprise Management Forum – Projects include: • Pegasus • Ex-SNIA Java Based open-source Implementation • Application Management APIs – ARM – AIC • Software Licensing Standards • Qo. S Task Force – User/Supplier interaction forum to advance Qo. S and Service Level Standards – Working with DMTF, IETF, TMN

2. The Pegasus Environment

2. The Pegasus Environment

Pegasus Architecture Consumers Clients Interoperable* MOF Compiler Interoperable* Standard Interfaces CIM/HTTP CIM Server CIM/HTTP

Pegasus Architecture Consumers Clients Interoperable* MOF Compiler Interoperable* Standard Interfaces CIM/HTTP CIM Server CIM/HTTP In-Process Consumers Providers Services

CIMOM Capabilities • Respond to Operations defined in “CIM Operations” spec. – Create, Modify,

CIMOM Capabilities • Respond to Operations defined in “CIM Operations” spec. – Create, Modify, Delete operations on • Class, Instance, Property, Qualifier • Handle Provider Registration • Forward Requests to Providers, repositories, etc. • Read/Write access to Management Information – Maintain Class/Instance Information • • Traversal of Associations Use of WBEM Query Language Syntax/Semantic checking (with Qualifiers) Available Implementations – Microsoft (in Windows 2000), Sun WBEM SDK, SNIA, Open Group Pegasus, …

Key Interoperability Interfaces Manageability to Manager • Multiple management systems • Common open manageability

Key Interoperability Interfaces Manageability to Manager • Multiple management systems • Common open manageability Object Manager / Providers Management System Enterprise Management Console CIM Object Manager • Multiple Providers • Encourage common providers CIM Providers Provider / Resource Interface • Protect Applications • Make application management easy Application

The CIM Operations Interoperable* Consumers Clients Standard Interfaces CIM/HTTP Services CIM Object Mgr Interoperable*

The CIM Operations Interoperable* Consumers Clients Standard Interfaces CIM/HTTP Services CIM Object Mgr Interoperable* CIM/HTTP In-Process Consumers Providers Repository

Operations Routing • Class Operations – Routed to the Class Repository • Instance Operations

Operations Routing • Class Operations – Routed to the Class Repository • Instance Operations – To Provider if Provider Qualifier exists – To Instance repository if no Provider • Instance routing at Class Level Today – Issues – Routing at instance level

The CIM Indications Consumers Clients Interoperable* Standard Interfaces CIM/HTTP Indication SNMP, cim-xml, etc. Handlers

The CIM Indications Consumers Clients Interoperable* Standard Interfaces CIM/HTTP Indication SNMP, cim-xml, etc. Handlers CIM Object Mgr Interoperable* CIM/HTTP Indicators In-Process Consumers Providers Services Repository

Modularity and Extensibility • Providers – Grow with DMTF provider concepts • Provider Interfaces

Modularity and Extensibility • Providers – Grow with DMTF provider concepts • Provider Interfaces • Protocol Adapters (connectors) – Client - Xml-cim today (Soap, etc. in future) – Provider, service, repository, etc. • Modules – Modularize core so it can be extended and modified through attachable modules • Manageability Service Extensions – Think super providers

Building A Modular Manageability Environment CIM Client Connector CIM Client XML-CIM Connector Module Core

Building A Modular Manageability Environment CIM Client Connector CIM Client XML-CIM Connector Module Core Object Broker Connector Service Extension Repository Undefined Connector Provider Resources . . . Resources

Pegasus Manageability Environment CIMOM Management System Consumers Management Consumers XML/CIM System Connector Gateways Connector

Pegasus Manageability Environment CIMOM Management System Consumers Management Consumers XML/CIM System Connector Gateways Connector System Connector Apps Broker Providers Resource Application Consumer CIM Object Broker • Provider Registration • Service Registration • Request Routing • Securiy AIC Provider Apps Services core*** additional Class Repository Instance Repository ARM Provider SNMP Provider OS Etc. . Interface For Spec

Provider Interoperability • In the classical architecture, interoperability is only supported between the client

Provider Interoperability • In the classical architecture, interoperability is only supported between the client and server. • In addition, the Pegasus architecture aims to support provider/server interoperability. • Goal – Write a provider once and run it under any CIM server implementation. • Provider/Server Interoperability: – – Participating in efforts to standardize the Provider/Server protocol. Proposing provider API standards. Writing adapters enabling Pegasus providers to run under other CIM servers. Adapters enabling other providers to run under Pegasus

Important Provider Interfaces • SUN WBEM Provider Interface – Java based – Classes, etc.

Important Provider Interfaces • SUN WBEM Provider Interface – Java based – Classes, etc. “similar” to Pegasus • C Provider Interface – Sun has a specification here. • We will support multiple provider interfaces and language bindings.

In-Process and Out-of-process Providers • Today Pegasus based on shared Library Providers • Extend

In-Process and Out-of-process Providers • Today Pegasus based on shared Library Providers • Extend to – Internal Providers – IPC based Providers – Providers in Remotes systems • Objectives: – Write Provider once and compile/link for different environments • Technique – Use connectors as basis for provider/CIMOM communication • Issues – Security, discovery

Manageability Service Extensions • Super Providers • Access to the Core Broker • Examples

Manageability Service Extensions • Super Providers • Access to the Core Broker • Examples – Indication Subscription service. – Class repository service. – Instance repository service.

Connectors (Protocol Adapters) • Functions – Adapt to different protocols • Characteristics – –

Connectors (Protocol Adapters) • Functions – Adapt to different protocols • Characteristics – – Protocol Encoding Security Discovery • Examples – – – Xml-CIM Local Protocols Soap WMI Corba environment interface Xml-cim Client External Corba Environment Corba Connector Xml-cim Connector Soap Client Soap Connector Pegasus Core Pegasus Provider Connector Remote Provider

Pegasus Interfaces • Common Interface base for – Clients, providers, services, connectors • Based

Pegasus Interfaces • Common Interface base for – Clients, providers, services, connectors • Based on CIM Operations over HTTP • Additional functions for each interface • Interfaces separated from implementation CIM Client Connector Core Object Broker Service Extension Repository Provider

3. The Pegasus Software Architecture

3. The Pegasus Software Architecture

Major Components Client CIM Clients CIM Server Client CIM Providers Repository

Major Components Client CIM Clients CIM Server Client CIM Providers Repository

Topics • • • Communication. Representation of CIM Elements. The Client Interface. The CIM

Topics • • • Communication. Representation of CIM Elements. The Client Interface. The CIM Object Manager. The Provider Interface. The Repository Interface.

Pathways of Communication Client CIM Clients CIM Server Client CIM Client Providers CIM Repository

Pathways of Communication Client CIM Clients CIM Server Client CIM Client Providers CIM Repository

Component Location • A component may be located in one of three places with

Component Location • A component may be located in one of three places with respect to the CIM Server. – In-process. – Local out-of-process (on the same machine). – Remote out-of-process (on another machine). • For example, a provider may be in-process, local, or remote.

Component Location in Pegasus Today

Component Location in Pegasus Today

Possible Communication Mechanisms • Components could potentially communicate with the CIM Server using the

Possible Communication Mechanisms • Components could potentially communicate with the CIM Server using the following mechanisms: – – – CIM/HTTP (remote). Proprietary TCP-based protocol (remote). Direct call (in process). Shared memory (local). Named pipes (local).

Communication Mechanisms in Pegasus

Communication Mechanisms in Pegasus

Client Communication • • Uses CIM/HTTP as sole protocol. Asynchronous socket I/O. An efficient

Client Communication • • Uses CIM/HTTP as sole protocol. Asynchronous socket I/O. An efficient XML parser. Fast enough to eliminate the need for a proprietary protocol.

An Efficient XML Parser • No memory heap usage during parsing. • Modifies message

An Efficient XML Parser • No memory heap usage during parsing. • Modifies message in place to avoid copying. • Non-validating parser (“loose validation”).

HTTP Implementation • Uses asynchronous socket I/O in conjunction with message queues to achieve

HTTP Implementation • Uses asynchronous socket I/O in conjunction with message queues to achieve optimal throughput. • Provides entry points to adding web server capabilities such as putting and getting of documents (to support remote upgrade and deployment later on).

Proposals • Support out-of-process providers (local and remote). • Support out-of-process repositories (local and

Proposals • Support out-of-process providers (local and remote). • Support out-of-process repositories (local and remote). • Location independent provider development.

Representation of CIM Elements Representing CIM Elements in Pegasus with C++

Representation of CIM Elements Representing CIM Elements in Pegasus with C++

CIM Data Types in C++ • • • Uint 8 Sint 8 Uint 16

CIM Data Types in C++ • • • Uint 8 Sint 8 Uint 16 Sint 16 Uint 32 Sint 32 Uint 64 Sint 64 Real 32 Real 64 • • • Boolean Char 16 String CIMDate. Time CIMReference

CIM Values in C++ • CIM values (property, parameter, and qualifier values) are represented

CIM Values in C++ • CIM values (property, parameter, and qualifier values) are represented using the CIMValue class. This class: – Encapsulates a union of all CIM data types. – Has a type member indicating the type currently being represented. – Provides access/modifier methods overloaded for each CIM data type.

CIM Elements in C++ • • CIMClass CIMInstance CIMProperty CIMMethod CIMParameter CIMQualifier. Decl CIMQualifier

CIM Elements in C++ • • CIMClass CIMInstance CIMProperty CIMMethod CIMParameter CIMQualifier. Decl CIMQualifier

Class Declaration Example (Part 1) • Consider the following MOF class declaration: class Alarm

Class Declaration Example (Part 1) • Consider the following MOF class declaration: class Alarm { [key] uint 64 id; string message = “none”; }; • This class is defined in C++ as follows: CIMClass alarm. Class(“Alarm”); CIMProperty id(“id”, Uint 32(0)); id. add. Qualifier(CIMQualifier(“key”, true)); CIMProperty message(“message”, “none”); alarm. Class. add. Property(id); alarm. Class. add. Property(message); • Or more succinctly like this: CIMClass alarm. Class(“Alarm”); alarm. Class. add. Property(CIMProperty(“id”, Uint 32(0)). add. Qualifier(CIMQualifier(“key”, true))). add. Property(CIMProperty(“message”, “none”));

Property Iteration Example: • The properties of a class may be iterated like this:

Property Iteration Example: • The properties of a class may be iterated like this: CIMClass c; … for (Uint 32 i = 0, n = c. get. Property. Count(); i < n; i++) { CIMProperty p = c. get. Property(i); }

The Client Interface Client CIM Clients CIM Server Client CIM Client Providers Repository

The Client Interface Client CIM Clients CIM Server Client CIM Client Providers Repository

The Client Interface • A C++ interface for interacting with the Pegasus Server (or

The Client Interface • A C++ interface for interacting with the Pegasus Server (or any CIM Server). • Uses CIM/HTTP to communicate. • Provides a method for each CIM operation defined in the “CIM Operations over HTTP, V 1. 0” specification.

The CIM Operations • • • • Get. Class Get. Instance Delete. Class Delete.

The CIM Operations • • • • Get. Class Get. Instance Delete. Class Delete. Instance Create. Class Create. Instance Modify. Class Modify. Instance Enumerate. Classes Enumerate. Class. Names Enumerate. Instance. Names Exec. Query • • • Associators Associator. Names Reference. Names Get. Property Set. Property Get. Qualifier Set. Qualifier Invoke. Method

CIM Operation Example CIM Operations Specification Pegasus Class Method <instance> Get. Instance ( [IN]

CIM Operation Example CIM Operations Specification Pegasus Class Method <instance> Get. Instance ( [IN] <instance. Name> Instance. Name, [IN, OPTIONAL] boolean Local. Only = true, [IN, OPTIONAL] boolean Include. Qualifiers = false, [IN, OPTIONAL] boolean Include. Class. Origin = false, [IN, OPTIONAL, NULL] string Property. List [] = NULL ) virtual CIMInstance get. Instance( const String& name. Space, const CIMReference& instance. Name, Boolean local. Only = true, Boolean include. Qualifiers = false, Boolean include. Class. Origin = false, const Array<String>& property. List = NULL_PROPERTY_LIST);

Client Connection Example • A client connects to the CIM Server on the host

Client Connection Example • A client connects to the CIM Server on the host called “saturn” at port 5988 like this: Selector selector; CIMClient client(&selector); client. connect(“saturn: 5988”);

Get. Class Example • A client gets a class like this: CIMClass alarm. Class

Get. Class Example • A client gets a class like this: CIMClass alarm. Class = client. get. Class(“root/cimv 2”, “Alarm”);

Client Proposals • Asynchronous Interface APIs • Interface independent of local/remote client

Client Proposals • Asynchronous Interface APIs • Interface independent of local/remote client

The Pegasus CIMOM Client CIM Clients CIM Server Client CIM Providers Repository

The Pegasus CIMOM Client CIM Clients CIM Server Client CIM Providers Repository

Request Lifecycle Incoming Request Outgoing Response 1. Receive TCP Message Channel 8. Transmit TCP

Request Lifecycle Incoming Request Outgoing Response 1. Receive TCP Message Channel 8. Transmit TCP Message 2. Process HTTP Request Protocol 7. Form HTTP Response 3. Decode from XML Encodings 6. Encode to XML 4. Dispatch Request Dispatcher Aggregator 5. Aggregate Results Repository Providers

CIMOM Modules • Channel - Implements transport mechanism (e. g. , TCP). • Protocol

CIMOM Modules • Channel - Implements transport mechanism (e. g. , TCP). • Protocol - Implement application protocol (e. g. , HTTP). • Encodings - Implements encoding and decoding of messages (e. g. , CIM-XML). • Dispatcher - Dispatches messages to provider(s)/repository. • Repository - Implements CIM Repository. • Aggregator - Aggregates results.

Module Concept • The internal CIMOM architecture is being refined into a set of

Module Concept • The internal CIMOM architecture is being refined into a set of modules. • Each module handles part of the request lifecycle. • Alternative implementations may be provided for each module type. • New module implementations can be used to modify or refine the behavior of the CIMOM and to facilitate porting.

Module Implementations • • • Channel - provide a named-pipe implementation. Protocol - provide

Module Implementations • • • Channel - provide a named-pipe implementation. Protocol - provide a proprietary binary protocol. Encodings - provide a binary encoding scheme. Repository - provide a relational-based implementation. Traffic Encryption - SSL implementation. Authentication – Challenge and response

Queued Operation Model • • • Internal representation of operations/Indications is messages Major components

Queued Operation Model • • • Internal representation of operations/Indications is messages Major components are queue driven Mapped to direct interfaces (ex. get. Class) at provider manager. Message manager controls flows, priorities, etc. Advantages – – Efficiency Threading Extensible interfaces Flow Control

Module Definition and Loading • Modules implement one of the module interfaces (e. g.

Module Definition and Loading • Modules implement one of the module interfaces (e. g. , Repository). • Modules are configured as dynamic libraries. • Modules listed in modules file. • Modules loaded by CIMOM on startup.

Indication Import Client Interface (cim-xml today) Authentication Acceptor xxx Http Delegator Http xxx CIM

Indication Import Client Interface (cim-xml today) Authentication Acceptor xxx Http Delegator Http xxx CIM Export Request Decoder CIM Export Request Processor XML Decoder Encoder CIM XML Comm Module Local Destination CIM Operations Processing subsystem Repository CIM-XML Indication handler SNMP Indication handler Authorization Response generator Operations Request Processor Operations Response Processor Pegasus. Msg. Dispatcher Indication Handler Manager Indication Consumer Manager Provider Mgr Subsystem Pegasus Module Organization Export Indication provider Indication Consumer Manager Subscription Service and Indication Processor CIM Control Services • Start/Stop Function • Provider registration Function • User/Auth. Function • jj • Jj • __Namespace Services Subsystem Formal Provider Interface

The Provider Interface Client CIM Clients CIM Server Client CIM Providers Repository

The Provider Interface Client CIM Clients CIM Server Client CIM Providers Repository

Provider Proposals • Interoperability with SUN Wbem providers proposal • We are extending other

Provider Proposals • Interoperability with SUN Wbem providers proposal • We are extending other interoperability ideas Pegasus CIMOM SUN WBEM CIMOM Microsoft CIMOM Pegasus Providers SUN WBEM Providers Microsoft WMI Providers

The Repository Interface Client CIM Clients CIM Server Client CIM Providers Repository

The Repository Interface Client CIM Clients CIM Server Client CIM Providers Repository

The Repository Interface • Defines the interface to manipulating the CIM repository. • Alternative

The Repository Interface • Defines the interface to manipulating the CIM repository. • Alternative implementations of this interface may be provided. • Pegasus provides a simple default implementation.

Default Repository Implementation • • • Each CIM Class object is stored in its

Default Repository Implementation • • • Each CIM Class object is stored in its own file. Instance objects stored in single file for each class CIM objects are encoded as XML in files. Namespaces are represented using file system directories. Single reader/writer at a time. Example: the class X (subclass of Y) which resides in the root/cimv 2 namespace would be stored in this file: <repository_root>/root#cimv 20/classes/X. Y

Default Repository Limitations • Adequate for classes and qualifiers (which tend to be few).

Default Repository Limitations • Adequate for classes and qualifiers (which tend to be few). • Okay for a few hundred instances. • Not intended to scale to thousands of instances (uses a lot of disk space due to internal fragmentation). • Good for scenario in which a few instances come from the repository and many instances come from providers.

Proposed Repository Implementation • A new repository implementation is under consideration to improve scalability:

Proposed Repository Implementation • A new repository implementation is under consideration to improve scalability: – Encode objects in binary on disk (rather than XML). This will reduce size by three to one. – Combine like objects into a single file rather than separate files (this will reduce internal fragmentation). – Provide a fast indexing scheme for keys (disk hashing or B+-Trees). This will improve lookup time.

Alternative Repository Modules • Repository modules may be developed to achieve a highly scalable

Alternative Repository Modules • Repository modules may be developed to achieve a highly scalable repository. Possibilities include: – – Basing repository on a relational database. Basing repository on Unix DB. Making the repository remote. Improving space utilization of existing implementation by storing objects in binary format (rather than as XML).