NetDevOps — SNMP 协议

Posted 范桂飓

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NetDevOps — SNMP 协议相关的知识,希望对你有一定的参考价值。

目录

SNMP

SNMP 协议的第 1 个相关 RFC 1065 发布于 1988 年,距今已有 30 年。

SNMP 在网络监控领域已经被广泛使用,例如:Zabbix、Nagios、Cacti 等开源的管理工具,均采用了 SNMP 来采集网络设备接口流量带宽和其他设备信息。

同时,也有大量的基于 Python 的 SNMP 库用来实现运维开发,例如:PySNMP、 EasySNMP、 Net-SNMP 等,并且它们都可以集成到 Ansible 和 SaltStack 等自动化运维工具上。

目前来说,SNMP 更多的被用于做信息采集,提供告警和可视化报表。而在自动化运维方向,则有更适合的 NETCONF 逐渐替换掉 SNMP。

协议架构

在 SNMP 架构中,一个网络设备以 daemon 的方式运行 SNMP Agent,而 NMS(网络管理系统)和网络运维人员所使用的各种 SNMP 管理工具则称为 SNMP Manager,SNMP Agent 能够响应来自 SNMP Manager 的各种请求信息。

SNMP Agent 会维护一个 MIB(管理信息库),里面保存着大量的 OID(对象标识符)。一个 OID 是一对唯一的 Key/Value,SNMP Manager 向 SNMP Agent 查询或修改若干个 Key 所对应的 Value,就可以实现信息采集或者网络设备的配置修改。

需要注意的是,SNMP Manager 一侧的 MIB 并不是必需的。如果使用数字 OID 1.3.6.1.2.1.2.2.1.5,SNMP Manager 可以直接从 SNMP Agent get 接口流量带宽,而不需要安装完整的 MIB。

局限性

  • 太古老,并发性能不好。
  • 基于 UDP 协议进行不可靠传输,虽然在应用层有 Response 机制保证丢包之后的重复 get/set,但代价就是性能和运行时间都受到影响。
  • 最致命的问题是,各厂商都大量的使用私有 MIB,却不存在一个可以自动发现网络设备当前所采用的 MIB 的机制。网络运维人员必须分别向设备厂商索取网络设备的 MIB,耗费大量的时间整理自己需要的 OID,再手工导入到自动化运维平台或者脚本当中。

以上是关于NetDevOps — SNMP 协议的主要内容,如果未能解决你的问题,请参考以下文章

NetDevOps — NETCONF/YANG 协议

NetDevOps — YANG 协议 — Junos YANG Modules

NetDevOps — YANG 协议 — 模型文件

NetDevOps — YANG 协议

NetDevOps — OpenConf 协议

NetDevOps — YANG 协议 — pyang 与 pyangbind