Net-SNMP 中一个表的多个子代理



我正在编写一个自定义MIB来通过SNMP公开一个表。将有一个具有设置列的表,但行数可变。使用Net-SNMP是否可以从多个进程向表中添加多行(例如,进程 A 创建第 1 行,进程 B 创建第 2 行等(?如果可能的话,我想避免拥有一个"主子代理"(除了Net-SNMP的一部分,例如snmpd/snmptrapd/等(。

如果可能的话,我想使用mib2c来帮助生成代码,但如果它不能完成我需要的东西,我可以解决这个问题。

我现在正在使用Net-SNMP 5.5。如果在较新版本中添加了对我需要的支持,则可以升级。

如果为 snmpd 编写 AgentX,看起来您无法在两个或多个 AgentX 上共享表 OID,snmpd 会响应错误,指出 oid 对于某些子代理是重复的。 因此,我正在使用我自己的子代理(基于 Enduro/X(继续我的来源,这些子代理将数据收集到一个将填充 SNMP 表的单个 AgentX 中。

根据 https://www.rfc-editor.org/rfc/rfc2741.html#section-7.1.4.1:

7.1.4.1. 处理重复和重叠的子树

由于这种注册算法,可能会有 注册数据中重复和/或重叠的子树 主代理的存储。 每当主代理的调度时 算法(请参见第 7.2.1 节 "调度代理 X PDU"(确定 有多个子树可能包含 相同的 MIB 对象实例,主代理选择一个要使用的实例, 称为"权威地区",如下:

1) Choose the one whose original agentx-Register-PDU r.subtree
contained the most subids, i.e., the most specific r.subtree.
Note: The presence or absence of a range subid has no bearing
on how "specific" one object identifier is compared to another.
2) If still ambiguous, there were duplicate subtrees.  Choose the
one whose original agentx-Register-PDU specified the smaller
value of r.priority.

因此,在最好的情况下,如果从不同的 AgentX 进程注册了相同的 oid,则可能会从一个 AgentX 或另一个 AgentX 随机收集数据

最新更新