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

17

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

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

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

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

    
задан David Pfeffer 16.05.2012 в 00:57
источник

8 ответов

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 18.01.2014 в 01:02
источник
7

Мой опыт связан с 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 часов. Я не пробовал это сам.

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

    
ответ дан John S Gruber 16.05.2012 в 18:05
4

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

ответ дан tm23 16.05.2012 в 03:13
3

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

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

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

    
ответ дан James Henstridge 16.05.2012 в 05:20
2

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

    
ответ дан Pridkett 16.05.2012 в 01:48
2

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

Ссылка

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

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

  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. Вставьте приемник радиочасов в встроенную машину. Я почти ничего не знаю об этом, но такие продукты:

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

ответ дан Jay _silly_evarlast_ Wren 16.05.2012 в 01:25
1

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

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

    
ответ дан BigWhale 16.05.2012 в 01:19
1

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

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

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

    
ответ дан msw 16.05.2012 в 13:53