How VNQM computes VoIP UDP Jitter IPSLA operation

Version 1

    I've heard couple of questions on how VNQM computes values for VoIP UDP Jitter operation. And I think it would be good to publish that here so everyone can understand values in VNQM:

     

    Jitter:

     

    jitterSD = (rttMonLatestJitterOperSumOfPositivesSD + rttMonLatestJitterOperSumOfNegativesSD ) / (rttMonLatestJitterOperNumOfPositivesSD +

     

    rttMonLatestJitterOperNumOfNegativesSD)

     

    jitterDS = (rttMonLatestJitterOperSumOfPositivesDS + rttMonLatestJitterOperSumOfNegativesDS) / (rttMonLatestJitterOperNumOfPositivesDS +

     

    rttMonLatestJitterOperNumOfNegativesDS)

     

    Jitter = (rttMonLatestJitterOperSumOfPositivesSD + rttMonLatestJitterOperSumOfNegativesSD +rttMonLatestJitterOperSumOfPositivesDS +

     

    rttMonLatestJitterOperSumOfNegativesDS) / (rttMonLatestJitterOperNumOfPositivesSD + rttMonLatestJitterOperNumOfNegativesSD

     

    +rttMonLatestJitterOperNumOfPositivesDS +

    +rttMonLatestJitterOperNumOfNegativesDS)

     

    rttMonLatestJitterOperSumOfPositivesSD : 1.3.6.1.4.1.9.9.42.1.5.2.1.9

    rttMonLatestJitterOperSumOfNegativesSD : 1.3.6.1.4.1.9.9.42.1.5.2.1.14

    rttMonLatestJitterOperNumOfPositivesSD : 1.3.6.1.4.1.9.9.42.1.5.2.1.8

    rttMonLatestJitterOperNumOfNegativesSD : 1.3.6.1.4.1.9.9.42.1.5.2.1.13

     

    rttMonLatestJitterOperSumOfPositivesDS : 1.3.6.1.4.1.9.9.42.1.5.2.1.19

    rttMonLatestJitterOperSumOfNegativesDS : 1.3.6.1.4.1.9.9.42.1.5.2.1.24

    rttMonLatestJitterOperNumOfPositivesDS : 1.3.6.1.4.1.9.9.42.1.5.2.1.18

    rttMonLatestJitterOperNumOfNegativesDS : 1.3.6.1.4.1.9.9.42.1.5.2.1.23

     

    -------------

     

    PacketLoss:

     

    if (rttMonLatestJitterOperPacketLossSD + rttMonLatestJitterOperPacketLossDS + rttMonLatestJitterOperPacketMIA <> 0)

     

    packetLoss =

    ((rttMonLatestJitterOperPacketLossSD + rttMonLatestJitterOperPacketLossDS + rttMonLatestJitterOperPacketMIA) * 100) / (rttMonLatestJitterOperPacketLossSD + rttMonLatestJitterOperPacketLossDS + rttMonLatestJitterOperPacketMIA + rttMonLatestJitterOperPacketLateArrival + rttMonLatestJitterOperPacketOutOfSequence + rttMonLatestJitterOperNumOfRTT)

     

    else

     

    packetLoss = 0

     

    if (rttMonLatestJitterOperPacketLossSD + (rttMonLatestJitterOperPacketMIA/2) + ((rttMonLatestJitterOperPacketLateArrival + rttMonLatestJitterOperPacketOutOfSequence + rttMonLatestJitterOperNumOfRTT)/2) <> 0)

     

    packetLossSD = (rttMonLatestJitterOperPacketLossSD + (rttMonLatestJitterOperPacketMIA/2) + ((rttMonLatestJitterOperPacketLateArrival + rttMonLatestJitterOperPacketOutOfSequence + rttMonLatestJitterOperNumOfRTT)/2)) * 100 / (rttMonLatestJitterOperPacketLossSD + (rttMonLatestJitterOperPacketMIA/2))

     

    else

     

    packetLossSD = 0

     

    if (rttMonLatestJitterOperPacketLossDS + (rttMonLatestJitterOperPacketMIA/2) + ((rttMonLatestJitterOperPacketLateArrival + rttMonLatestJitterOperPacketOutOfSequence + rttMonLatestJitterOperNumOfRTT)/2) <> 0)

     

    packetLossDS = (rttMonLatestJitterOperPacketLossDS + (rttMonLatestJitterOperPacketMIA/2) + ((rttMonLatestJitterOperPacketLateArrival + rttMonLatestJitterOperPacketOutOfSequence + rttMonLatestJitterOperNumOfRTT)/2)) * 100 / (rttMonLatestJitterOperPacketLossDS + (rttMonLatestJitterOperPacketMIA/2))

     

    else

     

    packetLossDS = 0

     

    rttMonLatestJitterOperPacketLossSD 1.3.6.1.4.1.9.9.42.1.5.2.1.26

    rttMonLatestJitterOperPacketLossDS 1.3.6.1.4.1.9.9.42.1.5.2.1.27

    rttMonLatestJitterOperPacketMIA 1.3.6.1.4.1.9.9.42.1.5.2.1.29

    rttMonLatestJitterOperPacketLateArrival 1.3.6.1.4.1.9.9.42.1.5.2.1.30

    rttMonLatestJitterOperPacketOutOfSequence 1.3.6.1.4.1.9.9.42.1.5.2.1.28

    rttMonLatestJitterOperNumOfRTT 1.3.6.1.4.1.9.9.42.1.5.2.1.1

     

    -------------

     

    Delay:

     

    if (rttMonLatestJitterOperNumOfRTT <> 0)

     

    delay = (convert rttMonLatestJitterOperRTTSum to milli/microseconds depending on rttMonEchoAdminPrecision) / rttMonLatestJitterOperNumOfRTT

     

    else

     

    delay = 0

     

    if (micro/milli second convert value of rttMonLatestJitterOperOWSumSD and rttMonLatestJitterOperNumOfOW has value and rttMonLatestJitterOperNumOfOW <> 0)

     

    delaySD = micro/milli second convert value of rttMonLatestJitterOperOWSumSD / rttMonLatestJitterOperNumOfOW

     

    else

     

    if (micro/milli second convert value of rttMonLatestJitterOperOWSumDS and rttMonLatestJitterOperNumOfOW has value and rttMonLatestJitterOperNumOfOW <> 0)

     

    delayDS = micro/milli second convert value of rttMonLatestJitterOperOWSumDS / rttMonLatestJitterOperNumOfOW

     

    else

     

    delaySD & delayDS = null

     

    rttMonLatestJitterOperNumOfRTT 1.3.6.1.4.1.9.9.42.1.5.2.1.1

    rttMonLatestJitterOperRTTSum 1.3.6.1.4.1.9.9.42.1.5.2.1.2

    rttMonEchoAdminPrecision 1.3.6.1.4.1.9.9.42.1.2.2.1.37

    rttMonLatestJitterOperOWSumSD 1.3.6.1.4.1.9.9.42.1.5.2.1.33

    rttMonLatestJitterOperNumOfOW 1.3.6.1.4.1.9.9.42.1.5.2.1.41

    rttMonLatestJitterOperOWSumDS 1.3.6.1.4.1.9.9.42.1.5.2.1.37