snmp MIB详解
MIB(管理信息库,Management Information Base) 是 SNMP(简单网络管理协议)中用于存储和描述网络设备(如路由器、交换机、服务器等)管理信息的数据库。MIB 采用树状结构来组织和管理设备的各种数据,每个数据对象都有一个唯一的标识符,称为 OID(对象标识符,Object Identifier)。通过 SNMP 协议,SNMP 管理器可以访问、修改、删除设备上 MIB 中的数据。
MIB 中的每一个对象都描述了设备的某一属性或状态(例如接口的状态、CPU 使用率、设备的温度等)。SNMP 管理器可以通过 GET、SET 和 GETNEXT 请求来查询和修改这些对象的值。
1. MIB 的基本概念
MIB 是一个层次化的数据库,定义了设备、接口、系统、协议等的管理信息。MIB 对象的定义遵循标准,通常由国际标准化组织(ISO)和互联网工程任务组(IETF)制定,也有设备厂商自定义的 MIB。每个 MIB 对象都有一个 OID,OID 是一个唯一的标识符,它描述了对象在 MIB 中的位置。
1.1 MIB 树的结构
MIB 的组织方式是树形的,每个节点代表一个管理对象。MIB 树由多个层次构成,每个层次都有不同的功能和作用。树的根部是由 ISO 定义的标准 MIB 库,接下来是 IETF 定义的标准 MIB 库,最后是设备厂商定义的 MIB 库。
- 根节点:MIB 树的根节点是由 ISO(国际标准化组织)定义的,树的根节点标识符为
1
,也称为iso
。从这个根节点开始,MIB 树逐级分支,形成各种不同类别的管理对象。 - IETF(Internet Engineering Task Force)节点:IETF 负责定义网络协议、设备状态监控等 MIB 对象。例如,
1.3.6.1
表示 IETF 下的 MIB 库。 - 企业特定的 MIB 对象:每个厂商可以根据自己的需要定义特定的 MIB 对象,通常位于
1.3.6.1.4.1
下。每个厂商在1.3.6.1.4.1
下有一个唯一的 OID 子树。
1.2 MIB 对象的定义
每个 MIB 对象都由一个对象标识符(OID)和对象类型组成。OID 是一个由多个数字组成的路径(类似于 IP 地址),它标识了 MIB 中对象的层次结构。
- OID(对象标识符):每个对象在 MIB 树中都有一个唯一的 OID,用于标识该对象。例如,
1.3.6.1.2.1.1.1
表示一个设备的系统描述。 - 对象类型:定义了对象的数据类型。常见的数据类型包括:
- Integer:整数。
- String:字符串。
- Gauge:一种表示可增减的非负值的类型,通常用于表示资源的数量,如网络流量、内存使用等。
- Counter:递增计数器,常用于统计数量的对象,如传输的字节数。
- TimeTicks:表示时间的增量,通常用于描述设备的运行时间。
- IpAddress:表示一个 IP 地址。
- Oid:表示另一个 OID。
1.3 MIB 对象的实例化
MIB 对象并不是单一的,它们可以有多个实例。例如,MIB 中的 ifTable
对象用来表示设备上所有网络接口的状态,每个接口都有自己的实例。ifTable
对象本身在 MIB 中的 OID 是 1.3.6.1.2.1.2.2
,但每个网络接口都有自己的实例,表示为 ifEntry
。
- 实例化:例如
1.3.6.1.2.1.2.2.1.2.1
表示设备的第一个接口的描述(ifDescr
),1.3.6.1.2.1.2.2.1.7.1
表示接口的状态(ifAdminStatus
)。
2. MIB 的标准和自定义
- 标准 MIB:这些是由国际标准组织(ISO)和互联网工程任务组(IETF)定义的标准 MIB,对所有兼容 SNMP 的设备有效。例如:
- system:包含设备的基本信息,如系统描述、系统名称等,OID 为
1.3.6.1.2.1.1
。 - interfaces:网络接口信息,OID 为
1.3.6.1.2.1.2
。 - TCP:TCP 协议的管理信息,OID 为
1.3.6.1.2.1.6
。 - UDP:UDP 协议的管理信息,OID 为
1.3.6.1.2.1.7
。
- system:包含设备的基本信息,如系统描述、系统名称等,OID 为
- 企业特定 MIB:每个设备厂商可以根据需要定义自有的 MIB 对象。这些 MIB 对象通常位于
1.3.6.1.4.1
下,每个厂商都有一个唯一的编号。例如:- 思科的企业 MIB OID 是
1.3.6.1.4.1.9
。 - 华为的企业 MIB OID 是
1.3.6.1.4.1.2011
。
- 思科的企业 MIB OID 是
厂商定义的 MIB 中包含了设备的厂商特定信息,例如设备型号、固件版本、硬件状态等。
3. 常见的 MIB 对象
以下是一些常见的 MIB 对象及其用途:
3.1 System MIB(系统管理信息)
- sysDescr (
1.3.6.1.2.1.1.1
):设备描述信息,包含设备的类型、硬件信息等。 - sysName (
1.3.6.1.2.1.1.5
):设备的名称。 - sysUpTime (
1.3.6.1.2.1.1.3
):设备的运行时间,通常以TimeTicks
格式表示。
3.2 Interfaces MIB(接口管理信息)
- ifTable (
1.3.6.1.2.1.2.2
):接口信息表,包含设备所有网络接口的状态信息。 - ifDescr (
1.3.6.1.2.1.2.2.1.2
):接口描述(如网卡名称)。 - ifOperStatus (
1.3.6.1.2.1.2.2.1.8
):接口的运行状态,如up
或down
。 - ifInOctets (
1.3.6.1.2.1.2.2.1.10
):接收的字节数,通常用于监控网络流量。
3.3 TCP MIB(TCP 协议管理信息)
- tcpRtoAlgorithm (
1.3.6.1.2.1.6.3.1
):TCP 重传算法的类型。 - tcpEstabResets (
1.3.6.1.2.1.6.6.9
):TCP 建立的连接数。
3.4 UDP MIB(UDP 协议管理信息)
- udpInDatagrams (
1.3.6.1.2.1.7.1.1
):接收到的 UDP 数据报文数。 - udpOutDatagrams (
1.3.6.1.2.1.7.1.2
):发送的 UDP 数据报文数。
4. MIB 和 OID 的关系
MIB 对象通过 OID 唯一标识。OID 是由多个数字组成的路径,表示 MIB 树中的特定节点。OID 可以用来直接访问设备的管理对象。
- OID 示例:
1.3.6.1.2.1.1.1
表示系统描述信息。1.3.6.1.2.1.2.2.1.2.1
表示设备第一个网络接口的描述信息(ifDescr
)。
通过这些 OID,SNMP 管理器能够访问设备的各种状态信息。
5. 使用 MIB 查询和配置设备
SNMP 管理器使用 MIB 通过 SNMP 协议向设备发送请求,获取 MIB 对象的值或修改其值。例如,使用 snmpget
命令可以查询设备的 MIB 对象