SNMP Research International, Inc.

Secure Your Network

Additional Information

EMANATE Summary Page

Related Information

EMANATE Product Sheet

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, SNMPv2c, and SNMPv3, thereby enabling secure SNMP-based management of devices, systems, and applications.

EMANATE Architecture Figure


The EMANATE (Enhanced MANagement Agent Through Extensions) Run-time Extensible Agent System 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 SNMPv1, and the security features of authentication and privacy provided by SNMPv3.

EMANATE provides the following advantages:


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

Standards Compliance


Modular Design


EMANATE's design makes it ideal for, but not limited to, the following tasks:

These are only a few of the possible ways EMANATE can enhance Network Management.


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.

EMANATE Architecture Figure

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 SNMPv2c 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 explanation is over simplified. The subagent may do more than respond to messages (such as sending traps), but all actions are 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 or Java classes 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 EMANATE package can be licensed in two ways:

  1. Full Source Code, which provides you with full source code to the entire EMANATE system.
  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 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, you may also license the master agent in binary.

Available Platforms

EMANATE is available on the following platforms:

If a particular system is not listed, please contact Sales. We are happy to work with customers to port our products to new systems.

Please note: When a product is licensed, the product will support one platform of your choosing. If you need a product to run on two or more platforms, then a separate license must be acquired for each platform.

Sales Inquiries

For more information, please call +1 865 579-3311, or send email to You can also fill out a Sales Query and one of our sales people will respond to your request quickly.

Licensing terms are available from