Як налаштувати рівень опитування 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 - ні.


8

Мій досвід стосується ntp, а не openntpd.

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

Оновлення та ntpdate під час роботи мережі - це хороші ідеї для встановлення часу. І якщо це все, що вам потрібно, вам слід добре працювати.

Якщо вам потрібно тримати час синхронізованим протягом тривалого часу, проте, протокол ntp був розроблений для цього. Годинник у вашому пристрої буде працювати трохи швидко або повільно залежно від того, наскільки він теплий чи прохолодний, хоча він, мабуть, має кришталево керований годинник - і для цього потрібно попрацювати триваючу хронологію.

Ось декілька пропозицій, якщо вам потрібно постійно проводити час і хочете зменшити використану пропускну здатність. Вони посилаються на елементи в ntp.conf.

Не використовуйте iburst. (Але спочатку буде потрібно більше часу, щоб встановити час).

Збільшити мінпол опитування вгору з 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змінну в /etc/default/ntpdate.


2

Вам потрібна точна і точна синхронізація, яку забезпечує ntp? Якщо ні, то, можливо, ви зможете піти з використанням rdateабо ntpdateпід час завантаження, а потім періодично через cron.


2

Ви, мабуть, вже прочитали сторінку openntpd man.

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

змусити мене думати, що це не важко, якщо ти можеш приймати радіосигнал.


1
Якщо ви збираєтеся додати обладнання, то чому рекомендувати радіо-годинник, а не додавати GPS з PPS?
dfc

@dfc хороший момент. ОП, розгляньте обладнання для GPS, щоб отримати час.
Jay _silly_evarlast_ Wren

1
За 50 доларів (звичайно, GPS це велика справа) і деякі пайки у мене є сервер із шаром 1 раз у запасній спальні. У мене звичайна антена GPS сидить у вікні, заблокованому гігантським кленом та іншим будинком, і це працює добре.
dfc

@dfc Ви можете зв’язати обладнання та яке програмне забезпечення, яке ви використовуєте з цим обладнанням?
Jay _silly_evarlast_ Wren

1
@Jay_silly_everlast_Wren Програмне забезпечення: реалізація посилань на ntp www.ntp.org Рада: sureelectronics.net/goods.php?id=99 Пара дискусій: satsignal.eu/ntp/Sure-GPS.htm та liste.ntp.org/pipermail/questions /2011- березня/028854.html Є ще багато. Не лякайтеся паяння. Це був мій перший пай, і це було легко. Список розсилки ntp питань переповнений людьми, які користувались надійною дошкою та дуже задоволені нею.
dfc

1

Якщо я добре пам’ятаю, інтервал опитування ntp може бути встановлений на максимум 1024 секунди. Можливо, найпростішим рішенням було б запустити ntpdate при кожному завантаженні, а потім раз у раз із crontab.

Якщо ваш годинник починається з випадкового часу під час кожного завантаження, ви, ймовірно, не зможете запустити ntpd у будь-якому випадку, і вам доведеться спочатку використовувати ntpdate. Ntpd відмовляється синхронізувати час, якщо різниця занадто велика між вашим годинником та годинником серверів.


+1 за інформацію про ntp, що відмовляється синхронізувати, якщо дрейф занадто великий
Девід Пфеффер

ntpdate застаріло на користь варіантів, з ntpdякими обробляти цей випадок використання краще, ніж cronможе eecis.udel.edu/~mills/ntp/html/ntpdate.html
msw

1

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

Якщо ваш пристрій спорадично підключений, можливо, старий добрий RDATE послужить вам найкраще. Він не справляється з обертанням годинника, ані з однорідним усередненням, а також не може бути захищений від різних тонких хак, які міг би зіграти чоловік, що стоїть у середині, якби він того вартий свого часу. Він просто отримує довідкову дату з віддаленого сервера і молотить місцевий годинник молотком. Але це робить це тоді, коли ви цього хочете, і його поведінка є детермінованою.

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


0

Для того, щоб minpool/ maxpoolвзяти до уваги, потрібно додати потім кожен сервер у своєму ntp.conf.

Дуже не рекомендується возитися з деманом NTP (у нього є вбудований mathod для оптимізації частоти), але вам потрібно буде додати такі параметри, як цей:

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 буде запитувати щохвилини або близько того. Це занадто багато. Тут я зменшив частоту з одного разу на годину до одного разу на день (грубо).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.