OK, let’s say you’ve decided to live a healthier life. You’re exercising regularly, stopped getting drunk every night, and you’re eating healthy. You’ve been eating more salads, almost cut out red meat, and even eating annoyingly healthy desserts, if any.

It’s been a whole week of this torture, and it’s time to get on that scale. How would you feel when you stepped on the scale and you’ve gained 7 lbs? “What the #*$& !?!?! How can this be?? This doesn’t make sense. Even my pants are feeling looser…? What’s going on? ”
Looks like when you replaced the battery in your scale, the calibration changed.
Did you know that something as simple as Cisco router re-initialization (reboot, reload and so on) or with the insertion of a new card, the SNMP instances can change resulting in completely erroneous SNMP reports? It can happen regardless of which SNMP monitoring application you use.
For this reason Cisco has included the ifIndex Persistence Feature starting in IOS version 12.x.
In taking excerpts from the ifIndex Persistence Feature link above, I’ll outline the problem as it relates to SNMP.
Problem before the ifIndex Persistence Feature
Consider a situation where a simple monitoring software (like MRTG) is polling the interface statistics of the router specific serial interface going to the Internet. As an example, you could have these conditions prior to re-initialization:

Therefore, the management application is polling the ifIndex 3, which corresponds to the serial port.
After the router re-initialization (reboot, reload and so on) the conditions change to something similar to this:

The management application continues polling the ifIndex 3, which corresponds now to the Ethernet port. Therefore, if the management application is not warned by a trap, for example, the router has been rebooted, the statistics polled could be completely wrong. The chart is a little dated because nobody uses token ring anymore, but this still happens with newer gig interfaces too.
The ifIndex Persistence overview
Cisco IOS Release adds support for an ifIndex value that can persist across reboots. The Interface Index Persistence feature allows for greater accuracy when it collects and processes network management data by uniquely identifying input and output interfaces for traffic flows and SNMP statistics. As it relates each interface to a known entity (such as an ISP customer), the Interface Index Persistence feature allows network management data to be more effectively utilized. IfIndex persistence means that the mapping between the ifDescr (or ifName) object values and the ifIndex object values generated from the IF-MIB is retained across reboots.
This feature is particularly useful for:
- SNMP: monitoring the interfaces counters
- NetFlow: reporting of the interface ifIndex
- RMON: events/alarms based on specific interfaces
- EXPRESSION/EVENT MIB: creation of a new MIB variable based on interface counters
Configuration
IfIndex persistence is disabled by default. To globally enable ifIndex values that are maintained across reboots, use the following command in global configuration mode:
Router(config)# snmp-server ifindex persist
For more details on the configuration, refer to Cisco’s SNMP ifIndex Persistance Configuration documentation.