It's a well-known "feature" that interface
ifindex value will change after certain JUNOS upgrades. However, the same problem is present when one reboots Juniper device- some interfaces will change
ifindex value. I have heard it happens with M40, MX960, M7i, with newer switches and probably with other platforms as well and with variety of JUNOS versions . As
ifindex value has to be persistent in order to use it for SNMP based monitoring solutions(for example
Nagios), this is a very annoying problem

In Cisco IOS, there is a command
snmp-server ifindex persist, which tells IOS to keep
ifindex value unchanged even after reboot. In JUNOS, as far as I know, something like this should be built in by design. There is a file
/var/db/dcd.snmp_ix, where all the
ifindex values are mapped. As
/var is mounted to
/dev/adX, it should survive reboot. However, still sometimes
ifindex values are changed! Any experience/comments with this issue? As this behavior has been present for years, is there finally some sort of fix or workaround?