Confusing values when graphing Jitter using RTCP

Recently I’ve been wanting to better understand the call quality through our PBX by measuring its performance. I started by subscribing to RTCP events via AMI, and recording the IAJitter values to InfluxDB. For the most part, the data is as expected: 99% of reported inter-arrival jitter is < 1, which is to be expected since we have a private fiber link to our telco. However, I’m seeing some really strange intermittent, but regular, spikes in the data.

First, let me explain how I’m visualizing the data. The meaning of the IAJitter field does not seem to be well documented, but here’s what I found:

  • According to the Asterisk Wiki, the ReportXIAJitter (formerly IAJitter in Asterisk 11) reports “An estimate of the statistical variance of the RTP data packet interarrival time, measured in timestamp units”. However, I can’t find reference to what a “timestamp unit” is in the Asterisk docs.
  • Henning Schulzrinne’s RTP FAQ says “Jitter is computed in timestamp units. For example, for an audio stream sampled at 8,000 Hz, the arrival time measured with the local clock is converted by multiplying the seconds by 8,000.”

Based on the above information, I take the value reported via AMI, convert it to a float, divide by 8000, and store it in InfluxDB. I interpret this resulting value to be in seconds.

The result is a graph which has 99% of values < 1.0, but with intermittent spikes. I’ve seen them as high as 372. I’m regularly seeing values in the range of 5-10, but again, very narrow spikes with no ramp up or ramp down. This makes me think the reported values are instantaneous (rather than indicating a problem appearing and subsiding) and probably incorrect.

First, I’d like to know if my interpretation of the IAJitter value is correct. Second, what might explain these spikes? Is it possible that this has something to do with new calls being set up, where the initial values are based on incorrect RTP timestamps.

Below is a graphs illustrating the behavior: