Что такое jitter в интернете
Джиттер
Из Википедии — свободной энциклопедии
Джи́ттер (англ. jitter — дрожание) или фазовое дрожание цифрового сигнала данных [1] — нежелательные фазовые или частотные отклонения передаваемого сигнала. Возникают вследствие нестабильности задающего генератора, изменений параметров линии передачи во времени и различной скорости распространения частотных составляющих одного и того же сигнала.
При цифровой записи звука джиттер вносит в сигнал искажения, подобные детонации — явлению, вызванному неравномерностью движения магнитной ленты в аналоговом магнитофоне вследствие несовершенства лентопротяжного механизма. Однако, вносимые цифровым джиттером искажения существенно заметнее искажений звука, вносимых детонацией; видимо, это связано с большей «мягкостью» и «плавностью» детонационных искажений, обусловленных эластичностью магнитной ленты и инерционностью механических элементов лентопротяжных механизмов.
В области телекоммуникаций джиттером называется первая производная задержки прохождения данных по времени.
На графике «амплитуда сигнала» (ось ординат (y)) — «время» (абсцисс (x), секунды) джиттер — сдвиг по фазе (в секундах) между идеальным и действительным сигналами.
Для наглядного представления джиттера строят график «сдвиг по фазе» (ось ординат, секунды) — «время» (ось абсцисс, секунды).
Устранение джиттера — одна из основных проблем, возникающих при проектировании цифровой электроники, в частности, цифровых интерфейсов. Недостаточно аккуратный расчёт джиттера может привести к его накоплению при прохождении цифрового сигнала по тракту и, в конечном счёте, к неработоспособности устройства.
Что такое jitter в интернете
Джулиан Данн, Audio Precision, Inc.
Оглавление:
Введение
Цифровые аудио системы отличаются от аналоговых двумя главными особенностями:
Обычно моменты квантования определяются аналогово-цифровым преобразователем (АЦП) и цифро-аналоговыми (ЦАП) преобразователем, которые служат для преобразования сигнала из аналоговой формы в цифровую и обратно. Эти устройства зачастую имеют задающий генератор для управления частотой квантования или частотой дискретизации.
Цифровое аудио невосприимчиво к многим недостаткам аналоговой записи и аналоговой передачи сигнала: искажения, шумы на линии, шумы пленки, детонации, взаимное проникновение каналов. И даже если сигнал в цифровой форме не полностью избавлен от недостатков, он несомненно очень устойчив к большинству из таких воздействий. Но на практике цифровой сигнал встречается с новыми проблемами: нестабильность тактового генератора, падение характеристик сигнала в кабеле, паразитные наводки. Все это приводит к изменению формы сигнала и небольшим сдвигам во временной области, или джиттеру.
Джиттер также может возникать в случае самотактующегося сигнала (например, S/PDIF). В этом случае джиттер может привести к ошибкам в распознавании данных, к сбою синхронизации или потере отдельных битов. Джиттер задающего генератора также может ухудшать точность оцифровки в преобразователях в процессе квантования.
Что такое джиттер?
Джиттером называется отклонение сигнала, такого как тактующий сигнал генератора, во времени от номинала.
Составляющая джиттера может быть извлечена из тактового или самотактующегося цифрового сигнала и проанализирована в отдельности. Среди наиболее полезных путей изучения влияния джиттера является исследование частотной характеристики и выявление главных частотных компонентов джиттера.
Измерения джиттера
При небольшом количестве джиттера, фронт меандра смещается назад или вперед на небольшую величину по времени. При увеличении джиттера, смещения достигают больших величин.
Частотой джиттера называют частоту, с которой происходит фазовый сдвиг. Также как в случае наложения шума или помехи, сигнал привносимый джиттером может быть чистой синусоидой, сложным колебанием или полностью случайным процессом.
Интервальная единица (UI)
Интервальной единицей (UI, unit interval) называют отрезок времени, обратно пропорциональный частоте следования данных. Этот термин часто используется при исследованиях джиттера. UI определяется как минимальный номинальный временной интервал в выбранной схеме кодирования. Для сигнала в стандарте AES3 при передачи данных частотой 48 кГц содержатся: 32 бита в субфрейме и 64 бита во фрейме, что дает 128 импульсов на фрейм после применения для кодирования двухфазной модуляции. В этом случае:
1 UI / (128 * 48000) = 163 нс
UI используется в нескольких спецификациях на джиттер в стандарте AES3¹ (стандарт сообщества Audio Engineering Society для интерфейса передачи двухканального цифрового аудио), в результате допуски по спецификации пропорционально масштабируются для разных данных и частот семплирования.
1. AES3-1992—‘Recommended Practice for Digital Audio Engineering—Serial Transmission Format for Two-Channel Linearly Represented Digital Audio Data’ J. Audio Eng. Soc., vol. 40 No. 3, страницы 147-165, июнь 1992. (Последняя версия, включающая поправки, доступна на сайте www.aes.org).
Например, длина UI в секундах для частоты 96 кГц вполовину меньше, чем UI для 48 кГц. Требования по джиттеру для передачи и приема находятся в тех же пропорциях.
Примечание: Некоторые спецификации на пересылку данных определяют UI как продолжительность одного бита при передаче. Такое определение несовместимо со спецификацией AES3 и не будет здесь использоваться.
Как можно увидеть джиттер?
Джиттер цифрового сигнала можно увидеть по смещению импульсов, которые сдвинуты относительно идеального тактового сигнала. И любые правильные измерения джиттера основаны на сравнении подверженного джиттеру сигнала с идеальным клоком.
На практике зачастую нет идеального тактового сигнала, с котором можно сравнить испытуемый сигнал. Поэтому при измерении джиттера приходится опираться на сам сигнал, на смещения по оношению к самому себе.
Вместо этого, можно сэмулировать идеальный тактовый сигнал автоподстройкой фазы относительно низкоджиттерного генератора, используя ФАПЧ (PLL) (см. параграф Фазовая автоматическая подстройка частоты). Такой способ самоуточнения сигнала аналогичен наложению ВЧ фильтра с частотой среза, равной частоте среза ФАПЧ. Полученный идеальный тактовый сигнал можно, например, использовать для внешней тактовки осциллографа или как референсный сигнал при просмотре на двухлучевом осциллографе.
Используя цифровую обработку сигнала (DSP), можно вычислить идеальный задающий сигнал усреднением анализируемого сигнала. После этого есть возможность выделить сигнал и его джиттер с очень большой точностью. По этим данным анализатор может построить отклонение импульсов по амплитуде и времени в виде глазковой диаграммы (график 3); отобразить джиттер во временной области (график 4), или, используя БПФ, построить спектральное разложение джиттера (график 5).
График 4. Джиттер с основной частотой 5 кГц во временной области
График 5. FFT анализ выделенного из сигнала джиттера
Джиттер при семплинге
Джиттер может влиять на цифровой сигнал в двух широких областях: в процессе преобразования аналога в цифру и обратно, и при передаче в цифровом виде.
Джиттером дискретизации или джиттером семплинга (sampling jitter) называют ошибки выбора моментов времени квантования в процессе оцифровки в АЦП, при преобразования в аналог в ЦАП или в преобразователях частоты дискретизации (SRC). Большое значение джиттера в перечисленных случаях может привести к слышимом ухудшении качества сигнала.
Интерфейсный джиттер
В отличие от постепенного ухудшения звука при увеличении джиттера семплинга, большое значение интерфейсного джиттера при передаче звуковых данных может привести к потери целостности данных. Так что становится важным контролировать значение джиттера при передаче данных. Джиттер цифровых звуковых интерфейсов должен находиться в определенных допусках, чтобы его можно было скомпенсировать на приемной стороне.
Джиттер генератора синхросигнала
Во многих задачах цифрового аудио важно хранить, передавать и обрабатывать сигнал синхронно на всех участках цепочки. Это требует стабильной единой частоты дискретизации. В других задачах важно, чтобы частота семплирования сигнала была строго пропорциональной другой частоте, например частоте кадров видеоряда, чтобы не было расхождения видео и аудиодорожки. Способ управления таймингом в этом случае зовется тактовой синхронизацией (clock synchronization).
Когда тактовый генератор синхонизирован с внешним источником синхронизации, добавляется джиттер от генератора синхросигнала. Также джиттер может быть добавлен на этапе передачи сигнала синхронизации. К счастью, можно отфильтровать джиттер сигнала синхронизации. Зная характеристики джиттера генератора синхросигнала, можно отфильтровать джиттер на приемной стороне.
При тактовании от внешнего генератора таким образом, характеристики подавления джиттера сильно влияют на качество звукового сигнала. В других обстоятельствах это становится не так важно.
Фазовая автоматическая подстройка частоты (Phase-Locked Loop)
При быстром вращении тяжелого маховика на скорость его вращения влияют только продолжительно прикладываемые усилия по ускорению и замедлению, с полным игнорированием коротких по времени воздействий. Нечто похожее наблюдается при работе схемы фазовой автоматической подстройки частоты (ФАПЧ).
На входе ФАПЧ имеется фазовый детектор, который формирует управляющий сигнал на основе сравнения разности фаз входного сигнала и цепи обратной связи. Далее сигнал следует на ФНЧ и генератор управляемый напряжением (VCO). Управление возможно из-за наличия цепи отрицательной обратной связи с заданным коэффициентом усиления (PLL Loop Gain).
Если фазовая разность равна нулю, управляющее воздействие отсутствует, контур замыкается. Если же имеется разность фаз, она управляет источником тока (CP), подающего разностный периодический сигнал на ФНЧ. Отфильтрованный дельта-сигнал управляет генератором VCO, который преобразует напряжение в производную фазы по времени, т.е. в частоту. Происходит регулирование частоты таким образом, чтобы фазовая разность стала равной нулю. Происходит фазовая автоматическая подстройка частоты.
ФНЧ вводится намеренно, для достижения ФАПЧ свойства «маховика». ФНЧ сглаживает ВЧ-помехи во входном сигнале и уменьшает полосу, в которой частота VCO стабилизируется схемой ФАПЧ.
Ниже частоты сопряжения, благодаря ООС, выход ФАПЧ практически повторяет сигнал на входе, при этом фазовый шум ГУН подавляется. С ростом частоты ООС ослабевает, так что джиттер на выходе ФАПЧ будет в большей степени зависеть от собственного фазового шума ГУН и в меньшей от джиттера входного сигнала. Ключевой момент в реализации ФАПЧ приемника или передатчика состоит в компромиссе между собственным джиттером и его подавлением.
Не все зависит от скорости: существует джиттер, который влияет на ваше соединение
Джиттер: стабильна ли ваша задержка?
Однако есть несколько факторов, которые могут повлиять на стабильность задержки. Как правило, со стороны оператора сложно возникать какие-либо технические проблемы, поскольку оптоволоконные соединения очень стабильны. Однако в помещении может возникнуть множество проблем.
Например, если у нас есть оптоволокно на 100 Мбит / с и нас дома несколько, кому-то не составит труда пропитать связь если они скачивают файл или смотрят несколько человек Netflix в то же время. В таких ситуациях, даже если у нас хорошее качество обслуживания, которое отдает приоритет игровому соединению, у нас будет некоторая нестабильность в сигнале.
Пакеты могут даже быть потеряны, например, генерируя рывки и телепортации в онлайн-игры на мгновение потеряв пакет, определяющий положение человека, а затем внезапно вернув его. Следовательно, персонаж в игре может очень быстро перемещаться вперед и назад, потеряв правильный порядок пакетов и вынужден компенсировать и исправлять эту потерю.
Как улучшить джиттер
Хотя дрожание обычно более заметно в таких ситуациях, как онлайн-игры, которые очень чувствительны к задержкам и нестабильности, мы также можем заметить проблемы с голосовым трафиком в таких приложениях, как Discord. Чем ближе он к нулю, тем лучше. Если джиттер у нас равен нулю, это означает, что наше соединение совершенно стабильно, и мы не страдаем ни одной потерей пакетов, и что все прибывают в порядке.
In такие игры, как CS: GO it Это нормально, если при оптоволоконных соединениях наблюдается некоторая нестабильность, но почти всегда она составляет 0.4 мс или меньше. На следующем изображении мы можем видеть дрожание в области с надписью «var», что указывает на вариацию.
Следовательно, для уменьшения джиттера важно иметь хороший маршрутизатор с MU-MIMO с независимыми каналами, если мы играем через WiFi, или, в качестве альтернативы, использовать кабель Ethernet, чтобы гарантировать лучшую стабильность. Если есть много людей, пользующихся Интернетом дома, возможно, вам придется нанять оптоволоконную сеть с большей скоростью.
Качество сетей передачи данных. Программные и аппаратные измерения
Я бы хотел опубликовать цикл статей об измерениях характеристик систем связи и сетей передачи данных. Эта статья вводная и в ней будут затронуты лишь самые основы. В дальнейшем планирую более глубокое рассмотрение в стиле «как это сделано».
Покупая продукт или услугу мы часто оперируем таким понятием как качество. Что же такое качество? Если мы обратимся к словарю Ожегова, то там увидим следующее: «совокупность существенных признаков, свойств, особенностей, отличающих предмет или явление от других и придающих ему определенность». Перенося определение на область сетей связи, приходим к выводу, что нам требуется определить «существенные признаки, свойства и особенности», позволяющие однозначно определить отличие одной линии или сети связи от другой. Перечисление всех признаков и свойств обобщаются понятием «метрика». Когда кто-то говорит о метриках сетей связи, он имеет в виду те характеристики и свойства, которые позволят точно судить о системе связи в целом. Потребность в оценке качества лежит большей частью в экономической области, хотя и техническая её часть не менее интересна. Я же попробую балансировать между ними, чтобы раскрыть все самые интересные аспекты этой области знаний.
Всех заинтересовавшихся прошу под кат.
Мониторинг и диагностика систем связи
Как я писал выше, метрики качества определяют экономическую составляющую владения сетью или системой связи. Т.е. стоимость аренды или сдачи в аренду линии связи напрямую зависит от качества этой самой линии связи. Стоимость, в свою очередь, определяется спросом и предложением на рынке. Дальнейшие закономерности описаны у Адама Смита и развиты Милтоном Фридманом. Даже во времена СССР, когда была плановая экономика, а о «рынке» думали, как о преступлении против власти и народа, существовал институт госприемки, как для военных, так и гражданских целей, призванный обеспечить надлежащее качество. Но вернемся в наше время и попробуем определить эти метрики.
Рассмотрим сеть на основе Ethernet, как самой популярной технологии на данный момент. Не будем рассматривать метрики качества среды передачи данных, поскольку они мало интересуют конечного потребителя (разве что материал самой среды иногда бывает интересен: радио, медь или оптика). Самая первая метрика, которая приходит в голову — пропускная способность (bandwidth), т.е. сколько данных мы можем передать в единицу времени. Вторая, связанная с первой,- пакетная пропускная способность (PPS, Packets Per Second), отражающая сколько фреймов может быть передано в единицу времени. Поскольку сетевое оборудование оперирует фреймами, метрика позволяет оценить, справляется ли оборудование с нагрузкой и соответствует ли его производительность заявленной.
Третья метрика — это показатель потери фреймов (frame loss). Если невозможно восстановить фрейм, либо восстановленный фрейм не соответствует контрольной сумме, то принимающая, либо промежуточная система его отвергнет. Здесь имеется ввиду второй уровень системы OSI. Если рассматривать подробнее, то большинство протоколов не гарантируют доставку пакета получателю, их задача лишь переслать данные в нужном направлении, а те кто гарантирует (например, TCP) могут сильно терять в пропускной способности как раз из-за перепосылок фреймов (retransmit), но все они опираются на L2 фреймы, потерю которых учитывает эта метрика.
Четвертая — задержка (delay, latency),- т.е. через сколько пакет отправленный из точки A оказаться в точке B. Из этой характеристики можно выделить еще две: односторонняя задержка (one-trip) и круговая (round-trip). Фишка в том, что путь от A к B может быть один, а от B к A уже совсем другим. Просто поделить время не получится. А еще задержка время от времени может меняться, или “дрожать”,- такая метрика называется джиттером (jitter). Джиттер показывает вариацию задержки относительно соседних фреймов, т.е. девиацию задержки первого пакета относительно второго, или пятого относительно четвертого, с последующим усреднением в заданный период. Однако если требуется анализ общей картины или интересует изменение задержки в течении всего времени теста, а джиттер уже не отражает точно картину, то используется показатель вариации задержки (delay variation). Пятая метрика — минимальный MTU канала. Многие не придают важности этому параметру, что может оказаться критичным при эксплуатации “тяжелых” приложений, где целесообразно использовать jumbo-фреймы. Шестой, и малоочевидный для многих параметр — берстность — нормированная максимальная битовая скорость. По этой метрике можно судить о качестве оборудования, составляющего сеть или систему передачи данных, позволяет судить о размере буфера оборудования и вычислять условия надежности.
Об измерениях
Поскольку с метриками определились, стоит выбрать метод измерения и инструмент.
Задержка
Известный инструмент, поставляемый в большинстве операционных систем — утилита ping (ICMP Echo-Request). Многие ее используют по нескольку раз на дню для проверки доступности узлов, адресов, и т.п. Предназначена как раз для измерения RTT (Round Trip Time). Отправитель формирует запрос и посылает получателю, получатель формирует ответ и посылает отправителю, отправитель замеряя время между запросом и ответом вычисляет время задержки. Все понятно и просто, изобретать ничего не нужно. Есть некоторые вопросы точности и они рассмотрены в следующем разделе.
Но что, если нам надо измерить задержку только в одном направлении? Здесь все сложнее. Дело в том, что помимо просто оценки задержки пригодится синхронизировать время на узле отправителе и узле-получателе. Для этого придуман протокол PTP (Precision Time Protocol, IEEE 1588). Чем он лучше NTP описывать не буду, т.к. все уже расписано здесь, скажу лишь то, что он позволяет синхронизировать время с точностью до наносекунд. В итоге все сводится к ping-like тестированию: отправитель формирует пакет с временной меткой, пакет идет по сети, доходит до получателя, получатель вычисляет разницу между временем в пакете и своим собственным, если время синхронизировано, то вычисляется корректная задержка, если же нет, то измерение ошибочно.
Если накапливать информацию об измерениях, то на основании исторических данных о задержке можно без труда построить график и вычислить джиттер и вариацию задержки — показатель важный в сетях VoIP и IPTV. Важность его связана, прежде всего, с работой энкодера и декодера. При “плавающей” задержке и адаптивном буфере кодека повышается вероятность не успеть восстановить информацию, появляется “звон” в голосе (VoIP) или “перемешивание” кадра (IPTV).
Потери фреймов
Проводя измерения задержки, если ответный пакет не был получен, то предполагается, что пакет был потерян. Так поступает ping. Вроде тоже все просто, но это только на первый взгляд. Как написано выше, в случае с ping отправитель формирует один пакет и отправляет его, а получатель формирует свой собственный о отправляет его в ответ. Т.е. имеем два пакета. В случае потери какой из них потерялся? Это может быть не важно (хотя тоже сомнительно), если у нас прямой маршрут пакетов соответствует обратному, а если это не так? Если это не так, то очень важно понять в каком плече сети проблема. Например, если пакет дошел до получателя, то прямой путь нормально функционирует, если же нет, то стоит начать с диагностики этого участка, а вот если пакет дошел, но не вернулся, то точно не стоит тратить время на траблшутинг исправного прямого сегмента. Помочь в идентификации могла бы порядковая метка, встраиваемая в тестовый пакет. Если на обоих концах стоят однотипные измерители, то каждый из них в любой момент времени знает количество отправленных и полученных им пакетов. Какие именно из пакетов не дошли до получателя можно получить сравнением списка отправленных и полученных пакетов.
Минимальный MTU
Измерение этой характеристики не то чтобы сложно, скорее оно скучно и рутинно. Для определения минимального размера MTU (Maximum transmission unit) следует лишь запускать тест (тот же ping) с различными значениями размеров кадра и установленным битом DF (Don’t Fragmentate), что приведет к непрохождению пакетов с размером кадра больше допустимого, ввиду запрета фрагментации.
Например, так не проходит:
А так уже проходит:
Не часто используемая метрика с коммерческой точки зрения, но актуальная в некоторых случаях. Опять же, стоит отметить, что при асимметричном пути следования пакетов, возможен различный MTU в разных направлениях.
Пропускная способность
Наверняка многим известен факт, что количество переданной полезной информации в единицу времени зависит от размера фрейма. Связано это с тем, что фрейм содержит довольно много служебной информации — заголовков, размер которых не меняется при изменении размера фрейма, а изменяется поле “полезной” части (payload). Это значит, что несмотря на то, что даже если мы передаем данные на скорости линка, количество полезной информации переданной за тот же период времени может сильно варьироваться. Поэтому несмотря на то, что существуют утилиты для измерения пропускной способности канала (например iperf), часто невозможно получить достоверные данные о пропускной способности сети. Все дело в том, что iperf анализирует данные о трафике на основе подсчета той самой «полезной» части, окруженной заголовками протокола (как правило UDP, но возможен и TCP), следовательно нагрузка на сеть (L1,L2) не соответствует подсчитанной (L4). При использовании аппаратных измерителей скорость генерации трафика устанавливается в величинах L1, т.к. иначе было бы не очевидно для пользователя почему при измерении размера кадра меняется и нагрузка, это не так заметно, при задании ее в %% от пропускной способности, но очень бросается в глаза при указании в единицах скорости (Mbps, Gbps). В результатах теста, как правило, указывается скорость для каждого уровня (L1,L2,L3,L4). Например, так (можно переключать L2, L3 в выводе):
Пропускная способность в кадрах в секнду
Если говорить о сети или системе связи как о комплексе линий связи и активного оборудования, обеспечивающего нормальное функционирование, то эффективность работы такой системы зависит от каждого составляющего ее звена. Линии связи должны обеспечивать работу на заявленных скоростях (линейная скорость), а активное оборудование должно успевать обрабатывать всю поступающую информацию.
У всех производителей оборудования заявляется параметр PPS (packets per second), прямо указывающий сколько пакетов способно «переварить» оборудование. Ранее этот параметр был очень важен, поскольку подавляющее число техники просто не могло обработать огромное количество “мелких” пакетов, сейчас же все больше производители заявляют о wirespeed. Например, если передаются малые пакеты, то времени на обработку тратится, как правило, столько же, сколько и на большие. Поскольку содержимое пакета оборудованию не интересно, но важна информация из заголовков — от кого пришло и кому передать.
Сейчас все большее распространение в коммутирующем оборудовании получают ASIC (application-specific integrated circuit) — специально спроектированные для конкретных целей микросхемы, обладающие очень высокой производительностью, в то время как раньше довольно часто использовались FPGA (field-programmable gate array) — подробнее об их применении можно прочитать у моих коллег здесь и послушать здесь.
Бёрстность
Стоит отметить, что ряд производителей экономит на компонентах и использует малые буферы для пакетов. Например заявлена работа на скорости линка (wirespeed), а по факту происходят потери пакетов, связанные с тем, что буфер порта не может вместить в себя больше данных. Т.е. процессор еще не обработал скопившуюся очередь пакетов, а новые продолжают идти. Часто такое поведение может наблюдаться на различных фильтрах или конвертерах интерфейсов. Например предполагается, что фильтр принимает 1Gbps поток и направляет результаты обработки в 100Mbps интерфейс, если известно, что отфильтрованный трафик заведомо меньше 100Mbps. Но в реальной жизни случается так, что в какой-то момент времени может возникнуть «всплеск» трафика более 100Mbps и в этой ситуации пакеты выстраиваются в очередь. Если величина буфера достаточна, то все они уйдут в сеть без потерь, если же нет, то просто потеряются. Чем больше буфер, тем дольше может быть выдержана избыточная нагрузка.