Знать время нужно всем. Точное время необходимо для криптографии, непрерывного производства, навигации на Земле и в космосе.
Интернет зависит от времени так, что малейшая ошибка ведет к масштабным проблемам: падению серверов, сбоям в DNS, зависанию приложений. Из-за проблем со временем системы зацикливаются и потребляют излишние ресурсы CPU.
Конечно, программисты знают, откуда берется время. UNIX-time, timestamp, datetime, tzdata, NTP и другие решения дают четкое ощущение контроля времени. Однако кому на самом деле время принадлежит, кто несет за него ответственность?
Это история о бесконечном поиске консенсуса, талантливых одиночках, работающих без зарплаты, крушении «Титаника», увлеченном слепом программисте и смелых решениях, ведущих к новым ошибкам. Это история про время.
Международное бюро времени (BIH)
До 19 века каждый город мог ориентироваться на собственное местное время. С появлением железнодорожного транспорта потребовалось «централизовать» время, чтобы составить точное расписание и не подстраивать часы под каждый населенный пункт.
Первыми эту задачу в 1847 году решил Союз железнодорожных обществ Великобритании. Постепенно для всей страны было установлено стандартное время по Гринвичу (GMT), основанное на часовых поясах.
Точное время требуется на суше и в море. Моряки могли определить долготу как разницу между временем в точке, где находится корабль, и точным временем на Гринвичском меридиане.
Реконструкция корабельной радиорубки. Источник
Дальнейшая история времени могла сложиться совершенно иначе, если бы 14 апреля 1912 года трансатлантический пароход «Титаник» не столкнулся с айсбергом.
«Титаник» был оснащен самым современным беспроводным телеграфом с радиусом действия до 1600 километров. Однако электроника создавала столько «шума», что нарушала работу беспроводных систем других кораблей в этом районе.
На ближайшем корабле, «Калифорниан», за 10 минут до столкновения «Титаника» с айсбергом единственный радист выключил станцию и пошел спать. Другой корабль, «Карпатия», откликнулся на сигнал о помощи, но прибыл только через час после того, как «Титаник» затонул.
Кораблекрушение привлекло повышенное внимание к разработке стандартов радиосвязи. Осенью того же года в Лондоне состоялась Международная радиотелеграфная конференция, на которую пригласили Гюстава Феррье, французского пионера радиовещания.
Гюстав Феррье (справа) на первой французской радиостанции. Источник
Феррье с помощью радио совершил революцию в методах измерения долготы — он использовал Эйфелеву башню для передачи кораблям сигналов точного времени. Его также заинтересовала проблема различий методов измерения времени.
На конференции Феррье инициировал создание первого Международного бюро времени (BIH). В 1919 году бюро сделали исполнительным органом Международной комиссии времени, подразделения недавно созданного Международного астрономического союза.
Международный астрономический союз (IAU)
Дворец академий в Брюсселе, место проведения главных мероприятий Международного астрономического союза с 1919 года. Источник
В начале двадцатого века с увеличением точности астрономических наблюдений ученые обнаружили, что период вращения Земли вокруг своей оси (то есть длина звездных суток) испытывает колебания на коротких временных интервалах, и в целом медленно увеличивается.
На скорость вращения влияет ряд атмосферных и геологических факторов: поведение внутренних слоев планеты, изменение формы коры, например, в результате роста гор, и трение океанских приливов о морское дно. Совокупное воздействие этих сил привело к замедлению скорости вращения планеты. В предыдущие эпохи дни в среднем были короче: семьдесят миллионов лет назад год состоял из 372 дней по двадцать три с половиной часа каждый.
Продолжительность дня также колеблется от месяца к месяцу. Расстояние между Землей и Солнцем, а также скорость, с которой Земля движется вокруг Солнца, меняется в течение года примерно на 3%. Таким образом, продолжительность солнечного дня в течение года меняется почти на минуту.
Если определять день через одно полное вращение Земли вокруг своей оси (звездные сутки), то окажется, что он на 4 минуты меньше 24 часов. Если определять день как время между истинным полднем одного дня и истинным полднем следующего дня (солнечные сутки), то его продолжительность варьируется в течение года от 21 секунды меньше 24 часов до 30 секунд больше 24 часов.
Откуда тогда вообще взялось представление, что в сутках 24 часа? Если взять среднюю продолжительность всех солнечных дней в году, то в результате получится ровно 24 часа.
В IAU знали об этих проблемах, однако в 1928 году для гражданских нужд ввели термин «универсальное время» (UT), которое обозначает время по Гринвичу.
Джералд Клеменс. Источник
UT не подходило для решения астрономических задач и других научных целей. Решая эту проблему, астроном Джералд Морис Клеменс, сотрудник одной из старейших обсерваторий USNO, в 1948 году определил единое время (насколько это было тогда возможно) на основе теории Ньютона. Профессор Дирк Брауэр предложил название, под которым оно известно сегодня — эфемеридное время (ET).
Эфемериды. Источник: Time: From Earth Rotation to Atomic Physics
ET стало первым применением концепции динамической шкалы, в которой время и шкала времени определяются неявно, исходя из орбитального движения Земли вокруг Солнца или Луны вокруг Земли. Уильям Марковиц, коллега Клеменса в отделе службы времени USNO, разработал шкалу ET. В 1952 году МАС принял ее в качестве международного стандарта времени.
Закрепляя успех, Марковиц создал систему вариантов всемирного времени (UT), в основе которой лежит положение Земли относительно звездного пространства:
- UT0 — среднее солнечное время по Гринвичу, наблюдаемое в любом месте на Земле без учета положения оси вращения Земли относительно места наблюдения;
- UT — универсальное время, вычисленное относительно международной небесной системы координат (ICRS);
- UT2 — скорректированное время UT1, для которого фильтруются периодические сезонные колебания во вращении Земли.
UT1 использовалось для астрономических и геодезических исследований, а UT2 для гражданских нужд.
Пока астрономы решали свои задачи, физики не сидели сложа руки и создали атомные часы. Марковиц совместно с ученым Льюисом Эссеном откалибровал атомные часы в единицах эфемеридной секунды, но стандарт ET фактически был уже обречен.
Чтобы стандартизировать новое атомное время, в 50-е гг. на помощь призвали одну из старейших научных организаций.
Международное бюро мер и весов (BIPM)
Физик Дж. В. Л. Пэрри (слева), Эссен (справа) и атомные часы (по центру). Источник
Физик-экспериментатор Льюис Эссен был неугомонным исследователем. Он не боялся критики и смело подвергал сомнению устоявшиеся догмы: от принятой на тот момент скорости света до постулатов специальной теории относительности.
Эссен предложил использовать атом цезия-133 как стандарт для измерения времени и частоты. В 1955 году он представил первые атомные часы на цезии-133, которые накапливали ошибку в одну секунду за миллион лет.
Несмотря на поддержку Марковица, Эссен потерпел поражение. Стандартом было выбрано астрономическое определение секунды как доли времени, за которое Земля делает оборот вокруг Солнца.
Штаб-квартира BIPM (Севр, Франция) с 1876 года. Источник
Холодное противостояние между физиками и астрономами закончилось в 1967 году, после вмешательства Международного бюро мер и весов (BIPM). Наконец секунду определили через периоды излучения атомов цезия-133, как и настаивал Эссен долгие годы.
Однако атомные часы оказались не идеальны. Все дело в систематических погрешностях, которые стабильно завышают или занижают результат измерения. В BIPM проблему решили с математической изящностью. Для Международного атомного времени (TAI) усредняют данные сотен атомных часов по всему миру.
Показания атомных часов из лабораторий по всему миру регулярно синхронизируют через выделенный спутниковый канал с гарантированной одинаковой задержкой передачи сигнала в обе стороны.
Источник
С 80-х гг. применяют TWSTFT («two-way satellite time and frequency transfer») — наиболее точный метод сравнения шкал времени от различных источников, находящихся на большом расстоянии друг от друга. Участвующие институты договариваются об одновременном попарном обмене сигналами через геостационарный телекоммуникационный спутник.
Таким образом человечество получило сразу два стандарта: «идеальное время» TAI и «реальное время» UT1. Чтобы связать их вместе, был придуман костыль, который мы сегодня знаем как всемирное координированное время (UTC). Конечно же, вы уже догадались, что случилось с этим временем. За него взялась другая организация!
Международный союз электросвязи (ITU)
В начале 20 века активно создавались системы радиопередачи сигналов точного времени. Их контроль был настолько слабым, что слушатель мог получать от разных станций несогласованные сигналы. Кроме того, сигналы эфирного времени основывались на UT и, следовательно, на меняющемся вращении Земли.
К 1960 году Королевская Гринвичская обсерватория, Национальная физическая лаборатория Великобритании и обсерватория USNO (США) договорились согласовывать свои радиопередачи таким образом, чтобы временные шаги и изменения частоты были скоординированы. В результате появилась новая шкала времени UTC. Ее официальное название «Всемирное координированное время» утвердили в 1967 году.
По UTC частота сигналов была первоначально установлена в соответствии со скоростью UT. В результате этого спорного решения с 1961 года временные интервалы приходилось менять каждые несколько месяцев, а частоту — в конце каждого года. Представьте, как бы сейчас реагировали на такие изменения компьютерные системы.
Современная штаб-квартира ITU (слева) в Женеве. Источник
Точное определение частоты требовалось для калибровки осцилляторов в навигационных системах, передатчиков радио- и телевизионных станций, в системах предупреждения столкновений в воздухе (TCAS). Учитывая критическую важность, доработку UTC поручили Международному союзу электросвязи (ITU). Это одна из старейших научных организаций: год основания — 1865.
Комиссия ITU установила, что нужно поддерживать постоянную частоту, соответствующую стандартной секунде в Международной системе единиц (СИ). В тот момент на смену эфемеридному времени в СИ утвердили новое определение секунды: 9 192 631 770 периодов излучения, соответствующего переходу между двумя сверхтонкими уровнями основного состояния атома цезия-133 при отсутствии возмущения внешними полями.
Фактически для UTC за основу взяли атомную секунду. Таким образом день UTC составил 86 400 секунд. В реальном мире средний солнечный день примерно на 2 миллисекунды длиннее. Величина разности UT1-UTC по определению времени UTC не должна быть более 0.9 с., поэтому по предложению Льюиса Эссена в UTC периодически добавляют дополнительную (високосную) секунду без смещения частоты.
Международная служба вращения Земли (IERS)
Кен Томпсон (слева) и Деннис Ритчи (справа). Источник
Параллельно и независимо в мире ИТ программисты творили свою историю времени.
Чтобы компьютер имел какое-либо представление о настоящем, он должен определять количество прошедших секунд. Создатели UNIX Деннис Ритчи и Кен Томпсон постоянно меняли точку отсчета. В какой-то момент они решили для удобства установить единую дату начала отсчета времени. Точку выбрали произвольно — 00:00:00 1 января 1970 года.
Однако на тот момент никто не задумался о високосных секундах — о них просто не знали. UNIX-время представлено целым числом, которое увеличивается с каждой прошедшей секундой без определения года, месяца, дня, часа или минуты. В сутках UNIX всегда одинаковое количество секунд СИ.
Уже в 1972 года был создан стек протоколов TCP/IP, на транспортном уровне которого активно используется точное время. Где же брать точное время для UNIX? Кто гарантирует, что оно точное? Наконец, кто будет отвечать за регулярные «новые» секунды, которые программисты волей-неволей должны учитывать?
Конгресс-центр IERS, Парижская обсерватория. Источник
Частично на эти вопросы ответила новая организация, название которой отсылает к научно-фантастическим романам — Международная служба вращения Земли (IERS). Организация взяла на себя функции Международного бюро времени и с помощью специального оборудования замеряет скорость вращения Земли.
Введение каждой дополнительной секунды IERS принимает два раза в год — за 6 месяцев до начала возможного окна коррекции времени. Обычно дополнительная секунда образуется примерно раз в полтора года.
Оставался вопрос: как автоматически сообщать ОС о коррекции времени? Ответ дал один программист.
Дэвид Миллс
Источник
В 1977 году инженер Дэвид Миллс устроился на работу в Communications Satellite Corporation (COMSAT), одну из первых телекоммуникационных спутниковых компаний. Здесь Миллс познакомился с ARPANET и узнал, что в зарождающейся компьютерной сети у машин нет никакого способа синхронизировать время.
В 70-е и 80-е гг. на эту проблему никто не обращал внимание и Миллс в одиночку создал Network Time Protocol (NTP). К 1988 году Миллс усовершенствовал NTP до такой степени, что мог синхронизировать часы в компьютерной сети с точностью до десятков миллисекунд.
Правительственные учреждения, включая Национальный институт стандартов и технологий (Nist), начали распространять свое эталонное время с помощью NTP. Сеть атомных часов передает точное время на многочисленные приемники, в том числе вышки сотовой связи, которые могут быть подключены к серверам NTP. Атомные часы также напрямую могут передавать время на серверы NTP.
Удивительно, но на протяжении десятилетий Миллс сам решал все ключевые вопросы и управлял временем в NTP. Он был практически единственным, кто этим занимался, и, по собственным словам, получал много удовольствия от бесконечной оптимизации. Миллс, как настоящий перфекционист, разобрался в нюансах времени и учел в протоколе наличие високосных секунд: NTP может считывать определенные секунды дважды.
В 2000 году серверы NTP обработали восемнадцать миллиардов запросов на синхронизацию времени от нескольких миллионов компьютеров, а в последующие несколько лет, по мере распространения широкополосного доступа, запросы к самым загруженным серверам NTP увеличились в десять раз.
Постепенно вокруг Миллса сформировалось сообщество таких же увлеченных и бескорыстных программистов. В 2011 они основали Network Time Foundation. Фонд собирает за счет пожертвований около трехсот тысяч долларов в год, которые идут на зарплаты сотрудникам, работающим неполный день, а также на оплату счетов за интернет и электричество.
К сожалению, это не история про идеальный код. Миллсу уже 82 года, он слеп, и хотя продолжает работать, его роль для проекта угасает. NTP тоже не молодеет. Большая часть интернета все еще использует третью версию протокола, которая была опубликована в 1992 году. Полностью новой версии NTP не было с четвертого релиза в 2010 году. Ошибки копятся, а самые сложные участки кода понимают всего несколько человек в мире.
Ошибки — не единственная проблема. В 2011 году NTP-серверы USNO из-за атаки отключились на девять с половиной часов. В 2014 году хакеры воспользовались служебными функции NTP, чтобы заддосить несколько игровых платформ. Эксплойт NTP использовали для атаки против Cloudflare.
Эти события наконец привлекли внимание к NTP.
Инженерный совет интернета (IETF)
Единственная действующая организация, у которой нет фотографии офиса
В 10-е гг. двадцать первого века началась гонка за лучший протокол синхронизации времени. Open source группа NTPsec просто вырезала огромные куски кода NTP, обосновав это тем, что меньшее количество строк означает меньшее количество уязвимостей.
Сообщество Chrony написало свою версию реализации протокола, сфокусировавшись на быстрой синхронизации часов с минимальным количеством передаваемых данных.
В Google подошли новаторски: вместо того чтобы считать високосную секунду дважды, как в NTP, их системы добавляют несколько миллисекунд к каждой секунде. Впервые корпорация использовала этот подход в 2008 году в своих внутренних системах, а в 2016 году передала на весь интернет через Google Public NTP.
Со временем практика «размазывать» секунду распространилась на другие компании. В результате существуют два конкурирующих метода, что потенциально ведет к новым ошибкам. Как и в предыдущих случаях, «спасать» время пришла еще одна немолодая организация — 1986 года рождения.
В 2019 году, после многолетних усилий Инженерного совета интернета (IETF), появился Network Time Security — механизм, который делает NTP более безопасным. Сейчас примерно двадцать участников технической группы IETF, включая создателя Chrony, работают над пятой версией протокола NTP.
Широко распространено мнение, что NTP должен стать более модульным и гибким. Однако не все согласны с таким подходом. Часть экспертов Network Time Foundation продолжают работать над четвертой версией протокола.
Фактически над одним из самых важных механизмов интернета работают люди, которые не могут прийти к консенсусу. Истории о времени — это часто истории многолетних усилий, вражды, и удивительной самоотдачи.
Пол Эггерт
Источник
Когда вы видите какую-то проблему, за которую никто не берется, готовы ли вы бороться, чтобы решить ее? Пол Эггерт готов.
Как мы уже успели выяснить, время — очень нестабильная субстанция. Вам нужно его вычислить, аккуратно передать, грамотно учесть. Проблем добавляет сам человек.
Хотя в мире есть стандарты, описывающие время (например, ISO 8601), никто не обязан им следовать. Например, в Чили и Иране после 23:59:59 наступает 1:00:00. Кроме того, государства периодически вводят и отменяют часовые пояса как им вздумается.
Если нам требуется работать с местным временем в различных точках Земли, то здесь встает вопрос о необходимости некой универсальной базы знаний о часовых поясах в различных регионах мира.
Ученый-компьютерщик, преподаватель информатики в Калифорнийском университете Пол Эггерт стал одним из первых людей, который не просто обратил на это внимание, но попытался что-то изменить. В 1991 году он узнал о существовании базы часовых поясов, которую создал Артур Дэвид Олсон в Национальном институте здоровья (США).
Эггерту в то время для своего стартапа понадобилось настроить часы на удаленных компьютерах. Однако база Олсона содержала лишь небольшую часть часовых поясов мира, и Эггерт решил между делом дополнить ее. Эту задачу он решает до сих пор.
Бесплатно в свободное время он создал базу tzdb, которая теперь предоставляет достоверные данные сотнями миллионов компьютеров по всему миру.
Time Zone Database содержит текущее состояние всех мировых часовых поясов (т.е. текущие правила расчета локального времени относительно UTC в каждом регионе мира) и все изменения этих правил расчета локального времени для всех регионов за все время с начала Unix-эпохи (1 января 1970 года).
Основная и самая важная часть работы — отслеживать, как государства меняют часовые пояса и форматы времени. В конечном счете это бесконечное занятие стало его хобби.
Корпорация по управлению доменными именами и IP-адресам(ICANN)
Штаб-квартира ICANN (Лос-Анджелес). Источник
Когда компания-разработчик астрологического софта Astrolabe подала в суд против Артура Олсона и Эггерта, всё могло закончиться очень плохо. Делом в том, что Эггерт действительно добавил в tzdb информацию о часовых поясах из астрологического атласа Astrolabe. Суд мог запретить доступ к базе до завершения дела.
Учитывая, как широко используется глобальная база часовых поясов разработчиками веб-сервисов и программного обеспечения, в интернете забили тревогу. Дело дошло до того, что вмешалось Управление по присвоению номеров в Интернете (IANA), которая является одной из старейших (с 1970-х гг.) действующих организаций Интернета. С 1998 года IANA стала Департаментом в Корпорации по управлению доменными именами и IP-адресам (ICANN).
ICANN взяла tzdb под свою защиту. В настоящее время Эггерт официально является редактором и координатором базы данных в IANA.
ЗАКЛЮЧЕНИЕ. ГЕНЕРАЛЬНАЯ КОНФЕРЕНЦИЯ ПО МЕРАМ И ВЕСАМ (CGPM)
Машинный зал GreenBushDC
Точное время влияет на работу всей критичной инфраструктуры интернета, включая облака. Так, например, NTP-сервер располагается внутри периметра сертифицированной по требованиями PCI DSS инфраструктуры.
Наши известные на Хабре дата-центры «Авантаж» и GreenBushDC обеспечивают безопасность финансовых данных по требованиям PCI DSS.
Вопросы изменения времени и для нас имеют большое значение.
В ноябре 2022 года на конференции, созываемой для принятия решений в Международном бюро мер и весов, постановили как минимум с 2035 года не проводить периодическую синхронизацию эталонных мировых атомных часов с UTC. Отныне разница между мировым координированным временем и астрономическим временем (UT1) будет накапливаться.
Решение приняли из-за многочисленных проблем при последней посекундной синхронизации. Ошибки, связанные с лишней секундой, также возникали в другое время: так, ошибка в коде корректировки появления лишней секунды в GPSD привела в октябре 2021 года к смещению времени на 1024 недели.
Однако отмена високосной секунды потенциально ведет к новым проблемам. Система GLONASS изначально спроектирована с учетом включения високосных секунд. Есть системы, рассчитанные на одинаковость часов UTC и UT1.
А кроме того в последние годы ученые заметили, что скорость вращения Земли растет… Если аномалия продержится достаточно долго, то миру, возможно, придется убирать секунду.
Трудно предположить, к каким еще проблемам может привести дальнейшее регулирование времени.
В любом случае, это будет очень интересная история.
Источники:
- TITANIC, MARCONI AND THE WIRELESS TELEGRAPH
- The Thorny Problem of Keeping the Internet’s Time
- NIST and the Titanic: How the Sinking of the Ship Improved Wireless Communications for Navigating the Sea
- The Largely Untold Story Of How One Guy In California Keeps The World’s Computers Running On The Right Time Zone
- “Time Zone King”: How One UCLA Computer Scientist Keeps Digital Clocks Ticking
- NIST Time Frequently Asked Questions (FAQ)
- A Day Is Not 24 Hours
- Details of the history of UTC can be found in Nelson, et al. (2001)
- Time: From Earth Rotation to Atomic Physics (2nd Edition)