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

是否可以在SNMP陷阱中发送表?,snmp,mib,snmp-trap,Snmp,Mib,Snmp Trap,我正在使用NetSNMP库(c/c++)编写snmp陷阱发送器。对于基本对象类型,将对象添加到陷阱非常简单: snmp_varlist_add_variable(notification_vars, MibName, length, MIBType, MIBValue, len); 其中,“MibName”是OID,“MIBValue”是字符串形式的值,“MIBType”是ASN类型。 现在,如何对索引表执行此操作?有人支持吗?如何将所有行及其元素添加到陷阱中 或者有更简单的替代方法吗?在S

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


snmp_varlist_add_variable(notification_vars, MibName, length, MIBType, MIBValue, len);
其中,“MibName”是OID,“MIBValue”是字符串形式的值,“MIBType”是ASN类型。 现在,如何对索引表执行此操作?有人支持吗?如何将所有行及其元素添加到陷阱中


或者有更简单的替代方法吗?

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

因此,您的PDU最大大小通常平均高达10个变量绑定

这里的常见用例场景是发送SNMP陷阱,通知用户发生了更改/事件。用户需要在接收陷阱时使用Get Next/Get Bulk从表中获取数据,以获取此事件的详细信息