Как настроить частоту опроса NTP?

17

Я устанавливаю Ubuntu на встроенную машину, которая работает через сотовую связь, где мы платим за байт. Машина также не имеет батареи RTC, поэтому она запускается со случайного времени при каждой загрузке.

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

Могу ли я настроить скорость, с которой NTP обновляет время? Я использую openntpd в настоящее время, но я не привязан к нему.

Интернет не обязательно загружается при загрузке, поэтому ntupdate и связанные с ним при запуске не будут работать. А планирование через cron означает ожидание запуска запланированной задачи, тогда как я хочу, чтобы демон времени получил синхронизацию времени как можно скорее.

Дэвид Пфеффер
источник

Ответы:

5

Некоторые из этих ответов могут победить в запутанном конкурсе по настройке ntp.

Используйте эталонную реализацию ntp и используйте iburst, чтобы быстро установить время после загрузки. После этого вы можете использовать директиву minpoll, чтобы ограничить частоту запросов ntpd к удаленным серверам времени. Это позволит вам воспользоваться дисциплиной часов ntpd и снизить пропускную способность.

minpoll minpoll
maxpoll maxpoll
    These options specify the minimum and maximum poll intervals for NTP 
    messages, in seconds as a power of two. The maximum poll interval 
    defaults to 10 (1024 s), but can be increased by the maxpoll option to 
    an upper limit of 17 (36 h). The minimum poll interval defaults to 6 (64 s), 
    but can be decreased by the minpoll option to a lower limit of 3 (8 s).

Chrony - хорошая альтернатива эталонной реализации ntp. Openntpd нет.

DFC
источник
8

Мой опыт с ntp, а не с openntpd.

Вы должны знать, что протокол NTP обычно начинается с отправки пакетов каждую минуту (64 секунды), но обычно устанавливается путем отправки и получения одного пакета каждые 17 минут для каждого сервера, который есть в вашем файле /etc/ntp.conf. Однако сбои в работе сети или нестабильные часы в вашем устройстве могут увеличить это. Каждый пакет имеет полезную нагрузку около 68 байтов, так что это, вероятно, чуть более 100 байтов, в каждом случае, за опрос.

Rdate и ntpdate во время подключения к сети являются хорошими идеями для установки времени. И если это все, что вам нужно, должно хорошо работать для вас.

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

Вот несколько советов, если вам нужно постоянное хронометраж и вы хотите уменьшить используемую пропускную способность. Они ссылаются на элементы в ntp.conf.

Не используйте iburst. (Но это займет больше времени, чтобы установить время изначально).

Увеличьте minpoll вверх с 6 (2 ^ 6 секунд - 64 секунды). Это уменьшает трафик при запуске протокола после запуска сети.

