9 сезон · выпуск 7 · 23 марта 2023 · 52 мин
Спутники в космосе и инженеры на земле. Откуда берется точное время
Слушать · 51:45
Над выпуском работали
- Редакторка
- Маша Агличева
- Продюсерка
- Настя Медведева
- Звукорежиссер
- Юра Шустицкий
- Дизайнер обложки
- Петр Сутупов
Транскрипт
Самат Галимов, Гость, Олег Облеухов · расшифровано автоматически, ошибки возможны
-
Всем привет! Меня зовут Самат Галимов, и это подкаст «Запуск завтра». Как технический директор я пытаюсь разобраться, как устроены сложные и интересные штуки. Я зову профессионалов, с которыми можно поговорить простым человеческим языком. Сегодня мы будем говорить про время. Ну, казалось бы, приходишь на встречу вовремя или опаздываешь, для чего ещё нужно время? На самом деле, время связано с бесконечным количеством современных технологий, которыми мы пользуемся. Например, без точного времени нельзя было бы ни заказать такси, ни даже просто зайти на сайт в интернете и быть уверенными, что данные защищены от хакеров. Как это всё связано вместе, а ещё при чём здесь колебания атомов цезия и других элементов и общая теория относительности Эйнштейна, мы сейчас разберёмся. Это подкаст студии Либо-Либо, и сделали мы его вместе с сервисом онлайн-образования Яндекс Практикум. Есть мнение, что курсы нужны для тех, у кого не хватает мотивации и силы воли, зато много лишних денег. Я с этим не согласен, потому что множество тонких знаний никак, кроме как через наставника, не узнать. То, что нарабатывается годами опыта и довольно сложно передать в тексте. Сейчас Саша Альбутаев, наставник с курса фронтенда Яндекс Практикума, расскажет об одном таком случае.
-
У меня есть знакомая, которая занималась фронтендом около года, но в какой-то момент стала ощущать, что уже какое-то время не растет и не продвигается по карьерной лестнице. Она пришла ко мне с вопросом, что ей делать в такой ситуации. В общем, я посоветовал подруге поискать какой-нибудь продвинутый курс. На что она резонно мне ответила, зачем ей вообще покупать курс по разработке, если она, во-первых, уже выполняет какие-то задачи, которые перед ней ставят и за которые ей платят, и, во-вторых, вся информация по фронтенду уже есть в интернете. Вообще, действительно, доля правды в этом есть, и глупо это отрицать, но в обучении профессии есть и другие важные вещи, которые ты не можешь просто так взять и прочитать. Я задал ей несколько вопросов. Первый вопрос— знает ли она, где её сильные стороны и где у неё возможности для роста, есть ли план развития для своих компетенций? А второе— умеет ли она работать в команде? А это очень важная компетенция при работе с высоконагруженными или комплексными сложными системами. И третий вопрос, уверена ли она в том, что пишет хороший, гибкий, поддерживаемый код, если ее никогда не ревьюил кто-то более опытный. И на следующий день мы уже выбирали ей подходящий курс, а через несколько месяцев после нашего разговора и после разговора с ее руководителем она стартовала новый внутренний проект компании и в результате добилась повышения зарплаты.
-
У Яндекс.Практикума есть курс по JavaScript и отдельный курс по React. Подробности по ссылке в описании к этому эпизоду.
-
Олег Облеухов, я продакшн-инженер в Фейсбуке. Занимаюсь я двумя проектами большими— это синхронизацией времени, PTP и NTP, в том числе публичные сервисы, и DNS, который отвечает на все юзер-запросы по поводу DNS в Фейсбуке.
-
У меня на руках сейчас дешевые часы Casio. Как они измеряют время?
-
Там стоит, скорее всего, Crystal Estelator, то есть кварц, по нашему самому простому. То есть, на самом деле, микросхемка, которая очень геометрически правильно подобранная. Вот как пьезозажигалка, знаешь, например. Вот если ты нажимаешь её, там, сильно на неё, она генерирует... То электрический разряд. Да, вот ты можешь подобрать этот элемент кварцевой таким образом, что если ты на него осуществляешь какое-то физическое воздействие или воздействие другим электричеством, то он вырабатывает довольно стабильный вот этот вот фидбак, то есть он начинает обратно генерировать электрический импульс с фиксированной частотой.
-
Значит, это кристалл, в него подают электричество, и он в ответ сжимается?
-
Он начинает как бы пульсировать, а когда он пульсирует, он генерирует другое электричество, и он генерирует фиксированную частоту, заранее известную. Ты можешь как бы математически сделать так, что у тебя известно текущее время, любое, которое ты выставил, а дальше относительно вот этого первого выставления или измерения ты продолжаешь тикать, знаешь, что у тебя прошло 3 миллиарда тиков, ты будешь знать, какое сейчас конкретно время относительно того вот первого старта, который где-то там в памяти хранится. Складываешь два числа, и у тебя вот получается прекрасное время текущее.
-
Супер. Скажи, пожалуйста, у меня в телефоне тоже есть часы. Они на том же самом принципе работают?
-
Ну да, на самом деле. Но они постоянно корректируются, в отличие от твоих ручных часов. Но в целом, да, у тебя там есть микросхема памяти и тот самый осциллятор, кварцевый генератор, который также точно генерируется.
-
Вот.
-
Единственное, еще в чем разница есть, опять же, зависит от телефона, от много всего. И на компьютерах на самом деле такая же фишка. Тебе не всегда нужен отдельный генератор для часов. То есть часто у тебя, например, есть микросхемка, которая называется Real Time Clock еще, которая будет помнить именно вот время. А дальше ты можешь привязаться, например, к какому-нибудь существующему уже осциллятору, который у тебя есть, к генератору. Например, у тебя есть процессор, который заведомо известной частотой тикает. Вот, поэтому тебе на самом деле даже можно сэкономить пару центиков и не вставлять дополнительный генератор, потому что у тебя уже есть генератор.
-
Прикольно.
-
Ты это упомянул, но вот на руках часы я их выставляю самостоятельно, а вот в телефоне я уже не помню, когда в последний раз выставлял время. Откуда она там появилась?
-
Да, на самом деле несколько способов твоему времени настроиться. Самый, наверное, простой и очевидный будет NTP или Network Time Protocol или протокол сетевого времени, который будет периодически ходить в интернет к какому-нибудь там NTP серверу и у него спрашивать время, которое он будет получать обратно. И он это делает, я не знаю, раз в день. И вот раз в день он синхронизируется и получает свое время обратно. И этого достаточно для того, чтобы у тебя было более-менее точное время. Между этими синхронизациями, конечно, он у тебя будет куда-то уплывать потихонечку в одну или другую сторону, но как человек ты этого не заметишь совершенно.
-
Откуда это точное время появилось у сервера точного времени?
-
Первое, откуда оно может появиться, это, например, если это какая-нибудь лаборатория, например, NIST— это известный институт, который поддерживает у себя время, и многие мировые компании, в том числе Cloudflare, они по этому поводу не стесняются разговаривать, они используют NIST в том числе для того, чтобы свое время брать оттуда.
-
NIST— это Национальный институт стандартизации Америки, стандартов и чего-то там, технологий. То есть у них есть свой какой-то источник точного времени, про тот какой мы чуть попозже поговорим, они оттуда могут брать. Окей, это один вариант. Какие еще есть?
-
Да, второй источник времени— это, конечно, будут какие-нибудь спутники, какая-нибудь навигационная система, которая полностью зависит на времени, поэтому время там условно говоря, побочный продукт. И есть GPS, ГЛОНАСС, BeiDou, Galileo. То есть ты только вот придумывай. Есть приватные инсталляции, например, Iridium, который со спутниковый телефон отвечает. Есть их бесчисленное количество, там тот же Starlink. Вот теоретически все они посылают вниз какое-то там точное время, относительно точное. И ты можешь, зная свою позицию, понять, какое сейчас точное время.
-
Стоп-стоп-стоп. GPS – это штука, с помощью которой я вызываю такси в определенную точку. Она, короче, определяет мое местоположение. Причем здесь время вообще?
-
Если ты, например, хочешь определить свое положение где-то там в мире, то тебе надо откуда-то начать. То есть ты должен, например, знать оригинальные расположения вот этих вот спутников и прочее. Дальше, зная скорость света в определенной среде, причем проходя через разные слои, включая ионосферу и прочее, ты можешь определить свое положение, зная задержку сигнала со спутников. То есть тебе нужно знать, сколько времени у тебя прошел сигнал от спутника. Зная именно вот это время, ты только тогда сможешь определить свое местоположение. То есть чем точнее ты определяешь свое местоположение, тем точнее на самом деле время у тебя синхронизировано на твоем телефоне или сервере или еще где-то.
-
Есть фраза this escalated quickly, типа спутники посылают точное время, мой телефон их ловит, а дальше, типа, используя скорость света, телефон подсчитывает, где он находится. Окей, довольно охрененно. Про то, как именно GPS работает, я думаю, у нас будет отдельный эпизод, мы про это отдельно поговорим. Скажи, откуда у GPS спутников берется точное время? Они же его посылают?
-
Да, да, да. То есть сами спутники, у них на борту есть очень точные атомные часы. А эти атомные часы, у них очень хороший long-term stability, это называется, то есть сколько они могут держать время, и у них заведомо известный вот этот вот drift, то есть насколько они уплывают в 24 часа, вот эти все характеристики очень хорошо известны.
-
А насколько они точные?
-
Вот.
-
Есть две характеристики времени. Есть accuracy, то есть аккуратность или точность, а есть precision. То есть есть насколько они правдивые относительно реального времени, а есть относительно колебаний. Они могут, например, тебе говорить совершенно случайное время, время 22, но если они все говорят одинаковое время, то они будут precise.
-
То есть, все спутники говорят тебе ровно то же самое время, что и все остальные спутники?
-
Да.
-
Может быть, они все вместе уехали уже куда-нибудь, но они относительно друг друга все ровные?
-
Именно. И еще очень важно это, чтобы у тебя вот эта синхронизация была, не уплывала дальше одной секунды. То есть, если ты вот уплывешь дальше одной секунды, у тебя начнутся большие проблемы. До того, как ты уплывешь на одну секунду, тебе, по большому счету, все равно, что они там чуть-чуть уехали. Главное, чтобы они все вместе уезжали.
-
Потому что с помощью этого определяется расстояние, и если они будут давать тебе разное время, то ты расстояние до спутников посчитаешь неправильное и свое положение посчитаешь неправильное.
-
То есть, например, атомные часы известны тем, что уплывать в сторону, если ты их не корректируешь, одна микросекунда или даже наносекунды в день.
-
А я слышал, что это типа одна секунда в 100 миллионов лет. Вот такая у них точность.
-
Ну да.
-
Как она достигается? Откуда берется точность в атомных часах супервысокой?
-
Да, это отличный вопрос. То есть мы углубляемся, да, в подсознание? Да, да. Есть несколько способов, есть несколько видов атомных часов, как они работают. Есть совершенно обалденные извращенные решения.
-
Давай сначала ваниль, типа самый классик.
-
Самый классик— это рубидиевые часы. То есть вот мы на секунду сейчас до этого дотронулись, там вот обсудили кварцевый осциллятор. Вот кварцевый такой классический осциллятор, генератор, он 32 килогерца.
-
То есть это 32 тысячи колебаний в секунду.
-
Да, всё верно. У нас есть рубидий, да? Металлик рубидий, например, который ты испаряешь. И у тебя есть такая вот ампула стеклянная, если ты разберёшь атомные часы. Мы, конечно, к сожалению, это не покажем, но вот у меня здесь есть этот рубидий-осциллятор. Вот он выглядит вот так вот.
-
Ты в руке сейчас держишь атомные часы?
-
Да. Окей. А вот у меня один коллега когда-то лизнул его и сказал, что по вкусу как лимон. Да, ладно, вот он на самом деле сколько тут, 5 на 5 сантиметров, ну что-то типа того, да, не очень большой. И у тебя внутри есть такая стеклянная ампула, в которой находится газообразный рубидий, который ты можешь при помощи какой-то микроволновки, да, ты можешь его облучать. У рубидия известное физическое свойство есть, как вот у кварца, что ты там его трогаешь электричеством, а он начинает генерировать обратную частоту, то здесь у тебя ты начинаешь подавать на него какую-то частоту, и заведомо известная точная частота, с которой ты подаешь эти микроволновые импульсы, она в какой-то момент начинает полностью закрывать прохождение этого микроволнового потока. То есть у тебя стоит вот это вот Ампула прозрачная, ты на нее светишь вот этими микроволнами, а на другой стороне у тебя стоит приемник. И вот как только у тебя пропадает на принимающей стороне сигнал через эту ампулу, ты знаешь, что ты на точной, на супер-супер-супер-точной частоте находишься, которая что-то там в районе 7 ГГц.
-
Ого, 7 миллиардов колебаний в секунду. Эта штука начинает поглощать определенную частоту, но только определенную частоту. И таким образом мы можем откалибровать генератор свой.
-
То есть у тебя генератор, это voltage control oscillator так называемый, то есть он может выдавать разную частоту, когда ты меняешь на нем напряжение. Но, естественно, поскольку это там, скорее всего, такой же кварт стоит или еще какая-нибудь дешевая ерунда, то ты не знаешь конкретно, что он выдает в какой-то момент. У него просто нет разрешения такого, чтобы ты понял вот это с него. Поэтому ты начинаешь как бы подавать чуть-чуть, чуть-чуть, чуть-чуть.
-
Крутить потихонечку, и в какой-то момент пип!
-
Да. Типа есть. Именно. Вот этот вот пип, когда случается, ты знаешь, что ты на частоте в районе 7 гигагерц, там 6-9, что-то такое, там очень лохматое число. И вот в этот момент ты переходишь там вот в... из килогерцев, да, сразу же там в гигагерцы.
-
Точность твоего времени вырастает сразу, типа, в
-
тысячу раз. Ну в миллион, да.
-
В миллион раз даже. Охренеть, вообще.
-
Так. Вот. И зная это, ты уже начинаешь переходить вот в режим parts per million или parts per billion, когда ты знаешь, что если ты сейчас перестанешь что-то делать, да, то есть если у тебя перестанет быть синхронизация, ты не можешь больше полагаться ни на спутники, ни на NTP, ни на что-нибудь еще, ты начинаешь уходить в сторону вот этими вот единицами миллиардов в секунду.
-
То есть твои часы съезжают уже совсем медленно.
-
Да. Вот на погрешность как раз вот этой вот частотой, когда ты начинаешь потихонечку двигаться.
-
Скажи, а это достаточно большая точность, чтобы эти часы на спутниках вообще никогда не подкручивать? Типа один раз запустили, настроили, они дальше уже там типа всегда летают такие же, как когда прилетели?
-
Да, в принципе, да. Тебе проще заменить на самом деле спутник, чем подсюнивать это.
-
Я слышал, что туда два раза в день типа заливают поправки. Что это такое?
-
Да, то есть тут, наверное, лучше поговорить будет, когда будет отдельный выпуск про GPS, но в целом ты постоянно, да, должен добавлять туда новые данные. Во-первых, положение этих спутников, то есть они, например, свои положения корректируют. То есть всё вот это вот определение твоего положения и времени— это всё основано на том, что ты знаешь прям вот 100% где находится твой спутник изначально. И второй, ты заливаешь дополнительную информацию туда о в том числе релятивистских движениях, потому что там скорость такая большая, что у тебя даже не столько часы начинают двигаться в сторону, сколько ты начинаешь должен делать поправки, потому что спутник двигается с такой скоростью, что там время идет по-другому.
-
Это, мне кажется, крышесносное, что мы пока обсуждали. Это то, что на скоростях, на которых спутники летают, теория относительности Эйнштейна, и время реально начинает себя вести по-другому, прямо как в фильме «Гравитация». Я понял, что для GPS точное время супер важно. Хорошо, есть еще какие-то другие применения, где вот это точное время тоже нужно?
-
Ну, если мы вернемся, как сказать, обратно на землю, то, конечно, это нужно в приложении в дата-центре. Это нужно 5G для твоей телефонии. То есть, например, твой телефон, который общается с 5G, чтобы ему общаться через 5G, на самом деле он поддерживает PTP. PTP— это следующий шаг эволюции синхронизации времени между компьютерами или там вот устройствами. Называется PTP, Precision Time Protocol. Когда твой телефон подключается к 5G, то ему жизненно необходимо синхронизировать свое время. Опять же, тут не совсем важно настоящее время, тут важно относительное время. Поскольку у тебя очень много абонентов на одну точку сотовой связи, то есть на одну антенну, ты можешь по-разному разделять время, которое вот эта вот антенна уделяет именно твоему звонку.
-
Ему дают слот определенный во времени, типа вот тогда ты можешь говорить.
-
И условно говоря, они синхронизируются между собой и говорят, ты получаешь какую-то квоту во столько-то и прочее. готово, все договорились, поэтому им очень прям жизненно необходимо, то есть 5G в принципе не работает без вот этой синхронизации.
-
А, потому что если время разных телефонов вдруг съедет, то я начну говорить в то время, когда говорит другой телефон, и никто никого не услышит, друг друга будут
-
перебивать как раз. Да, вот, это можно решить по-разному, естественно, то есть раньше, например, до 5G это решалось, то есть это называется time division, да, у тебя есть различные другие дивижины.
-
Ага, про это у нас был эпизод про сотовые сети. Ссылка на него будет в описании к этому эпизоду. Расскажи дальше, какие еще есть применения, кроме вот, мы сейчас поговорили про навигацию и про телефонию. Где еще нужно точное время?
-
Да, например, в дата-центрах, естественно, как минимум тебе нужно, вот если вернуться так шаг назад сделать, в прошлое немножко, то тебе нужно время в дата-центре просто для банального там синхронизации событий на разных серверах. Ты хочешь, например, у тебя есть два сервера, в одно и то же время что-то произошло, и ты хочешь сравнить эти ивенты, события в логах, в журналах своего сервера. Ты хочешь сравнить, какая была последовательность действий. Вот в своих логах на сервере часто ты увидишь разрешение вот этих таймстэмпов до временных меток, до миллисекунд. например, увидишь там вот этот произошел в эту миллисекунду, вот этот вот в эту, и ты можешь естественно сравнить, какой произошел там раньше, какой позже. Что типа вот эта штука сломалась, а вот эта штука сломалась в то же время, это была причина или следствие?
-
А, если на серверах разные времени, то это вообще может ничего не значить. А если на серверах одинаковое время, то ты сразу можешь понять, какое событие произошло первым.
-
Да.
-
Окей, давай еще в ширину. Есть какие-то еще применения, которые типа каждый человек может понять и с которыми встречался?
-
Да, конечно. То есть хороший пример будет вот видеозвонки. Тот же, например, Facebook Live или еще что-нибудь.
-
Вот теперь неожиданно. Причем тут видеозвонки вообще?
-
Да, то есть, опять же, в зависимости от разных кодеков, от разных форматов сжатия, видео, аудио, у тебя пролетает... Вот мы общаемся, это все синхронизируется через какой-то там вот сервер, который получает эти пакеты, которые вот я сказал слово, там 60 пакетов, например, улетело по этому поводу. И сервер получает тогда на стороне своей в дата-центре. Совершенно необязательно это все идет там в правильном порядке и вообще приходит в одно и то же более-менее время. Это все еще использует UDP, так что там вообще половины не придет, скорее всего. В общем, суть в том, что сервер должен это все собрать обратно. понять, что из этого уже вообще не имеет отношения к делу, и там послать это на твою, например, сторону. Так вот, если время начинает сильно разъезжаться, причем, опять же, относительное время тут очень важно, да, то есть, если, например, вот оно у нас у обоих неправильно, то, наверное, всем будет на это все равно. А вот если моё время на моём ноутбуке начнёт сильно ехать в сторону, то это может очень плохо сыграть на качестве нашего звонка. И такое случалось. То есть, прямо скажем, что я знаю истории, когда дорогущее оборудование, купленное у провайдеров, ломалось, когда начинало сбоить время.
-
Тут надо пояснить, что вот мы в Зуме созвонимся условно-бесплатно, а есть железки специальные, которые, покупая за десятки, если не сотни тысяч долларов, которые делают, типа, качественную видеосвязь.
-
Да. Она действительно качественная, но опять же она очень чувствительная к различного рода помехам. То есть там, если ты пропустил слово, это штрафы, ругань и прочее, потому что ты действительно платишь за это просто десятки тысяч долларов. И вот у нас была такая история, когда сломалась синхронизация времени для вот этого оборудования, и они начали просто в сторону двигаться. И каждый начал двигаться в разную сторону. И в зависимости от того, когда она ломалась, от очень многих факторов, типа температуры, влажности и прочего, вот эти вот осцилляторы, про которые мы изначально разговаривали, кварцевые, они очень чувствительные. То есть, например, вот у тебя разогрелась эта железяка, у тебя этот кварц расширился, все, у тебя потерялись свойства физически этого кварца, и у тебя уже не 32 килогерца, а половина этого.
-
Охренеть! И время поехало!
-
Причем поехало с большой скоростью относительно, да?
-
А как это, тебя как бы тусишь, по видео разговариваешь, как это на тебя влияет? Как ты это замечаешь?
-
Ну в нашем конкретном случае у нас просто оборвались звонки. То есть мы сидели, сидели, разговаривали, у нас просто у всех дружно начали падать звонки, не могли созвониться друг с другом. То есть оно не просто типа там оборвалось, ты перезвонил, все починилось. Нет, все, оно больше не работало. Пока не починили синхронизацию времени, оно не восстановилось.
-
Полная жесть.
-
Окей.
-
Знаешь, я когда готовился к эпизоду, в ChatGPT, зачем нужно точное время, он мне еще сказал, что оно нужно для бирж.
-
А, это хорошее, да, применение. Да, спасибо за подсказку. В общем, да. И это, на самом деле, ко мне часто приходится на LinkedIn с этим вопросом, там, не хочешь к нам на биржу? Тоже. У почти у всех бирж, они очень чувствительны к задержкам. То есть, я поясню почему. Наверное, не столько самим биржам это надо, сколько компаниям, которые занимаются трейдингом на этих биржах.
-
Торгуют на биржах.
-
Хороший пример это New York Stock Exchange. Они разрешают. То есть тебе настолько важно, насколько ты далеко находишься от этих бирж, насколько вот эта сетевая задержка. что они в своё время разрешали у них в подвале некоторым большим компаниям ставить точки присутствия, чтобы у всех было как бы одинаковые правила игры, чтобы ты мог быстрее купить акцию. То есть, например, у тебя же что важно? Начинает падать акция, ты начинаешь её покупать, продавать. Главное, быстрее других это сделать. Если ты можешь сделать это быстрее других, то ты получишь вот эти вот единицы центов, вот эти копеечки.
-
Которые на этих объёмах принесут тебе миллионы долларов.
-
Именно. Именно. Поэтому у тебя есть две вещи. Первая— это насколько ты далеко находишься от этих криптобирж, чтобы ты мог быстрее купить, чем другие. И второе— это то, насколько у тебя точное время, чтобы ты мог идти выдавать приказы о покупке как можно точнее и быстрее. Там очень сложные правила. Они, естественно, ничего не open-source'ят. Это закрытые компании, которые занимаются этими покупками и продажами. У них там безумные алгоритмы. То есть они, например, когда нанимают людей, им в основном нужно не чтобы человек умел на питоне три строчки написать. Им нужно, чтобы ты на хардкорных сях мог написать вещь, которая просто будет быстрее, чем другая работа.
-
Охренеть, я не знал, что они прямо ищут экспертов по времени типа себе внутрь.
-
Да. И, например, дополнительная вещь еще тоже стоит упомянуть. Это банковская сфера, которой тоже не нужно, например, так сильно торговать или прочее. Но с них требует правительство подтверждение, что у них точное время, по-моему, там внутри одной миллисекунды. То есть там не так прямо безумно точно, но довольно точно.
-
Одна миллисекунда? Типа не безумно точно, окей.
-
Да, ну то есть как бы мы только что говорили про наносекунду, условно говоря. Одна миллисекунда это сложнее, чем там на твоих часах на руке, но это все еще не совсем безумие. То есть это так 10 лет назад, это не самая современность. И вот они требуют подтверждения того, что у тебя за последние полгода не было проблем с синхронизацией, было все хорошо, у тебя время везде с такой-то точностью. То есть это даже не nice to have, это прям вот ты обязан. предоставлять такого рода вещи.
-
Ничего себе.
-
Давай я тебе еще один хороший пример проведу про время. Например, вот я в самом начале выключил Алексу, которая стоит у меня здесь, чтобы она не дрыгалась без пользы. Так вот, у Алексы есть офигенная совершенно функция, что ты ей можешь сказать, играй музыку везде. И она будет играть музыку на всех колонках в доме.
-
Ох, я знаю, в чем будет проблема.
-
Да, это полностью независимые устройства, которые стоят в разных комнатах, ничего не знают друг про друга, и они каким-то образом умудряются играть музыку. А слух, ну, понятно, что у каждого свой, но все равно на слух ты можешь понять, если у тебя даже несколько десятков или сотен миллисекунд будут включаться, это сразу будет заметно по музыке. Поэтому тут, например, вот далеко чтобы не ходить, нужна очень хорошая синхронизация времени, чтобы вот эта вот функциональность, например, работала. И я, честно говоря, обожаю Alexa. Это я лично вот накупил ее везде вместо того же Google помощника, просто потому что у нее есть вот такая вот фишка.
-
Интересно, что даже для этого нужно точное время. Так, блин, есть еще какое-то такое применение, которое стоит упомянуть, и пойдем дальше, потому что, мне кажется, уже всем понятно, что это типа суперважная штука, которая нужна почти везде.
-
Из самых последних интересных вещей, то есть я вот могу сказать про наш, например, великий метаверс фейсбучный, в который мы сейчас окунаемся. То есть у тебя есть пользователи, которые в виртуальной среде находятся. И этим пользователям очень нужно, чтобы у тебя был минимальный latency. Но ты не можешь этого обеспечить физически. У людей они далеко от точек присутствия находятся, у них плохой Wi-Fi. И это, кстати говоря, не только у тебя есть проблема вот этого latency, да? То есть у кого лучше latency, тот, как правило, у него есть лучший advantage.
-
Задержка latency называется.
-
Да, словом, ты там нажал в игре на курок или еще на что-нибудь там и выигрывает тот, чей ивент пролетел на сервер быстрее. Так вот, чтобы компенсировать за это, ты тоже можешь использовать суперточное время, но для этого тебе нужно, чтобы оно было более-менее синхронизировано на всех девайсах, И тогда ты можешь уже делать вот этот вот timestamp, кто нажал на курок, условно говоря, быстрее на клиенте и по-честному расценивать, кто там нажал, кто выстрелил, кто собрал, кто подобрал, кто построил первый именно.
-
То есть не сервер принимает все решения, а клиентам тоже дается некоторое право, потому что у них у всех одинаковое время.
-
Да, и то же самое хорошо работает в обратную сторону. То есть ты, например, знаешь задержку сетевую до клиента, ты можешь начинать предсказывать следующее событие. Ну, например, условно говоря, ты там машешь мышкой влево-вправо или внутри метаверса ты там поворачиваешь головой, еще что-нибудь делаешь. Это же все отправляется, прорабатывается сервером и прочее. И там есть вероятность, что ты там продолжишь вращать своей головой влево. Естественно, мы же разговариваем о миллисекундах, поэтому твое вращение головой будет очень долгим. Поэтому ты можешь начать рендерить какой-нибудь фрейм или отправлять какой-нибудь там пиксель дополнительный, какой-нибудь обновлять вокруг мир себя на сервере быстрее, чем клиент еще повернул свою голову в ту сторону. Поэтому ты можешь очень серьезно компенсировать задержку сетевую, если у тебя есть вот эта синхронизация по времени. Ну вот это прям вот спасает в некоторых случаях.
-
А мой компьютер откуда получает точное время? Потому что у меня тоже есть временный ткань на компьютере, и я его точно руками не ставил.
-
Ну, твой компьютер 100% получает его через NTP, то есть Network Time Protocol, как мы обсуждали до этого. Но самое, что интересно с твоим компьютером, это то, что в нем, на самом деле, очень и очень-очень плохой осциллятор стоит. Вот то, что мы обсуждали изначально. И я прям вот не шучу, у меня коллега, с которым мы вот буквально вчера там разговаривали по этому поводу, он по ошибке выключил у себя синхронизацию на компьютере.
-
Синхронизация времени.
-
Да, синхронизация времени. И забыл. И через месяц у него компьютер медленно убежал на 2 минуты. И это всплыло очень смешно, потому что мы были на встрече в общей компании, да? И что-то там кто-то говорил, ну все, у нас там время заканчивается, все дела. И он такой, не-не-не, у нас еще 2 минуты. Мы такие, что? Оказалось, что у него компьютер уплыл на 2 минуты просто потому, что он выключил синхронизацию. И это было очень смешно, учитывая то, что он в команде, которая временем обеспечивает всех. Но это уже ладно.
-
С чем синхронизирует время мой компьютер?
-
Да, это хороший вопрос. То есть у тебя, если ты зайдешь в настройки своего компьютера о конкретном времени, у тебя написано «получать автоматически». И, скорее всего, указан какой-нибудь так называемый публичный пул нетворк тайм серверов, NTP.
-
Я вот прямо сейчас это открою. У меня там написано time.apple.com.
-
Да. TimeApple.com— это, на самом деле, NTP-сервер, который просто тебе выдает время. То есть, NTP— он довольно дубовый протокол, там, начало 90-х, если я не ошибаюсь. И просто, на самом деле, ты ходишь, вот твой компьютер, он присылает запрос, UDP-пакет, он говорит «Hey, TimeApple.com, дай мне, пожалуйста, сейчас текущее время». Apple такой «Да, вот, получи». И присылает тебе там стэмп. Твой компьютер его получает и применяет. Но тут есть целая куча больших проблем, например, потому что то, что тебе возвращает вот этот вот Apple, оно в прошлом.
-
Ну да, потому что пока я запросил, пока от меня сигнал дошел до него, пока вернулся обратно, уже прошло там сколько-то сотен миллисекунд.
-
Да. И еще хуже это то, что, например, ты там что-нибудь какое-то видео рендеришь на своем ноутбуке, и ты получил это софтвэ ответ. То есть у тебя пришел именно вот пакет просто. Сколько этот пакет пролежал в стеке с сетевом твоего устройства, сколько его там ядро обрабатывало, сколько твой NTP клиент его обрабатывал, это может занять на самом деле долго. И я видел, что это занимает секунды. То есть ты можешь получить время, которое будет там несколько секунд позади, просто потому что тебя компьютер протупил.
-
И что делать в такой ситуации? Понятно, что нужно как-то компенсировать, но как?
-
Вот.
-
В этом смысле, во-первых, у тебя есть даже в NTP стандартные решения для этого. Например, ты можешь сделать несколько запросов, ты можешь сделать запросы к нескольким серверам, и ты можешь из них попробовать выбрать quorum. То есть у тебя, условно, 5 серверов есть, из них 3 ты синхронизируешь quorum, и дальше математически пытаешься понять, какой из них менее, а какой более стабильный. Например, если первый сервер у тебя всегда какой-то там не то, не сё, то ты ему не доверяешь вообще. То есть там очень-очень-очень много математики именно потому, что это все софт. Именно потому, что у тебя есть вот эти вот задержки, связанные с тем, что ты там непреднамеренно начнешь играть в игру, которая тормозит твой весь комп. Или у тебя интернет начинает быть медленно, потому что там Wi-Fi сейчас стоит, а кто-то включил микроволновку, которая на тех же 2 и 4 ГГц работает, и у тебя начала сбоить Wi-Fi, например, вокруг. И такое тоже бывает.
-
Знаешь, я вспомнил, когда я настраивал компьютеры в детстве под винду, там тоже были сервера точного времени, но там был time.microsoft.com. Это что, типа у всех компаний есть свои сервера точного времени?
-
Да, и у нас есть time.facebook.com, тоже ровно оно же. Это связано отчасти с тем, что компании там хотят в этом вот во всем хайпе участвовать, типа у вас есть значит и у нас должно быть. А отчасти это связано с тем, что на своих устройствах, как правило, наверное, лучше иметь своего поставщика времени, чем чего-то другого. А ты не можешь без публичного. То есть, вот, например, есть у Apple айфоны и, например, или там макбуки, но вот не хотят они синхронизироваться с Майкрософтом, потому что это, как минимум, их конкурент. А как максимум, там, у них сломается их сервер точного времени, а все будут винить на Apple. Скажут, Apple, что вы с ноутбуки дурацкие какие-то сделали? А они такие, это же Майкрософт!
-
Можешь рассказать немножко про то, что будет, если сервера в точное время начнут врать? Вообще такое бывает?
-
Да. Когда время идет неправильно, например, у нас вот то, что я рассказывал, отваливались видеозвонки, а бывают как бы совсем плохие ситуации, когда у тебя время настолько неправильное, что начинают протухать сертификаты, то есть HTTPS-сертификаты, как мы знаем.
-
Это сертификаты безопасности. Типа, когда ты открываешь сайт, вот там есть замочек, и вот этот замочек— это оно. Так, как они связаны с временем?
-
Да, у тебя очень часто есть так называемые короткоживущие сертификаты, когда ты выдаешь его, например, на неделю или на день, может быть, даже. И у тебя есть как бы две стороны. То есть ты, например, ты не можешь доверять сертификату, который выдан в будущем, то есть который еще не начал действовать. Или ты не доверяешь сертификату, который уже протух. То есть ты тоже с ним не можешь разговаривать. Ну, так вот, есть загрузчик безопасный, который вот в адроидах есть, во всяких. и других девайсах есть, в том числе в наших девайсах есть этот загрузчик, который при старте попытается верифицировать, если там его попытались как-то там подменить или еще что-нибудь с ним сделать. И очень часто такие загрузчики довольно простые, они рассчитывают на то, что там, например, facebook.com открывается и работает. У тебя, то есть, безопасная сеть, там никто и не попытался man-in-the-middle сделать, человек посередине или как это. Вот. Никто не попытался facebook.com скомпроментировать, то есть, на своем сервере поднять, на Wi-Fi, на роутер или еще где-нибудь. И он попытается туда сходить и проверить сертификат. И вот у нас была проблема, когда сервис публичного времени в некоторых случаях был не совсем точного времени, поэтому когда пришел этот проверяльщик-загружщик, он такой типа, что-то здесь не то, я отказываюсь загружаться. И, естественно, отваливался.
-
Погоди, устройство просто вообще переставало включаться.
-
Ну, оно там ведет себя по-определенному, то есть оно там не будет работать, большинство вещей перестанут работать, просто потому что оно понимает, что его пытаются хакнуть, например.
-
Ничего себе. А это только потому, что у него время неправильное.
-
Да. И чтобы сделать некоторые вещи, как говорится, еще более сложными или плохими, на многих устройствах, например, да, далеко ходить не надо, там тот же Raspberry Pi, у него нет своих часов, вот как у тебя на руке, у него нет микросхемы запоминания времени. Просто слишком маленький и дешевый, чтобы на него впихивать дополнительные микросхемы.
-
Raspberry Pi— это такой маленький компьютер размером с ладошку, что позволяет его использовать энтузиастам как домашний сервер. Можно на нем хранить файлы или даже прицепить его к какой-нибудь движущейся штуке, чтобы снимать информацию.
-
Что делает Raspberry Pi? При каждом включении первое, что он сделает— это попытается синхронизировать свое время. Если он не может синхронизировать свое время, то он скажет типа «ну, извините». И часто, и это, например, тоже сейчас становится все более и более популярным, первое, что ты делаешь, это ты хочешь подключиться к Wi-Fi, например, да? Часто у тебя больше, ну, в больших компаниях, так делают уже довольно давно, у тебя нет пароля на Wi-Fi реально, у тебя есть сертификат.
-
А сертификаты безопасности опять те же самые
-
с датами в действии. Да, поэтому если у тебя неправильное время, то первое, что у тебя случится, это не можешь подключиться к Wi-Fi. И в некоторых случаях ты как бы получаешься в ситуации, когда ты как бы брекнул устройство, да? У тебя теперь не может подключиться.
-
У него нет времени, потому что он не может подключиться, он не может получить время, потому что он не может подключиться.
-
Бам!
-
Ну да, да.
-
Ты сказал то, что время получается по протоколу NTP. NTP это единственный протокол времени?
-
Ну и для компьютерных сетей вот NTP и PTP вот это два протокола, которые почти всегда используются. У тебя есть дополнительные протоколы для 5G и вот этого всего проприетарного, там их сколько хочешь можно придумать. Но суть в том, что все вот эти протоколы пытаются выставить время, которое часто... Либо нужно человеку, а человеку нужно UTC, Universal Coordinated Time, либо тебе нужно время компьютерное. А вот какое компьютерное время нужно, это вот вопрос интересный. Например, TAI (International Atomic Time). Ну вот мы с тобой обсуждали изначально кварцевые осцилляторы, атомик и прочее. У тебя есть стандарт времени. Стандарт времени подсчитывается теми самыми часами, которые не подвержены ничем, вращению Земли или вращению Солнца, еще чему-нибудь. Ты не можешь на это полагаться, потому что оно все физически нестабильное. А вот какой-нибудь там распад атома или пульсацию атома, оно намного более стабильное. Вот есть определенного рода атомы, из которых делают от этиго часы. рубидий. У него частота там 7 ГГц, там мы договорились. Потом есть цезий, сезиом, да, по-английски он. По-моему 9 ГГц, то есть он сильно больше. А есть стронций. И вот этот вот новый, самый последний элемент, у него частота что-то там 300 или 400 ТГц.
-
И счёт в тысячу раз больше, в миллион раз больше.
-
Да-да-да. И у тебя получается, что стандарт времени берётся именно с него, потому что он просто безумно точный, и шансы, что он уплывёт, настолько минимальные, что практически равны нулю. Поэтому ты запускаешь вот эти вот часы, и ты как бы 100% уверен, что вот это стандарт времени. И ты полагаешься на него. Так вот тай, он привязан именно к атоме часа. То есть, что бы у тебя ни происходило, как бы у тебя Земля не вращалась, что бы у тебя ни произошло, эти физические свойства гораздо более стабильны и предсказуемы, чем любые другие свойства.
-
Есть такие суперточные часы атомные, которые даже на других технологиях, чем которые в GPS, суперточные часы. И вот по ним отсчитывается тай, атомное время. Но это не то, чем мы пользуемся, я так понимаю, потому что мы пользуемся не тай, а UTC. В чем разница?
-
Да, все верно, тай, опять же, он такой физический, больше для ученых, или там для компьютерных сетей, или еще чего-нибудь, а мы пользуемся, мы привыкли, все пользуются UTC, который тоже все еще это компьютерное условное время, но оно подвержено влиянию различных факторов. Опять же, это все условности, которые просто вот люди какие-то выбрали, да, например, всем известен про Unix Timestamp, первое там, января 70-го года. Когда у тебя ломается время, у тебя первое, что происходит, это скорее всего твой ноутбук или еще что-то уходит в 1970-й. Транзакции в базы данных, по умолчанию у тебя будет 1970-й, просто потому что там ничего нет. Вот это выбрано как Unix timestamp, и это как принято такое интернациональное компьютерное время, можно так сказать. Но, конечно, поскольку люди ни на чем не могут договориться, в том числе там на размерах розеток или там на формате зарядок для телефонов или еще на чем-нибудь, то люди не смогли договориться на времени. И существует целая куча альтернативных форматов. Один другого лучше, естественно. То есть тот же GPS, который мы упомянули, они в своем времени живут, которое там 19 секунд отличается. И оно стабильное. То есть оно 19 секунд отличается, но оно, по крайней мере, никуда не двигается с этих 19 секунд. А вот UTC, который мы упомянули, Universal Coordinated Time, оно подвержено так называемой липсекунде. То есть у тебя в зависимости от многих факторов, включая вращение Земли, колебания во вращении Земли, ты периодически добавляешь или удаляешь вот эту самую секунду из времени. То есть, например, вот у тебя замедлилась Земля, потому что какие-нибудь там землетрясения огромные произошли, Луна там с кем-нибудь в фазу вошла и затормозила Землю или ускорила. Там столько всего происходит, что очень даже сложно сказать. И в какой-то момент UTC просто физически меняют. То есть, ему говорят, окей, относительно Солнца это уже не совпадает с циклом. потому что у тебя совершенно очевидно стало, что вот это атомик время, которое идет, оно отличается от того, что ты видишь в небе. И это стало настолько сильно заметно людям, что они ввели вот эту целую процедуру. То есть, как только у тебя отличается на 500 миллисекунд время вот между того, что происходит на небе, то, что ты видишь, и между вот этими атомными часами, то ты начинаешь говорить такой, окей, все, пора двигать это время, потому что оно больше не имеет никакого отношения к реальности. Ты там делаешь вот эту вот магическую секунду, добавляешь, и у тебя появляется секунда номер 60.
-
То есть не от 0 до 59, а от 0 до 60. Типа одна секунда добавилась.
-
Да, именно. У тебя от 0 до 60 или в другую сторону, когда у тебя там 58 секунд.
-
А после 58 сразу уже следующая минута начинается.
-
Да.
-
Чума. Значит, мы так точно считаем время, что замечаем, что Земля кружится вокруг своей оси не всегда равномерно.
-
Да.
-
И для того, чтобы наши часы совпадали с тем, как кружится Земля, мы добавляем или убавляем секунду в год. Да.
-
И так было некоторое время. Это было нормально. Тебе как человеку все равно. У тебя часы все равно уходят в сторону быстрее, чем это. Поэтому ты их в любом случае покорректируешь. Тебе это не важно. И компьютерам, в принципе, было все равно на тот момент, когда это все придумали. А сейчас это стало большой проблемой.
-
Почему?
-
Потому что, да, у тебя есть софтвой, в который часто пишутся девелоперы, и часто эти программисты полагаются на... Вот самый простой пример в коде, который любой, я думаю, может понять. Ты хочешь узнать, сколько у тебя занимает какой-нибудь инструкция в коде. Ты говоришь, сейчас столько-то времени запоминаешь эту переменную, выполняешь любую инструкцию, неважно какую, И опять говоришь, сколько сейчас времени? И ты хочешь вычесть из последнего первое. И ты такой там, о, прошло 250 миллисекунд, зашибись. Ну там, например, сколько у тебя сетевая задержка или что-то. А оказывается, что у тебя прошло минус 750 миллисекунд.
-
Потому что секунду там вставили дополнительно.
-
Да. И, естественно, очень много программ, им очень много мест, в которых ты так делаешь, они тут же начинают падать, крашаться, ломать всё.
-
Ну потому что время не может быть отрицательным, очевидно, которое прошло. Или может быть они вообще используют беззнаковую переменную, тогда у них прошло не 50 миллисекунд, а 5000 лет.
-
Да. Тут только фантазия ограничивает, как можно сломать продакшн.
-
Так, и как с этим бороться? Что с этим можно сделать?
-
Да.
-
Часто, например, используют так называемый не подвержен коррекциям. То есть у тебя есть... Помнишь, мы в самом начале обсудили, что есть процессор у тебя в компьютере, который по факту уже с известной частотой тикает, да? То есть у тебя есть, я не знаю, 3 ГГц, например, да? У тебя твой проц в ноутбуке. Получается, что ты можешь, на самом деле, полагаться просто на его равномерные тики и забить на то, что у тебя происходит со временем. То есть тебе, опять же, не важно абсолютное время, тебе не важно, сколько сейчас на самом деле времени, тебе важно, сколько проходит времени. Поэтому ты можешь использовать специальную структуру. То есть, например, в старых языках программирования тебе нужно использовать специальную структуру, которая называется time monotonic или вызов с флагом Time Monotonic, и ты получишь обратное время, которое именно не подвержено коррекционам. То есть ты получишь именно, сколько времени прошло. В современных языках программирования, например, там в том же Go, у тебя по умолчанию всегда время монотонное. То есть любой вызов к такой инструкции у тебя закончится тем, что у тебя будет безопасный возврат этой инструкции.
-
Очень прикольно. Вообще во всех системах как подкручивают это время? Эту секунду вставляют, типа, все в одно и то же время? Или каждая компания по-разному это делает?
-
Ну, зная людей, конечно, все это делают по-разному, но, по крайней мере, все договорились, что просто дергать вот эту секунду – это безумие, просто потому что оно все ломает.
-
А что они делают взамен?
-
Вот, это так называемый time smearing, когда они размазывают эту секунду на протяжении длительного периода времени. То есть самый распространенный пример – это взять и ее размазать на 24 часа. Давай так, самый простой способ. В течение 24 часов ты добавляешь равные промежутки времени.
-
То есть каждый час сдвигаешь свое время на одну двадцать четвертую секунды?
-
Да. Но, конечно, это происходит чаще, чем час, это происходит каждую секунду, и это происходит... Да. То есть у тебя... И просто линейно это делать, это тоже плохой вариант, потому что у тебя довольно большие эти промежутки получаются. Их очень сложно между собой синхронизировать, эти промежутки линейные, если они идут по этому. Там безумные разные формулы есть по этому поводу математические, но суть в том, что они все направлены на то, чтобы у тебя эти промежутки были как можно меньше. То есть вот то, что ты упомянул, 1,24. Четвертое, это все еще может быть слишком много, то есть тебе надо меньше, меньше и меньше.
-
Чтобы обычным часам, обычным компьютерам было незаметно, что время потихонечку сдвинулось.
-
Да, чтобы они думали, что это просто ну типа вот очередной малюсенький сдвиг, ну просто потому что у меня там плохие часы местные, которые встроены в компьютер, ты этого не заметил вообще, то есть все делается для того, чтобы ты не заметил. А, и кстати говоря, сейчас вот пока мы на этой теме, пока что мы всегда добавляли эту секунду. То есть, не было ни одного случая в истории пока, когда мы убирали эту секунду. То есть, пока что всегда было там 60 секунд. То есть, у тебя была экстра секунда. Но сейчас Земля стала ускоряться. Причем очень серьезно. И весь тренд на то, что мы скоро получим негативную эту секунду. То есть, нам придется убирать из времени эту секунду. И мы знаем, что это будет плохо. И мы знаем, что будет очень плохо. Но мы не знаем, насколько. То есть, это вот такое вот... Y2K, который был, когда все думали, что сейчас все компьютеры умрут.
-
Ага, проблемы 2000. Было довольно много софта, который просто считал две последние цифры, типа 99-й год, 98-й год и так далее. Так вот, была опасность, что у тебя 2000-й год, а софт подумал, что это 1900-й год. Да.
-
Но это не так много всего случилось, если честно, то есть это было больше переоценено. Так вот, сейчас то же самое грозится нам с этой липсекундой. Вот это прямо вот на пороге.
-
Олег, слушай, вот ты рассказал нам про то, как вот есть типа суперточные атомные часы, к ним добавляют липсекунду и таким образом получают UTC. Это всё, что нужно знать о времени условно в интернете или там в компьютерах? Или есть ещё какие-то важные концепции, которые мы не затронули?
-
Конечно. Хороший пример будет вот тот же самый NTP протокол. Ты спросил, сколько вот разного времени существует. Даже вот NTP тот же самый, когда придумывали, не знали ни про 64 бита, ни про что такое. То есть, например, там время 32-битное. Это значит, что у тебя есть NTP-эры, так называемые, в которой вот этот вот интервал у тебя там, по-моему, 136 лет или что-то типа того. То есть мы упомянули, что UTC начинается с 1970, а NTP начинается с 1900. То есть у тебя в 2036 году закончится вот этот вот NTP timestamp.
-
Ага, то есть переменная, в которой хранится время, она заполнится.
-
Да. она закончится, и тебе придется переходить в следующую эру. Ну, потому что так вот. Почему бы и нет, да? Новая эра начнется. И сейчас очень смешно, ты можешь это иногда наблюдать, если там много мучаться, что-нибудь получится. Когда ты, например, получаешь новый компьютер, и он вообще не знает, сколько сейчас времени. То есть, он никогда не включался, никогда не синхронизировался и прочее. У него нету даже никаких вот поинтеров, то есть, откуда начать брать время. Ему нужно придумать свою эру. И вот часто этой эрой используются различные смешные вещи, типа там, когда последний раз у тебя ядро, например, собиралось компьютере.
-
Вот.
-
И ты такой, типа, смотришь, окей, это кажется, что там, эра номер один. И ты начинаешь эту эру подхватывать. Так вот, когда закончится эта NTP-эра, конечно... А, господи! Все эти программы подумают, что сейчас... 1901 год, да? У тебя тут же, например, перепрыгнут часы на 1901 год. Но жесть! И да, так что вот там будет весело, на самом деле, сто процентов.
-
Потому что закончится как раз вот эта эра, которая начинается в 1900 году.
-
Да, в 1900 году 136 лет закончится, то есть N32 переполнится, и у тебя будет обратно на 0, надо будет сбрасываться. Вот, это будет очень интересно.
-
Когда была проблема 2000, туда вложили сотни миллионов долларов, все компании к этому готовились специально многие годы. Есть видео на YouTube, где Билл Клинтон в овальном кабинете там что-то говорит про вот это перевод часов. Выступает перед американским народом, объясняет какие-то айтишные штуки, почти как подкастер по-технологически. с переводом эры я только от тебя услышал. С ней что-то делают, вообще как бы пытаются что-то починить.
-
Ну, опять же, тут зависит от популистских движений. То есть, например, у тебя эта проблема с 2000 года, она довольно очевидна. Ты смотришь на свой часы или на свой домашний календарь и думаешь, черт, что же произойдет-то, когда ты перевернешь страницу. Поэтому с 2000 годом я могу себе представить, что у людей просто была паника. С переводом эры никто не просто не знает про это и не понимает, кроме атишников, естественно, которые в этом копаются. И поэтому глобальной такой большой паники нет, но, естественно, двигаются, пытаются люди разрешить эту проблему, увеличивая разрешение протоколов, чтобы в следующий раз такого не было, и вообще думая, что с этим делать. Но в целом дизайн самого NTP, он как бы практически изначально поддерживал эти эры, потому что люди знали, что закончится эра, надо начинать, чтобы новая эра начиналась. Поэтому там есть какие-то логические решения, чтобы понять, когда действительно эра переключилась. То есть это будет не так раздуто, но я думаю, это будет большим сюрпризом для многих людей, когда это все взорвется.
-
Когда нужно себе заметку поставить? 2036, да?
-
Да. Но этот int32, поэтому там не ровно с переводом календаря нашего человеческого, там какой-то там месяц, я уж не помню. Но это будет весело, в том числе в компьютерных системах. Вот я вот прям вот с нетерпением жду, что мы перейдем на PTP. Потому что, естественно, в PTP таких проблем нету. PTP— это новый шаг на пути к синхронизации времени. Он гораздо более точный. А гораздо более он точный, потому что он использует железо. То есть он полагается на hardware acceleration, так называемый, когда ты можешь пользоваться своим именно железом вместо того, чтобы доверять твоему софту, который там писали не пойми кто. И плюс у тебя, вот мы упомянули, что есть задержки, которые там связаны с перегревом или еще с чем-нибудь. Вот разговаривая про PTP, он работает над тем, что он все еще обменивается timestamp'ами, Но при этом у тебя это делает как бы железо за тебя. То есть ты точно знаешь, что у тебя не было задержек. То есть, например, как только тебе пришел пакет сетевой карты, как только он вошел в твой компьютер, компьютер твой поставит timestamp и положит это в этот же пакет. И то же самое происходит на отправку.
-
То есть баг в операционной системе или то, что тяжелую игру в этот момент начал грузить, это все не повлияет на время?
-
абсолютно никак не повлияет, да, потому что у тебя придет этот пакет и зарегистрируется с сетевой картой, потом он просто будет лежать в буфере, да хоть полчаса пусть лежит, главное, что там оригинальный таймстэмп есть, и ты будешь с этим что-то делать. И то же самое происходит на сетевом оборудовании. То есть между тобой и сервером, как правило, там десяток свитчей или роутеров или еще чего-нибудь, и когда у тебя сетевой пакет проходит через них, у тебя, ну любой пакет, у тебя часто Буферизация используется. И эти буферы, они огромные, они гигабайтами могут быть. Поэтому у тебя пакет может лежать долго. И современное оборудование поддерживает PTP, и они компенсируют это в пакете. То есть ты получишь информацию о том, сколько времени пролежал твой пакет на свитче.
-
Ничего себе! То есть, если раньше ты посылал время, и оно просто как какой-то закрытый ящик доходило, то теперь каждый свитч засекает, сколько времени этот пакет лежал у него, и говорит, он у меня пролежал вот столько, вот он у меня пролежал... А ты потом можешь взять это все раскрутить и получить точное время.
-
Да. И это прям очень интересно, потому что в нормальной ситуации сейчас все свитчи, которые ты используешь в больших магистральных сетях, они все работают при помощи эйсиков. То есть там специальная такая вот микросхемка, которая прям вот только тем занимается, что переправляет пакеты влево-вправо. Она безумно быстрая, и ты можешь наблюдать, сколько времени лежит пакет. Например, нормальное время на вот этом эйсике у тебя 700 наносекунд. То есть за 700 наносекунд у тебя свитч понимает, куда дальше отправить пакеты и отправляет. И это вообще прикольно видеть просто как сайт такой, как побочный эффект того, что у нас как это все работает.
-
Есть логи прямо.
-
Да.
-
Охренеть.
-
Да, и ты можешь конкретно видеть, например, какой свитч тупит больше. И даже можешь, условно говоря, при помощи вот этого точного времени. И вот мы видели, например, совсем недавно поймали баг. в одном из больших производителей железяков. У них была проблема, что этот пакет, он мог пролежать там секунды. И мы прям вот зарепортили им, а они починили, и это прям вот... Я не могу сказать, что спасли интернет, но это точно было... Обалдеть!
-
Это же по-другому можно было бы и не заметить долгое время, а тут у тебя прямо это прямо написано, типа, пакет лежал вот столько.
-
Но люди привыкли к тому, что ну потерялся пакет, и чёрт с ним, да? А мы-то теперь знаем, где он лежал, почему и как долго.
-
кто его заныкал.
-
Вот, и из-за того, что ты полагаешь на устройства железные, которые прям пульсы отсчитывают, то это гораздо стало точнее. То есть, если NTP, например, тот же синхронизирует тебе в миллисекундах, то есть, ты можешь сказать, что у тебя время синхронизировано с сервером на текущий момент на твоем ноутбуке, ну, скажем, плюс-минус 10 миллисекунд. То есть, ты можешь доверять ему. Тебе, как человеку, этого достаточно. Ну вот, а когда мы говорим про PTP, ты скажешь, что у тебя время синхронизировано плюс-минус 10 наносекунд. используется TAI. То есть, например, там в PTP изначально, когда дизайнили, они сказали, ну вас со своими лимсекундами, да, со своими, ну вас нафиг со своими таймзонами, в общем, мы ничего этого не будем делать, изначально на TAI. Да, и разговаривая вот про странные интересные дизайны, например, мы упомянули GPS, а вот сейчас мы поговорим на секундочку про GLONASS, да, вот эта российская навигационная система. Ребята тоже решили не заморачиваться и сделали для нас в UTC. То есть тот самый UTC, который подвержен липсекундам. Так вот, прикол в том, что мы сейчас вот с ребятами из висово-измерений во Франции договорились, что... То есть мы очень сильно лоббировали за это, и липсекунду, как практику, отменят с 2035 года. То есть ее не будет. Запрещают. Да, мы это продавили, потому что это действительно устраивает больше проблем, чем пользы. И вот это вот решение очень плачевно скажется на Глонассе, потому что ребятки-то оперируют решением того, что будет липсекунда, и они полностью зависят на UTC. Например, Россия была одной из стран, которая не поддерживала эту резолюцию, и в том числе, скорее, ну то есть, опять же, это зависит от людей, мы не знаем всю их внутреннюю кухню, но есть большой шанс, что им придется перезапускать физические спутники из-за этого решения. Просто банально потому, что там не рассчитано на то, что не будет липсекунда.
-
Слушай, Олег, стало понятно, что тема безумно большая и безумно интересная. Скажи, что почитать, если ты в этом заинтересовался и хочешь глубже нырнуть?
-
Ну, на самом деле, насколько это эгоистично звучит, насколько это может показаться, я бы начал с того, что почитал engineering-пост, который мы сделали на facebook engineering-блог. То есть, чтобы вы там посмотрели... Это,
-
на самом деле, серия из трёх постов, насколько я помню, в engineering-блоге фейсбука, который написал ты. Ссылка на них будет в описании к этому эпизоду.
-
Да, я почему их опомянул? Потому что мы старались расписать и сделать ссылки на различные другие посты или еще другие government, даже эти государственные учреждения. То есть, например, есть Бюро измерений весов, и вот эти ребята во Франции сидят.
-
У которых килограмм хранится.
-
Да, и вот эти же ребята занимаются тем, что они там следят за временем, у них вот эти вот самые атомные часы. Мы на них ссылку тоже сделали, там про липсекунду очень много всего можно почитать, как ее отменяют сейчас, вот это вот все происходит. То есть, оттуда начните раскручивать. А так, на самом деле, липсекунда на Википедии, просто простой pointer, это точно чтение на несколько дней без сна. Это такой поворот главный.
-
Ссылка на статью о липсекунде в Википедии тоже есть в описании к этому эпизоду. Я вот здесь хочу поставить точку в основном эпизоде. У нас будет бонусный эпизод, он выйдет в пятницу. Знаешь, такое чувство, что время у нас немножечко как будто сжалось в этом эпизоде. Суперинтересный разговор. Огромное спасибо за твое время.
-
Я надеюсь, что тебе понравилось.
-
Редактор субтитров Т.Горелова Корректор А.Егорова