TIMEMASTER(8) System Manager's Manual TIMEMASTER(8)

timemaster - ابزار همگام‌سازی زمان سیستم با استفاده از NTP و PTP

timemaster [ -nmqv ] [ -l print-level ] -f file

برنامه timemaster ابزاری است که از ptp4l و phc2sys در ترکیب با chronyd یا ntpd برای همگام‌سازی ساعت سیستم با منابع زمانی NTP و PTP استفاده می‌کند. زمان PTP توسط phc2sys و ptp4l از طریق ساعت مرجع SOCK به chronyd یا ساعت مرجع SHM به ntpd ارائه می‌شود، که می‌توانند تمام منابع زمانی را مقایسه کرده و از بهترین منابع برای همگام‌سازی ساعت سیستم استفاده نمایند.

در هنگام شروع، timemaster یک فایل پیکربندی را می‌خواند که منابع زمانی NTP و PTP را مشخص می‌کند، بررسی می‌کند کدام رابط‌های شبکه دارای ساعت سخت‌افزاری PTP (PHC) مشترک هستند، فایل‌های پیکربندی را برای ptp4l و chronyd/ntpd تولید می‌کند و در صورت نیاز فرآیندهای ptp4l، phc2sys و chronyd/ntpd را آغاز می‌کند. سپس، منتظر دریافت سیگنال می‌ماند تا فرآیندها را متوقف کرده، فایل‌های پیکربندی تولیدشده را حذف کند و خارج شود.

مسیر فایل پیکربندی timemaster را مشخص می‌کند.
برنامه‌ها را اجرا نمی‌کند؛ تنها فایل‌های پیکربندی آن‌ها و دستوراتی را که در صورت عدم تعیین این گزینه اجرا می‌شدند، چاپ می‌کند.
حداکثر سطح syslog پیام‌هایی را که باید در خروجی چاپ شوند یا به سیستم ثبت وقایع (syslog) ارسال گردند، تعیین می‌کند. مقدار پیش‌فرض 6 (LOG_INFO) است.
پیام‌ها را در خروجی استاندارد چاپ می‌کند.
پیام‌ها را به سیستم ثبت وقایع ارسال نمی‌کند.
نسخه نرم‌افزار را چاپ کرده و خارج می‌شود.
پیام راهنما را نمایش داده و خارج می‌شود.

فایل پیکربندی به بخش‌های مختلفی تقسیم می‌شود. هر بخش با خطی شامل نام آن در میان براکت‌ها آغاز شده و در ادامه تنظیمات مربوطه قرار می‌گیرند. هر تنظیم در یک خط جداگانه قرار دارد و شامل نام گزینه و مقدار آن است که با نویسه‌های فاصله از یکدیگر جدا شده‌اند. خطوط خالی و خطوطی که با # شروع می‌شوند نادیده گرفته خواهند شد.

بخش‌هایی که می‌توانند در فایل پیکربندی استفاده شوند و گزینه‌هایی که می‌توان در آن‌ها تنظیم کرد، در زیر شرح داده شده‌اند.

پیاده‌سازی NTP مورد نظر را انتخاب می‌کند. مقادیر مجاز chronyd و ntpd هستند. مقدار پیش‌فرض chronyd است. محدودیت‌های این پیاده‌سازی‌ها که مرتبط با پیکربندی timemaster هستند در بخش نکات (NOTES) فهرست شده است.
دایرکتوری محل ایجاد فایل‌های پیکربندی و سوکت‌های chronyd، ntpd و ptp4l را مشخص می‌کند. اگر این دایرکتوری وجود نداشته باشد، ایجاد خواهد شد. مقدار پیش‌فرض /var/run/timemaster است.
شماره نخستین قطعه از توالی قطعات حافظه مشترک (SHM) را که توسط ptp4l و phc2sys استفاده خواهند شد، مشخص می‌کند. مقدار پیش‌فرض 0 است. افزایش این شماره می‌تواند برای جلوگیری از تداخل با منابع زمانی که توسط timemaster راه‌اندازی نشده‌اند (به عنوان مثال gpsd که از قطعات شماره 0 و 1 استفاده می‌کند) مفید باشد.
راه‌اندازی مجدد فرآیندهای آغازشده توسط timemaster را فعال یا غیرفعال می‌کند. اگر این گزینه روی یک مقدار غیر صفر تنظیم شود، تمامی فرآیندها به‌جز chronyd و ntpd در صورت خاتمه یافتن، و به شرطی که timemaster حداقل برای یک ثانیه در حال اجرا بوده باشد (یعنی فرآیند به دلیل خطای پیکربندی متوقف نشده باشد)، به‌طور خودکار دوباره راه‌اندازی می‌شوند. اگر فرآیندی خاتمه یابد و دوباره راه‌اندازی نشود، timemaster سایر فرآیندها را متوقف کرده و با وضعیت خروجی غیر صفر خارج می‌شود. مقدار پیش‌فرض 1 (فعال) است.
همگام‌سازی با ساعت‌های مجازی را فعال یا غیرفعال می‌کند. در صورت فعال بودن، timemaster ساعت‌های مجازی را در حال اجرا بر روی ساعت‌های فیزیکی مورد نیاز دامنه‌های PTP پیکربندی‌شده ایجاد می‌کند. این کار ثبت مهر زمانی سخت‌افزاری را برای چندین نمونه ptp4l که از یک رابط شبکه مشترک استفاده می‌کنند، امکان‌پذیر می‌سازد. مقدار پیش‌فرض -1 است که در صورت اجرا بر روی لینوکس 5.18 یا جدیدتر، ساعت‌های مجازی را فعال می‌کند.