Увеличьте maxpoll вверх с 10 (2 ^ 10 секунд - это 1024 секунды или примерно каждые 17 минут. Вы можете пройти до 17, чтобы опросить примерно каждые 36 часов. Я сам не пробовал.

Используйте только минимальное количество серверов, если бы у вас был один, к которому можно было бы надежно подключиться со встроенных устройств, это было бы здорово. Чем больше серверов, тем надежнее может быть отсчет времени, но трафик увеличивается, поэтому это компромисс.

Джон С. Грубер
источник
3

При установке Ubuntu по умолчанию демон NTP не запускается. Вместо этого время устанавливается каждый раз, когда сетевой интерфейс вызывается с помощью /etc/network/if-up.d/ntpdateловушки.

Если вам нужна синхронизация разового времени, а не постоянная синхронизация, этого может быть достаточно для вас.

Вы можете контролировать, какие серверы запрашиваются для установки времени, либо через стандартный /etc/ntp.confфайл, либо через NTPSERVERSпеременную in /etc/default/ntpdate.

Джеймс Хенстридж
источник
2

Вам нужна точная и точная синхронизация, которую обеспечивает ntp? Если нет, вы можете избежать использования rdateили ntpdateпри загрузке, а затем периодически через cron.

Pridkett
источник
2

Вы, наверное, уже читали справочную страницу openntpd.

http://www.openbsd.org/cgi-bin/man.cgi?query=ntpd.conf

Вы, наверное, уже заметили отсутствие опроса времени.

У меня есть эти возможные хаки, чтобы предложить:

  1. Не используйте ntpd, просто вызовите ntpdate через cron.
  2. Используйте cron и / или ваши скрипты сотовой связи, чтобы переключать правила iptables, чтобы сбрасывать или разрешать трафик порта 123, когда вы хотите это разрешить. Это может быть так просто, как

    0 12 * * * iptables -D OUTPUT -j DROP -p udp --dport 123 # at noon start allowing ntp

    0 13 * * * iptables -A OUTPUT -j DROP -p udp --dport 123 # at 1pm stop allowing ntp

  3. Вставьте радиоприемник в ваш встроенный компьютер. Я почти ничего не знаю об этом, но такие продукты:

Заставьте меня думать, что это не сложно, если вы можете получить радиосигнал.

Джей _silly_evarlast_ Рен
источник
1
Если вы собираетесь добавить оборудование, зачем рекомендовать радио-часы, а не добавлять GPS с PPS?
dfc
@dfc хороший момент. OP, рассмотрим оборудование GPS, чтобы получить время.
Джей _silly_evarlast_ Рен
1
За 50 долларов (конечно, GPS это очень выгодно) и некоторую пайку, у меня есть страт 1 сервер времени в запасной спальне. У меня антенна Sure GPS сидит в окне, заблокированном гигантским кленом и другим домом, и она работает хорошо.
1917 года
@dfc можете ли вы дать ссылку на оборудование и какое программное обеспечение вы используете с оборудованием?
Джей _silly_evarlast_ Рен
1
@Jay_silly_everlast_Wren Программное обеспечение: эталонная реализация ntp www.ntp.org Правление: sureelectronics.net/goods.php?id=99 Пара обсуждений: satsignal.eu/ntp/Sure-GPS.htm и lists.ntp.org/pipermail/questions /2011-March/028854.html Есть еще много чего. Не пугайтесь пайки. Это была моя первая пайка, и это было легко. Список рассылки вопросов ntp полон людей, которые использовали верную доску и очень довольны ею.
декабря
1

Если я правильно помню, интервал опроса ntp может быть установлен максимум на 1024 секунды. Возможно, самым простым решением было бы запускать ntpdate при каждой загрузке, а затем время от времени из crontab.

Если ваши часы запускаются со случайным временем при каждой загрузке, то вы, вероятно, не сможете запустить ntpd в любом случае, и вам придется сначала использовать ntpdate. Ntpd отказывается синхронизировать время, если разница между вашими часами и часами сервера слишком велика.

BigWhale
источник
+1 за информацию о том, что ntp отказывается синхронизироваться, если дрейф слишком велик
Дэвид Пфеффер
ntpdate не рекомендуется в пользу опций, ntpdкоторые будут обрабатывать этот вариант использования лучше, чем cronможет eecis.udel.edu/~mills/ntp/html/ntpdate.html
msw
1

NTP, как и TCP, имеет некоторые глубокие теории и практический опыт, встроенные в протокол; если вы измените его основные параметры, он перестанет иметь свойства синхронизации, для которых он был разработан.

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

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

MSW
источник
0

Для того, чтобы minpool/ maxpoolбыл принят во внимание, вы должны добавить затем на сервер в вашем ntp.conf.

Не очень рекомендуется связываться с NTP-демоном (он имеет встроенный метод для оптимизации частоты), но вам нужно будет добавить эти опции, например:

server time.google.com iburst minpoll 12 maxppol 17
server ntp.ubuntu.com iburst minpoll 12 maxppol 17
server europe.pool.ntp.org iburst minpoll 12 maxppol 17

Здесь, если установить минимальную частоту вращения 2 ^ 12 секунд, а максимальную - 2 ^ 17 секунд.

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

Le Hollandais Volant
источник