4h4-auto.ru

4х4 Авто
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Получение даты и времени от NTP сервера с помощью ESP8266 NodeMCU

Получение даты и времени от NTP сервера с помощью ESP8266 NodeMCU

Время от времени вы сталкиваетесь с идеей, в которой основным значением является время. Например, представьте реле, которое должно быть активировано в определенное время, или регистратор данных, который должен сохранять значения через определенные промежутки времени.

Первое, что приходит в голову, – это использовать микросхему RTC (часы реального времени). Но эти микросхемы не совсем точны, поэтому вам нужно снова и снова выполнять ручную подстройку, чтобы синхронизировать их с реальным временем.

Решение в этом случае – использовать протокол сетевого времени (NTP). Если у вашего проекта на ESP8266 есть доступ к Интернету, вы можете бесплатно получить дату и время (с точностью до нескольких миллисекунд от UTC). Дополнительное оборудование не требуется.

Получение даты и времени от NTP сервера с помощью ESP8266 NodeMCU Получение даты и времени от NTP сервера с помощью ESP8266 NodeMCU

Что такое NTP?

NTP означает Network Time Protocol (протокол сетевого времени). Это стандартный интернет-протокол для синхронизации часов компьютера с неким эталоном в сети.

Данный протокол может использоваться для синхронизации всех сетевых устройств с всемирным координированным временем (UTC) с точностью до нескольких миллисекунд (50 миллисекунд в общедоступном Интернете и менее 5 миллисекунд в среде LAN).

Всемирное координированное время (UTC) – это всемирный стандарт времени, тесно связанный с GMT (средним временем по Гринвичу). UTC не меняется, оно одинаково во всем мире.

NTP устанавливает часы компьютеров в формате UTC, любое смещение местного часового пояса или смещение летнего времени применяется уже клиентом. Таким образом, клиенты могут синхронизироваться с серверами независимо от местоположения и разницы часовых поясов.

Архитектура NTP

NTP использует иерархическую архитектуру. Каждый уровень иерархии известен как слой (англ. stratum).

На самом верху находятся высокоточные устройства для измерения времени, известные как аппаратные часы уровня 0; это, например, атомные часы, GPS или радиочасы.

Серверы слоя 1 имеют прямое соединение с аппаратными часами слоя 0 и поэтому имеют наиболее точное время.

Рисунок 1 Иерархическая архитектура NTP со слоями Рисунок 1 – Иерархическая архитектура NTP со слоями

Каждый слой в иерархии синхронизируется с уровнем выше и действует как серверы для компьютеров нижнего слоя.

Как работает NTP?

NTP может работать разными способами. Наиболее распространенная конфигурация – работа в режиме клиент-сервер. Основной принцип работы следующий:

  1. клиентское устройство, такое как ESP8266, подключается к серверу с помощью протокола пользовательских датаграмм (UDP) через порт 123;
  2. затем клиент передает пакет запроса на сервер NTP;
  3. в ответ на этот запрос сервер NTP отправляет пакет с меткой времени;
  4. пакет с меткой времени содержит множество информации, такой как метка времени UNIX, точность, задержка или часовой пояс;
  5. затем клиент может проанализировать текущие значения даты и времени.

Подготовка IDE Arduino

Хватит теории, приступим к практике!

Но прежде чем углубляться в данное руководство, вы должны установить в вашу Arduino IDE дополнение для ESP8266. Чтобы подготовить Arduino IDE к работе с ESP8266 (если вы еще этого не сделали) следуйте инструкциям из статьи по ссылке ниже:

Установка библиотеки NTP-клиента

Самый простой способ получить дату и время с сервера NTP – это использовать клиент NTP из библиотек Arduino. Выполните следующие шаги, чтобы установить эту библиотеку в свою Arduino IDE.

Перейдите в раздел Скетч → Подключить библиотеку → Управлять библиотеками…. Подождите, пока менеджер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Отфильтруйте результаты поиска, набрав «ntpclient». Должна остаться пара записей. Ищите NTPClient by Fabrice Weinberg. Щелкните на эту запись и выберите «Установить».