بخش ntp_server یک سرور NTP را مشخص می‌کند که باید به عنوان منبع زمان استفاده شود. نشانی سرور در نام بخش گنجانده می‌شود.

حداقل و حداکثر فاصله زمانی نظرسنجی پروتکل NTP را به عنوان توان‌هایی از دو بر حسب ثانیه مشخص می‌کند. مقادیر پیش‌فرض به ترتیب 6 (64 ثانیه) و 10 (1024 ثانیه) هستند. فواصل زمانی نظرسنجی کوتاه‌تر معمولاً دقت را به‌طور چشمگیری بهبود می‌بخشند، اما فقط زمانی باید استفاده شوند که گردانندگان سرویس NTP اجازه داده باشند (سرورهای عمومی NTP عموماً اجازه پرس‌وجوهای بسیار مکرر را نمی‌دهند). اگر سرور NTP در همان شبکه محلی (LAN) قرار دارد، فواصل زمانی نظرسنجی حدود 4 (16 ثانیه) ممکن است بهترین دقت را ارائه دهند.
ارسال یک رگبار از بسته‌های NTP در هنگام راه‌اندازی برای سرعت بخشیدن به همگام‌سازی اولیه را فعال یا غیرفعال می‌کند. مقادیر ممکن 1 و 0 هستند. مقدار پیش‌فرض 0 (غیرفعال) است.
گزینه‌های اضافی را مشخص می‌کند که باید برای این منبع به دستورالعمل server در فایل پیکربندی پیاده‌سازی NTP انتخاب‌شده اضافه شوند. به‌طور پیش‌فرض هیچ گزینه اضافی اضافه نمی‌شود.

بخش ptp_domain یک دامنه PTP را مشخص می‌کند که باید به عنوان منبع زمان استفاده شود. شماره دامنه PTP در نام بخش گنجانده می‌شود. نمونه‌های ptp4l به گونه‌ای پیکربندی می‌شوند که در حالت clientOnly اجرا شوند. در این بخش حداقل گزینه interfaces باید تعیین شود؛ سایر گزینه‌ها اختیاری هستند.

