The metrics in (CAPM) are obtained either directly from the values of related Object IDs (OIDs) from the device MIBs or alternately, are calculated based off these OIDs. How can the source OIDs be identified and the calculations verified?
DX NetOps CAPM all supported releases
Using Percent Discards as an example, it is calculated from both OIDs and another value - CalculatedSpeedIn
The override speed, if set, will be the value for CalculatedSpeedIn
.
If you look at the Metric (Percent Discards
) and look at the Vendor Certification (VC), it comes from High Speed Interface
:
The CalculatedSpeedIn
is the speed of the Interface in bits/s. It can be obtained from the MIB data of the device when it is initially discovered or you can set it manually as per the following:
TechDocs : DX NetOps 23.3 : Override Speed In and Speed Out Values on Interfaces
The override speed, if set, will be the value for CalculatedSpeedIn
.
So in the equation (summarised below):
Percent Discards = isdef(ifHCOutUcastPkts) ? (CalculatedSpeedIn >= 650000000 ? a : b) : c
CalculatedSpeedIn
is greater than or equal to 650000000, then use value a
. If not, then use value b
.ifHCOutUcastPkts
has a valid value (i.e. positive integer obtained from the MIB data of the device), then Percent Discards
will equal the value from step 1. If not, it will equal c
.
Now, if you go to the DA command line and search for VC "High Speed Interface" under the certifications folder:
/opt/IMDataAggregator/data/certifications/CA_23.3.5.3/vendor_certs
You will see the following Vendor Certifications:
$ grep -i "High Speed Interface" *
im.ca.com-certifications-snmp-IfXTableMibWithoutIfTable.xml: <Documentation>Supports interfaces based on the high speed interfaces table that do not support the low speed interface table.</Documentation>
im.ca.com-certifications-snmp-IfXTableMibWithoutIfTable.xml: <DisplayName>High Speed Interface (Exclusive)</DisplayName>
im.ca.com-certifications-snmp-IfXTableMib.xml: <Documentation>Supports interfaces based on the high speed interfaces table.</Documentation>
im.ca.com-certifications-snmp-IfXTableMib.xml: <DisplayName>High Speed Interface</DisplayName>
im.ca.com-certifications-snmp-IfXTablewithFortinetSpeedMib.xml: <Documentation>Supports interfaces based on the high speed interfaces table and Fortinet Bandwidth.</Documentation>
im.ca.com-certifications-snmp-JuniperIfXTableMib.xml: <Documentation>Supports interfaces based on the high speed interfaces
im.ca.com-certifications-snmp-JuniperIfXTableMib.xml: <DisplayName>Juniper High Speed Interface</DisplayName>
The one we are interested in is the generic one:
im.ca.com-certifications-snmp-IfXTableMib.xml
So, searching in this for CalculatedSpeedIn
, we see:
$ grep -i CalculatedSpeedIn im.ca.com-certifications-snmp-IfXTableMib.xml
<Variable name="CalculatedSpeedIn">isdef(SpeedInOverride) ? SpeedInOverride : RawIfSpeed</Variable>
<Expression destAttr="Utilization">CalculatedUtilization=(CalculatedSpeedIn> 20000000 && isdef(CalculatedIfHCInOctets))
(CalculatedSpeedIn*_rspDuration))*100):snmpProtectedDiv(((CalculatedIfHCInOctets+CalculatedIfHCOutOctets)*8),
(CalculatedSpeedIn*_rspDuration))*100):snmpProtectedDiv(((CalculatedIfHCInOctets+CalculatedIfHCOutOctets)*8),
(CalculatedSpeedIn*_rspDuration))*100)
(CalculatedSpeedIn*_rspDuration))*100:(snmpProtectedDiv(((CalculatedIfInOctets+CalculatedIfOutOctets)*8),(CalculatedSpeedIn*_rspDuration)))*100)
:(snmpProtectedDiv(((CalculatedIfInOctets+CalculatedIfOutOctets)*8),(CalculatedSpeedIn*_rspDuration)))*100);
<Expression destAttr="UtilizationIn">CalculatedUtilizationIn=(CalculatedSpeedIn > 20000000 && isdef(CalculatedIfHCInOctets))
? snmpProtectedDiv((CalculatedIfHCInOctets*8),(CalculatedSpeedIn*_rspDuration))*100
: snmpProtectedDiv((CalculatedIfInOctets*8),(CalculatedSpeedIn*_rspDuration))*100;
? (CalculatedSpeedIn >= 650000000
? ( CalculatedSpeedIn >= 650000000
<Expression destAttr="NonunicastIn">(CalculatedSpeedIn >= 650000000 && isdef(ifHCInMulticastPkts))
<Expression destAttr="Nonunicast">(CalculatedSpeedIn >= 650000000 && isdef(ifHCInMulticastPkts))
? (CalculatedSpeedIn >= 650000000
? (CalculatedSpeedIn >= 650000000
? (CalculatedSpeedIn >= 650000000
? ( CalculatedSpeedIn >= 650000000
<Expression destAttr="Unicast">(CalculatedSpeedIn >= 650000000 && isdef (ifHCInUcastPkts))
<Expression destAttr="UnicastIn">(CalculatedSpeedIn >= 650000000 && isdef (ifHCInUcastPkts))
<Expression destAttr="UnicastPerSecond">(CalculatedSpeedIn >= 650000000 && isdef (ifHCInUcastPkts))
<Expression destAttr="UnicastInPerSecond">(CalculatedSpeedIn >= 650000000 && isdef (ifHCInUcastPkts))
<Expression destAttr="FrameSizeIn">snmpProtectedDiv((CalculatedSpeedIn > 20000000 && isdef (CalculatedIfHCInOctets) )
? ( CalculatedSpeedIn >= 650000000
<Expression destAttr="FrameSize">snmpProtectedDiv((CalculatedSpeedIn > 20000000 && isdef (CalculatedIfHCInOctets))
?( CalculatedSpeedIn >= 650000000
<Expression destAttr="Bits">(CalculatedSpeedIn > 20000000 && isdef (CalculatedIfHCInOctets))
<Expression destAttr="BitsPerSecond">(CalculatedSpeedIn > 20000000 && isdef (CalculatedIfHCInOctets))
<Expression destAttr="BitsPerSecondIn"><![CDATA[(CalculatedSpeedIn > 20000000 && isdef(ifHCInOctets) && ifHCInOctets > 0)? snmpProtectedDiv((ifHCInOctets*8),_rspDuration) : (ifInOctets <= maxOctets20Mbps ? snmpProtectedDiv( (ifInOctets*8) ,_rspDuration) : null)]]></Expression>
<Expression destAttr="BitsIn">(CalculatedSpeedIn > 20000000 && isdef(ifHCInOctets) && ifHCInOctets > 0)
The first line returned defines the variable:
<Variable name="CalculatedSpeedIn">isdef(SpeedInOverride) ? SpeedInOverride : RawIfSpeed</Variable>
The equation looks for the SpeedInOverride
. If it is set, it will be used. If not, then it will use the RawIfSpeed
The RawIfSpeed
will come from the MIB OID - ifHighSpeed : 1.3.6.1.2.1.31.1.1.1.15