What Is Jitter in Networking?
Jitter measures the variation in packet delay, or the time it takes for a packet to reach its destination. Packets sent from the same source don't always reach the recipient at regular intervals, even if they were transmitted in a continuous stream.
Think of packets as a group of cars traveling together. Even if each one leaves one right after the other, things like traffic and alternate routes can cause them to arrive at their destination at vastly different times. In this scenario, the "jitter" is the difference in time between each car's arrival.
For most network traffic, these inconsistencies in packet interarrival time don't significantly affect the conversation. However, they can be especially problematic for traffic that depends on real-time communication, such as video streaming or Voice over IP (VoIP), for which high levels of jitter can lead to choppy video or audio.
Jitter Versus Latency
Latency and jitter are related—but not always correlated—measures of network performance. Latency can refer to either one-way or round-trip latency. As you might expect, one-way latency measures the amount of time it takes for a packet to travel from one endpoint to another, while round-trip latency also includes the time it takes for the initial sender to receive a response. High latency in network connections corresponds directly to a drop in throughput.
Jitter, like we mentioned before, measures the variation of one-way packet latency that the receiver experiences. For example, a connection with high latency won't have high jitter if the amount of latency stays constant. Conversely, jitter buffers (used to smooth out jitter) can add to overall latency by increasing playout delay, or the time between the packet's arrival and when it leaves the buffer.
Practically speaking, a VoIP conversation with high latency might sound as if it's occurring over a walkie-talkie, with pauses between each participant's replies. High amounts of jitter, on the other hand, can make the conversation choppy and unintelligible.
What Are Jitter Buffers?
Jitter buffers eliminate jitter by queuing a number of packets to absorb the delay differences between them and then playing them out at a constant rate. This gives the more delayed packets a chance to catch up so that all packets are output smoothly. As with any type of buffering, the larger the jitter buffer is, the longer a packet's playout delay becomes.
There are two main implementations of jitter buffers:
- Static jitter buffers are fixed in size. While larger buffers can smooth out highly variable levels of latency, they add more overall delay. Shorter buffers increase delay only minimally, but excessive jitter might cause some packets to be dropped. The optimal solution is to size a static buffer based on the delay variance usually encountered in the network.
- Dynamic jitter buffers adapt their size to current network conditions. Based on the jitter experienced by the last few packets, a dynamic buffer will shrink or increase the size of its queue as needed.
Quick Fixes for Jitter in VoIP
Sources of jitter are specific to a network and can be difficult to identify, but there are a few places that should be considered.
Generally speaking, network congestion and bursty traffic are the most common sources of jitter, especially in slow or low-bandwidth links. Short of limiting other traffic or upgrading links, it's worth checking for configuration problems on your routers, your permanent virtual circuit (if you have one), or the actual VoIP system in use.
Jitter can potentially be introduced at any switches or routers between endpoints if VoIP traffic is competing with other traffic in a congested network or slow link. The critical solution here is a correctly configured queueing system that prioritizes VoIP packets over other traffic that is less dependent on real-time data transfer. Any type of per-packet load balancing should be avoided for VoIP, since it could increase jitter and cause packets to be received out-of-order.
In some situations, a lack of fragmentation in non-VoIP traffic can contribute to jitter. Since very large packets obviously take longer to serialize and leave the router, any VoIP packets that arrive as a larger one is being sent have to be queued until it's completely transmitted. Enabling fragmentation to split large packets into smaller pieces allows any new voice packets to be interwoven into the queue or given priority.
One final thing to check is, of course, the jitter buffer settings. If a static buffer doesn't seem to be cutting it, try enabling dynamic sizing. If that's not an option, tweaking the size of the static buffer depending on the usual amount of jitter in the network could help.