مشخص می‌کند که کدام رابط‌های شبکه باید برای این دامنه PTP استفاده شوند. یک نمونه جداگانه از ptp4l برای هر گروه از رابط‌هایی که از یک PHC مشترک استفاده می‌کنند و برای هر رابطی که فقط از مهر زمانی نرم‌افزاری پشتیبانی می‌کند، راه‌اندازی خواهد شد. مهر زمانی سخت‌افزاری به‌طور خودکار فعال می‌شود. اگر یک رابط با مهر زمانی سخت‌افزاری در دامنه‌های PTP دیگر نیز مشخص شده باشد و ساعت‌های مجازی غیرفعال باشند، تنها نمونه ptp4l مربوط به نخستین دامنه PTP از مهر زمانی سخت‌افزاری استفاده خواهد کرد.
فاصله زمانی نظرسنجی ساعت مرجع SOCK/SHM را که نمونه‌ها را از ptp4l یا phc2sys می‌خواند، مشخص می‌کند. این مقدار به عنوان توانی از دو بر حسب ثانیه مشخص می‌شود. مقدار پیش‌فرض 2 (4 ثانیه) است.
فاصله زمانی نظرسنجی استفاده‌شده توسط phc2sys را برای خواندن ساعت PTP همگام‌شده توسط ptp4l و به‌روزرسانی نمونه SOCK/SHM برای chronyd/ntpd مشخص می‌کند. این مقدار به عنوان توانی از دو بر حسب ثانیه مشخص می‌شود. مقدار پیش‌فرض 0 (1 ثانیه) است.
حداکثر تاخیر رفت و برگشت فرضی به منبع اصلی زمان در این دامنه PTP را مشخص می‌کند. این مقدار در فاصله استفاده‌شده توسط chronyd در الگوریتم انتخاب منبع برای شناسایی منابع نامعتبر (falsetickers) و تخصیص وزن‌ها جهت ترکیب منابع گنجانده می‌شود. مقدار پیش‌فرض 1e-4 (100 میکروثانیه) است. در ntpd، دستور tos mindist می‌تواند برای تعیین محدوده‌ای با هدف مشابه به صورت سراسری برای تمام منابع زمانی استفاده شود.
گزینه‌های اضافی را مشخص می‌کند که باید برای این منبع به دستورالعمل‌های refclock یا server در فایل پیکربندی پیاده‌سازی NTP انتخاب‌شده اضافه شوند. به‌طور پیش‌فرض هیچ گزینه اضافی اضافه نمی‌شود.
یک گزینه اضافی ptp4l مخصوص این دامنه PTP را مشخص می‌کند که باید به فایل‌های پیکربندی تولیدشده برای ptp4l اضافه شود. این گزینه ممکن است چندین بار در یک بخش ptp_domain استفاده شود.

مسیر باینری chronyd را مشخص می‌کند. مقدار پیش‌فرض chronyd است که برای جستجوی فایل باینری در PATH استفاده می‌شود.
گزینه‌های اضافی را مشخص می‌کند که باید به خط فرمان chronyd اضافه شوند. به‌طور پیش‌فرض هیچ گزینه اضافی اضافه نمی‌شود.

تنظیمات مشخص‌شده در این بخش مستقیماً در فایل پیکربندی تولیدشده برای chronyd کپی می‌شوند. اگر این بخش در فایل پیکربندی timemaster وجود نداشته باشد، تنظیم زیر اضافه خواهد شد:

makestep 1 3

این تنظیم chronyd را به گونه‌ای پیکربندی می‌کند که در سه به‌روزرسانی اول در صورتی که انحراف (offset) بزرگتر از 1 ثانیه باشد، ساعت سیستم را به صورت گامی (step) تنظیم کند.

مسیر باینری ntpd را مشخص می‌کند. مقدار پیش‌فرض ntpd است که برای جستجوی فایل باینری در PATH استفاده می‌شود.
گزینه‌های اضافی را مشخص می‌کند که باید به خط فرمان ntpd اضافه شوند. به‌طور پیش‌فرض هیچ گزینه اضافی اضافه نمی‌شود.

تنظیمات مشخص‌شده در این بخش مستقیماً در فایل پیکربندی تولیدشده برای ntpd کپی می‌شوند. اگر این بخش در فایل پیکربندی timemaster وجود نداشته باشد، تنظیمات زیر اضافه خواهند شد:

restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1

این تنظیم ntpd را برای استفاده از محدودیت‌های پیش‌فرض امن پیکربندی می‌کند.

مسیر باینری phc2sys را مشخص می‌کند. مقدار پیش‌فرض phc2sys است که برای جستجوی فایل باینری در PATH استفاده می‌شود.
گزینه‌های اضافی را مشخص می‌کند که باید به تمام خطوط فرمان phc2sys اضافه شوند. به‌طور پیش‌فرض، -l 5 به خطوط فرمان اضافه می‌شود.

مسیر باینری ptp4l را مشخص می‌کند. مقدار پیش‌فرض ptp4l است که برای جستجوی فایل باینری در PATH استفاده می‌شود.
گزینه‌های اضافی را مشخص می‌کند که باید به تمام خطوط فرمان ptp4l اضافه شوند. به‌طور پیش‌فرض، -l 5 به خطوط فرمان اضافه می‌شود.

