Incorrect interface speed utilization detection on the Cisco Nexus switch

All of a sudden one of the Cisco Nexus switches started to report incorrect interface speed, and also it affected outbound traffic rate detection. The incorrect speed aligns with the 32-bit SNMP value (ifSpeed), while expected to use 64-bit (ifHighSpeed).

I run the snmpget requests to check if the affected switch returns correct values from the SNMP:

librenms@ow-lnms01:~$ snmpget -v2c -c fcc-public-community mia-br01-1.int IF-MIB::ifSpeed.436221440
IF-MIB::ifSpeed.436221440 = Gauge32: 4294967295
librenms@ow-lnms01:~$ snmpget -v2c -c fcc-public-community mia-br01-1.int IF-MIB::ifHighSpeed.436221440
IF-MIB::ifHighSpeed.436221440 = Gauge32: 10000

I just took one interface from the affected switch as an example. Librenms in the database shows 32-bit values:

MariaDB [librenms]> SELECT port_id, ifDescr, ifIndex, ifSpeed, ifSpeed_prev FROM ports WHERE device_id = 456 AND ifDescr = 'Ethernet1/28';
+---------+--------------+-----------+------------+--------------+
| port_id | ifDescr      | ifIndex   | ifSpeed    | ifSpeed_prev |
+---------+--------------+-----------+------------+--------------+
|   34922 | Ethernet1/28 | 436221440 | 4294967295 |   4294967295 |
+---------+--------------+-----------+------------+--------------+
1 row in set (0.001 sec)

In the WebUI besides reporting the wrong speed, it also doesn’t report correct output speed rate, showing Kipps instead of Mbps

Screenshot 2025-12-10 at 09.52.39

Attaching the ./validate.php output:

librenms@ow-lnms01:~$ ./validate.php
===========================================
Component | Version
--------- | -------
LibreNMS  | 25.12.0-dev.61+fc5e69fc8 (2025-12-10T06:41:57+00:00)
DB Schema | 2025_11_25_102228_increase_increase_port_descr_speed_length (361)
PHP       | 8.3.23
Python    | 3.12.3
Database  | MariaDB 10.11.13-MariaDB-0ubuntu0.24.04.1
RRDTool   | 1.7.2
SNMP      | 5.9.4.pre2
===========================================

[OK]    Composer Version: 2.9.2
[OK]    Dependencies up-to-date.
[OK]    Database Connected
[OK]    Database Schema is current
[OK]    SQL Server meets minimum requirements
[OK]    lower_case_table_names is enabled
[OK]    MySQL engine is optimal
[OK]    Database and column collations are correct
[OK]    Database schema correct
[OK]    MySQL and PHP time match
[OK]    Active pollers found
[OK]    Dispatcher Service not detected
[OK]    Locks are functional
[OK]    Python poller wrapper is polling
[OK]    Redis is unavailable
[OK]    rrdtool version ok
[OK]    Connected to rrdcached

Also attached output for module ports ./discovery.php -h 456 -d -v -m ports

https://paste.rs/V9pxB

Any help will be appreciated

It looks like this is a platform-level bug, and after the device was rediscovered, it stopped reporting proper values:

librenms@ow-lnms01:~$ snmpwalk -v2c -c fcc-public-community   -M /opt/librenms/mibs:/opt/librenms/mibs/cisco   -m IF-MIB mia-br01-2.int ifName | egrep '436221440|Ethernet1/28'
IF-MIB::ifName.436221440 = STRING: Ethernet1/28

librenms@ow-lnms01:~$ snmpwalk -v2c -c fcc-public-community   -M /opt/librenms/mibs:/opt/librenms/mibs/cisco   -m IF-MIB mia-br01-1.int ifName | egrep '436221440|Ethernet1/28'
IF-MIB::ifName.436221440 = STRING: Ethernet1/28
Error: OID not increasing: IF-MIB::ifName.1560302769
 >= IF-MIB::ifName.1224736769

It seems like it is related to the Cisco bug: Cisco

It may take a while to upgrade the software or reconfigure the sub-interface to a lower number.

Is there any way to tell LibreNMS to skip the sub-interface during discovery?

The problem was resolved.

I rediscovered the switch, excluded the “broken” sub-interface from polling. Ran the discovery process one more time, and the system started polling the rest of the interfaces and sensors correctly.