Communication Protocols
Distributed Data Management
High Availability
Network Management
Development Tools
Security
V-IPSecure (IPSec/IKE)
SSHield (SSH)
SSLimSecure (SSL)
FireFly (Firewall)
NetF1 (IPv4/IPv6 stack)
GNAT (NAT)
AuthAgent Kerberos
AuthAgent Radius
AuthAgent X.509
X-Calibur (802.1X)
EMANATE®
EMANATE/Lite

EMANATE®

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.

Overview
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.

Features
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

Uses
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

Architecture
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.

Product Components
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

Packaging
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