最近做个项目有关于SNMP的东西, 一个简单的用net-snmp获取交换机端口流量的问题,在GOOOGLE了半天后,才明天是怎么回事。
一开始以为交换机里会直接有个表示某个端口流量的MIB值,直接调用就可以显示流量。后来才发现,交换机只提供了两个MIB值(ifInOctets,ifOutOctets )表示交换机的上行和下行流量,并且这个流量是该端口累加的流量(顺便说一下count32到最大值的时候自动规零)。面对这种情况,只有用(前值-后值)/间隔,才能得到该端口的真时流量。
以CISCO2900交换机为例做个简单上行流量计划的例子:
1、获取CISCO2900端口1的上行总流量
snmpwalk -v 1 -c public 192.168.1.254 IF-MIB::ifInOctets.1
返回结果
IF-MIB::ifInOctets.1 = Counter32: 4861881
2、五秒后再获取一次
snmpwalk -v 1 -c public 192.168.1.254 IF-MIB::ifInOctets.1
返回结果
IF-MIB::ifInOctets.1 = Counter32: 4870486
3、计算结果
(后值48704863-前值4861881)/ 5=1721b/s (应该是BYTE)