代理是否将其状态存储在设备本身上?
您可以在设备上或设备外存储数据。两者都是可能的,并且都已完成。代理存储(缓存)有关远程设备的状态信息的问题在于,管理系统永远不会真正知道代理中的(缓存)数据是否是可接受的最新数据。如果您不能指望它,您将需要使用管理器来触发同步或轮询远程设备的状态和/或代理与远程设备之间的通信链接。一旦你进入那个游戏,通常最好在远程设备上放置一个子代理,并使用标准的 SNMP 协议来获取信息。
如果在代理上设置了陷阱,是否可以对同一 OID 进行轮询以获取相同的信息?
大多数精心设计的 MIB 实际上会将更改后的 MIB 对象放入陷阱中。这样,您的 SNMP 管理器就不必为了确定而轮询代理。
话虽如此,Entity-MIB 上的陷阱没有任何状态变量。但是,该 MIB 用于描述物理库存,例如机架、卡和端口,并且仅当物理配置发生更改时才会引发陷阱。在这种情况下,您应该让您的 SNMP 管理器再次遍历 Entity-MIB 以获得完整的新物理配置。
在不使用 mib 文件的情况下,有没有一种方法可以一次查询设备的所有信息?
是的。滚动您自己的自定义 MIB 并将您想要的任何内容放入其中。您可以将整个设备配置放入一个 MIB 对象中。不利的一面是,您必须在 SNMP 管理器上编写解析器来解析结构,如果结构发生变化,您需要弄清楚当前值与先前值之间差异的含义.即您将重新发明一些 SNMP MIB。但是,对于非常小的 MIB,这可能是值得的。
您可能最好使用 SNMP GET-BULK,或者只是通过连续调用 SNMP-GET-NEXT 进行 MIB 遍历,直到没有更多对象返回。
如果不是,并且您正在编写自己的自定义管理器,您是否必须知道它预先报告的结构?
如果您想让您的“自定义管理器”保持简单,您必须预先了解其结构。如果您想要灵活性,您将需要结构描述语言来对您的结构进行编码,并且您的管理器需要能够从代理数据中解码并填充管理器,并从管理器获取数据并将其编码为此格式将其发送给代理。即,您将重新发明 SNMP/SMI、CMIP/CMISE、CIM 以及许多其他已部署的管理系统和协议。
如果您要设置代理进行报告,通常有办法控制它发送陷阱的频率吗?还是它通常会在满足某些条件时发送陷阱?
这是一个很好的问题,因为当您最需要您的网络时,您经常会遇到使您的网络拥塞的陷阱风暴。这使得很难预测要配置多少网络。
明智地使用陷阱。例如,Entity-MIB 只有一个陷阱,并且值得使用,因为它报告物理结构的变化。 Interfaces-MIB 每个端口可能有许多陷阱。对于此 MIB,最好只为绑定到物理端口的接口启用陷阱,而不是为堆叠在较低层接口顶部的接口启用陷阱。对于大型网络,通常最好对物理设备和物理接口使用轮询和陷阱的组合。这样,无论是在正常操作期间还是在网络灾难期间,您都可以预测有多少网络将用于管理流量。
一些标准 MIB 会指定您可以抛出陷阱的频率或时间。如果您对此感到满意,请使用它。您始终可以使用配置 MIB 对象滚动您自己的企业 MIB,让您的经理限制特定陷阱。