UXComm: Universal XML Communicator, an Agent Architecture

Post on 09-Jul-2015

118 views 2 download

description

In 2000, I along with a small group of software professionals set out to create a universal device/system-agnostic communication and control system that would allow any system or device to reconfigure and retool itself to adopt to changes in the environment. We also wanted to define a meta-language that would allow each device to be self-describing and self-configuring. We embedded the engine in Cisco IOS kernel but aside from creating the most versatile remote control system, we also managed to blow a huge hole in the network infrastructure security, effectively killing the effort.

Transcript of UXComm: Universal XML Communicator, an Agent Architecture

AutonomIQ™ Technology OverviewJune 2005

By Dr. George Vanecek, Jr.

UXComm Objectives

Create a service management middleware, based on

A generalized and extensible protocol mediation and translation and API abstraction mechanism, to

Configure, control, monitor, and provision networked service assets, and

Address heterogeneity, interoperability, and change in the service assets.

UXComm Solution

Create an engine that Is very small by providing minimal built-in

functionality Is O.S. independent Is powerful by extending its support

capabilities on demand Offers a self-describing service views of

native services Can support an agent architecture

Service Request/Response

CLIENTor

AGENT AGENT

Service Requestwith Reference to a Service Specification

XML/HTMLResponse

DownloadServer

Service Specification,Adaptors,

andRequired Libraries4

12

3

Service RequestExecution

HTTP/S

Holds for requests over other protocols such as SNMP or CLI over Telnet.

IA2 Engine

Applications as Collection of Services

WorkflowManager

CLI (Telnet) Web (HTTP)

PersistentStore

EventManager

SNMPManager

WMIClient

HPIClient

SNMPAgent

Example Application Service

IA2 Engine executes servicesand facilitates communication between services viaservice requests

IA2 Engine(Java)

Service Specification(XDS written in XDL)

Service Request(XSR)

Service Execution Environment

Service Request

Service Definition(Interface)

Service Implementation

Shared Libraries

External APIs, Protocols, O.S.s, Applications

Adaptor Actions

XDL: eXtensible Design Language

Is a meta-language for authoring the service specifications (XDS’s)

Decomposes a complex service into a hierarchy or groups of logical sub-services

Offers a natural encoding of pre/post actions associated with each sub-service

Is compiled by the engine (not interpreted)Allows imports of engine extensions by

loading adaptors and share libraries/stacks

Example Specification and RequestCisco IOSSpecification

Request toInstall a tar file

XDS Example (as XML)<xds id=“…” …> <node name=“demo” xmlns:io=“/adapter/IOAdapter.jar”> <args> …Arguments… </args> <subnodes> <node name=“createHelloWorld” …> <args>…Arguments… </args> <do> <io:open file=“path”/> <io:write string=“hello world”/> … <io:close/> </do> </node> …Other Commands… </subnodes> </node></xds>

demo

createHelloWorld …

Script Programs

All command are supplied by adaptors

Commands are simple or structured

Use typed arguments Support exchange of

POJO’s

Engine Adaptor Collection of related commands Written in Java (Bundled as JAR files) Designed to extend the engine’s run-time

support Optionally provide access to reusable libraries

and stacks Loaded when some XDS requires them Support drag & drop visual editing of XDS

scripts in IDE Adaptor commands are engine co-agents:

Self-parsing from XDS XML file Self-printing to the XDS XML file

Example ScriptNote:IOS XDS implemented as CLI over Telnet with

IO Expect FCLang Exception

adaptors.

Using AIQ Adaptors

XDS<node name … xmlns:an=“URL”><do> … <an:some-action arg1=“…” arg2=“…”/> …</do>

AdaptorLoader/Cache

Load Adaptor

class SomeAction extends XDSAction{ String arg1; String arg2;

exec(…) { } printXML(…){ } parse(…) { } }

InstantiateAction

Execute

Name

XDS Structure

Arguments(name,type,default)

PreActions

PostActions

Exception Handlers

Programbased on actions

from imported adaptors

Adaptor/Library Imports

An XDS node represents a sub-service

XDS, XWSSpecifications

IA2 Engine

AutonomIQ Engine Architecture

O.S. + Hardware

JVM

XDL Compiler

XSR Interpreter

XDS Cache

Adaptor Cache

SNMP

IPMI

