首先,ifInOctets 和ifOutOctets 中的“Octets”实际上是指数据包吗?有人能详细解释一下吗?另外,如果我想测量某些节点集之间的流量,我如何使用 SNMP 实现它?我看到了一些指向 MIB II 和 RMON 的链接。还有其他方法吗?我可以使用SNMP MIB测量流量延迟、丢包数、网络带宽、负载均衡参数和相关参数吗?
使用 SNMP 测量流量参数
首先,ifInOctets 和 ifOutOctets 中的“Octets”实际上是指数据包吗?有人能详细解释一下吗?
ifInOctets
并ifOutOctets
引用索引为ifIndex / ifName的接口接收和传输的字节(分别);并使用 32 位宽的值。ifInOctets
ifOutOctets
除非您以 100Mbps 或更低的速度轮询接口,否则我强烈建议使用ifHCInOctets和ifHCOutOctets,它们是 64 位值。区别很重要……例如,全 TX 速率下的 1GE 接口将ifOutOctets
在34 秒内包装 32 位计数器;这比大多数人投票的速度要快。
- 32 位计数器 @ 10Mbps 在 57 分钟内完成
- 32 位计数器 @ 100Mbps 5 分 42 秒
- 32 位计数器 @ 1000Mbps 在34 秒内换行
如果要对数据包进行计数,请使用ifHCInUcastPkts和ifHCOutUcastPkts。 HC
意味着它们是 64 位宽...并非所有 SNMP 对象都需要这么多空间,但高速接口需要。
另外,如果我想测量某些节点集之间的流量,我如何使用 SNMP 实现它?我看到了一些指向 MIB II 和 RMON 的链接。还有其他方法吗?我可以使用SNMP MIB测量流量延迟、丢包数、网络带宽、负载均衡参数和相关参数吗?
您无法使用 SNMP 测量两台服务器之间的流量,除非没有其他内容传输到同一台服务器(即不太可能)。在端点之间进行测量的最佳选择是:
最好从带有mtr或winmtr的主机测量随时间的延迟/平均丢包率。除非您使用脚本对来自wireshark的文件进行后处理(并且您必须手动编码),否则很难测量单个流的确切数据包丢失。
当您询问负载平衡参数时,我不确定您的意思。
可以使用yaz进行无源可用带宽测量。考虑到您的请求,主动测量不是一个可能的用例,但请使用iperf2或iperf3。一年前,当我最后一次尝试它时,根据我的经验,iperf3的边缘仍然有点粗糙......我仍然喜欢iperf2,但如果我不提及它,有人会抱怨。