今天早上,工作中出现了大问题,因为 SNMP 陷阱没有“通过”,因为 SNMP 是通过 UDP 运行的。我记得在大学网络课上,UDP 不能像 TCP/IP 那样保证传输。维基百科说 SNMP 可以在 TCP/IP 上运行,但 UDP 更常见。
我了解到 UDP 相对于 TCP/IP 的一些优点是速度、广播和多播。但在我看来,对于网络监控来说,保证交付比广播能力更重要。特别是当存在严重的高安全性需求时。我的一位同事告诉我,当流量过大时,UDP 数据包首先被丢弃。这是在网络监控 (IMO) 中更喜欢 TCP/IP 而不是 UDP 的另一个原因。
那么SNMP为什么要使用UDP呢?我无法弄清楚,也无法在谷歌上找到充分的理由。
实际上,在有损网络(或拥塞网络)中,UDP 预计比 TCP 工作得更好。 TCP 在传输大量数据方面要好得多,但当网络出现故障时,UDP 更有可能通过。 (事实上,我最近做了一项研究对此进行了测试,结果发现,当 UDP 超时设置正确时,在有损网络中,基于 UDP 的 SNMP 比基于 TCP 的 SNMP 成功得多)。一般来说,TCP 在丢包率约为 5% 时开始表现不佳,在 33%(左右)时变得完全无用,而 UDP 仍将成功(最终)。
因此,一如既往,正确的做法是为正确的工作选择正确的工具。如果您要对大量数据进行例行监控,您可能会考虑 TCP。但请准备好使用 UDP 来解决问题。如今大多数堆栈实际上可以同时使用 TCP 和 UDP。
至于发送 TRAP,是的,TRAP 是不可靠的,因为它们没有被确认。然而,SNMP INFORM 是 SNMP TRAP 的公认版本。因此,如果您想知道通知接收者是否收到了消息,请使用 INFORM。请注意,TCP 会not解决这个问题,因为它只提供消息已收到的第 3 层级别通知。无法保证通知接收者确实收到了通知。 SNMP INFORM 进行应用程序级确认,并且比假设 TCP 确认表明它们已收到更值得信赖。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)