Title: CIMOM Implementation
1CIMOM Implementation
2What 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.
3Why 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
4Key Pegasus Objectives
Open Source
Standards Based
Pegasus
Continuity
Portable
Modular And Extensible
Efficient And Lightweight
Production Quality
5Pegasus Working Group Philosophy
- Manageability not management
- The Pegasus working groups 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
6Open 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
7Portable
- Designed for multi-platform, multi-OS,
multi-compiler implementation - Platforms ported today
- UNIX (AIX, HPUX, Solaris, Tru-Unix)
- Linux
- Windows Platforms (NT, 2000, 9x)
- Compaq Himalaya (Tandem)
8Efficient and Lightweight
- Core written in C
- Designed for execution efficiency
- Designed to be production-quality solution
9Standards 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
10Modular 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
11Project 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.
12The Open Group
- Enterprise Management Forum
- Projects include
- Pegasus
- Ex-SNIA Java Based open-source Implementation
- Application Management APIs
- ARM
- AIC
- Software Licensing Standards
- QoS Task Force
- User/Supplier interaction forum to advance QoS
and Service Level Standards - Working with DMTF, IETF, TMN
132. The Pegasus Environment
14Pegasus Architecture
Standard Interfaces
Interoperable
MOF Compiler
CIM Server
Interoperable
CIM/HTTP
In-Process
15CIMOM 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 Windows2000), Sun WBEM SDK, SNIA,
Open Group Pegasus,
16Key Interoperability Interfaces
Management System
Enterprise Management Console
- Manageability to Manager
- Multiple management systems
- Common open manageability
CIM Object Manager
- Object Manager / Providers
- Multiple Providers
- Encourage common providers
CIM Providers
- Provider / Resource Interface
- Protect Applications
- Make application management easy
Application
Application
Application
Application
17The CIM Operations
Standard Interfaces
CIM Operations
Interoperable
CIM Object Mgr
Repository
Repository
Interoperable
CIM/HTTP
In-Process
18Operations 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
19The CIM Indications
Standard Interfaces
Interoperable
Indication Handlers
SNMP, cim-xml, etc.
CIM Object Mgr
Repository
Repository
Interoperable
CIM/HTTP
In-Process
Indicators
20Modularity 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
21Building A Modular Manageability Environment
Core Object Broker
Connector
Connector
. . .
Provider
22Pegasus Manageability Environment
Management System
Management System
CIMOM
Services core additional
Application Consumer
Application Consumer
Management System Connector
Application Consumer
Consumers Gateways Apps
XML/CIM Connector
Management System Connector
- CIM Object Broker
- Provider Registration
- Service Registration
- Request Routing
- Securiy
-
-
Broker
Class Repository
Instance Repository
AIC Provider
ARM Provider
SNMP Provider
. . .
Providers
Interface For Spec
Apps
OS
Etc.
Resource
23Provider 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
24Important 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.
25In-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
26Manageability Service Extensions
- Super Providers
- Access to the Core Broker
- Examples
- Indication Subscription service.
- Class repository service.
- Instance repository service.
27Connectors (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
Soap Client
Xml-cim Connector
Soap Connector
External Corba Environment
Pegasus Core
Corba Connector
Pegasus Provider
Connector
Remote Provider
28Pegasus Interfaces
- Common Interface base for
- Clients, providers, services, connectors
- Based on CIM Operations over HTTP
- Additional functions for each interface
- Interfaces separated from implementation
Core Object Broker
293. The Pegasus Software Architecture
30Major Components
Client
Client
CIM Clients
Repository
CIM Server
Client
Client
CIM Providers
31Topics
- Communication.
- Representation of CIM Elements.
- The Client Interface.
- The CIM Object Manager.
- The Provider Interface.
- The Repository Interface.
32Pathways of Communication
33Component 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.
34Component Location in Pegasus Today
35Possible 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).
36Communication Mechanisms in Pegasus
37Client 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.
38An Efficient XML Parser
- No memory heap usage during parsing.
- Modifies message in place to avoid copying.
- Non-validating parser (loose validation).
39HTTP 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).
40Proposals
- Support out-of-process providers (local and
remote). - Support out-of-process repositories (local and
remote). - Location independent provider development.
41Representation of CIM Elements
- Representing CIM Elements in Pegasus with C
42CIM Data Types in C
- Uint8
- Sint8
- Uint16
- Sint16
- Uint32
- Sint32
- Uint64
- Sint64
- Real32
- Real64
- Boolean
- Char16
- String
- CIMDateTime
- CIMReference
43CIM 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.
44CIM Elements in C
- CIMClass
- CIMInstance
- CIMProperty
- CIMMethod
- CIMParameter
- CIMQualifierDecl
- CIMQualifier
45Class Declaration Example (Part 1)
- Consider the following MOF class declaration
- class Alarm
-
- key
- uint64 id
- string message none
-
- This class is defined in C as follows
- CIMClass alarmClass(Alarm)
- CIMProperty id(id, Uint32(0))
- id.addQualifier(CIMQualifier(key, true))
- CIMProperty message(message, none)
- alarmClass.addProperty(id)
- alarmClass.addProperty(message)
- Or more succinctly like this
- CIMClass alarmClass(Alarm)
- alarmClass
- .addProperty(CIMProperty(id, Uint32(0))
- .addQualifier(CIMQualifier(key, true)))
46Property Iteration Example
- The properties of a class may be iterated like
this - CIMClass c
-
- for (Uint32 i 0, n c.getPropertyCount()
- i lt n i)
-
- CIMProperty p c.getProperty(i)
-
47The Client Interface
48The 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, V1.0
specification.
49The CIM Operations
- GetClass
- GetInstance
- DeleteClass
- DeleteInstance
- CreateClass
- CreateInstance
- ModifyClass
- ModifyInstance
- EnumerateClasses
- EnumerateClassNames
- EnumerateInstances
- EnumerateInstanceNames
- ExecQuery
- Associators
- AssociatorNames
- References
- ReferenceNames
- GetProperty
- SetProperty
- GetQualifier
- SetQualifier
- InvokeMethod
50CIM Operation Example
ltinstancegt GetInstance ( IN
ltinstanceNamegt InstanceName,
IN,OPTIONAL boolean LocalOnly true,
IN,OPTIONAL boolean IncludeQualifiers false,
IN,OPTIONAL boolean IncludeClassOrigin
false, IN,OPTIONAL,NULL string
PropertyList NULL )
CIM Operations Specification
virtual CIMInstance getInstance( const
String nameSpace, const CIMReference
instanceName, Boolean localOnly true,
Boolean includeQualifiers false, Boolean
includeClassOrigin false, const
ArrayltStringgt propertyList NULL_PROPERTY_L
IST)
Pegasus Class Method
51Client 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(saturn5988)
-
52GetClass Example
- A client gets a class like this
- CIMClass alarmClass
- client.getClass(root/cimv2, Alarm)
-
53Client Proposals
- Asynchronous Interface APIs
- Interface independent of local/remote client
54The Pegasus CIMOM
Client
Client
CIM Clients
Repository
CIM Server
Client
Client
CIM Providers
55Request Lifecycle
Incoming Request
Outgoing Response
1. Receive TCP Message
Channel
Channel
8. Transmit TCP Message
2. Process HTTP Request
Protocol
Protocol
7. Form HTTP Response
Encodings
Encodings
3. Decode from XML
6. Encode to XML
Dispatcher
Repository
4. Dispatch Request
Aggregator
5. Aggregate Results
56CIMOM 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.
57Module 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.
58Module 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
59Queued Operation Model
- Internal representation of operations/Indications
is messages - Major components are queue driven
- Mapped to direct interfaces (ex. getClass) at
provider manager. - Message manager controls flows, priorities, etc.
- Advantages
- Efficiency
- Threading
- Extensible interfaces
- Flow Control
60Module 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.
61Indication Import
Export Indication
Client Interface (cim-xml today)
CIM XML Comm Module
CIM Export Request Decoder
Acceptor
xxx
Authentication
Http Delegator
Http xxx
CIM Export Request Processor
XML Decoder
XML Encoder
Indication Consumer Manager
Local Destination
CIM Operations Processing subsystem
Services Subsystem
Response generator
Repository
Authorization
Subscription Service and Indication Processor
Operations Request Processor
Operations Response Processor
- CIM Control Services
- Start/Stop Function
- Provider registration Function
- User/Auth. Function
- jj
- Jj
- __Namespace
PegasusMsgDispatcher
CIM-XML Indication handler
Indication Handler Manager
Provider Mgr Subsystem
Provider Manager
Indication Consumer Manager
SNMP Indication handler
Formal Provider Interface
provider
Pegasus Module Organization
provider
provider
62The Provider Interface
Client
Client
CIM Clients
Repository
CIM Server
Client
Client
CIM Providers
63Provider 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
64The Repository Interface
Client
Client
CIM Clients
Repository
CIM Server
Client
Client
CIM Providers
65The Repository Interface
- Defines the interface to manipulating the CIM
repository. - Alternative implementations of this interface may
be provided. - Pegasus provides a simple default implementation.
66Default 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/cimv2 namespace would be
stored in this file - ltrepository_rootgt/rootcimv20/classes/X.Y
67Default 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.
68Proposed 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.
69Alternative 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).