Протокол синхронизации времени NTP, SNTP

Network Time Protocol – протокол сетевого времени) – сетевой протокол для синхронизации внутренних часов устройства с использованием сетей с переменной пропускной способностью.

Работа алгоритма NTP достаточно проста:

У одного человека не было наручных часов, но зато дома висели точные настенные часы, которые он иногда забывал заводить. Однажды, забыв очередной раз завести часы, он отправился в гости к своему другу, провел у того вечер, а вернувшись домой, сумел правильно поставить часы. Каким образом ему удалось это сделать, если время в пути заранее известно не было?

Ответ таков: выходя из дома, человек заводит часы и запоминает, в каком положении находятся стрелки. Придя к другу и уходя из гостей, он отмечает время своего прихода и ухода. Это позволяет ему узнать, сколько он находился в гостях. Вернувшись домой и взглянув на часы, человек определяет продолжительность своего отсутствия. Вычитая из этого времени то время, которое он провел в гостях, человек узнает время, затраченное на дорогу туда и обратно. Прибавив ко времени выхода из гостей половину времени, затраченного на дорогу, он получает возможность узнать время прихода домой и перевести соответствующим образом стрелки своих часов.

Таким образом, по четырём данным: время отправки запроса (по часам клиента); время получения запроса сервером (по часам сервера); время отправки ответа сервером (по часам сервера); время получения ответа (по часам клиента) можно найти время пакета в пути туда и обратно, а затем - откорректировать локальное время.

При этих расчетах мы пользуемся тремя важными предположениями:

1. Пакет проходит путь от клиента до сервера и обратно за равное время.

2. Скорость хода часов клиента и сервера равна.

3. На вычисление нового локального времени не уходит дополнительное время.

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

Значительным преимуществом протокола NTP является то, что передача времени производится в формате UTC. Это удовлетворяет требованиям стандарта МЭК 61850, который требует передачу меток времени событий в формате UTC. При необходимости отображения местного времени на дисплее устройства РЗА требуется ручная установка часового пояса с учетом соответствующего перехода на летнее время. Протокол NTP обеспечивает возможность одновременного использования нескольких серверов времени одним и тем же клиентом для более точной и надежной временной синхронизации. Однако данный протокол не позволяет обеспечить микросекундную точность синхронизации, которая требуется для СМПР и устройств сопряжения с шиной процесса МЭК 61850-9-2.

Помимо NTP, существует упрощенная версия этого протокола - SNTP (Simple Network Time Protocol). Он реализован для синхронизации времени конечным клиентом, поскольку все преимущества протокола NTP проявляются именно в сети серверов, а для получения показаний конечным пользователем NTP излишне сложен. Поэтому для синхронизации времени конечными компьютерами и серверами был предложен протокол SNTP (SNTPv3: 1992 г., RFC1361 и 1995 г., RFC1769; SNTPv4 включён как подпротокол в NTPv4).

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

Таким образом, "облегченный" SNTP образует не сеть синхронизирующихся серверов, а пары "клиент-сервер". Любой NTP-сервер является одновременно SNTP-сервером. Клиент, который не передаёт полученное время дальше, может работать как NTP- или SNTP-клиент, в зависимости от условий.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: