Синхронизация времени NTP
Синхронизация времени NTP.
Синхронизация времени является важной задачей, хотя не многие задумывались об этом. Ну что плохого в убежавшем на сервере времени? А знаете ли вы, что многие проблемы с часами влияют на протоколы, связанные с криптографией? По этой причине в Active Directory разница в часах более 5 минут будет приводить к проблемам аутентификации Kerberos.
Часовые уровни. Strata.
Чтобы понять устройство NTP следует знать про концепцию strata или stratum. Авторитетные источники времени, такие как спутники GPS, цезиевые атомные часы, радио волны WWVB — всё это stratum 0. Они авторитетны на том основании, что у них есть некоторый способ поддержания высокоточного хронометража. Можно, конечно, воспользоваться обычными кварцевыми часами, но зная, что за месяц с ними легко потерять 15 секунд, то лучше их не использовать в качестве мерила времени. Stratum 0 это когда секунда не потеряется за 300 000 лет!
Компьютеры, которые напрямую (не по сети!) берут время у stratum 0 — это stratum 1. Так как всегда есть задержки из-за передачи сигнала и затраты на установку времени, то компьютеры stratum 1 не так точны как stratum 0, но в реальной жизни различие достигает пару микросекунд (1 мкс = 10 -6 с), что вполне допустимое отклонение.
Следующий уровень компьютеров, берущих время по сети у stratum 1 — это . барабанная дробь . интрига . stratum 2! Опять таки из-за различных задержек (сетевые точно), stratum 2 чуток отстаёт от stratum 1 и уж точно от stratum 0. На практике это разница от нескольких микросекунд (1 мкс = 10 -6 с) до нескольких миллисекунд (1 мс = 10 -3 с). Многие хотят синхронизироваться со слоем не дальше stratum 2.
Как понятно из схемы, stratum 4 берёт время у вышестоящего stratum 3. stratum 5 у stratum 4 и так далее. stratum 16 считается самым нижним слоем и время там считается несинхронизированным.
Чтобы синхронизировать время с помощью протокола NTP, следует сначала вручную выставить ваше время. Недопустима разница между вашим точным временем и показаниями ваших часов более 1000 секунд. Если используемый вами сервер времени врёт более 1000 миллисекунд (1 секунда), то он будет исключён из списка и будут использоваться другие вместо него. Данный механизм позволяет отсеивать плохие источники времени.
Клиент времени.
В файле /etc/ntp.conf для клиента важны строки Server. Их может быть несколько — до 10 штук!
Сколько добавлять? Следует иметь в виду:
- Если у вас только один сервер (одна строка server), то если данный сервер начнёт врать, то вы будете слепо следовать за ним. Если его время убежит на 5 секунд и вы убежите в след за ним.
- Если добавлено 2 сервера (2 строки server), то NTP пометит их обоих как false tickers. Если один из них будет врать, то NTP не может понять кто врёт, так как нет кворума.
- Если добавлено 3 и более сервера времени, то можно вычислить одного вруна false tickers. Если серверов времени 5 или 6, то можно найти 2 вруна false tickers. Если серверов 7 или 8, то 3 false tickers. Если серверов 9 и 10, то 4 false tickers.
Проект NTP Pool.
Есть такой проект NTP Pool по адресу которого pool.ntp.org/zone/ru/ можно найти рекомендованные для русских пользователей сервера времени.
server 0.ru.pool.ntp.org
server 1.ru.pool.ntp.org
server 2.ru.pool.ntp.org
server 3.ru.pool.ntp.org
Такие операционные системы, как Debian и Ubuntu, предлагают пользователям свои сервера времени.
server 0.debian.pool.ntp.org
server 1.debian.pool.ntp.org
server 2.debian.pool.ntp.org
server 3.debian.pool.ntp.org
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org
Если вызвать на вашем Linux компьютере, который использует NTP, команду ntpq -pn
О чём говорят названия столбцов:
- remote — удалённые сервера, с которыми вы синхронизируете время.
- refid — вышестоящий stratum для данного сервера.
- st — уровень stratum. От 0 (нам недоступно) до 16 (нам не желательно). Идеально — 2.
- t — тип соединения. «u» — unicast или manycast, «b» — broadcast или multicast, «l» local reference clock, «s» — симметричный узел, «A» — manycast сервер, «B» — broadcast server, «M» — multicast сервер.
- when — время, когда последний раз сервер ответил нам. Параметр отображает число в секундах, но может в минутах, если число с m или в часах, если h.
- poll — частота опроса. Минимум 16 секунд, максимум 32 часа. Число должно быть 2 n . Обычно в данном параметре наблюдается или 64 секунды или 1024.
- reach — 8 бит октета, показывающий статус общения с удалённым сервером времени: успешный или сбойный. Если биты установлены — то успешно, иначе — сбой. Значение 377 — бинарно это 0000 0000 1111 1111.
- delay — значение в миллисекундах показывает время между отправкой и получения ответа (round trip time — RTT).
- offset — смещение в миллисекундах между вами и серверами времени. Может быть положительным и отрицательным числом.
- jitter — абсолютное значение в миллисекундах с указанием среднеквадратичного отклонения вашего смещения.
Перед IP адресом NTP сервера есть символ — это tally code. Виды tally code:
- » « — отброшен как недопустимый. Например, нет связи с ним или он в оффлайн, он слишком высокого ранга и не обслуживает таких как вы.
- «x» — отброшен алгоритмом «пересечения» (intersection algorithm). Алгоритм пересечения подготавливает список кандидатов партнеров, могущих стать источниками синхронизации и вычисляет доверительный интервал для каждого из них.
- «.» — отброшен из-за переполнения таблицы.
- «-« — отброшен алгоритмом кластеризации (cluster algorithm). Алгоритм кластеризации сортирует список кандидатов по кодам слоя и расстояния синхронизации.
- «+» — сервер включён алгоритмом «комбинирования» (combine algorithm). Этот сервер — отличный кандидат если текущий сервер времени начнёт отказывать вам.
- «#» — сервер является отличным альтернативным сервером времени. Сервер с # можно увидеть только если у вас более 10 записей server в /etc/ntp.conf
- «*» — текущий сервер времени. Его показания используются для синхронизации ваших часов.
- «o» — сервер Pulse per second (PPS). Обычно это означает, что данный сервер времени использует источники времени типа GPS спутников и другие сигналы точного времени. Если рисуется о, то другие типы tally code уже отображаться не будут.
В поле refid могут быть следующие значения:
- IP адрес — адрес удалённого сервера времени.
- .ACST.- NTP manycast сервер.
- .ACTS.- Automated Computer Time Service из American National Institute of Standards and Technology.
- .AUTH.- ошибка аутентификации.
- .AUTO.- ошибка в последовательностях Autokey.
- .BCST.- NTP broadcast сервер.
- .CHU.- Shortwave radio receiver от станции CHU в Ottawa, Ontario, Canada.
- .CRYPT.- ошибка протокола Autokey.
- .DCFx.- LF radio receiver от станции DCF77 в Mainflingen, Germany.
- .DENY.- В доступе отказано.
- .GAL.- European Galileo satellite receiver.
- .GOES.- American Geostationary Operational Environmental Satellite receiver.
- .GPS.- American Global Positioning System receiver.
- .HBG.- LF radio receiver от станции HBG в Prangins, Switzerland.
- .INIT.- Peer association initialized.
- .IRIG.- Inter Range Instrumentation Group time code.
- .JJY.- LF radio receiver от станции JJY в Mount Otakadoya, рядом с Fukushima или Mount Hagane на острове Kyushu, Japan.
- .LFx.- Обычный LF radio receiver.
- .LOCL.- локальные часы хоста.
- .LORC.- LF radio receiver от Long Range Navigation (LORAN-C).
- .MCST.- NTP multicast сервер.
- .MSF.- Anthorn Radio Station рядом с Anthorn, Cumbria.
- .NIST.- American National Institute of Standards and Technology.
- .PPS.- часы Pulse per second.
- .PTB.- Physikalisch-Technische Bundesanstalt от Brunswick и Berlin, Germany.
- .RATE.- превышен порог опроса NTP.
- .STEP.- изменение шага NTP. Смещение offset менее 1000 миллисекунд, но более 125 миллисекунд.
- .TDF.- LF radio receiver от станции TéléDiffusion de France в Allouis, France.
- .TIME.- NTP association timeout.
- .USNO.- United States Naval Observatory.
- .WWV.- HF radio receiver от станции WWV в Fort Collins, Colorado, United States.
- .WWVB.- LF radio receiver от станции WWVB в Fort Collins, Colorado, United States.
- .WWVH.- HF radio receiver от станции WWVH в Kekaha, на острове Kauai на Hawaii, United States.
Рекомендации для клиента серверов времени.
Во-первых, избавьтесь от мысли как бы получить время от stratum 1, дескать они ближе всех к точному времени. Они то ближе к точнейшему времени на планете, только сами они перегружены и у них высокие задержки RTT для обычных серверов. Лучше найти нормальный stratum 2 и не переживать по этому поводу. Не забывайте, что речь идёт о микросекундах и миллисекундах, что в обычной жизни — вполне достаточно.
Во-вторых, помните, что подключение к ближайшему серверу времени не всегда идеальный вариант. Важнее не территориальная близость, а уровень stratum. Проект NTP Pool публикует список серверов только уровня stratum 1 и stratum 2 и лучше взять до 10 серверов времени из данного списка, что будет просто замечательно.
В-третьих, если вы простой домашний пользователь-клиент, то рекомендованные вам сервера в вашей операционной системе будут идеальным вариантом, не требующим лишних телодвижений.
Для крупных контор, лучшим вариантом будет поднятие своего сервера времени для рабочих компьютеров. Данный сервер будет получать точное время от серверов времени в Интернете и предоставлять его локальным компьютерам. На серверах Debian и Ubuntu достаточно раскомментировать строку
в конфигурационном файле демона ntpd — /etc/ntp.conf
Пользователи из сети 192.168/16 будут иметь возможность брать с вашего сервера показания точнейших часов. Для внутренних серверов на базе Linux, которые не являются серверами времени и занимаются своими задачами, вместо запуска демона ntpd в клиентском режиме — вполне достаточно указать в файле /etc/cron.daily/syncntpd. Рекомендуется прочесть различия между ntpdate и ntp и решить для себя вопрос.
#!/bin/sh
/usr/sbin/ntpdate IP.адрес.вашего.сервера > /dev/null 2>&1
exit 0
и раз в сутки, благодаря команде ntpdate, будет произведена синхронизация времени. Во избежании недоразумений, не поленитесь перед внедрением сервера времени и синхронизации всего и вся через протокол NTP — выставите вручную правильное время на всех доступных вам серверах и рабочих станциях. Если ваше несинхронизированное время слишком отличается от правильного, то можно вначале огрести много не нужных проблем.
В-четвёртых, NTP никак не связан, в какой стране и какие часовые пояса используются и как происходит переход на летнее и зимнее время и делается ли в данной стране такой переход. Это обязанность лежит на операционной системе, которую вам нужно обновлять, если в стране происходят изменения в часовых делах. В системах Debian и Ubuntu за это отвечает пакет tzdata, который должен быть актуальным.
В-пятых, лучше не поднимать свой NTP сервер на высоконагруженной системе.
Ошибка синхронизации времени windows 7
Компания «Мобатайм Системс» предоставляет возможность воспользоваться своим сервером NTP для получения точного времени. Для настройки синхронизации различных операционных систем, Вы можете воспользоваться инструкциями, которые доступны ниже на этой странице. Адрес сервера: ntp.mobatime.ru Доступ к серверу по протоколу NTP (UDP порт 123) предоставляется бесплатно. Мы будем признательны, если Вы сможете разместить на корпоративном, личном сайте, на форуме баннер, кнопку или ссылку на сайт Mobatime Systems. На сайте ntp.mobatime.ru можно практически в реальном времени наблюдать за нагрузкой на NTP сервер.
Настройка сервера Windows 2003 на синхронизацию времени с сервером NTP Mobatime
Вся настрока выполняется из командной строки. Последовательность действий следующая:
net time /setsntp:имя_ntp_сервера_mobatime — указали, что Windows будет синхронизироваться с этим сервером NTP
net stop w32time && net start w32time — перезапустили службу времени Windows
w32tm /resync — отправили команду для принудительной синхронизации на локальный компьютер
В ответ должны получить следующее:
Команда синхронизации отправлена на local computer.
Команда выполнена успешно.
Через некоторое время проверяем журнал событий системы. Если все настроено верно, то в журнале будет информационное сообщение от источника W32Time с кодом (ID) 35 и текстом Служба времени выполняет синхронизацию системного времени с источником времени имя_ntp_сервера_mobatime
Если возникли какие-то проблемы, то в журнал будет записана ошибка с кодом (ID) 29 от источника W32Time и текстом NTP-клиент поставщика времени настроен на получение времени из одного или нескольких источников, однако ни один из этих источников недоступен. Попытки подключения к источнику не будут выполняться в течение ХХ мин. NTP-клиент не имеет источника правильного времени. В таком случае, убедитесь, что файрвол не блокирует соединения с NTP-сервером по протоколу UDP порт 123. Проверьте, что имя NTP-сервера Mobatime указано верно. Для этого в командной строке выполните
net time /querysntp
В ответ будет выведено имя сервера NTP.
Для определения величины расхождения локального времени и времени любого компьютера в сети, используйте команду
w32tm /stripchart /computer:имя_компьютера
На экран будет выводиться информация о дельте локального времени и времени на имя_компьютера до прерывания работы при помощи Ctrl+C.
Если Ваша сеть с доменами, то клиенты будут автоматически синхронизировать свои часы с контроллером домена. Если Вы не используете в сети доменов, то настраивать клиентов придётся вручную.
Настройка не входящей в домен Windows XP на синхронизацию времени с сервером NTP Mobatime
Настройка WindowsXP, не включённой в домен, выполняется из GUI. Для настройки синхронизации дважды щелкните по часам в трее. Откроется окно свойств даты и времени. Это же окно можно открыть из Пуск — Панель управления — Дата и время. Переключитесь на последнюю вкладку Время Интернета. Обратите внимание на то, что вкладка появится в окне только при подключении к интернету.
Пропишите имя NTP-сервера Mobatime в соответствующем поле и нажмите кнопку Обновить сейчас. Windows проверит доступность сервера NTP и проинформирует об успешной синхронизации времени.
Настройка FreeBSD на синхронизацию времени с сервером NTP Mobatime
Настройка выполняется под рутовой учётной записью.
Для однократной синхронизации можно воспользоваться
ntpdate сервер_NTP_mobatime
Для синхронизации при каждой загрузке FreeBSD пропишите в rc.conf следующее
ntpdate_enable=»YES»
ntpdate_flags=сервер_NTP_mobatime
Этот способ хорошо подходит для машин, которые достаточно часто перезагружаются. Более правильным видится настройка демона ntpd.
Создайте (если не существует) файл /etc/ntp.conf Включите в него следующую строку
server сервер_NTP_mobatime prefer
Аргумент prefer указывает на предпочтение этого сервера перед остальными, т.к. Мобатайм Системс предоставляет Вам доступ к Time Server — серверу NTP, а не к компьютеру с работающим демоном ntpd.
На следующем этапе настройки нужно прописать в rc.conf
ntpd_enable=»YES»
Теперь FreeBSD будет постоянно сверять свои часы с NTP сервером Mobatime.
Код для синхронизации времени
Синхронизация времени: мульти-хост совместной работа, каждая синхронизация времени хоста важна, время несогласованность вызовет много неудач важных приложений, такие как: протокол шифрования, регистрация, кластеризация и т.д., с использованием протокола NTP (Network Time Protocol), так что каждый компьютер в сети время для достижения синхронизации.
В настоящее время NTP эксплуатация и обслуживание инфраструктуры, принадлежащей одному из необходимых базовых услуг протокола.
Синхронизация времени достижения: нтп, Chrony
нтп: в формате UTC синхронизировать системные часы и мировой координации, точность до 0,1 мс в локальной сети, подавляющее большинство мест на точность Интернет может быть достигнуто 1-50ms, официальный сайт проекта: HTTP: //www.ntp.org
Chrony: свобода программного обеспечения протокола NTP. Система позволяет часы NTP — сервер, базовую частоту (например , GPS — приемник) и использование ручного ввода и клавиатуры сверить часы. Могу также служить в качестве NTPv4 (RFC 5905) , сервер и равные операции, компьютер обеспечивает время сетевой службы. Разработанный , чтобы хорошо работать при различных условиях, в том числе и прерывистого высокий перегруженная сеть связи, изменение температуры (чувствительная к температуре компьютер часы), и не может работать или непрерывная система , работающая на виртуальной машине. Типичная точность через Интернет между двумя машинами синхронизированных в течение нескольких миллисекунд, в течение ЛВС, как правило , несколько десятков микросекунд точности. Использование аппаратных средств или аппаратного опорного тактового штампа времени, точность суб-микросекунды может быть достигнута.
Введение Chrony
Chrony преимущества:
- Быстрее синхронизации несколько минут вместо часов времени, тем самым сводя к минимуму время и ошибки частоты, очень полезно для виртуальной машины не работает 24 часа в сутки.
- Лучше иметь возможность реагировать на быстро меняющиеся тактовую частоту, часы очень полезно для виртуальных машин, которые неустойчивы или вызвать тактовая частота изменяется с точки зрения энергосберегающих технологий.
- После начальной синхронизации, она не будет останавливать часы, чтобы предотвратить однообразие держать приложение времени потребности системы могут быть затронуты.
- В ответ на временную асимметричную задержку (например, когда крупномасштабная связь загрузки насыщение причины) обеспечивает лучшую стабильность.
- Нет необходимости опрашивать сервер периодически, так что система содержит прерывистое подключение к сети все еще может быть быстро синхронизированных часов.
Chrony Официальный сайт: HTTPS: //chrony.tuxfamily.org
Chrony официальный документ: https: //chrony.tuxfamily.org/documentation.html
Chrony пакет введен
Две основные программы: chronyd и chronyc
chronyd: демон работает в фоновом режиме, системные часы и часы работы на сервере ядра используются для настройки синхронизации. Это определяет отношение увеличения или уменьшения машинного времени, а также для компенсации
chronyc: инструмент командной строки пользователя для мониторинга разнообразия производительности и конфигурации. Он может работать на экземпляре chronyd с компьютерным управлением, может работать на другом удаленном компьютере
файлы блок обслуживания: /usr/lib/systemd/system/chronyd.service
Listen Port: 323 / УДП, 123 / УДП
Профиль chrony.conf
- Сервер — может использоваться для синхронизации сервера, когда сервер достижим вариант iBurst, передавая пакет вместо обычных восьми из пакета данных. Интервал пакетов обычно составляет 2 секунды, чтобы ускорить скорость начальной синхронизации
- driftfile — рассчитывается по соотношению фактического времени изменения машинного времени, чтобы записать его в файл, то система будет компенсировать часы после перезагрузки
- rtcsync — режим ядра включен, система копирует время до 11 минут каждых часов реального времени (RTC)
- разрешить / запретить — Определяет хост, подсеть или сеть, чтобы разрешить или запретить доступ к серверу
- cmdallow / cmddeny — хозяева, которые могут быть заданы с помощью команды управления с помощью chronyd
- bindcmdaddress — который позволяет chronyd интерфейса монитора для приема команд, выполняемых chronyc
- makestep — в соответствии с требованиями по обычно chronyd замедлить или ускорить часы, так что система постепенно исправить все время смещения. При определенных обстоятельствах, системные часы могут дрейфовать слишком быстро, в результате чего в процессе корректировки потребляет очень много времени, чтобы исправить системные часы. Инструкция chronyd сила при настройке регулировки системных часов больше некоторого порогового значения
- местный слой 10 — даже если сервер время сервер недоступна инструкция, а также позволяет время, когда местный стандарт обратного времени, как для других клиентов
команда chronyc
NTP Public Services
pool.ntp.org: проект должен обеспечить надежный и простой в использовании сервис NTP виртуального кластера cn.pool.ntp.org, 0-3.cn.pool.ntp.org
Али облако общественности NTP сервер
Unix / Linux категория: ntp.aliyun.com, ntp1-7.aliyun.com
категория Окна: time.pool.aliyun.com
Университет НТП служба
s1a.time.edu.cn Пекинского университета и s1c.time.edu.cn Университет Цинхуа, Пекинский университет s1b.time.edu.cn
Сервер National Time Service Center
210.72.145.44
Ntp время для достижения синхронизации
Принцип: хост-клиент и выберите сервер времени для синхронизации других клиентов с этим клиентом для синхронизации времени, потребность клиента в сети, синхронизация в реальном времени с сервером, чтобы сделать более длительный период времени синхронизации НТП.
Настройка клиента и сервера синхронизации времени
Выбранные представители клиента, а также синхронизации времени на стороне сервера, нтп изменить файл конфигурации в файле конфигурации, добавьте IP-адрес сервера, синхронизации по времени (примечание: IP-адрес клиента 192.168.37.7), на этот раз с помощью НПТ 123 это номер порта.
ВИМ /etc/ntp.conf
Ntpd будет принимать услугу от имени синхронизации времени клиента-сервера, чтобы начать, и установите загрузки
Время синхронизации конфигурации с большим количеством клиентов
Настройка время синхронизации на другом клиенте, установить с представителями синхронизации клиента на IP-адрес сервера времени (набор выше клиента подходит к концу IP-адрес, записанный: 192.168.37.7)
ВИМ /etc/ntp.conf
Старт Ntpd службы после установки, и набор для загрузки
Синхронизация времени без интернета
Помимо tcp/ip, существует множество способов синхронизация времени. Некоторые из них требуют лишь наличие обычного телефона, в то время, как другие требуют дорогостоящего, редкого и чувствительного электронного оборудования. Обширная инфраструктура систем синхронизации времени включает в себя обсерватории, государственные институты, радиостанции, спутниковые группировки и многое другое.
Сегодня я расскажу, как устроена синхронизация времени без интернета и как сделать “спутниковый” NTP сервер своими руками.
Радиовещание на коротких волнах
В Соединенных Штатах Америки NIST передает точное время и частоту по 2.5, 5, 10, 15 и 20 МГц радиоволнам со станции WWVH в Форт-Коллинсе, штат Колорадо, и на частотах 2.5, 5, 10 и 15 МГц со станции WWVH в Кауаи, штат Гавайи. Временной код передается через 60-секундный интервал на скорости 1 б/с. с использованием широтно — импульсной модуляции на поднесущей 100 Гц.
Национальный исследовательский совет (NRC) Канады осуществляет распространение временной и частотной информации на 3.33, 7.85 и 14.67 МГц со станции CHU в Оттаве, провинция Онтарио.
Формат вещания WWVH
Распространение сигнала от коротковолновых станций обычно происходит путем отражения от верхних слоев ионосферы. Передачи сигнала могут быть получены на больших расстояниях, однако точность времени составляет порядка одной миллисекунды.
Текущий стандарт NTPv4 включает в себя аудио драйверы для WWV, WWVH и CHU.
Радиовещание на длинных волнах
Позывные и локация | Частота (kHz) | Мощность (kW) |
WWVB Форт-Коллинс, Колорадо, США | 60 | 50 |
DCF77 Mainflingen, Germany | 77.5 | 30 |
MSF Rugby, United Kingdom | 60> | 50 |
HBG Prangins, Switzerland | 75 | 20 |
JJY Fukushima, Japan | 40 | 50 |
JJY Saga, Japan | 60 | 50 |
Низкочастотные Станции Стандартного Времени
Временной код передается через 60-секундный интервал на скорости 1 б/с, точно так же, как на коротковолновых станциях. Форматы передачи данных тоже сходны для обоих стандартов. Распространение сигнала происходит через нижние слои ионосферы, которые относительно стабильны и имеют предсказуемые суточные колебания высоты. Благодаря этой предсказуемости физической среды точность повышается до 50 μs.
Формат вещания WWVB
Геостационарный эксплуатационный спутник наблюдения за окружающей средой
В США NIST также передает данные о точном времени и частоте примерно на 468 МГц с геостационарных эксплуатационных спутников окружающей среды (GOES). Временной код чередуется с сообщениями, используемыми для опроса удаленных датчиков. Он состоит из 60 BCD полубайтов, передаваемых с интервалом в 30 с. Информация временного кода аналогична наземным службам.
Системы глобального позиционирования
Министерство обороны США использует GPS для точной навигации на суше, на море и в воздухе. Эта система обеспечивает 24-часовой охват земного шара с помощью группировки спутников на 12-часовых орбитах, наклоненных под углом 55°.
Первоначальная группировка из 24 спутников была расширена до 31 спутника в неоднородной конфигурации, так что по крайней мере 6 спутников всегда находятся в поле зрения, а 8 или более спутников находятся в поле зрения в большей части света.
Услуги, подобные GPS, эксплуатируются или планируются другими странами. Российский ГЛОНАСС работает уже с десяток лет, если считать со 2 сентября 2010 года, когда общее количество спутников было доведено до 26 — группировка была полностью развёрнута для полного покрытия Земли.
Спутники GPS вокруг земного шара.
Спутниковая система навигации Европейского Союза называется «Галилео». Ожидалось, что «Галилео» начнет работать в 2014—2016 годах, когда на орбиту будут выведены все 30 запланированных спутников Но на 2018 год спутниковая группировка «Галилео» так и не достигла необходимого количества аппаратов.
Есть еще китайский «Бэйдооу», что в переводе означает «кит». Группировка в составе 16 спутников была запущена в коммерческую эксплуатацию 27 декабря 2012, в качестве региональной система позиционирования. Планируется, что на полную мощность система выйдет к 2020 году. Как раз сегодня, на Хабре вышла статья, про успешный запуск спутника этой системы.
Математика определения координат по СРНС
Как GPS/Глонасс навигатор на вашем смартфоне определяет местоположение с такой точностью с помощью системы радионавигационной связи (СРНС)? Чтобы понять принцип расчетов нужно вспомнить стереометрию и алгебру в пределах старших классов средней, или физмат школы.
Каждый спутник сообщает приемнику точное время. На спутнике установлены атомные часы и поэтому им можно верить. Зная скорость света нетрудно определить радиус сферы на поверхности которой находится спутник. Это же сфера соприкасаясь с Землей образует круг, на котором находится GPS / Глонасс приемник.
Когда сигнал приходит с двух спутников, мы уже имеем пересечение Земли и двух сфер, что дает лишь две точки на круге. Сфера третьего спутника в идеале должна попасть в одну из этих двух точек, окончательно определив координаты приемника.
В принципе даже с двух спутников по косвенным признакам можно понять, какая из двух точек ближе к истине и современные алгоритмы навигационного программного обеспечения могут справиться с такой задачей. Зачем же тогда нам нужен четвертый спутник?
Определение местоположения с помощью спутниковой группировки.
Нетрудно заметить, что в этой идеализированной картине есть много нюансов, от которых зависит точность расчетов. Время на приёмнике, пожалуй самый очевидный источник погрешностей. Для того, чтобы все заработало как надо время GPS / Глонасс приёмника должны быть синхронизированы со временем спутника. Без этого погрешность составила бы ∓ 100 тыс. км.
Из формулы скорости, времени и расстояния S = v*t получаем базовое уравнение для передачи сигнала СРНС. Расстояние до спутника равно произведению скорости света на разницу времени на спутнике и приёмнике.
Главным образом это происходит вследствие того, что даже после всех синхронизаций время на приёмнике tпр мы знаем с достаточной степенью точности. Между истинным временем и tпр всегда будет существовать Δt, из-за которой погрешность вычислений становится неприемлема. Вот почему нужен четвертый спутник.
Для более ясного математического обоснования необходимости четырех спутников построим систему уравнений.
Для определения четырех неизвестных x, y, z, и Δt необходимо, чтобы число наблюдений равнялось или было больше, чем число неизвестных. Это необходимое, но недостаточное условие. Если матрица нормальных уравнений окажется вырожденной, у системы уравнений не будет решения.
Не стоит также забывать про Специальную Теорию Относительности и релятивистские эффекты с замедлением времени на спутниковых атомных часах относительно наземных.
Если считать, что спутник движется по орбите со скоростью 14 тыс. км./ч., то получаем замедление времени около 7 μс (микросекунд). С другой стороны действуют релятивистские эффекты Общей Теории Относительности.
Дело вот в чем, спутники на орбитах находятся на большом расстоянии от Земли, где кривизна пространственно-временного континуума меньше, чем на земной поверхности из-за массы Земли. Согласно ОТО ход часов, расположенных ближе к массивному объекту, будет казаться медленнее, чем тех, что находятся дальше от него.
- G — гравитационная постоянная;
- M — масса объекта, в данном случае Земли;
- r — расстояние от центра Земли до спутника;
- c — скорость света.
В прикладных задачах определения местоположения с помощью СРНС следует также принять во внимание ионосферные и тропосферные задержки. Помимо того, корректировки 46 ns связаны c эксцентричностью 0.02 орбиты спутников GPS.
Возможность получать сигналы одновременно более чем с четырех спутников GPS / ГЛОНАСС позволяет еще больше увеличить точность определения координат приёмника. Это достигается за счет того, что навигатор решает систему их четырех уравнений с четырьмя неизвестными число раз и берет среднее значение, повышая точность итоговой оценки согласно законам математической статистики.
Как настроить NTP сервер Stratum 1 по спутниковой связи
Для настройки высококачественного сервера времени необходимо всего лишь GPSD, NTP и GPS-приёмник, с выходом 1PPS (один импульс в секунду).
1. Установите gpsd и ntpd, либо gpsd и chronyd. Версия gpsd должна быть ≥ 3.20
2. Подключите GPS-приёмник с поддержкой PPS к последовательному RS232 или USB порту.
Обычный дешевый GPS-приемник не подойдет; возможно, придется немного побегать, чтобы найти подходящий.
3. Убедитесь, что устройство действительно выдаёт PPS, для этого проверьте порт утилитой gpsmon.
4. Откройте файл /etc/conf.d/gpsd и отредактируйте следующую строку.
так, чтобы стало
Это изменение требуется для того, чтобы gpsd при старте сразу же начинал поиск источников СРНС.
5. Запустите, или перезапустите gpsd.
Для дистрибутивов с systemd, используйте соответствующую команду systemctl.
6. Проверьте консольный вывод команды cgps.
Нужно удостовериться в том, что данные исправно поступают со спутников. В консоли должно быть нечто схожее с иллюстрацией.
Вывод консольной команды cgps.
7. Настало время отредактировать файл /etc/ntp.conf.
Верхняя запись NTP0 указывает на универсальный источник времени, доступный почти на всех устройствах GPS. Нижняя запись NTP1 определяет гораздо более точный PPS источник.
8. Перезапустить ntpd.
Для дистрибутивов с systemd, используйте команду systemctl.
$ sudo systemctl restart ntp