是否可以在SNMP陷阱中发送表?

时间:2016-11-08 08:13:46

标签: snmp mib snmp-trap

我使用net-snmp库(c / c ++)编写snmp陷阱发送方。对于基本对象类型,将对象添加到陷阱非常简单:


snmp_varlist_add_variable(notification_vars, MibName, length, MIBType, MIBValue, len);

其中' MibName'作为OID,' MIBValue'作为字符串的值和' MIBType' ASN类型。 现在,如何为索引表执行此操作?这有什么支持吗?如何将所有行及其元素添加到陷阱中?

或者有更简单的替代品吗?

1 个答案:

答案 0 :(得分:1)

在SNMP陷阱中发送整个SNMP表是不好的做法。通常,SNMP表在OID实例数量方面相当大。问题是SNMP使用UDP作为传输协议。 SNMP允许PDU大小达到网络的MTU。缓冲区应该与最大的预期数据包一样大,因此如果可能的话,它可能应该与MTU相对应。例如,以太网允许最多1500字节的帧有效载荷。

因此,您的PDU最大大小通常最多为10个varbinds。

此处的常见用例场景是发送SNMP陷阱,通知用户某些内容已发生变化/发生。用户需要在陷阱接收时使用Get-Next / Get-Bulk从表中获取数据,以获取此事件的详细信息。