Bagaimana cara menyesuaikan tingkat jajak pendapat NTP?

17

Saya mengatur Ubuntu pada mesin tertanam yang berjalan melalui koneksi seluler, tempat kami membayar per byte. Mesin juga tidak memiliki baterai RTC, jadi itu dimulai dari waktu acak setiap boot.

Saya ingin memastikan bahwa waktu akan disinkronkan ketika koneksi seluler tersedia sehingga pesan log, dll memiliki waktu nyata, tetapi saya juga tidak ingin membayar lengan dan kaki untuk lalu lintas NTP.

Bisakah saya mengkustomisasi kurs di mana NTP memperbarui waktu? Saya menggunakan openntpd saat ini, tapi saya tidak menganutnya.

Internet belum tentu aktif saat boot, jadi ntupdate dan terkait saat startup tidak akan berfungsi. Dan penjadwalan melalui cron berarti menunggu tugas yang dijadwalkan untuk memulai, sedangkan saya ingin daemon waktu untuk mendapatkan sinkronisasi waktu ASAP.

David Pfeffer
sumber

Jawaban:

5

Beberapa jawaban ini dapat memenangkan kontes konfigurasi ntp yang dikaburkan.

Gunakan implementasi referensi ntp dan gunakan iburst untuk mengatur waktu dengan cepat saat booting. Setelah itu, Anda dapat menggunakan perintah minpoll untuk membatasi seberapa sering ntpd menanyakan server waktu jauh. Ini akan memungkinkan Anda untuk mengambil keuntungan dari disiplin ntpd clock dan menjaga bandwidth tetap rendah.

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 adalah alternatif yang baik untuk implementasi referensi ntp. Openntpd tidak.

dfc
sumber
8

Pengalaman saya dengan ntp daripada openntpd.

Anda harus tahu bahwa protokol NTP biasanya dimulai dengan mengirim paket setiap menit (64 detik), tetapi biasanya diterima dengan mengirim dan menerima satu paket setiap 17 menit untuk setiap server yang Anda miliki di file /etc/ntp.conf Anda. Namun, pemadaman jaringan atau jam yang tidak stabil di perangkat Anda dapat meningkatkan ini. Setiap paket memiliki muatan sekitar 68 byte, jadi itu mungkin sedikit lebih dari 100 byte, setiap jalan, per jajak pendapat.

Tanggal dan ntpdate pada waktu jaringan up adalah ide bagus untuk mengatur waktu. Dan jika itu yang Anda butuhkan harus bekerja dengan baik untuk Anda.

Namun, jika Anda perlu menyinkronkan waktu untuk waktu yang lama, protokol ntp dirancang untuk melakukan itu. Jam di perangkat Anda akan berjalan sedikit cepat atau lambat tergantung pada seberapa hangat atau dinginnya, meskipun mungkin memiliki jam yang dikendalikan kristal - dan ketepatan waktu yang sedang berlangsung dimaksudkan untuk menyesuaikan untuk itu.

Berikut adalah beberapa saran jika Anda membutuhkan ketepatan waktu yang sedang berlangsung dan ingin mengurangi bandwidth yang digunakan. Mereka merujuk item di ntp.conf.

Jangan gunakan iburst. (Tetapi akan membutuhkan lebih banyak waktu untuk mengatur waktu awalnya).

Naikkan minpoll ke atas dari 6 (2 ^ 6 detik adalah 64 detik). Ini mengurangi lalu lintas ketika protokol dimulai setelah jaringan muncul.

