|
Overview | Features
| Uses | Architecture
| Product Components | Packaging
EMANATE is a run-time extensible SNMP agent that
contains a powerful Subagent Development Toolkit, which automates
subagent development. Based upon a Master Agent/Subagent architecture,
EMANATE allows subagents to be dynamically loaded and unloaded at
run-time without affecting the performance of the master agent.
By providing a well-defined and easy to use API, EMANATE automates
and organizes MIB and subagent development.
EMANATE also supports SNMPv1, SNMPv2, and SNMPv3,
thereby enabling secure SNMP-based management of devices, systems,
and applications.
The EMANATE (Enhanced MANagement Agent Through Extensions) Run-time
Extensible Agent System was developed by SNMP Research, Inc. under
the direction of Dr. Jeffrey D. Case. The EMANATE Agent System consists
of a Master Agent, zero to many Subagents and a Subagent Development
Kit. Together these components allow for SNMP management of systems,
devices, and applications (sometimes referred to as managed nodes),
and the easy development and integration of additional subagents
as management needs increase.
EMANATE provides a System Independent Application
(API) that efficiently coordinates SNMP communication between the
Master Agent and the Subagents. This allows EMANATE to port easily
across multiple platforms.
The EMANATE agent supports SNMPv1, SNMPv2c, and
SNMPv3. This trilingual support offers the familiarity of industry
standard SNMPv1, and the security features of authorization and
privacy provided by SNMPv3.
EMANATE provides the following advantages:
Extensibility: Subagents can
connect and disconnect to the Master Agent at will. When this happens,
their MIBs are added and removed dynamically from the Master Agent.
Asynchronous Message Handling:
The Master need not wait for a response from a Subagent before attending
to other incoming SNMP messages.
Master/Subagent Independence:
No restrictions are placed on the order in which the Master Agent
and Subagents may be started.
System Independent API :
An easy-to-use System Independent Application Programming Interface
(API) is provided for developers to use when implementing their
MIB in an EMANATE Subagent. This System Independent API hides the
details of the particular system on which the Subagent is being
developed and permits much Subagent code reuse across different
architectures. In addition, the API provides a clear interface to
the system dependent portion of the Subagent code.
EMANATE addresses the problem of multiple SNMP agents on a single
platform via a modularly constructed extensible agent that provides
rapid Subagent development, standards compliance, portability, and
modular design.
Rapid Agent Development
- As much of the complexity as possible has been put into the
Master Agent. In this way, use of MIB tools for code generation
makes Subagent development straightforward.
- The Subagents are as simple as possible, with most of the "hard"
processing occurring in the Master Agent.
- The tools are easy for Subagent developers to learn and use.
- Agent MIB Tools automate development from a MIB document to
a MIB with submethod routines integrated with the SNMP Agent.
These tools create the required system independent routines and
tables automatically.
- The postmosy Agent MIB Tool generates .c, .h, and data files.
- EMANATE provides run-time agent extensibility allowing for the
development and addition of new Subagents without halting or disrupting
the Master Agent process.
Standards Compliance
- SNMPv1, SNMPv2C, and SNMPv3 are supported.
- EMANATE is standards-compliant and follows the SNMP specifications
as set out by the I.E.T.F. For example, EMANATE handles as-if-simultaneous
sets across multiple Subagents, and it is able to "roll back"
(undo) if a set operation fails.
- EMANATE corrects flaws in previous experiments with extensible
agents -- most specifically SMUX. Due to its inefficiency, ASN.1
is not used between the Master and Subagents.
Portability
- The EMANATE system is portable to a number of operating system
environments, including Solaris, HP-UX, AIX, Windows NT, and several
embedded operating systems.
- Two-part Applications Programming Interface (API) allows for
easy portability:
- the system-independent API hides operating
system-dependent details, providing a consistent and easy-to-use
interface across a wide variety of platforms.
- the system-dependent API is based on requirements
and services available on the target platform.
- Independent, multi-vendor extensions can be used for EMANATE
agents already within operating systems.
- A proxy agent can be implemented as an EMANATE Subagent.
Modular Design
- Subagents are startable and stoppable without affecting the
Master Agent.
- EMANATE is asynchronous. That is, the Master Agent need not
wait for a response from a Subagent before attending to other
incoming SNMP messages. If a Subagent requires a (relatively)
long time to retrieve information, the Master Agent will not be
delayed in processing subsequent incoming messages.
- EMANATE allows separate teams to develop their Subagents separately
without the need for integration and compilation of all parts
of the code into a single executable.
- EMANATE eliminates the need for customers to integrate their
new MIB extensions into the source code when adding extensions
to the existent agent.
- EMANATE allows third party developers to develop a Subagent
for their individual MIBs.
- Multiple Subagents can have the same MIB objects. That is, two
Subagents can use different rows of a table (e.g. the interfaces
table).
- "Plug and play" loading and unloading of MIB information
allows for management of transient applications on workstations
and "hot swapped" boards in embedded systems.
- Upgrades to EMANATE from other SNMP Research International agent
products preserves initial investments and labor.
Top
EMANATE's design makes it ideal for, but not limited to, the following
tasks:
- traditional network management with Subagents such as the MIB-II
Subagent
- system management with Subagents such as the Host MIB Subagent
or a proprietary MIB for a particular system
- application management. An example of this would be a transient
desktop applications whose Subagents start when the application
starts, thereby enabling management of the application
- proxy management, with Subagents for control of devices, which
have heretofore used a proprietary management mechanism
- manager-to-manager or Mid-Level Manager communication
- hot swapping of devices whose Subagent dynamically starts when
devices are "plugged in" and de-register when the devices
is "unplugged"
These are only a few of the possible ways EMANATE
can enhance Network Management.
Top
The EMANATE architecture is built around a Master Agent, a two part
Application Programming Interface (API), and zero to many Subagents,
which can be added or removed from the Master Agent dynamically.
It is this dynamic functionality that provides Subagent extensibility.
The Master Agent
The Master Agent, which is MIB independent but protocol dependent,
is what would traditionally be thought of as the SNMP agent. It
contains the agent protocol engine (SNMPv1, SNMPv2c, and/or SNMPv3).
The Master Agent is in charge of the authentication, authorization,
access control, and privacy mechanisms if SNMPv3 is used. It is
multi-threaded in that each SNMP request is handled by a different
thread. This means that agent operation is asynchronous. The Master
Agent receives the request, initiates the thread that will have
control of that request, and can then process further requests thus
doing all of the "hard" work.
The Master Agent architecture includes both system
dependent and system independent portions. The system dependent
portion includes network packet initialization and the routines
for sending and receiving SNMP requests. Furthermore, the Master
Agent end of the asynchronous message passing interface is system
dependent, as are the multi-threading support and non-volatile storage
access routines.
Processing of "get-next" and "get-bulk"
requests, multi-phase set processing, registration, de-registration
and lookup of Subagents, and Subagent management are entirely system
independent, as is most of the trap handling.
In most cases of Subagent development, the Subagent
developer need not understand the Master Agent but rather will concentrate
entirely upon development of the Subagent. This means, for example,
that application management developers need know very little about
SNMP per se but can instead concentrate on that which they know
-- their application and how it should be managed.
The Subagents
EMANATE Subagents, in contrast to the Master Agent, are protocol
independent (they make no assumptions about whether SNMPv1 or SNMPv2
is used) and MIB dependent. That the Master Agent is responsible
for the "difficult" tasks means that Subagents are simple
and easy to implement and test. Subagents, which are built with
the Subagent Development Kit from SNMP Research, are very modular
and are again divided into system dependent and system independent
portions. The Subagents consist primarily of method routines conforming
to the System Independent API. Subagents are essentially a small
program that provides access to method routines. The typical Subagent
simply runs in a loop and awaits requests from the Master Agent
whereupon it gathers the information requested and returns the response.
(NOTE: This is of course an oversimplification.
The Subagent may do more than simply respond to messages (such as
sending traps), but all within the scope of working with its MIB.)
Method routines are the functions that actually
collect the information specified in the MIB document. The counters,
gauges, etc. that are specified in the MIB document must be instrumented
within the system or application. This instrumentation must in turn
be accessed; this occurs in the method routines.
The method routines are divided into a system
independent part and a system dependent part. Most, and usually
all, of the system independent method routines are generated automatically
by SNMP Research MIB tools, and stubs are generated for the system
dependent method routines. All of the C data structures and function
prototypes necessary for the Subagent are also generated by these
same tools. Of course, code specific to the system or application
being managed is not generated.
Much of the Subagent code can be reused in multiple
EMANATE® environments. That is, if you have developed a Subagent
on one architecture, you will be able to reuse all of the System
Independent code on a different architecture since the API is exactly
the same. Of course, system dependent code and dependencies that
the developer introduces into the Subagent will have to be ported.
Additionally, since the API is the same as that
used in other SNMP Research agent products, the code developed for
Subagents can easily be integrated with a monolithic agent (and
vice versa).
The Application Programming Interface
(API)
The key to the EMANATE architecture is the two part Application
Programming Interface (API). The system-independent
API, which the developer uses, hides operating system-dependent
details and provides a consistent and easy-to-use interface across
a wide variety of platforms. The system-dependent
API is based on requirements of the target platform and optimized
to utilize the available services.
Application developers who supply identical or
similar products in multiple environments such as different flavors
of UNIX, Windows, and embedded real-time operating systems, benefit
greatly by using the same system-independent API in all variations
of the application. This preserves their investment in management
components and reduces their overall development and support costs.
There are three components in the EMANATE product:
- The Master Agent (available in
either source code or binaries):
The Master Agent implements the core agent including network communications
and communications with Subagents.
- Subagents:
The Subagents implement various MIB modules.
- A Subagent Development Kit (available in either
source code or binaries):
The Subagent Development Kit provides tools that assist in the
development of Subagents; a MIB compiler and other powerful Agent
Tools are included.
Top
The EMANATE® package can be licensed in two
ways:
1.) Full Source Code, which provides you with
full source code to the entire EMANATE® system.
This option also includes a full day of training.
2.) Many customers do not need all of the source
code and are content to use binaries. Hence, SNMP Research created
the binary EMANATE® Subagent Development Kit
(SADK) that includes:
- The SNMP Libraries, Utilities, and MIB Tools in binary.
- The EMANATE® libraries in binary.
- Several example Subagents in source code form.
- The EMANATE® System Independent API Description
and Documentation.
If the development platform does not already include
an EMANATE® Master Agent, the customer may
also license the Master Agent in binary.
Top
|