最近做个项目有关于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)