SNMP 协议 MIB 和 OID

网络工程 snmp UDP 监控
2022-02-22 20:38:34

我正在尝试了解 SNMP 协议。我清楚地了解SNMP网络级别的工作原理。我们可以向设备发送 UDP 请求,但在这个设备上snmpd应该监听传入的请求。但我无法理解 MIB 和 OID。我了解 MIB 是树状结构的数据库,其中包含具有唯一 ID (OID) 的不同对象的层次结构。

例如

在此处输入图像描述

但我无法理解以下。

  1. MIB 是设备独有的吗?据我了解,要让您MIB作为供应商在树中拥有自己的分支/节点,您必须向特定组织发送请求。这就像DNS系统。但同样的问题是,特定设备是否仅包含与该设备相关的特定 mib 部分?
  2. 但是正如我所读到的 snmp 设备包含完整的数据库 MIB,那么为什么需要这样做,如果设备只能响应特定的 OID 呢?当 SNMP 请求发送到设备但设备上没有此类信息时会发生什么?
  3. MIB 是如何维护的?据我了解,如果我们拥有当前 MIB(由标准定义)的完整副本,MIB 本身就像一个目录结构。所以 mib 对象是直接在 .mib 文件中修改的,还是 .mib 文件只是指针和结构表示以及数据存储在其他地方?

我将不胜感激任何有助于我理解这一点的信息。

1个回答
  1. 一个设备(或者准确地说是它的 SNMP 代理)可以包含它喜欢的任何对象。由于许多(联网)设备经常共享公共对象(例如与以太网接口相关的对象),因此它们使用公共定义的对象,如在公共 MIB 中发现的那样。对于任何独特的设备功能,企业 MIB 并不少见,它只定义特定于独特设备功能的对象。
  2. 任何未在 Agent 中表示的对象都会导致 Agent 返回错误代码(对于 OID 之类的不存在)。
  3. MIB 主要是对象的 OID 和语法的定义,因为它们可以在 SNMP 代理中寻址。保留对象值的是代理,通常通过使用回调到软件系统的其余部分。