EMANATE® FAQ
This page contains the answers to the frequently
asked questions about SNMP Research's SNMP Agent software, named EMANATE®.
If you have questions about this FAQ, please send comments or questions to
info@snmp.com.
Open All Close All
- What does EMANATE stand for?
- EMANATE stands for "Enhanced MANagement Agent Through
Extensions".
- What is the EMANATE Master Agent/Subagent architecture?
- The EMANATE Master Agent provides the core agent services including
the agent protocol engine, authentication, authorization,
privacy, and access control, plus support for some MIB objects,
including the system and SNMP groups of MIB-II (RFC 1213, RFC 2863,
RFC 3418, RFC 4001, RFC 4022, RFC 4113, RFC 4292, RFC 4293, and
RFC 4898), and the tables associated with
SNMPv3 (RFC 3410-3418, RFC 3584) security. Other MIB-II groups are
supported by a subagent devoted to that purpose.
Similarly, other subagents can be used to instrument other
systems and subsystems on the host platform, such as RMON (RFC
1757), Host Resources (RFC 1514 and RFC 2790), client-server
applications, and other hardware and software components.
- What is meant by "asynchronous" in
the context of EMANATE?
- In the monolithic agent environment, each incoming SNMP
request must be processed to completion prior to accepting a new
request.
EMANATE deals with this differently. Each new request starts
a new "thread" or "task". This
"thread" then processes the request, allowing the agent
to accept further requests.
Note that EMANATE is asynchronous on a per-message basis and
not on a per-VarBind basis. That is, all the VarBinds in a
message will be handled by the same "thread".
- What do you mean by "run-time extensible"?
- In a monolithic agent environment, adding new MIB objects
into the agent requires that the agent be linked with new object
files which implement the new MIB objects.
EMANATE uses a different architecture entirely. Rather than a
single agent, EMANATE uses the Master Agent/Subagent paradigm.
That is, there is a single master agent and (potentially) many
subagents, each of which is responsible for some part of the
agent's MIB. These subagents can connect and disconnect from
the master agent at will, at which time their portion of the MIB
is added or deleted from the master agent's "MIB
tree". Thus, portions of the MIB tree are added and deleted
while the master agent is running.
- If EMANATE is made up of a master agent
and (potentially) many subagents, does that mean that the manager
station needs to know about all of them?
- No. To the manager of the EMANATE system, it simply appears
to be a single agent. Of course, the manager must be in tune with
the sorts of MIB objects with which it is dealing and must accept
their dynamic nature.
- Does a subagent register instances of objects?
- Yes. Subagents can register instances of objects in addition
to registering entire classes of objects. The subagent can assign
a priority to its version of an object class or object
instance as opposed to the versions owned by other
subagents.
- Can a subagent register MIB subtrees?
- Yes. Subagents can register subtrees of objects in addition
to registering individual objects. The master agent correctly
handles situations where object database entries for multiple
subtrees and/or individually registered objects overlap one
another.
- Can different rows of a table be in different
subagents?
- Absolutely. In fact, this was one of the primary design goals
of the EMANATE system.
When a subagent connects to the EMANATE Master Agent, it
sends its portion of the MIB tree to the master agent. If the
master agent encounters duplicate object database entries, it
maintains a priority-ordered list of the subagents which support
that object. This allows multiple subagents to support the same
objects and hence different rows of the same table.
- How does the mechanism for assigning a
priority to a subagent's copy of an object database
entry?
- In the ObjectInfo structure for that object, which is passed
to the master agent when the subagent connects, there is a
priority field. If two subagents have the same MIB database entry
with the same priority, then later registrations "hide"
previous registrations.
- How does EMANATE deal with Gets, GetNexts, and Sets when different rows of a table are in
different subagents?
- This depends very much on what sort of message it is:
- Keep in mind that for each MIB object for which there are
multiple subagents, the master agent has a priority-sorted list
of subagents which have that object.
- When a Get request arrives at the master agent, each subagent
which has a matching object database entry is asked (in order of
priority), "Do you have this instance?" The value
returned by the first subagent that responds affirmatively is
returned in the response.
- When a GetNext request arrives at the master agent, all
subagents which have that object are asked, "What is the
next instance you have after this OID?" When all responses
from subagents have arrived, the lexicographically smallest
object is returned.
- If a Set request arrives at the master agent, it calls the
test methods for each subagent which has that object, and the
first subagent that returns a non-fatal error status
"wins". Again, they are checked in priority order.
- What is the arbitration mechanism for
finding out what index a subagent should use for a row in one of
its tables?
- In some circumstances, it may make sense for an application-specific
mechanism to be used for determining the instance.
When the instance of a MIB object must be unique but is
arbitrary, or for other circumstances when an application-specific
mechanism is not used, EMANATE provides an
"instance reservation" mechanism. The instance
reservation mechanism is described by a MIB, and the MIB is
implemented in a subagent. Subagents cooperate by consulting the
Instance Reservation Subagent before registering to support
instances.
- Is there a way to tell if the master agent/subagent is alive?
- Yes. If the master agent or a subagent dies, an appropriate
event will be generated to let the other party know of this.
- Can a subagent request information from a different subagent?
- Yes, by going through the master agent. It works in a way
very similar to a Get request.
- Is there a performance hit from using
EMANATE as opposed to a monolithic agent?
- EMANATE improves performance, especially on systems with multiple core
processors. The Master Agent/Subagent communication may impose a small
overhead on single-processor systems but performance is not affected dramatically.
Other factors also affect performance, such as disk access time
and whether or not SSL is used. Using SSL between the Master Agent and
Subagents requires additional resources. Use SSL only when necessary.
- What sorts of IPC mechanisms are currently
implemented and how do we customize it for our environment?
- The most commonly used IPC mechanisms are UNIX Domain Sockets,
TCP, and Shared Libraries. SSL is also supported.
- How do traps work?
- The subagent sends a notification event to the EMANATE®
Master Agent, which generates zero, one, or many SNMP Trap messages plus zero, one, or many SNMP Inform messages, depending on the configuration of the Master Agent.
- What are the steps in creating a subagent?
- The five steps are:
- Define the MIB.
- Compile the MIB with the SNMP Research, Inc. MIB tools and
create the runnable subagent, all by typing 'make'.
- Create the instrumentation (create the counters, collect the
information as defined in the MIB, etc.)
- Complete the method routines. Skeletons are created by the
MIB Tools, but you must write the code which reads the counters,
accesses the information in the kernel, etc.
- Test.
SNMP Research's MIBGuide™ MIBGuide/Lite:
a more intuitive, GUI-based MIB tool set for developers which provides the 5-step method
in the form of a computer program.
- Do you have to have threads to run EMANATE®?
- Yes. However, SNMP Research does provide threads packages for
some platforms which could be ported to other platforms if
required. Native threads packages included with operating systems
are preferred.
- What is the 'System Dependent API' and of
what does it consist?
- The system dependent part of the API is just that--the part
of the code which performs the IPC in a system-dependent way. The
subagent developer should not have to worry about this.
- What is the "System Independent API" and of
what does it consist?
- This is the part of the API that the subagent developer will
use. It is an interface to the system dependent API. The API is
the same no matter what (internal) mechanism is being used to
communicate with the master agent. Much of this code is generated
by the SNMP Research MIB Tools.
- Can I move extensions from the SNMP Research
monolithic agent to an EMANATE Subagent?
- Yes. The API that is used by EMANATE is a superset of the API
that is used in the monolithic (compile-time extensible)
agent.
- Can I move method routines from an EMANATE
Subagent to the SNMP Research monolithic agent?
- Yes. As noted above, the API that is used by EMANATE is the
same. Of course, if EMANATE-specific routines are used by the
method routines, these will have to be eliminated to integrate the
method routines into the monolithic agent.
- How do Sets (write operations) work?
- There are five passes involved when processing a Set
request:
- Each variable in the variable binding list of the received
PDU is checked to guarantee that each object is accessible and/or
creatable, and writable. The test method for each object is
called to verify the object's instance, size/range, and
value. If an object is supported in more than one subagent, the
master agent calls the Test method routine in each subagent in
priority order, and the first to return a successful status will
receive the Set method call in Pass 3 or 4. The variable binding
list is parsed to construct a list of simultaneous Set operations
for groups of objects.
- This pass verifies that all required objects within a group
have specified or default values. It also insures that all
required values meet the relational constraints specified in the
MIB.
- Sets are performed on all of the individual objects that can
be reversed in case something goes wrong.
- Sets are performed on all the remaining individual objects.
- The resources used to accomplish steps 1-4 are freed.
- Can I access MIB instrumentation from a Web browser?
- Yes. An optional feature called DR-Web™ allows the EMANATE
Master Agent to receive HTTP requests from Web browsers. Special
URLs tell the master agent which MIB values to retrieve, and the
master agent obtains these values in the "usual" way. An HTML
page to display in the Web browser is generated "on the
fly" as MIB values are supplied by the subagents.
The DR-Web enhancements to EMANATE include a
subagent which serves a database for custom Web pages. Custom
pages may contain graphics, figures, hyperlinks, java scripts,
and any other valid HTML text. Special tags allow custom pages to
supply the current values of MIB objects.
- Can I access MIB instrumentation from a CLI?
- Yes. An optional feature called EPIC™ CLI allows the EMANATE
Master Agent to receive SNMP requests from Web browsers. Special
URLs tell the master agent which MIB values to retrieve, and the
master agent obtains these values in the "usual" way. An HTML
page to display in the Web browser is generated "on the
fly" as MIB values are supplied by the subagents.
The DR-Web enhancements to EMANATE include a
subagent which serves a database for custom Web pages. Custom
pages may contain graphics, figures, hyperlinks, java scripts,
and any other valid HTML text. Special tags allow custom pages to
supply the current values of MIB objects.