Рисунок 3 Установка библиотеки NTP-клиента в Arduino IDE Рисунок 3 – Установка библиотеки NTP-клиента в Arduino IDE

Получение текущих дня недели и времени от NTP-сервера

Следующий скетч даст вам полное представление о том, как получить текущие день недели и время с NTP-сервера.

Прежде чем вы отправитесь загружать скетч, вам нужно внести пару изменений, чтобы он у вас заработал.

  • Чтобы ESP8266 мог установить соединение с существующей сетью WiFi, вам необходимо изменить следующие две переменные в соответствии с учетными данными вашей сети.
  • Вам необходимо настроить смещение UTC для вашего часового пояса в секундах. Смотрите список часовых поясов относительно UTC. Вот несколько примеров для разных часовых поясов:
    • для UTC -5.00: -5 * 60 * 60: -18000
    • для UTC +1.00: 1 * 60 * 60: 3600
    • для UTC +0.00: 0 * 60 * 60: 0

    Как только вы закончите, загрузите скетч в ESP8266.

    После загрузки скетча нажмите кнопку RST на вашей плате NodeMCU, и вы должны будете получать текущие день недели и время каждую секунду, как показано ниже.

    Рисунок 4 ESP8266 считывает день недели и время из ответа NTP-сервера и выводит их монитор последовательного порта Рисунок 4 – ESP8266 считывает день недели и время из ответа NTP-сервера и выводит их монитор последовательного порта

    Объяснение кода

    Давайте быстро взглянем на код, чтобы увидеть, как он работает. Сначала мы включаем библиотеки, необходимые для этого проекта.

    • NTPClient.h – это библиотека работы со временем, которая выполняет синхронизацию с NTP-сервером;
    • библиотека ESP8266WiFi.h предоставляет специальные методы для работы ESP8266 с WiFi, которые мы вызываем для подключения к сети;
    • библиотека WiFiUdp.h обрабатывает протокол UDP, например открытие порта UDP, отправку и получение пакетов UDP и т.д.

    Затем мы настраиваем несколько констант, таких как SSID, пароль WiFi и смещение UTC, о которых вы уже знаете. Мы также определяем двумерный массив daysOfTheWeek .

    Теперь, прежде чем инициализировать объект NTP-клиента, нам нужно указать адрес NTP-сервера, который мы хотим использовать. pool.ntp.org – это открытый проект NTP, отлично подходящий для подобных вещей.

    pool.ntp.org автоматически выбирает серверы времени, которые географически близки к вам. Но если вы хотите сделать выбор явно, используйте одну из подзон pool.ntp.org.

    ЗонаАдрес сервера
    Весь мирpool.ntp.org
    Азияasia.pool.ntp.org
    Европаeurope.pool.ntp.org
    Северная Америкаnorth-america.pool.ntp.org
    Океанияoceania.pool.ntp.org
    Южная Америкаsouth-america.pool.ntp.org

    В функции setup() мы сначала инициализируем последовательную связь с ПК и подключаемся к сети WiFi с помощью функции WiFi.begin() .

    Когда ESP8266 подключится к сети, мы инициализируем NTP-клиент с помощью функции begin() .

    Теперь мы можем просто вызывать функцию update() всякий раз, когда нам нужны текущие день недели и время. Эта функция передает пакет с запросом на NTP-сервер, используя протокол UDP, и преобразует полученный пакет с меткой времени в читаемый формат.

    Вы можете получить доступ к информации о дне и времени, воспользовавшись функциями библиотеки NTP-клиента.

    Сетевой протокол времени

    Протокол сетевого времени ( NTP ) — это стандарт для синхронизации часов в компьютерных системах через сети связи на основе пакетов . NTP использует транспортный протокол без установления соединения UDP или TCP, связанный с установлением соединения . Он был специально разработан для обеспечения надежной информации о времени через сети с переменным временем прохождения пакетов.

    В общем, NTP относится как к протоколу, так и к его эталонной программной реализации. Простой протокол сетевого времени ( SNTP ) — это упрощенная версия NTP.

    содержание

    Основы

    Протокол NTP был разработан Дэвидом Л. Миллсом из Университета Делавэра и опубликован как RFC 958 в 1985 году . Под его руководством протокол и реализация UNIX постоянно развиваются. Версия протокола 4 в настоящее время актуальна. Порт 123 UDP зарезервирован для NTP.

    NTP реализован в UNIX-подобных операционных системах в виде фонового процесса ( демона ) ntpd, который может как настраивать локальную систему, так и в качестве сервера предоставлять время другим системам. Системы Windows могут также получить точное время через NTP из Интернета без дополнительного программного обеспечения ( системный элемент управления «Дата и время» / «Время в Интернете») и, после редактирования записи в базе данных регистрации, также предоставить его через NTP.

    UNIX-ntpd синхронизирует локальные часы с помощью внешних сигналов времени, которые он получает либо непосредственно от локальных атомных часов ( цезиевые часы, рубидиевые часы и т. Д.), Либо от местного радиоприемника ( например, DCF77 , GPS , LORAN ), или через NTP с сервера NTP получает. Процесс пЪрда не только корректирует фазу, но и частота локального таймера с помощью программного обеспечения ФАПЧА и программного обеспечения FLL так , чтобы локальное время не только соответствует внешнему сигналу именно в циклических синхронизации времени . Чтобы еще более тесно связать внутренний таймер с внешним приемником стандартного времени с помощью высокоточного второго сигнала, в некоторых вариантах UNIX (включая Linux и FreeBSD ) в ядре реализована вышеупомянутая программная ФАПЧ.

    Отметки времени в NTP имеют длину 64 бита. 32 бита кодируют секунды с 1 января 1900 00:00:00, еще 32 бита кодируют долю секунды. Таким образом, период в 2 32 секунды (приблизительно 136 лет) может быть представлен с разрешением 2-32 секунды (приблизительно 0,23 наносекунды).

    NTP использует иерархическую систему разных слоев (множественное число слоев ). Stratum 0 — это стандарт времени, например атомные часы или радиочасы (приемник сигнала времени через GNSS или DCF77 ). Серверы NTP, напрямую связанные с ним, называются Stratum 1. Каждой дополнительной зависимой единице присваивается более высокий номер в имени (Stratum 2, Stratum 3 . ). Программное обеспечение NTP на уровне 1, уровне 2, уровне 3 и т. Д. Одновременно является клиентом верхнего слоя и сервером нижнего слоя, если таковой существует.

    Ошибка, алгоритм и точность

    Локальное системное время процессорной среды зависит от различных типичных источников ошибок. Это приводит как минимум к двум типичным ошибкам:

    • кратковременные колебания приращения времени по текущему времени
    • стабильные локальные отклонения от общего системного времени

    Обе ошибки синхронизации компенсируются разными методами.

    Локальные отклонения из-за задержки стохастически определенных путей передачи компенсируются сервером ( алгоритм Беркли ) или клиентом ( алгоритм Кристиана ) путем измерения времени цикла пакета .

    Кратковременные псевдостохастические отклонения локальных системных часов могут быть компенсированы только лучшими системными часами (стандарт частоты) и прямым приемом спутниковых сигналов ( GPS ) или других стандартов времени ( DCF77 ).

    NTP использует алгоритм Марзулло (разработанный Китом Марзулло из Университета Сан-Диего в его диссертации ) для компенсации внутренних ошибок среды процессора, а также алгоритм обработки византийских ошибок . NTP, как правило , с UTC — масштаб времени используется.

    NTP поддерживает дополнительные секунды . Посмотрев на дополнительные секунды в журнале, с каждой дополнительной секундой будет использоваться новая шкала секунд (что, однако, происходит редко). Однако для шкалы системного времени обычно используется фактическое время, прошедшее с определенного момента времени, и дополнительные секунды вступают в игру только тогда, когда время отображается.

    NTPv4 может сохранять местное время системы через общедоступный Интернет с точностью до 10 миллисекунд, в локальных сетях даже в идеальных условиях возможна точность 200 микросекунд и выше. При достаточно стабильном местном стандарте частоты в качестве тактового генератора (кварцевый генератор , управляемый термостатом , рубидиевый генератор и т. Д.), Ошибка между опорным таймером и локальными часами может быть уменьшена до нескольких микросекунд с использованием ядерной ФАПЧ (см. выше) .

    Simple Network Time Protocol (SNTP) представляет собой упрощенную версию NTP. Первоначально как независимый стандарт, начиная с RFC 1361 и заканчивая RFC 4330 ; он был интегрирован в NTP версии 4 в виде небольшого подраздела в RFC 5905 с июня 2010 года .

    Структура протокола идентична NTP. Таким образом, клиенты SNTP также могут получать время от серверов NTP. Основное отличие заключается в алгоритмах синхронизации времени. В то время как с NTP синхронизация времени обычно происходит с несколькими серверами времени, с SNTP используется только один сервер времени. SNTP также не влияет на фазу и частоту местного таймера. Следовательно, SNTP не может обеспечить такой же уровень точности, как NTP. Из-за более простых алгоритмов SNTP требует меньше вычислительных ресурсов.

    Более старые версии Windows, такие как Windows 2000, используют протокол SNTP для поддержания актуальности времени на локальном компьютере. Это делает служба Windows W32Time. В Windows XP и Windows Server 2003 библиотека динамической компоновки W32Time.dll была переработана, и теперь для синхронизации времени используется протокол NTP.

    С тех пор, как Microsoft впервые представила метод синхронизации времени с Windows 2000 , некоторые производители программного обеспечения разработали независимые программы для синхронизации времени под Windows. Современные системы аутентификации (такие как Kerberos ), которые используются в Windows 2000 и более новых версиях, требуют меток времени для повышения безопасности, поэтому здесь также есть приложение для NTP.

    выполнение

    В дополнение к эталонному программному обеспечению NTP, которое доступно на веб-сайте NTP для различных операционных систем, ряд производителей предлагают готовые автономные решения, которые можно использовать в качестве источников времени NTP в компьютерных сетях любого размера.

    Несколько тысяч серверов NTP сформировали пул NTP .

    Альтернативы

    Протокол точного времени ( PTP ) — это сетевой протокол, который синхронизирует настройки времени нескольких устройств в компьютерной сети . В отличие от протокола сетевого времени (NTP), PTP стремится к более высокой точности в локально ограниченных сетях. Это обеспечивает точность в наносекунды в аппаратном обеспечении и менее микросекунды в программном обеспечении . PTP определен в IEEE 1588 и принят в IEC 61588.

    OpenNTPD

    В 2004 году Хеннинг Брауэр представил реализацию протокола NTP OpenNTPD, ориентированную на безопасность. Протокол совместим с существующими серверами NTP. Первоначально он был написан для OpenBSD , но теперь также доступен как переносимая версия и как пакет в системе управления пакетами Linux. OpenNTPD критиковали за то, что он не предлагает такой же уровень точности, как NTP. Отклонения могут составлять 50–200 мс.

    Нтимед

    Программа NTPD служит сервером времени, клиентом времени и охватывает многие другие функции. Поскольку исходный код эталонной реализации NTP очень обширен и содержит более 300 000 строк, Linux Foundation продвигает модульность с помощью проекта Ntimed разработчика FreeBSD Пола-Хеннинга Кампа. Исходный код клиента состоит примерно из 3700 строк. Если вас интересует проект, будут добавлены подчиненные серверы, refclocks и протоколы, такие как PTP .

    NTPsec

    NTPsec является ответвлением оригинального Ntpd проекта с целью сделать программу более безопасной с помощью различных мер. Кодовая база была адаптирована к текущим стандартам и могла, среди прочего, это снижает LOC с 253k до 62k . Первая стабильная версия 1.0 была выпущена 10 октября 2017 года.

    tlsdate

    Поддельные ответы NTP могут использоваться для обхода защиты протокола HTTP Strict Transport Security Protocol ( HSTS ) с помощью HTTPS. Кроме того, серверы NTP иногда неправильно используются для атак отражения, поскольку NTP использует UDP без установления соединения . Если злоумышленники отправляют пакеты с фальсифицированным адресом отправителя на сервер NTP, ответ заканчивается жертвой. Если ответ больше, чем запрос, его можно использовать для усиления атак типа «отказ в обслуживании» . Появившийся позже протокол TLS позволяет обойти эти и другие проблемы, поскольку он также передает информацию о времени. В программе tlsdate, разработанной Якобом Аппельбаумом , протокол TLS также берет на себя функцию протокола NTP. Недостатком tlsdate является довольно большая погрешность (максимум +/- одна секунда) плюс задержка в сети. Относительно большая погрешность в первую очередь связана с разрешением в одну секунду отметки времени, которое существует в TLS 1.2. Начиная с TLS версии 1.3, время, ранее передаваемое через TLS, больше не применяется. Таким образом, tlsdate не является постоянным решением проблемы в текущей версии.

    хрония

    Chrony — это отдельная реализация NTP и NTS, выпущенная под лицензией GPLv2.

    FreeBSD: Сервер точного времени на базе ntpd

    В Сети имеется большое количество информации о синхронизации времени на компьютерах с Linux/Unix, однако, основная масса статей дает немного устаревшие рекомендации и очень кратко рассматривает вопросы выявления и устранения возможных проблем. В данной статье я постарался устранить вышеназванные недостатки.

    Постановка задачи

    В процессе создания любой корпоративной сети возникает вопрос организации синхронизации времени. Синхронизация времени базируется на протоколах NTP (Network Time Protocol) и SNTP (Simple Network Time Protocol). В большинстве случаев на одном из серверов корпоративной сети разворачивается главный сервер точного времени (далее — главный NTP-сервер), который синхронизируется с публичными серверами точного времени Интернета (далее — публичными NTP-серверами), и является источником точного времени для всех остальных компьютеров корпоративной сети. По умолчанию в состав операционной системы FreeBSD входит NTP-сервер ntpd(8). Данная статья посвящена его использованию в роли главного NTP-сервера корпоративной сети, организации синхронизации времени на компьютерах с FreeBSD (с учетом небольших расхождений в именах и форматах файлов конфигурации приведенная информация подойдет практически для любой операционной системы семейства Linux/Unix), а также устранению проблем, связанных с синхронизацией времени.

    Исходные данные

    Для решения рассматриваемой задачи не требуется установка какого-либо программного обеспечения, однако, во избежание недоразумений следует отметить, что все описанные действия выполнялись на серверах с FreeBSD 7.x RELEASE. Если Вы используете более раннюю версию операционной системы, может возникнуть необходимость обновления ее исходных текстов и пересборки мира.

    Выбор публичных NTP-серверов

    Для справки следует отметить, что одним из важнейших параметров NTP-сервера является stratum (в русской интерпретации — страта ) — величина, которая отражает уровень системных часов и может принимать значения: 0 — не специфицировано / недоступно, 1 — первичный ( primary ) эталон (например, атомные часы), 2-15 — вторичный ( secondary ) эталон, 16-255 — зарезервировано на будущее. Серверы, которые синхронизируются с серверами, имеющими stratum 1, получают stratum 2, серверы, которые синхронизируются с серверами, имеющими stratum 2, получают stratum 3 и т.д. В процессе выбора публичных NTP-серверов, с которыми будет синхронизироваться главный NTP-сервер, следует руководствоваться требованиями документа Rules of Engagement, которые не рекомендуют использовать публичные NTP-серверы, имеющие stratum 1, без веских оснований и призывают использовать не менее трех-пяти (из соображений надежности) публичных NTP-серверов, имеющих stratum 2. Список публичных NTP-серверов, имеющих stratum 2, содержится в документе Stratum Two Time Servers, из которого следует выбрать необходимое количество OpenAccess (публичных) NTP-серверов, расположенных в Вашей стране. Для проверки доступности и значения stratum выбранных серверов необходимо выполнить соответствующее число команд ntpdate -q <IP-адрес/FQDN NTP-сервера> . Эти команды служат для запроса времени и значений параметров stratum , offset , delay (последние два рассмотрены ниже) с удаленных NTP-серверов и не меняют состояние системных часов. Выводимые сообщения выглядят примерно так:

    Если для всех NTP-серверов выводятся нулевые значения параметров и сообщения: «нет сервера, подходящего для синхронизации»:

    Вам следует следует разрешить в брандмауэре входящий UDP-трафик со 123 порта серверов, расположенных в Интернет, и исходящий UDP-трафик на 123 порт серверов, расположенных в Интернет. Например, в случае ipfw(8) нужно добавить такие правила:

    В момент написания статьи в Stratum Two Time Servers имелась информация о восьми публичных NTP-серверах, расположенных в России, при этом «мертвым» оказался только ntp.xland.ru , а остальные семь успешно используются в роли источников точного времени.

    Настройка главного NTP-сервера

    По умолчанию конфигурация ntpd хранится в файле /etc/ntp.conf . В моем случае этот файл имеет следующее содержимое:

    В данном файле заданы следующие значения параметров: server . — список публичных NTP-серверов, с которыми синхронизируется наш сервер, restrict. — ограничения доступа к серверу (строка 8 — ограничение по умолчанию — доступ запрещен, строки 9-15 — ограничения доступа со стороны публичных NTP-серверов — запрещено изменять состояние сервера, запрашивать время и отправлять сообщения об исключениях, строки 16-18 — ограничения доступа со стороны клиентов — запрещено изменять состояние сервера и отправлять сообщения об исключениях), logfile — имя лог-файла. Описание всех опций, которые можно задать в файле конфигурации ntpd, содержится в ntp.conf(5). Для того, чтобы ntpd запускался при запуске операционной системы и делал начальную корректировку времени (это не опечатка, теперь ntpd умеет делать грубую начальную корректировку времени без помощи ntpdate) необходимо добавить в файл /etc/rc.conf строки:

    По умолчанию лог ntpd имеет имя ntp.log и находится в папке /var/log . Для того, чтобы newsyslog(8) выполнял его ротацию, необходимо добавить в файл /etc/newsyslog.conf строку:

    Данная строка обеспечивает усечение лога ntp при достижении размера 100 килобайт и сохранение трех предыдущих копий лога, сжатых архиватором bzip2(1) (Вы можете изменить эти параметры на свое усмотрение). На этом настройка внутреннего NTP-сервера завершается. Можно запустить сервер командой /etc/rc.d/ntpd start , а затем запросить его состояние командой /etc/rc.d/ntpd status . Если она выдаст сообщение ntpd is running as pid. , все нормально, если же — ntpd is not running , Вам следует найти и устранить ошибки в файлах конфигурации. После этого нужно подождать не менее получаса и выполнить команду ntpdate -q localhost . Если Вы внимательно следовали инструкциям, она выдаст сообщение о том, что NTP-сервер имеет stratum 3 и может использоваться для синхронизации времени:

    Другим признаком корректной работы NTP-сервера можно считать появление в логе ntpd примерно таких сообщений:

    Диагностика главного NTP-сервера

    Для диагностики состояния главного NTP-сервера удобнее всего использовать утилиту ntpq(8), предназначенную для запроса различной информации у NTP-сервера. ntpq может работать как в интерактивном, так и в пакетном режиме, рассмотрение всех ее возможностей выходит далеко за рамки этой статьи. В контексте решаемой задачи более чем достаточно команды запроса состояния пиров — ntpq -p . (другие формы этой команды — ntpq -c peers , peers в интерактивном режиме). Информацию, выводимую командой ntpq -p , лучше пояснить на примере:

    Строки данной таблицы соответствует публичным NTP-серверам, которые определены в файле /etc/ntp.conf , cтолбцы содержат следующие значения: маркер: ‘*’ — сервер, с которым в настоящий момент выполняется синхронизация, ‘#’ — сервер отобран для синхронизации, но дистанция до него превышает максимально возможную, ‘ο’ — сервер отобран для синхронизации и использует сигнал PPS, ‘+’ — сервер добавлен в список серверов, отобранных для синхронизации, ‘x’ — сервер использует некорректный алгоритм, ‘.’ — сервер выбран из конца списка серверов, отобранных для синхронизации, ‘-‘ — сервер отвергнут группирующим алгоритмом, пробел — сервер имеет слишком высокий stratum и/или не может быть проверен; remote — FQDN или IP-адрес сервера; refid — IP-адрес сервера с которым в настоящий момент выполняется синхронизация сервера из столбца remote ; st — stratum сервера; t — режим работы сервера: ‘u’ — unicast , ‘m’ — multicast , ‘b’ — broadcast , ‘-‘ — manycast ; when — время, прошедшее с момента последнего ответа сервера в секундах или ‘-‘ , если сервер еще ни разу не ответил (скорее всего, «умер», и сведения о нем пора удалить из файла конфигурации); poll — интервал опроса сервера в секундах (после запуска имеет небольшое значение, чтобы синхронизация происходила быстрее, с течением времени значение увеличивается); reach — состояние восьми последних попыток запроса времени у сервера в восьмеричном представлении (в случае успешной попытки устанавливается соответствующий бит); delay — задержка ответа сервера в секундах; offset — самое важное значение — различие локального времени и времени на сервере (с течением времени значение уменьшается, т.к. время становится более точным); jitter — дисперсия, дрожание фазы (более низкие значения обеспечивают более точную синхронизацию).

    Синхронизация времени на остальных компьютерах с FreeBSD

    Во избежание путаницы отмечу, что под «остальными компьютерами» в данном случае понимаются все компьютеры корпоративной сети с FreeBSD за исключением главного NTP-сервера. Средства FreeBSD позволяют реализовать два варианта синхронизации времени. Первый рассмотрен выше, и после замены публичных NTP-серверов на главный NTP-сервер подойдет для любого компьютера корпоративной сети с FreeBSD. Изменения касаются единственного файла конфигурации /etc/ntp.conf , который необходимо привести к следующему виду:

    Второй вариант заключается в выполнении команды ntpdate -b <IP-адрес/FQDN внутреннего NTP-сервера> при запуске операционной системы и последующем выполнении команды ntpdate -s <IP-адрес/FQDN внутреннего NTP-сервера> каждый час. Ключ -b заставляет ntpdate принудительно использовать системный вызов settimeofday(2), предназначенный для грубой корректировки системного времени (по умолчанию, если локальное время время отличается от времени, полученного с NTP-сервера, менее чем на 0,5 секунд, ntpdate использует системный вызов adjtime(2), предназначенный для плавной корректировки системного времени), ключ -s включает перенаправление вывода в syslog(3). Таким образом эмулируется поведение NTP-сервера. Грубая корректировка времени при запуске операционной системы является очень важной операцией. Она позволяет избежать значительный скачок системного времени (и возможные проблемы в работе систем биллинга, статистики, СУБД и т.п.), который может произойти в том случае, если первая операция синхронизации времени будет выполнена позже, чем запустится операционная система, и локальное время будет отличаться от времени на NTP-сервере более чем на 0,5 секунд. Для того, чтобы команда грубой корректировки времени автоматически выполнялась при запуске операционной системы, следует добавить в файл /etc/rc.conf строки:

    Для того, чтобы команда точной корректировки времени каждый час выполнялась с помощью cron(8), необходимо войти в систему под root’том , выполнить команду crontab -e , позволяющую внести изменения в crontab текущего пользователя (т.е. root’a ), и добавить строку:

    На этом настройка второго варианта завершается. Я рассказал о нем лишь потому, что он существует и может использоваться, однако, у меня ни разу не возникало оснований для отказа от первого варианта.

    Заключение

    Я надеюсь, что не забыл ничего важного, и приведенной информации будет достаточно для корректной настройки и последующей отладки NTP-серверов на компьютерах Вашей корпоративной сети с FreeBSD и другими операционными системами семейства Linux/Unix.

    NTP часофикация

    Производственная компания ЭЛТАБЛО предлагает построение системы часофикации на основе протокола NTP — подключение к серверам времени через локальную сеть. В системе единого времени NTP-сервер может быть не только удаленный, доступ которому осуществляется через интернет, но и в виде локальной часовой станции нашего производства, которая получает данные от спутниковых систем GPS и ГЛОНАСС, а затем передает эти данные на все вторичные часы по NTP протоколу. В системах часофикации на основе протокола NTP все часы являются ведомыми, имеют интерфейс связи ETHERNET, подключаются к локальной сети организации и получают сигнал от серверов точного времени. Подключение вторичных электронных светодиодных часов с NTP синхронизацией в локальную сеть осуществляется через стандартный разъем RJ45, при этом количество часов в сети не ограничено.

    Со времени начала использования компьютеров (сперва в специализированных системах, потом и в повседневной жизни) появилась задача поддерживать точность хода системных часов, т.е. иметь точно синхронизированное время с остальными компьютерами и системами. Особенно точность времени критична в распределенных системах, которые критичны к порядку вычисления задач, обработки данных и т.п. Одним из примеров такой синхронизации, где впервые был применен популярный протокол синхронизации времени NTP, может быть диспетчерская служба управления полетами. Также немаловажно, чтобы сама сеть компьютеров имела те только синхронизированное время, но и это время было точным с другими системами по всей планете. Т.е. время по всей территории планеты было одинаковым (или достаточно близким).

    Network Time Protocol (NTP) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью. NTP использует для своей работы протокол UDP. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи. NTP использует алгоритм Марзулло (Keith Marzullo из Университета Калифорнии, Сан- Диего), включая такую особенность, как учёт времени передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей. NTP использует иерархическую систему «часовых уровней» (stratum). Уровень 1 синхронизирован с высокоточными часами, например, с системой GPS, ГЛОНАСС (Единая Государственная шкала времени РФ) или атомным эталоном времени. Уровень 2 синхронизируется с одной из машин уровня 1, и так далее.

    Электронные часы «ЭЛТАБЛО» успешно применяются в системах часофикации различных зданий и сооружений, позволяя информировать сотрудников и посетителей о точном времени и автоматизировать производство и иные бизнес-процессы организации. Важнейшими клиентами ЭЛТАБЛО являются школы, высшие учебные заведения, больницы, государственные объекты, а также многие спортивные учреждения, которым требуются современные, надежные системы точного времени. Помимо стандартной системы часофикации по принципу «ведущий-ведомый» мы предлагаем построение системы времени на основе протокола NTP.

    УДАЛЕННЫЙ NTP СЕРВЕР

    Данный вариант построения системы подразумевает подключение всех электронных часов к локальной сети организации и получение сигнала от серверов точного времени расположенных удаленно в сети Интернет. Все часы имеют интерфейс связи ETHERNET, подключение вторичных электронных светодиодных часов с NTP синхронизацией в локальную сеть осуществляется через стандартный разъем RJ45. Число часов в сети не ограничено. К любым электронным часам нашего производства может быть применима опция NTP синхронизации, стоимость опции и сроки производства уточняйте у наших менеджеров.

    ЛОКАЛЬНЫЙ NTP СЕРВЕР

    В данной системе NTP сервером выступает часовая станция нашего производства, которая получает данные от спутниковых систем GPS и ГЛОНАСС, посредством специального оборудования, идущего в комплекте, а затем передает эти данные на все вторичные часы по NTP протоколу. Все часы также имеют интерфейс связи ETHERNET, подключаются к локальной сети через стандартный разъем RJ45. Число часов в сети не ограничено. В отличии от предыдущего варианта системы часофикации, данный способ не требует подключения к удаленным серверам, а значит не требует выхода в интернет и соответственно исключает все возможные связанные с этим нештатные ситуации. Часовая станция «ЧС-19-NTP-GPS-ГЛОНАСС» требует только подключение к сети питания переменного тока 220В, в остальном она полностью автономна, имеет выносные приемники GPS и ГЛОНАСС, выполнена в 19-ти дюймовом корпусе для удобства установки в серверный шкаф огранизации. Стоимость и сроки производства данной ЧС уточняйте у наших менеджеров.

    голоса
    Рейтинг статьи
    Читайте так же:
    Как отрегулировать клапана на беларусе
Ссылка на основную публикацию
Adblock
detector