Время оборота и интервал пачки
Внесистемные величины · выражаются в секундах СИ · RTT и Δt между пакетами
В 1983 году Майк Мьюсс, разбираясь с неполадками в сети, написал за один вечер небольшую программу, которая отправляла хосту короткий запрос и печатала время, прошедшее до ответа. Название он взял у гидроакустиков: подводная лодка посылает щелчок и слушает эхо, а расстояние вычисляет по задержке. С тех пор «пинг» стал самым употребительным измерением в вычислительной технике, а сама измеряемая им величина — временем оборота — единственным, что о задержке в сети вообще можно узнать наверняка.
Тонкость здесь в том, что оборот измеряется одними часами: запрос уходит и ответ приходит на ту же машину, а потому разность отсчётов не зависит от того, согласованы ли часы на другом конце. Задержку же в одну сторону так просто не получить — для неё нужны часы, синхронные с точностью выше самой измеряемой величины, и потому в подавляющем большинстве случаев её просто считают половиной оборота, хотя маршрут туда и обратно бывает разным. Рядом с оборотом всегда стоит вторая величина: интервал, с которым пакеты выпускаются в трассу, — от него зависит и то, сколько задержки добавит собственный буфер, и то, что произойдёт при потере одного пакета.
01 · Определение
Время оборота — промежуток между отправкой пакета и получением ответа на него, измеренный одними и теми же часами. Интервал пачки — время между выпуском двух соседних пакетов одного потока; он задаётся не сетью, а тем, кто её загружает.
Оборот складывается из трёх слагаемых разной природы, и различать их важно, поскольку лечатся они по-разному. Первое — время распространения сигнала, которое определяется длиной трассы и скоростью света в волокне и не поддаётся никакому улучшению, кроме прокладки более короткого кабеля. Второе — сериализация, то есть время, нужное, чтобы вытолкнуть пакет в линию побитно; оно обратно пропорционально скорости канала и на современных скоростях почти незаметно. Третье — ожидание в очередях промежуточных устройств, и вот оно-то и составляет практически всю ту задержку, на которую жалуются.
Отсюда следует одно неочевидное обстоятельство: канал можно расширить вдесятеро, и оборот при этом не изменится вовсе, поскольку расширение убирает только сериализацию, а очереди с длиной трассы остаются на месте. Более того, в буферах, сделанных с запасом «на всякий случай», пакеты простаивают сотнями миллисекунд — явление настолько распространённое, что получило собственное имя, буферное разбухание, и целое семейство алгоритмов для борьбы с ним.
Интервал пачки стоит рядом не случайно: почти всё, что происходит с потоком, определяется соотношением интервала и оборота. Пока пакеты идут чаще, чем приходят подтверждения, отправитель работает вслепую и должен держать в трассе столько данных, сколько в неё физически влезает, — это произведение скорости канала на оборот и есть та величина, вокруг которой построено управление окном в TCP.
Выберите трассу и ведите ползунком размер пакета. Синий пакет уходит от левой стойки к правой и возвращается оранжевым; полоса под трассой раскладывает оборот на три слагаемых, чтобы видно было, чем он занят на самом деле. Увеличение канала укорачивает только среднюю часть — та, что от длины трассы, не сдвигается ни на микросекунду.
Память подешевела раньше, чем изменились алгоритмы, и производители стали ставить в устройства очереди на сотни пакетов, полагая, что лишний буфер не повредит. Вышло наоборот: заполненная очередь не теряет пакеты, а задерживает их, отправитель не получает никакого сигнала о перегрузке и продолжает наращивать поток, так что оборот вырастает с десятков миллисекунд до целой секунды при совершенно исправном канале.
02 · Пересчёт
Оборот, труба и пачка
Введите оборот в любых единицах, и лист переведёт его в остальные, а затем посчитает то, что от оборота зависит: сколько данных умещается в трассе при разных скоростях канала, какой предел ставит окно и какой интервал между пакетами выбирают у разных кодеков.
Скорость канала для расчёта ёмкости берётся от выбранной в интерактиве трассы; в тонких настройках её можно зафиксировать на гигабите.
Пинг измеряет не совсем то, что нужно прикладной программе. Обработка эхо-запроса на далёком узле идёт по особому пути, часто в обход основного вычислителя, и потому её задержка не совпадает с задержкой настоящего соединения; иные же устройства отвечают на такие запросы в последнюю очередь либо не отвечают вовсе. Правильнее измерять оборот тем самым протоколом, которым идёт полезный поток.
| Значение | Пояснение | ||
|---|---|---|---|
| {u} | {name} | {value} | {note} |
03 · Порядки величин
логарифмическая шкала: от микросекунд до секунд04 · Приборы измерения
Чем ловят время оборота
Программа отправляет пакет с отметкой времени и ждёт его возвращения, а разность отсчётов и есть оборот. Достоинство её в том, что нужны одни часы и никакого содействия со стороны собеседника, кроме готовности ответить; недостаток — в том, что отвечает он особым, необязательно быстрым путём.
Записав весь обмен целиком, оборот получают из самого потока: по времени между уходом сегмента и приходом подтверждения на него. Так измеряется именно та задержка, которую видит прикладная программа, а заодно становится виден разброс — то, что в разговоре мешает сильнее ровной задержки.
Приборы, отмечающие время прямо в сетевой микросхеме, снимают неопределённость, которую вносит операционная система, и доводят разрешение до десятков наносекунд. Обмен они ведут по особому уговору, где оба конца ставят по две отметки, — это и позволяет разделить оборот на две неравные половины.
Задержку в одну сторону измеряют только там, где часы на обоих концах приведены к общему времени с точностью выше самой задержки, — для этого линии размечают отдельным протоколом синхронизации либо ставят приёмники спутникового времени. Без этого оборот остаётся единственной честной величиной, а деление его пополам — удобным, но не всегда верным допущением.
05 · Правила записи
Оборот с единицей, разброс отдельно
Обозначение пишут тремя прописными латинскими буквами без точек, значение — с единицей и указанием, что именно измерялось: одиночная проба, среднее по серии или её медиана. Разброс приводят рядом отдельным числом, поскольку одно среднее ничего не говорит о том, ровно ли идут пакеты.
Первая запись обходится без единицы, а вместе с ней и без смысла: сто тридцать чего — миллисекунд или микросекунд? Вторая выдаёт допущение за измерение, тогда как маршрут туда и обратно часто идёт разными путями и половины выходят неравными. Третья повторяет самое распространённое заблуждение: расширение канала убирает сериализацию, а путь и очереди оставляет на месте. Четвёртая ставит точки там, где сокращение их не требует.
06 · Соседние величины
Оборот описывает трассу со стороны времени, скорость канала — со стороны количества, а их произведение даёт третью величину, ёмкость трассы, без которой нельзя настроить ни одно быстрое соединение на большое расстояние. Рядом же стоит разброс задержки, который в разговоре и в игре мешает заметно сильнее ровного запаздывания.
сколько влезает в секунду
скорость × оборот
джиттер по RFC 3550
Из паспортов Simetrium рядом стоят бит и байт, в которых считают ёмкость трассы, секунда, к которой обе величины в конце концов сводятся, децибел из линейных бюджетов и такт, задающий предел разрешения аппаратных отметок времени.
07 · Исторический раздел
Щелчок и эхо
Когда между Калифорнийским университетом и институтом в Менло-Парке передавали первое слово, оператор диктовал его по телефону и ждал подтверждения посимвольно. Связь оборвалась на третьей букве, зато сама процедура — послал, дождался ответа, посмотрел на часы — оказалась той самой, которой сеть проверяют до сих пор.
Майк Мьюсс написал свою программу за один вечер, разбираясь с неполадкой, и назвал её по звуку подводного эхолота: короткий посыл, а затем ожидание отражения. Имя оказалось настолько удачным, что глагол «пингануть» вошёл в язык далеко за пределами сетевого дела и означает уже всякую проверку отзывчивости, в том числе человеческой.
Осенью 1986 года пропускная способность одного из университетских каналов упала в тысячу раз: отправители, не получая подтверждений, слали всё новые копии и добивали трассу окончательно. Ван Якобсон предложил лечение, которое действует и сегодня: следить за оборотом и его разбросом и по ним самим догадываться о заторе, поскольку сеть о своём состоянии не сообщает.
Современные алгоритмы управления потоком следят уже не за потерями, а прямо за тем, как растёт оборот, и придерживают отправку раньше, чем очередь успеет набиться. Домашние маршрутизаторы получили дисциплины, которые нарочно держат буфер коротким, — и оборот под нагрузкой падает с полутора секунд до нескольких десятков миллисекунд без всякого расширения канала.
Половина оборота — допущение, а не измерение
Оборот удобен тем, что не требует согласия часов: и отправка, и приём отмечаются одним прибором, а значит расхождение шкал в разность попросту не входит. Именно поэтому пинг работает всюду и не нуждается в настройке, тогда как задержка в одну сторону — величина куда более капризная: чтобы её измерить, часы на концах должны быть приведены к общему времени с точностью выше самой задержки, а это уже отдельная инженерная задача с приёмниками спутникового времени и протоколами синхронизации.
Привычка делить оборот пополам поэтому и держится, хотя оснований у неё немного: поток к собеседнику и от него нередко идут разными маршрутами, разной длины и с разной загрузкой, так что настоящие половины бывают неравны и вдвое. Величина, которую измеряют легче всех прочих в сетевом деле, оказывается при внимательном взгляде суммой двух неизвестных слагаемых — и разделить эту сумму без посторонней помощи нельзя.
Каталог · единицы измерения
Паспорт на каждую величину
Семь базовых единиц СИ, двадцать две производные с собственными именами и внесистемные величины, без которых не обходится ни наука, ни быт. Каждая — отдельный лист: определение, пересчёт, приборы, правила записи, история. На 36 языках.