Upload
george-vanecek
View
113
Download
2
Embed Size (px)
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.
Citation preview
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