تنظیمات مشخص‌شده در این بخش مستقیماً در بخش سراسری (global) فایل‌های پیکربندی تولیدشده برای تمام نمونه‌های ptp4l کپی می‌شوند. هیچ محتوای پیش‌فرضی برای این بخش وجود ندارد.

بخش‌های دیگر (مانند [unicast_master_table]) ممکن است در اینجا مشخص شوند، اما خطوطی که با براکت شروع می‌شوند باید دارای پیشوند نویسه > باشند تا از تجزیه آن توسط timemaster به عنوان آغاز بخش دیگری جلوگیری شود.

برای بهترین دقت، معمولاً chronyd نسبت به ntpd ترجیح داده می‌شود؛ همچنین ساعت سیستم را سریع‌تر همگام‌سازی می‌کند. با این حال، هر دو پیاده‌سازی NTP محدودیت‌هایی دارند که باید پیش از انتخاب مورد مناسب برای استفاده در یک پیکربندی معین timemaster در نظر گرفته شوند.

محدودیت‌های chronyd عبارتند از:

در نسخه 1.31 و قدیمی‌تر، حداکثر تعداد ساعت‌های مرجع که می‌توانند همزمان استفاده شوند 8 عدد است. این امر تعداد PHCها و رابط‌هایی را که با استفاده از ثبت زمان نرم‌افزاری می‌توان برای PTP به کار برد، محدود می‌کند.

استفاده از فواصل نظرسنجی (گزینه‌های minpoll، maxpoll و ntp_poll) کوتاه‌تر از 2 (4 ثانیه) در نسخه‌های قبل از 1.30 توصیه نمی‌شود. با نسخه 1.30 و جدیدتر، می‌توان از مقادیر 0 یا 1 برای منابع NTP و مقادیر منفی برای منابع PTP (ntp_poll) جهت مشخص کردن فواصل زمانی زیر یک ثانیه استفاده کرد.

محدودیت‌های ntpd عبارتند از:

در نسخه‌های قبل از 4.2.8p1، تنها دو قطعه حافظه مشترک اول ایجادشده توسط درایور ساعت مرجع SHM در ntpd دارای دسترسی فقط-مالک (owner-only) هستند. سایر قطعات با دسترسی همگانی (world access) ایجاد می‌شوند که به هر کاربری در سیستم امکان نوشتن در این قطعات و ایجاد اختلال یا به دست گرفتن کنترل همگام‌سازی ساعت را می‌دهد. در 4.2.8p1 این دسترسی با گزینه mode قابل پیکربندی شد که توسط timemaster روی دسترسی فقط-مالک تنظیم می‌شود.

کوتاه‌ترین فاصله زمانی نظرسنجی برای تمام منابع 3 (8 ثانیه) است.

دقت نانوثانیه در درایور ساعت مرجع SHM در نسخه 4.2.7p303 و جدیدتر پشتیبانی می‌شود؛ نسخه‌های قدیمی‌تر تنها دارای دقت میکروثانیه هستند.

یک فایل پیکربندی کمینه با استفاده از یک منبع NTP و دو منبع PTP به صورت زیر خواهد بود:

[ntp_server 10.1.1.1]
[ptp_domain 0]
interfaces eth0
[ptp_domain 1]
interfaces eth1

نمونه‌ای پیچیده‌تر با استفاده از تمام گزینه‌های timemaster به صورت زیر است:

[ntp_server 10.1.1.1]
minpoll 3
maxpoll 4
iburst 1
ntp_options key 12
[ptp_domain 0]
interfaces eth0 eth1
ntp_poll 0
phc2sys_poll -2
delay 10e-6
ntp_options prefer
ptp4l_option clock_servo linreg
ptp4l_option delay_mechanism P2P
[timemaster]
ntp_program chronyd
rundir /var/run/timemaster
first_shm_segment 1
restart_processes 0
use_vclocks 0
[chronyd]
path /usr/sbin/chronyd
options
[chrony.conf]
makestep 1 3
logchange 0.5
rtcsync
driftfile /var/lib/chrony/drift
[ntpd]
path /usr/sbin/ntpd
options -u ntp:ntp
[ntp.conf]
restrict default nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict ::1
driftfile /var/lib/ntp/drift
[phc2sys]
path /usr/sbin/phc2sys
options -l 5
[ptp4l]
path /usr/sbin/ptp4l
options
[ptp4l.conf]
logging_level 5

chronyd(8), ntpd(8), phc2sys(8), ptp4l(8)

January 2021 linuxptp