📄 rfc2257.txt
字号:
entity, called an agent, which has access to management information.
Within the AgentX framework, an agent is further defined to consist
of
- a single processing entity called the master agent, which sends
and receives SNMP protocol messages in an agent role (as
specified by the SNMP version 1 and version 2 framework
documents) but typically has little or no direct access to
management information.
- 0 or more processing entities called subagents, which are
"shielded" from the SNMP protocol messages processed by the
master agent, but which have access to management information.
The master and subagent entities communicate via AgentX protocol
messages, as specified in this memo. Other interfaces (if any) on
these entities, and their associated protocols, are outside the scope
of this document. While some of the AgentX protocol messages appear
similar in syntax and semantics to the SNMP, bear in mind that AgentX
is not SNMP.
The internal operations of AgentX are invisible to an SNMP entity
operating in a manager role. From a manager's point of view, an
extensible agent behaves exactly as would a non-extensible
(monolithic) agent that has access to the same management
instrumentation.
Daniele, et. al. Standards Track [Page 6]
RFC 2257 AgentX January 1998
This transparency to managers is a fundamental requirement of AgentX,
and is what differentiates AgentX subagents from SNMP proxy agents.
4.1. AgentX Roles
An entity acting in a master agent role performs the following
functions:
- Accepts AgentX session establishment requests from subagents.
- Accepts registration of MIB regions by subagents.
- Sends and accepts SNMP protocol messages on the agent's
specified transport addresses.
- Implements the agent role Elements of Procedure specified
for the administrative framework applicable to the SNMP protocol
message, except where they specify performing management
operations. (The application of MIB views, and the access
control policy for the managed node, are implemented by the
master agent.)
- Provides instrumentation for the MIB objects defined in RFC
1907 [5], and for any MIB objects relevant to any administrative
framework it supports.
- Sends and receives AgentX protocol messages to access
management information, based on the current registry of MIB
regions.
- Forwards notifications on behalf of subagents.
An entity acting in a subagent role performs the following functions:
- Initiates an AgentX session with the master agent.
- Registers MIB regions with the master agent.
- Instantiates managed objects.
- Binds OIDs within its registered MIB regions to actual
variables.
- Performs management operations on variables.
- Initiates notifications.
Daniele, et. al. Standards Track [Page 7]
RFC 2257 AgentX January 1998
4.2 Applicability
It is intended that this memo specify the smallest amount of required
behavior necessary to achieve the largest benefit, that is, to cover
a very large number of possible MIB implementations and
configurations with minimum complexity and low "cost of entry".
This section discusses several typical usage scenarios.
1) Subagents implement separate MIB modules--for example,
subagent A implements "mib-2", subagent b implements "host-
resources".
It is anticipated that this will be the most common subagent
configuration.
2) Subagents implement rows in a "simple table". A simple table
is one in which row creation is not specified, and for which the
MIB does not define an object that counts entries in the table.
Examples of simple tables are rdbmsDbTable, udpTable, and
hrSWRunTable.
This is the most commonly defined type of MIB table, and probably
represents the next most typical configuration that AgentX would
support.
3) Subagents share MIBs along non-row partitions. Subagents
register "chunks" of the MIB that represent multiple rows, due to
the nature of the MIB's index structure. Examples include
registering ipNetToMediaEntry.n, where n represents the ifIndex
value for an interface implemented by the subagent, and
tcpConnEntry.a.b.c.d, where a.b.c.d represents an IP address on an
interface implemented by the subagent.
AgentX supports these three common configurations, and all
permutations of them, completely. The consensus is that they
comprise a very large majority of current and likely future uses of
multi-vendor extensible agent configurations.
4) Subagents implement rows in "complex tables". Complex tables
here are defined as tables permitting row creation, or whose MIB
also defines an object that counts entries in the table. Examples
include the MIB-2 ifTable (due to ifNumber), and the RMON
historyControlTable.
Daniele, et. al. Standards Track [Page 8]
RFC 2257 AgentX January 1998
The subagent that implements such a counter object (like ifNumber)
must go beyond AgentX to correctly implement it. This is an
implementation issue (and most new MIB designs no longer include such
objects).
To implement row creation in such tables, at least one AgentX
subagent must register at a point "higher" in the OID tree than an
individual row (per AgentX's dispatching procedure). Again, this is
an implementation issue.
Scenarios in this category were thought to occur somewhat rarely in
configurations where subagents are independently implemented by
different vendors. The focus of a standard protocol, however, must
be in just those areas where multi- vendor interoperability must be
assured.
Note that it would be inefficient (due to AgentX registration
overhead) to share a table among AgentX subagents if the table
contains very dynamic instances, and each subagent registers fully
qualified instances. ipRouteTable could be an example of such a
table in some environments.
4.3. Design Features of AgentX
The primary features of the design described in this memo are:
1) A general architectural division of labor between master agent
and subagent: The master agent is MIB ignorant and SNMP
omniscient, while the subagent is SNMP ignorant and MIB omniscient
(for the MIB variables it instantiates). That is, master agents,
exclusively, are concerned with SNMP protocol operations and the
translations to and from AgentX protocol operations needed to
carry them out; subagents are exclusively concerned with
management instrumentation; and neither should intrude on the
other's territory.
2) A standard protocol and "rules of engagement" to enable
interoperability between management instrumentation and extensible
agents.
3) Mechanisms for independently developed subagents to
integrate into the extensible agent on a particular managed node
in such a way that they need not be aware of any other existing
subagents.
Daniele, et. al. Standards Track [Page 9]
RFC 2257 AgentX January 1998
4) A simple, deterministic registry and dispatching algorithm.
For a given extensible agent configuration, there is a single
subagent who is "authoritative" for any particular region of the
MIB (where "region" may extend from an entire MIB down to a single
object-instance).
5) Performance considerations. It is likely that the master
agent and all subagents will reside on the same host, and in such
cases AgentX is more a form of inter-process communication than a
traditional communications protocol.
Some of the design decisions made with this in mind include:
- 32-bit alignment of data within PDUs
- Native byte-order encoding by subagents
- Large AgentX PDU payload sizes.
4.4 Non-Goals
1) Subagent-to-subagent communication. This is out of scope,
due to the security ramifications and complexity involved.
2) Subagent access (via the master agent) to MIB variables.
This is not addressed, since various other mechanisms are
available and it was not a fundamental requirement.
3) The ability to accommodate every conceivable extensible
agent configuration option. This was the most contentious aspect
in the development of this protocol. In essence, certain features
currently available in some commercial extensible agent products
are not included in AgentX. Although useful or even vital in some
implementation strategies, the rough consensus was that these
features were not appropriate for an Internet Standard, or not
typically required for independently developed subagents to
coexist. The set of supported extensible agent configurations is
described above, in Section 4.2.
Some possible future version of the AgentX protocol may provide
coverage for one or more of these "non-goals" or for new goals that
might be identified after greater deployment experience.
5. AgentX Encodings
AgentX PDUs consist of a common header, followed by PDU-specific data
of variable length. Unlike SNMP PDUs, AgentX PDUs are not encoded
using the BER (as specified in ISO 8824 [1]), but are transmitted as
Daniele, et. al. Standards Track [Page 10]
RFC 2257 AgentX January 1998
a contiguous byte stream. The data within this stream is organized
to provide natural alignment with respect to the start of the PDU,
permitting direct (integer) access by the processing entities.
The first four fields in the header are single-byte values. A bit
(NETWORK_BYTE_ORDER) in the third field (h.flags) is used to indicate
the byte ordering of all multi-byte integer values in the PDU,
including those which follow in the header itself. This is described
in more detail in Section 6.1, "AgentX PDU Header", below.
PDUs are depicted in this memo using the following convention (where
byte 1 is the first transmitted byte):
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| byte 1 | byte 2 | byte 3 | byte 4 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| byte 5 | byte 6 | byte 7 | byte 8 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Fields marked "<reserved>" are reserved for future use and must be
zero-filled.
5.1. Object Identifier
An object identifier is encoded as a 4-byte header, followed by a
variable number of contiguous 4-byte fields representing sub-
identifiers. This representation (termed Object Identifier) is as
follows:
Object Identifier
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| n_subid | prefix | include | <reserved> |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sub-identifier #1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| sub-identifier #n_subid |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Object Identifier header fields:
n_subid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -