SNMPv3 代理如何知道向何处发送通知?

How does an SNMPv3 Agent know where to send a notification?

当 SNMPv3 代理生成通知时(例如,根据 RFC 2981 事件 MIB),代理如何确定发送什么类型的通知以及发送到哪里?我假设使用了以下 RFC 3413 表,但是 linkages 没有很好地描述(恕我直言)。 - snmpNotifyTable - snmpNotifyFilterProfileTable - snmpNotifyFilterTable

RFC 3413 第 3.3 节的步骤 (1) 指出第一步是确定管理目标 - 但几乎没有提供任何指导来定义其如何使用标准化对象工作。从逻辑上讲,我认为通知名称和 snmpNotifyName 之间会有一个 link - 这将指示是否在逐个通知的基础上将陷阱或通知发送到哪些目标,但提供的示例在 RFC3413 中似乎与此逻辑背道而驰,并且对象的定义没有提供这样的 linkage...帮助?

SNMP-NOTIFICATION-MIB 对象配置代理发送的 what 通知。 SNMP-TARGET-MIB 个对象配置 代理发送通知的位置 。两个 MIB 的表之间的链接(what 通知发送 where)通过标签 values/lists 配置(例如 snmpNotifyTag -> snmpTargetAddrTagList)。换句话说,snmpTargetAddrTable 中的给定目标会收到代理配置为发送的任何通知,此类配置的 snmpNotifyTag 出现在 snmpTargetAddrTagList.

每个评论的附加信息:

DISMAN-EVENT-MIB中,通知配置为根据配置的触发条件发送。要发送的通知由分配给 mteEventNotification 的 NOTIFICATION-TYPE OID 标识。假设发生任何触发条件并且代理已决定将该通知发送到所有适当的目标。然后,通知将发送如下:

  1. 代理将搜索 snmpNotifyFilterTable 以查找 mteEventNotification 与行的 snmpNotifyFilterSubtreesnmpNotifyFilterMask 匹配的所有行,使用 snmpNotifyFilterType 和优先规则来确定该通知是包含在配置文件中还是从配置文件中排除。
  2. 对于上面确定的每个 snmpNotifyFilterProfileName,其中要包括 mteEventNotification,代理会搜索 snmpTargetAddrTable 以查找 snmpTargetAddrParams 等于 [=24] 的任何行=].
  3. 对于上面确定的每个 snmpTargetAddrTable 行的 snmpTargetAddrTagList 的每个 SnmpTagValue,扫描 snmpNotifyTable 以查找具有等于 snmpNotifyTag 值的行以确定类型要发送的通知(陷阱或通知)。
  4. (2) 中 snmpTargetAddrTable 行的相同 snmpTargetAddrParams 值用于查找对应的 snmpTargetParamsTable 行,其中 snmpTargetAddrParams 等于 snmpTargetParamsName.此行中的信息用于确定用于为目标发送通知的 SNMP 版本、安全级别和安全名称。
  5. 根据 SNMP 版本,在 (4) 中确定的 snmpTargetParamsSecurityName 对应于 snmpCommunityTable(对于 SNMPv1/v2c)或 usmUserTable(对于 SNMPv3/USM).