HPIJDBC

Telnet

WakeOnLAN

HTTP/S SBLIM

WMI

SOAP

CIM

XML

Applications

Adaptor/Lib Repository

<xsr ref=“http://xds.uxcomm.com/dsp/workflows/provisionBlade.xws”> <provisionBlade tmip=“10.10.10.4” tmport=“6964” …/></xsr>

ServiceRequests

XML Repository

HTTPHTTP

HTTP

Engine Execution Layers

Stack

ComponentSpecialization

AdaptorInterface

Java

ComponentSpecification

Workflows

Application

XDS

XWS

Projects

ApplicationSpecification

Java Threads

Task Thread Management

Workflow Interface

Workflow Scheduler

DiscoveryFail-over Provisioning

On-Demand Asset Tracking (OAT)

SNMP Agent

SNMP Interface

SNMPManager/Handler

SNMP Stack

OAT Master/Agents

RequestDrivenLoading

ExamplesOnly

Adaptor

AIQ IDE:The Integrated Development and Execution Environment

Building Application Services1. Using IDE, author services

Create low-level service specifications(to control legacy components) SNMP, IPMI, WMI, Cisco IOS, …

Create application component service specifications (to add new components) Workflow Manager, Persistence Store, Event Handler,

Event Monitor, … Create application service specifications

(using low-level/application components) Internet Gateway, Download Server, ATCA NMS…

1. Optionally Build UI2. Deploy Agent (Engine with Front-End such as HTTP or

CLI) With access to service specifications and support files.

IDE: Key Components

ManageProjects

ServiceRequests

Editor

Service RequestsExecute/Trace/Debug

ManageAdaptors

XDS Editor

ScriptEditor

IDE: Support Dialogs

ManageIDE Add-ons

Monitor Threads

Edit IDEProperties

Profiler

Heap Monitor

IDE: XDS Editor SupportAdaptorChooser

ExpressionEditor

IDE: Workflow EditingWorkflow

EditorTask

WizardGraphicalViewer

IDE: HTML/Request WizardHTML Wizard

Wizard Interface

HTML TextEditor

Web BrowserPreview andExecution

IDE: Documentation Support

IntegratedWeb

Browser

ComponentPaneHelp

XDSDocViewer

IDE: Request Support

XSR Debugger

BreakpointsAnd

Single StepExecution

Example AIQ Adaptors:SNMP, CLI

SNMP Adaptor and Service

Versions v1, v2c, v3 Manager Agent

SNMPv2 USM and VACM Trap/Inform Handler Proxy Forwarder MIB

Table Support MIB Parser for SMIv1 and

SMIv2 Programmable MIB

queries

CLI Adaptor and Service Telnet/SSH protocols User-based Access Control Command history Command-line editing (e.g., Emacs) Built-in commands

(e.g., help, up) XDS programmable

Input Syntax XML or Text Output

Syntax (via XSLT) Multiple-session capable XSR interoperable

AIQ SDK:The Service Development Kit

AIQ SDK: Service Development Kit

Engine and agent run-time support. Set of adaptors and required libraries IDE for

Authoring service specifications Authoring simple HTML UIs Authoring and execution service requests

Support for Authoring new AIQ Adaptors (given JAPI)

Documentation Sample Adaptor source code Sample Projects with support files

SDK: Included Adaptors Admin Agent administration Array Array data structure CLID CLI Server Exception Exception handling Expect I/O pattern filter FCLang Flow control and variable support IO File I/O, sockets, and process support Log Logging RegExp Regular Expressions System Thread, timers, and synchronization Table Hash table data structure HTTPD Web server JDBC SQL SNMP SNMP v1, v2c and v3 agent, manager, mib XML XML parser and DOM Workflow Workflow execution and management

AIQ Agent Run-time Requirements

JVM Supports J2ME CDC 1.1 with base adaptor set

(J2SE 1.3). J2SE 1.4 with full adaptor set

Disk Requirements AIQ engine 256K Support libraries <2M (e.g. XML parser, JSSE) Base adaptor set <1M

Memory Requirements Minimum 16Mb

Summary: What this all means is that

The IA2 engine supports a reconfigurable agent architecture for creating new domain specific parsers and execution environments (XDS’s) for various classes of service requests (XSR’s).

Summary Universal eXtensible Communicator Ergo, UXComm