Jitter — мера нестабильности задержки в сети. Задержка сама по себе — это latency. Jitter — это насколько latency варьируется от пакета к пакету. Jitter 1–5 мс считается отличным, 5–20 мс — нормальным, >50 мс — проблема для real-time коммуникаций.
Как работает
Jitter возникает из-за нестабильности загрузки сетевых узлов: очереди на маршрутизаторах переполняются в пиковые моменты и пакеты задерживаются. Также влияет маршрут: если часть пакетов идёт через один путь, часть через другой — разные latency создают jitter.
Для компенсации jitter в VoIP и видеоконференциях используют jitter buffer — буфер, накапливающий пакеты и воспроизводящий их с постоянным темпом. Jitter buffer добавляет фиксированную задержку (обычно 50–150 мс) но сглаживает вариации. Asterisk, WebRTC, Zoom используют адаптивные jitter buffers.
Измерение jitter: ping -c 100 host → смотреть min/avg/max/mdev. mdev (mean deviation) — это jitter. Утилиты: iperf3 с UDP-тестом (iperf3 -u -c server -b 10M), mtr для интерактивного traceroute с jitter по каждому хопу.
История
Термин jitter в контексте сетей появился в 1990-х с распространением IP-телефонии. RTP (Real-time Transport Protocol) определён в RFC 1889 (1996) с механизмом timestamp для синхронизации и измерения jitter. IETF RFC 5481 (2009) стандартизировал метрики задержки включая jitter.
На что обращать внимание
Для хостинга VoIP-сервисов (Asterisk, FreeSWITCH) выбирайте провайдера с гарантированным jitter < 10 мс и проверяйте через iperf3/mtr. Hetzner и Contabo имеют высокий jitter в отдельные часы из-за overcommit сети. Крупные провайдеры с tier-1 пирингом обычно обеспечивают jitter < 5 мс.
Причины jitter в сети
Jitter возникает из-за: перегрузки маршрутизаторов (bufferbloat); различных маршрутов пакетов одного потока; задержки GC в JVM; конкуренции за CPU между ВМ на хосте (CPU steal). В облаке jitter выше, чем на выделенных серверах.
Jitter в реальном времени
Для VoIP (SIP/Asterisk) допустимый jitter — до 30 мс; выше 50 мс — деградация качества голоса. Для игровых серверов критичен. Low-latency серверы специально оптимизированы для минимизации jitter через CPU isolation и realtime ядро.
Измерение jitter
ping -c 100 host | awk '/mdev/' — mdev = средний jitter. Для UDP: iperf3 -u -c host — jitter и потери пакетов. Prometheus + Grafana — долгосрочный мониторинг с алертами.
Снижение jitter на VPS
CPU steal у соседних ВМ — основная причина jitter на shared VPS. Решения: выделенный сервер, CPU-pinning у KVM-хоста. Для Node.js: увеличить --max-old-space-size снижает GC-паузы. PREEMPT_RT ядро Linux: real-time патч снижает jitter на однопользовательских серверах.
QoS для снижения jitter
QoS (Quality of Service) приоритизирует трафик: VoIP и игровые пакеты обрабатываются раньше. Linux tc (Traffic Control): HTB (Hierarchical Token Bucket) + SFQ для Fair Queue. Маркировка DSCP: EF (Expedited Forwarding) для realtime трафика. На уровне хостинга: QoS настраивает провайдер, не клиент.