![截至 2015 年,SNMP 仍被广泛使用吗?](https://linux22.com/image/663380/%E6%88%AA%E8%87%B3%202015%20%E5%B9%B4%EF%BC%8CSNMP%20%E4%BB%8D%E8%A2%AB%E5%B9%BF%E6%B3%9B%E4%BD%BF%E7%94%A8%E5%90%97%EF%BC%9F.png)
15 年前,SNMP 的很多功能对我来说似乎很麻烦。其中一个例子是 MIB 的概念,它是本地资源,用于“理解”其他数字 OID。
SNMP 是否已经现代化或转变为其他东西?它仍然是网络设备的必备功能吗?
答案1
遗憾的是,SNMP 仍然广泛使用。 协议的后续版本已经解决了 SNMPv1 中的许多问题,但这些问题几乎全部都是为了修复安全模型。因此,SNMP 流量现在比较臃肿,但他们没有解决我认为是 SNMP 的明显缺陷 - 存储在 MIB 中的数据位于监控/被监控设备交换之外。
在 SNMPv1 中,将 MIB 存储的数据与该交换分开,以及随后在线路上使用数字 OID 是有意义的,因为它将大多数交换保持在每个方向的单个 UDP 数据报中。在我看来,从 v3 开始,它不再有意义 - 但我不是 IETF。
遗憾的是,SNMP 仍然是一种最低公分母管理协议,而且我经常惊讶地发现,在很多设备中提取监控数据的最简单方法就是使用基于 UDP 中的 RO 社区字符串的 SNMPv1。
编辑(2018):因为它非常切题,所以我引用了 Geoff Huston 在《互联网协议杂志》2018 年 8 月刊:
二十五年前,互联网开始使用简单网络管理协议 (SNMP),尽管该协议存在安全漏洞、效率低下、使用抽象语法表示法一 (ASN.1) 非常烦人,并且会遭受某些形式的分布式拒绝服务 (DDoS) 攻击,但它仍然得到广泛的应用。
答案2
我从事网络监控系统工作,SNMP 仍然被广泛使用和依赖,原因如下:
- 使用 UDP 作为底层协议使 SNMP 非常高效。由于大多数监控/管理都在您自己的数据中心内完成,因此您不必担心数据包在公共互联网上丢失,而 TCP 确认和流量控制则显得多余。SNMPv2 解决了 SNMP 的一些原始低效问题,例如增加了对 BULK GET 的支持。
- SNMP 在联网设备中是通用的。几乎所有联网设备都实现了 SNMP 代理。MIB 确保有一个全局空间,不同供应商可以以受控的方式添加信息,从而使查找要查询哪些 OID 的信息变得更容易,并且几乎与供应商无关。
- 最后,还没有一个好的候选者可以替代。SNMP 可能不是很好,但它已经足够好了。现在有几种网络设备都有 API 来获取相同和额外的信息,但正如我在第二点中所说,查询这些 API 的方式显然因设备而异,并且没有一个端点是跨设备的标准化的。