SNMP 网络协议介绍

1. SNMP 网络协议介绍

在这份介绍中, 我们将覆盖关于 SNMP 网络协议的基本信息, 包括像 OIDs 和 MIBs 这样的关键概念。

1.1. 什么是 SNMP

1.1.1. 概述

SNMP (Simple Network Management Protocol) 是一种监控网络设备的协议。它使用 UDP 协议并且同时支持 “请求/响应” 模型 (命令和查询) 和 “通知” 模型 (traps, informs)。

在 “请求/响应” 模型中, SNMP 管理者 (如: Datakit, Datadog Agent) 发送一个 SNMP 命令 (GET, GETNEXT, BULK) 给一个 SNMP 代理者 (如: 一个网络设备)。

SNMP 诞生于 1980 年, 所以它已经存在很长一段时间了。虽然有更多的现代可选方案如 NETCONFOpenConfig 正在逐渐获取注意, 一大批网络设备仍然使用 SNMP 协议作为它们首选的监控接口。

1.1.2. SNMP 版本

SNMP 协议有 3 个版本: v1 (已停产), v2c, 和 v3.

v1/v2cv3 主要的区别在于鉴权机制和传输层, 总结如下:

版本鉴权传输层
v1/v2c密码 (the community string, 团体名)只有明文
v3用户名/密码支持包签名和加密

1.2. OIDs

1.2.1. 什么是 OID

1.2.1.1. 可查询数量的标识符

OID, 也称为 对象标识符 , 是一种能从 SNMP 设备中获取的一个 “对象” 的标识符。这些 “对象” 包括运行时间、温度、网络流量等 (可用 “对象” 在不同设备之间会不同)。

To make them processable by machines, OIDs are represented as dot-separated sequences of numbers, e.g. 1.3.6.1.2.1.1.1.

为了让它们能被机器处理, OID 们 (OIDs) 以点分隔数列方式呈现, 如 1.3.6.1.2.1.1.1

1.2.1.2. 全局定义

OID 们 (OIDs) 是全局定义的, 也就意味着无论 SNMP 查询的设备是什么, 它们具有相同的含义。比如说, 在任何 SNMP 代理者上查询 1.3.6.1.2.1.1.1 OID (也被称为 sysDescr) 将返回系统描述。(更多的 “OID/标签” 对应关系将出现在下面的 MIBs 节。)

1.2.1.3. 不是所有 OIDs 都含有指标数据

OIDs 能指向各种对象类型, 如字符串、数字、表格等。

特别地, 这意味着实际上只有一小部分指向数字对象的 OIDs 指标能发送到 Datakit/Datadog。然而, 非数字的 OIDs 也非常有用, 尤其是标记 (tagging)。

1.2.2. OID 树

OIDs 结构上像树。OID 中每个数字代表树上的一个节点。

这种通配符符号经常用于指向 OIDs 的一颗子树, 如: 1.3.6.1.2.*

碰巧有两种主要的 OID 子树: 一种子树是用于能用 OIDs 的, 另一种子树是用于品牌专用的 OIDs。

1.2.2.1. 通用 OIDs

在子树下: 1.3.6.1.2.1.* (也就是 SNMPv2-MIB 或者 mib-2)。

这些 OIDs 对所有的网络设备适用 (尽管所有设备可能不会在这颗子树中暴露全部 OIDs)。

例如, 1.3.6.1.2.1.1.1 对应 sysDescr, 包含了一种形式自由、人类可读描述的设备。

1.2.2.2. 品牌 OIDs

在子树下: 1.3.6.1.4.1.* (也就是 企业)。

这些 OIDs 由网络设备品牌商自己定义和管理。

每个品牌商在他们自己子树 1.3.6.1.4.1.<N>.* 下分配。

例如:

  • 1.3.6.1.4.1.2.* 是 IBM 专用的 OIDs 子树.
  • 1.3.6.1.4.1.9.* 是 Cisco 专用的 OIDs 子树.

完整的品牌子树可以在这里找到: SNMP OID 1.3.6.1.4.1

1.2.3. 值得注意的 OID

OID标签描述
1.3.6.1.2.1.2sysObjectId代表这个设备制造和型号 (是的, 一点元信息) 的 OID 值。
1.3.6.1.2.1.1.1sysDescr这个设备人类可读、形式自由的描述。
1.3.6.1.2.1.1.3sysUpTimeInstance设备的运行时间。

1.3. MIBs

1.3.1. 什么是 MIB

OIDs 是分组于 MIBs(Management Information Base) 中的模块。MIB 描述了既定 OIDs 间的层次关系。(这有点类似于包含口语中每个单词定义的词典。)

例如, IF-MIB 描述了 OIDs 在 1.3.6.1.2.1.2.* 子树中的层次关系。这些 OIDs 包含了设备中可用网络接口的指标。(注意它在 1.3.6.1.2.* 子树下的位置关系表明它是一个通用 MIB, 在大多数网络设备中可用。)

作为描述 OIDs 的一部分,MIB 定义了每一个 OID 人类可读到的标签。例如,IF-MIB 描述了 OID 1.3.6.1.2.1.1 并且被分配标签 sysDescr。这项包含于在标签中找到 OID 的操作被称为 OID 解析(OID resolution)。

1.3.2. 工具和资源

在处理与 MIBs 相关的工作时下列的资源会有用:

  • MIB Discovery: OIDs 的一个搜索引擎。用于找到一个 OID 对应什么,它从哪个 MIB 中来,是已经的哪个标签,等等。
  • Circitor MIB files repository: 可以下载实际 .mib 文件的存储库和搜索引擎。
  • SNMP Labs MIB repository: 许多共同 MIBs 的存储库替代。注意: 这个站点托管了 MIBs 的基础库 pysnmp-mibs(用于 SNMP Python 检查)是实际验证依据。在这个存储库中二次检查任何一个从另一个替代源中获取的 MIB。

1.4. 学习更多

其它更高级的 SNMP 概览,可以查阅:

1.5. 参考文献

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云满笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值