Background
High Utilization calculations can use one of two sets of variables. IfInOctets (OID: 1.3.6.1.2.1.2.2.1.10) and IfOutOctets (OID: .1.3.6.1.2.2.1.16) were defined as 32-bit counters in the original MIB specifications from the IETF. Because these counters were 32-bit, the maximum value they could hold was 2^32. As interfaces became faster, 2^32 was insufficient and network managers saw the values wrapping between polling cycles. Sometimes, the values could wrap several times between polls making these values unreliable at higher interface speeds. An extended Interface MIB was defined to overcome the wrapping problem which included ifHCInOctets (OID .1.3.6.1.2.1.31.1.1.1.6) and ifHCOutOctets (OID: .1.3.6.1.2.1.31.1.1.1.10) as 64 bit counters.
When HC counters exist, Smarts uses them to calculate Utilization. Smarts has forumulas that handle a wrap of the counter gracefully. When any of the counter values decreases (and systemUpTime does not) Smarts regards this as a wrap and takes the difference between the max counter value and the last reading then adds the current reading and divides by the polling rate. For example, the ifInOctets formula for the wrapping of 32-bit counters is as follows:
((2^32 - LastValue) + CurrentValue)/PollTime
When HC counters exist, the ifHCInOctets formula for the wrapping of 64-bit counters is as follows:
((2^64 - Last Value) + CurrentValue)/PollTime
The problem described in this solution occurs because the 64-bit HC counters are wrapping at 32-bits.
Note: The default PollTime for Utilization variables is 240 seconds.