Tingkatkan maxpoll ke atas dari 10 (2 ^ 10 detik adalah 1024 detik atau sekitar setiap 17 menit. Anda dapat mencapai 17 polling setiap 36 jam. Saya belum mencobanya sendiri.

Gunakan hanya jumlah minimum server, jika Anda memiliki satu yang dapat dipercaya dari perangkat yang disematkan, itu akan sangat bagus. Semakin banyak server semakin dapat diandalkan waktu, tetapi lalu lintas meningkat, sehingga merupakan trade off.

John S Gruber
sumber
3

Pada instalasi default Ubuntu, daemon NTP tidak berjalan. Sebagai gantinya, waktu diatur setiap kali antarmuka jaringan dibawa oleh /etc/network/if-up.d/ntpdatehook.

Jika Anda lebih memilih sinkronisasi satu kali daripada sinkronisasi konstan, maka ini mungkin cukup untuk Anda.

Anda dapat mengontrol server mana yang diminta untuk mengatur waktu baik melalui /etc/ntp.conffile standar , atau melalui NTPSERVERSvariabel dalam /etc/default/ntpdate.

James Henstridge
sumber
2

Apakah Anda memerlukan sinkronisasi yang tepat dan tepat yang disediakan ntp? Jika tidak, Anda mungkin bisa lolos menggunakan rdateatau ntpdatesaat boot dan kemudian secara berkala melalui cron.

Pridkett
sumber
2

Anda mungkin sudah membaca halaman manual openntpd.

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

Anda mungkin sudah memperhatikan kurangnya pilihan polling untuk waktu.

Saya memiliki kemungkinan peretasan ini untuk diusulkan:

  1. Jangan gunakan ntpd, panggil ntpdate melalui cron.
  2. Gunakan cron dan / atau skrip koneksi seluler Anda untuk mengubah aturan iptables untuk menjatuhkan atau mengizinkan lalu lintas port 123 saat Anda ingin memperbolehkannya. Ini bisa sesederhana

    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. Sematkan penerima jam radio di mesin tertanam Anda. Saya hampir tidak tahu tentang ini tetapi produk-produk seperti ini:

membuat saya berpikir bahwa tidak sulit jika Anda dapat menerima sinyal radio.

Jay _silly_evarlast_ Gelatik
sumber
1
Jika Anda akan menambahkan perangkat keras mengapa merekomendasikan jam radio dan tidak menambahkan GPS dengan PPS?
dfc
@dfc poin bagus. OP, Pertimbangkan perangkat keras GPS untuk mendapatkan waktu.
Jay _silly_evarlast_ Wren
1
Untuk $ 50 (Tentu GPS itu sangat bagus) dan beberapa solder saya punya server waktu 1 strata di kamar tidur cadangan. Saya memiliki antena GPS Tentu yang duduk di jendela diblokir oleh maple raksasa dan rumah lain dan itu bekerja dengan baik.
dfc
@dfc dapatkah Anda menautkan ke perangkat keras dan perangkat lunak mana yang Anda gunakan dengan perangkat keras?
Jay _silly_evarlast_ Wren
1
@Jay_silly_everlast_Wren Perangkat Lunak: implementasi referensi ntp www.ntp.org Board: sureelectronics.net/goods.php?id=99 Beberapa diskusi: satsignal.eu/ntp/Sure-GPS.htm dan lists.ntp.org/pipermail/questions /2011-March/028854.html Ada banyak lagi. Jangan takut dengan solder. Ini adalah kali pertama saya menyolder dan mudah. Milis pertanyaan ntp penuh dengan orang-orang yang telah menggunakan papan pasti dan sangat senang dengan itu.
dfc
1

Jika saya ingat dengan benar, interval polling ntp dapat diatur ke maksimum 1024 detik. Mungkin solusi paling sederhana adalah menjalankan ntpdate di setiap boot dan nanti setiap sekarang dari crontab.

Jika jam Anda dimulai dengan waktu acak di setiap boot, maka Anda mungkin tidak akan dapat menjalankan ntpd dan Anda harus menggunakan ntpdate terlebih dahulu. Ntpd menolak untuk menyinkronkan waktu jika perbedaannya terlalu besar antara jam Anda dan jam server.

BigWhale
sumber
+1 untuk info tentang ntp yang menolak untuk disinkronkan jika arus terlalu besar
David Pfeffer
ntpdate tidak digunakan lagi karena ada opsi ntpdyang akan menangani kasus penggunaan ini dengan lebih baik daripada yang cronbisa eecis.udel.edu/~mills/ntp/html/ntpdate.html
msw
1

NTP, seperti TCP, memiliki beberapa Teori Deep dan Pengalaman Praktis yang dibangun ke dalam protokol; jika Anda mengubah parameter fundamentalnya, ia berhenti memiliki sifat sinkronisasi yang dirancang untuknya.

Jika perangkat Anda terhubung secara sporadis, mungkin RDATE lama yang baik akan memberikan Anda yang terbaik. Itu tidak menangani jam-slewing, atau rata-rata rekan, juga tidak bisa diamankan terhadap berbagai hacks halus bahwa seorang pria di tengah bisa bermain jika itu layak sementara. Itu hanya mendapat tanggal referensi dari server jauh dan memukul jam lokal dengan palu. Tetapi, ia melakukannya ketika Anda menginginkannya, dan perilakunya bersifat deterministik.

Akurasi RDATE jauh lebih buruk daripada yang diberikan NTP, saya tidak akan mempercayainya lebih dari ± 1 detik, tetapi jika Anda hanya terpasang secara sporadis, waktu yang lebih akurat tidak relevan; memang, menurut relativitas itu bahkan mungkin tidak bermakna.

msw
sumber
0

Untuk membuat minpool/ maxpooldipertimbangkan, Anda harus menambahkan kemudian per server di ntp.conf.

Sangat tidak disarankan untuk mengacaukan deamon NTP (memiliki built in mathod untuk mengoptimalkan frekuensi) tetapi Anda perlu menambahkan opsi ini seperti ini:

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

Di sini, jika mengatur frekuensi min ke 2 ^ 12 detik, dan maks ke 2 ^ 17 detik.

Secara default, saya menemukan bahwa NTP akan membuat permintaan setiap menit. Itu terlalu banyak. Di sini saya mengurangi frekuensinya dari satu jam sekali menjadi satu hari (dengan penuh semangat).

le hollandais volant
sumber