Синхронизация часов — это раздел в компьютерной науке и технике , целью которого является координация независимых часов . Даже если изначально они установлены точно, реальные часы будут отличаться через некоторое время из-за дрейфа часов , вызванного тем, что часы отсчитывают время с немного разной скоростью. Существует несколько проблем, которые возникают из-за разницы в скорости часов, и несколько решений, некоторые из которых более приемлемы, чем другие в определенных контекстах. [1]
В последовательной связи синхронизация часов может относиться к восстановлению часов , которое обеспечивает синхронизацию частоты, в отличие от полной фазовой синхронизации . Такая синхронизация часов используется для синхронизации в телекоммуникациях и автоматического определения скорости передачи данных . [2]
Плезиохронная или изохронная работа относится к системе с синхронизацией частоты и слабыми ограничениями на фазовую синхронизацию. Синхронная работа подразумевает более жесткую синхронизацию, основанную на времени, возможно, в дополнение к частоте.
В результате трудностей управления временем в меньших масштабах возникают проблемы, связанные с перекосом часов , которые становятся более сложными в распределенных вычислениях , в которых нескольким компьютерам необходимо реализовать одно и то же глобальное время. Например, в системах Unix команда make используется для компиляции нового или измененного кода и стремится избежать перекомпиляции неизмененного кода. Команда make использует часы машины, на которой она запущена, чтобы определить, какие исходные файлы необходимо перекомпилировать. Если исходные файлы находятся на отдельном файловом сервере , а часы двух машин не синхронизированы, программа make может не выдавать правильные результаты. [3]
Синхронизация необходима для точного воспроизведения потокового мультимедиа . Синхронизация часов является важным компонентом аудиосистем Ethernet .
В системе с центральным сервером решение синхронизации тривиально; сервер будет диктовать системное время. Алгоритм Кристиана и алгоритм Беркли являются потенциальными решениями проблемы синхронизации часов в этой среде.
В распределенных вычислениях проблема становится более сложной, поскольку глобальное время нелегко узнать. Наиболее используемым решением синхронизации часов в Интернете является сетевой протокол времени (NTP), который представляет собой многоуровневую архитектуру клиент-сервер, основанную на передаче сообщений по протоколу пользовательских датаграмм (UDP). Временные метки Лампорта и векторные часы являются концепциями логических часов в распределенных вычислениях.
В беспроводной сети проблема становится еще более сложной из-за возможности столкновения пакетов синхронизации в беспроводной среде и более высокой скорости дрейфа часов на недорогих беспроводных устройствах. [4] [5]
Алгоритм Беркли подходит для систем, в которых отсутствуют радиочасы . Эта система не имеет способа убедиться в фактическом времени, кроме как поддерживая глобальное среднее время в качестве глобального времени. Сервер времени будет периодически извлекать время из всех клиентов времени, усреднять результаты, а затем сообщать клиентам о корректировке, которую необходимо внести в их локальные часы для достижения среднего значения. Этот алгоритм подчеркивает тот факт, что внутренние часы могут отличаться не только по времени, которое они содержат, но и по тактовой частоте .
Синхронизация взаимной сети с выборкой часов (CS-MNS) подходит для распределенных и мобильных приложений. Было показано, что она масштабируется по ячеистым сетям, которые включают косвенно связанные несмежные узлы, и совместима с IEEE 802.11 и аналогичными стандартами. Она может быть точной до нескольких микросекунд, но требует прямого физического беспроводного соединения с незначительной задержкой соединения (менее 1 микросекунды) на соединениях между соседними узлами, ограничивая расстояние между соседними узлами несколькими сотнями метров. [6]
Алгоритм Кристиана основан на существовании сервера времени. [7] Сервер времени поддерживает свои часы, используя радиочасы или другой точный источник времени, затем все остальные компьютеры в системе остаются синхронизированными с ним. Клиент времени будет поддерживать свои часы, выполняя вызов процедуры на сервере времени. Вариации этого алгоритма делают более точные расчеты времени, учитывая время распространения радиосигнала в сети.
Помимо использования в навигации, Глобальная система позиционирования (GPS) может также использоваться для синхронизации часов. Точность сигналов времени GPS составляет ±10 наносекунд. [8] Использование GPS (или других спутниковых навигационных систем) для синхронизации требует приемника, подключенного к антенне с беспрепятственным обзором неба.
Временные коды IRIG являются стандартными форматами для передачи информации о времени. Атомные стандарты частоты и GPS-приемники, разработанные для точного времени, часто оснащены выходом IRIG. Стандарты были созданы рабочей группой по телекоммуникациям Группы по междиапазонному оборудованию (IRIG) вооруженных сил США, органом по стандартизации Совета командующих полигонами. Работа над этими стандартами началась в октябре 1956 года, а первоначальные стандарты были приняты в 1960 году. [9]
Network Time Protocol (NTP) — это высоконадежный протокол, широко используемый в Интернете. Прошедший многолетние испытания, он, как правило, считается передовым в области протоколов распределенной синхронизации времени для ненадежных сетей . Он может сократить смещения синхронизации до времени порядка нескольких миллисекунд в общедоступном Интернете и до уровней субмиллисекунд в локальных сетях .
Упрощенная версия протокола NTP, Simple Network Time Protocol (SNTP), также может использоваться как чистый однократный протокол первичной/вторичной синхронизации без сохранения состояния, но в ней отсутствуют сложные функции NTP, и поэтому она имеет гораздо более низкие уровни производительности и надежности.
Протокол точного времени (PTP) — это ведущий/ведомый протокол для передачи высокоточного времени по локальным сетям.
Алгоритм Reference Broadcast Time Synchronization (RBS) часто используется в беспроводных сетях и сенсорных сетях. В этой схеме инициатор транслирует эталонное сообщение, чтобы побудить приемники настроить свои часы.
Протокол Reference Broadcast Infrastructure Synchronization (RBIS) [10] — это протокол синхронизации ведущий/ведомый, как и RBS, основанный на парадигме синхронизации приемник/приемник. Он специально разработан для использования в беспроводных сетях IEEE 802.11, настроенных в режиме инфраструктуры (т. е. координируемых точкой доступа). Протокол не требует никаких изменений в точке доступа.
Синхронный Ethernet использует Ethernet синхронным образом, так что в сочетании с протоколами синхронизации, такими как PTP, в случае проекта White Rabbit , достигается точность синхронизации на уровне субнаносекунды.
Синхронизация достигается в беспроводных сетях ad hoc посредством отправки сообщений синхронизации в многоскачковом режиме, и каждый узел постепенно синхронизируется с узлом, который является непосредственным отправителем сообщения синхронизации. Примерами являются Flooding Time Synchronization Protocol (FTSP), [4] и Harmonia, [5], оба из которых способны достигать синхронизации с точностью порядка микросекунд.
Исследователи из Стэнфорда и Google представили Huygens, алгоритм сквозной синхронизации часов на основе зонда. Huygens реализован в программном обеспечении и, таким образом, может быть развернут в центрах обработки данных или в публичных облачных средах. Используя некоторые ключевые аспекты современных центров обработки данных и применяя новые алгоритмы оценки и методы обработки сигналов, алгоритм Huygens достиг точности в десятки наносекунд даже при высокой сетевой нагрузке. [11] Результаты этого исследования проверяются в приложениях финансового рынка. [12]