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

phc2sys - ابزار همگام‌سازی ساعت سخت‌افزاری PTP با کلاک سیستم

phc2sys -a [ -r ] [ -r ] [ -f config-file ] [ گزینه‌ها ] [ long-options ]
phc2sys [ -f config-file ] [ -d pps-device ] [ -s device ] [ -c device ] [ -O offset ] [ -w ] [ گزینه‌ها ] [ long-options ] ...

دستور phc2sys برنامه‌ای است که دو یا چند ساعت (کلاک) را در سیستم همگام‌سازی می‌کند. به‌طور معمول، از این برنامه برای همگام‌سازی ساعت سیستم با یک ساعت سخت‌افزاری PTP (کوته‌نوشت PHC) استفاده می‌شود که خود آن ساعت سخت‌افزاری توسط برنامه ptp4l(8) همگام‌سازی شده است.

با استفاده از گزینه -a، ساعت‌هایی که باید همگام شوند از دیمن در حال اجرای ptp4l واکشی می‌شوند و جهت همگام‌سازی به‌طور خودکار تغییرات وضعیت پورت‌های PTP را دنبال می‌کند.

پیکربندی دستی نیز امکان‌پذیر است. هنگام استفاده از پیکربندی دستی، دو حالت همگام‌سازی پشتیبانی می‌شود؛ یکی از سیگنال «تک‌پالس در ثانیه» (PPS) ارائه‌شده توسط ساعت مبدأ استفاده می‌کند و حالت دیگر، زمان را مستقیماً از ساعت مبدأ می‌خواند. برخی از ساعت‌ها را می‌توان در هر دو حالت استفاده کرد؛ اینکه کدام حالت ساعت مقصد (time sink) را با دقت بهتری همگام‌سازی می‌کند، به سخت‌افزار و پیاده‌سازی درایور بستگی دارد.

ساعت‌های مورد نظر برای همگام‌سازی را از ptp4l در حال اجرا می‌خواند و تغییرات وضعیت پورت‌ها را دنبال کرده و جهت همگام‌سازی را به‌طور خودکار تنظیم می‌کند. ساعت سیستم (CLOCK_REALTIME) همگام‌سازی نمی‌شود، مگر اینکه گزینه -r نیز مشخص شده باشد.
تنها همراه با گزینه -a معتبر است. به phc2sys دستور می‌دهد ساعت سیستم (CLOCK_REALTIME) را نیز همگام‌سازی کند. به‌طور پیش‌فرض، ساعت سیستم به‌عنوان یک منبع بالقوه زمان در نظر گرفته نمی‌شود. اگر می‌خواهید ساعت سیستم واجد شرایط تبدیل شدن به یک منبع زمان باشد، گزینه -r را دو بار مشخص کنید.
پیکربندی را از فایل مشخص‌شده می‌خواند. به‌طور پیش‌فرض هیچ فایل پیکربندی خوانده نمی‌شود.
دستگاه PPS ساعت مبدأ را مشخص می‌کند (مانند ‎/dev/pps0). با این گزینه، حالت همگام‌سازی PPS به جای حالت مستقیم استفاده می‌شود. ساعت سخت‌افزاری PHC منطبق باید با استفاده از گزینه خط فرمان -s مشخص شود. این گزینه تنها زمانی قابل استفاده است که ساعت سیستم به‌عنوان مقصد زمان (time sink) باشد. با گزینه -a سازگار نیست.
ساعت مبدأ را با دستگاه (مانند ‎/dev/ptp0)، رابط شبکه (مانند eth0) یا بر پایه نام (مانند CLOCK_REALTIME برای ساعت سیستم) مشخص می‌کند. هنگامی که این گزینه همراه با گزینه -d استفاده شود، ساعت مبدأ تنها برای اصلاح آفست به تعداد ثانیه‌های کامل استفاده می‌شود که با PPS به‌تنهایی قابل رفع نیست. با گزینه -a سازگار نیست. این گزینه از رابط‌های پیوندی (bonded مانند bond0 یا team0) پشتیبانی نمی‌کند. اگر ptp4l پورتی روی یک رابط پیوندی یا team از نوع active-backup داشته باشد، می‌توان از گزینه -a برای ردیابی رابط فعال استفاده کرد.
به دلایل سازگاری، دقیقاً همان عملکرد گزینه -s را انجام می‌دهد. پیش‌تر امکان مشخص کردن ساعت مبدأ بر اساس رابط شبکه را فراهم می‌کرد. با این حال، این کار اکنون می‌تواند با استفاده از گزینه -s انجام شود و این گزینه دیگر ضروری نیست. بنابراین منسوخ شده است و دیگر نباید استفاده شود.
ساعت مقصد (time sink) را بر اساس دستگاه (مانند ‎/dev/ptp1)، رابط شبکه (مانند eth1) یا نام مشخص می‌کند. مقدار پیش‌فرض CLOCK_REALTIME (ساعت سیستم) است. با گزینه -a سازگار نیست. این گزینه را می‌توان تا ۱۲۸ بار مشخص کرد.
مشخص می‌کند که از کدام سرووی ساعت باید استفاده شود. مقادیر معتبر عبارتند از pi برای یک کنترل‌کننده PI، مقدار linreg برای یک کنترل‌کننده تطبیقی با استفاده از رگرسیون خطی، و ntpshm و refclock_sock به ترتیب برای ساعت‌های مرجع NTP SHM و chrony SOCK جهت اجازه دادن به فرآیندی دیگر برای همگام‌سازی ساعت محلی. پیش‌فرض pi است.
ثابت تناسبی (proportional constant) کنترل‌کننده PI را مشخص می‌کند. پیش‌فرض 0.7 است.
ثابت انتگرالی (integral constant) کنترل‌کننده PI را مشخص می‌کند. پیش‌فرض 0.3 است.
آستانه پرش (step threshold) سروو را مشخص می‌کند. این مقدار حداکثر آفستی است که سروو با تغییر فرکانس ساعت به جای پرش دادن ساعت اصلاح می‌کند. اگر آفست بزرگ‌تر از ۲۰ میکروثانیه باشد، صرف‌نظر از این گزینه، ساعت در زمان شروع پرش داده می‌شود (مگر اینکه از گزینه -F استفاده شود). این مقدار بر حسب ثانیه مشخص می‌شود. مقدار 0.0 پرش ساعت پس از شروع را غیرفعال می‌کند. پیش‌فرض 0.0 است.
آستانه پرش اعمال‌شده تنها در اولین به‌روزرسانی را مشخص می‌کند. این مقدار حداکثر آفستی است که با تغییر فرکانس ساعت اصلاح می‌شود. بر حسب ثانیه مشخص می‌شود. مقدار 0.0 پرش در زمان شروع را غیرفعال می‌کند. پیش‌فرض 0.00002 (۲۰ میکروثانیه) است.
نرخ به‌روزرسانی ساعت مقصد را هنگام اجرا در حالت همگام‌سازی مستقیم مشخص می‌کند. پیش‌فرض ۱ بار در ثانیه است.
تعداد دفعات خواندن ساعت مبدأ را که برای هر به‌روزرسانی ساعت مقصد استفاده می‌شود مشخص می‌کند. تنها سریع‌ترین خوانش برای به‌روزرسانی ساعت استفاده می‌شود. این کار برای به حداقل رساندن خطای ناشی از تأخیرهای تصادفی در زمان‌بندی و اشغال گذرگاه مفید است. پیش‌فرض 5 است.
آفست زمانی میان مقصد و مبدأ را بر حسب ثانیه مشخص می‌کند. با گزینه -a سازگار نیست. بخش کاربرد مقیاس زمانی (TIME SCALE USAGE) در ادامه را ببینید.
حداکثر آفست فرکانسی مجاز میان ساعت اصلاح‌نشده و ساعت یکنوای سیستم (system monotonic clock) بر حسب بخش در میلیارد (ppb). از این مقدار به عنوان بررسی صحت ساعت همگام‌شده استفاده می‌شود. هنگامی که آفست بزرگ‌تری اندازه‌گیری شود، یک پیام هشدار چاپ شده و سروو بازنشانی می‌شود. با تنظیم روی 0، بررسی صحت غیرفعال می‌شود. پیش‌فرض 200000000 (۲۰٪) است.
شماره بخش حافظه مشترک (SHM segment) مورد استفاده توسط سرووی ntpshm. پیش‌فرض 0 است.
تعداد به‌روزرسانی‌های ساعت را که در آمار خلاصه گنجانده می‌شوند مشخص می‌کند. این آمار شامل مقدار جذر میانگین مربعات (RMS) آفست، حداکثر آفست مطلق، میانگین و انحراف معیار آفست فرکانسی، و میانگین و انحراف معیار تأخیر در خواندن ساعت است. واحدها نانوثانیه و بخش در میلیارد (ppb) هستند. اگر صفر باشد، نمونه‌های منفرد به جای آمار چاپ می‌شوند. این پیام‌ها در سطح LOG_INFO چاپ می‌شوند. پیش‌فرض 0 (غیرفعال) است.
تا زمانی که ptp4l در وضعیت همگام‌شده قرار گیرد منتظر می‌ماند. اگر از گزینه -O استفاده نشود، آفست زمانی بین ساعت مبدأ و مقصد را نیز با توجه به مقدار currentUtcOffset به‌دست‌آمده از ptp4l و جهت همگام‌سازی ساعت به‌روز نگه می‌دارد. با گزینه -a سازگار نیست.
شماره دامنه مورد استفاده توسط ptp4l را مشخص می‌کند. این گزینه را می‌توان تا ۱۶ بار برای مشخص کردن شماره دامنه‌های مختلف برای سوکت‌های مختلف تعیین‌شده با گزینه -z به‌کار برد. شماره‌های دامنه بر اساس ترتیب گزینه‌ها در خط فرمان تخصیص می‌یابند. پیش‌فرض 0 است.
هنگامی که یک ثانیه کبیسه اعلام می‌شود، آن را در هسته با پرش دادن ساعت اعمال نمی‌کند، بلکه به سروو اجازه می‌دهد آفست یک‌ثانیه‌ای را با تغییر فرکانس ساعت به آرامی اصلاح کند (مگر اینکه از گزینه -S استفاده شود).
آدرس سوکت دامنه یونیکس سرور را مشخص می‌کند. این گزینه را می‌توان تا ۱۶ بار در حالت خودکار برای همگام‌سازی ساعت‌ها بین چندین نمونه ptp4l استفاده کرد. پیش‌فرض ‎/var/run/ptp4l است.
حداکثر سطح syslog پیام‌هایی را که باید چاپ شده یا به ثبت‌کننده وقایع سیستم ارسال شوند تعیین می‌کند. پیش‌فرض 6 (LOG_INFO) است.
برچسبی را مشخص می‌کند که به تمام پیام‌های چاپ‌شده در خروجی استاندارد یا وقایع‌نگار سیستم افزوده می‌شود. پیش‌فرض یک رشته خالی است.
پیام‌ها را در خروجی استاندارد چاپ می‌کند.
پیام‌ها را به ثبت‌کننده وقایع سیستم ارسال نمی‌کند.
پیام راهنما را نمایش می‌دهد.
نسخه نرم‌افزار را چاپ کرده و خارج می‌شود.

تک‌تک گزینه‌های فایل پیکربندی (بخش گزینه‌های فایل (FILE OPTIONS) در ادامه را ببینید) می‌توانند به عنوان یک آرگومان خط فرمان با سبک «طولانی» (long) نیز استفاده شوند. برای نمونه، گزینه transportSpecific را می‌توان با استفاده از هر یک از این دو قالب تنظیم کرد:

--transportSpecific 1 --transportSpecific=1

مقادیر گزینه‌های ارائه‌شده در خط فرمان، مقادیر بخش سراسری (global) فایل پیکربندی را بازنویسی می‌کنند (که آن نیز به نوبه خود مقادیر پیش‌فرض را بازنویسی می‌کند).

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

بخش سراسری (مشخص‌شده با [global]) گزینه‌های برنامه را تنظیم می‌کند. این تنها بخش مورداستفاده است.

همراه با دستورالعمل‌های spp و sa_file استفاده می‌شود تا مشخص کند کدام کلید از «ارتباط امنیتی» (Security Association) تعریف‌شده توسط spp باید برای محاسبات icv خروجی استفاده شود. تمام ارتباط‌های امنیتی از فایل مشخص‌شده توسط sa_file خوانده می‌شوند. نیازمند دستورالعمل‌های spp و sa_file است. مقدار باید در محدوده 1 تا 1-2^32 (شامل هر دو) باشد. پیش‌فرض 0 (غیرفعال) است.
سروویی که برای همگام‌سازی ساعت محلی استفاده می‌شود. مقادیر معتبر عبارتند از "pi" برای یک کنترل‌کننده PI، مقدار "linreg" برای یک کنترل‌کننده تطبیقی با استفاده از رگرسیون خطی، "ntpshm" برای ساعت مرجع NTP SHM جهت اجازه دادن به فرآیندی دیگر برای همگام‌سازی ساعت محلی (شماره بخش SHM روی شماره دامنه تنظیم می‌شود)، و "nullf" برای سروویی که همیشه آفست فرکانس صفر را اعمال می‌کند (برای استفاده در گره‌های SyncE). پیش‌فرض "pi" است. همانند گزینه -E (در بالا ببینید).
شماره دامنه مورد استفاده توسط phc2sys را مشخص می‌کند. پیش‌فرض 0 است. همانند گزینه -n (در بالا ببینید).
آستانه پرش اعمال‌شده تنها در اولین به‌روزرسانی را مشخص می‌کند. این مقدار حداکثر آفستی است که با تنظیم ساعت اصلاح می‌شود. بر حسب ثانیه مشخص می‌شود. مقدار 0.0 پرش در زمان شروع را غیرفعال می‌کند. پیش‌فرض 0.00002 (۲۰ میکروثانیه) است. همانند گزینه -F (در بالا ببینید).
در صورت فعال بودن، ساعت مقصد را تنظیم نمی‌کند. پیش‌فرض 0 (غیرفعال) است.
هنگامی که یک ثانیه کبیسه اعلام می‌شود، به هسته اجازه می‌دهد تا با پرش دادن ساعت آن را اعمال کند، به جای اصلاح آفست یک‌ثانیه‌ای با سروو، که آفست یک‌ثانیه‌ای را به آرامی با تغییر فرکانس ساعت اصلاح می‌کند (مگر اینکه گزینه step_threshold برای اصلاح چنین آفستی از طریق پرش تنظیم شده باشد). تنها در برچسب‌گذاری زمانی نرم‌افزاری کاربرد دارد. پیش‌فرض 1 (فعال) است. همانند گزینه -x (در بالا ببینید).
حداکثر سطح ثبت وقایع پیام‌هایی که باید چاپ شوند. پیش‌فرض 6 (LOG_INFO) است. همانند گزینه -l (در بالا ببینید).
برچسبی که به تمام پیام‌های چاپ‌شده در خروجی استاندارد یا وقایع‌نگار سیستم افزوده می‌شود. اگر این برچسب حاوی رشته "{level}" باشد، با سطح ثبت وقایع پیام به صورت یک عدد جایگزین می‌شود. پیش‌فرض یک رشته خالی است (که در فایل پیکربندی قابل تنظیم نیست زیرا این گزینه نیازمند یک آرگومان است). همانند گزینه -t (در بالا ببینید).
شماره بخش حافظه مشترک (SHM segment) مورد استفاده توسط سرووی ntpshm. پیش‌فرض 0 است. همانند گزینه -M (در بالا ببینید).
ثابت انتگرالی کنترل‌کننده PI را مشخص می‌کند. همانند گزینه -I (در بالا ببینید).
ثابت تناسبی کنترل‌کننده PI را مشخص می‌کند. همانند گزینه -P (در بالا ببینید).
آدرس سوکت دامنه یونیکس مورد استفاده توسط سرووی refclock_sock. پیش‌فرض ‎/var/run/refclock.ptp.sock است.
محل فایل حاوی ارتباط‌های امنیتی (Security Associations) مورد استفاده برای پردازش فوری امنیتی Authentication TLV در پشتیبانی از سازوکار امنیتی اختیاری تعریف‌شده در فصل 14.16 استاندارد ieee1588-2019 را مشخص می‌کند. برای اطلاعات بیشتر درباره محتوای فایل، بخش گزینه‌های ارتباط امنیتی (SECURITY ASSOCIATION OPTIONS) در ptp4l(8) را ببینید. پیش‌فرض یک رشته خالی است (غیرفعال).
حداکثر آفست فرکانسی مجاز میان ساعت اصلاح‌نشده و ساعت یکنوای سیستم بر حسب بخش در میلیارد (ppb). از این مقدار به عنوان بررسی صحت ساعت همگام‌شده استفاده می‌شود. هنگامی که آفست بزرگ‌تری اندازه‌گیری شود، یک پیام هشدار چاپ شده و سروو بازنشانی می‌شود. با تنظیم روی 0، بررسی صحت غیرفعال می‌شود. پیش‌فرض 200000000 (۲۰٪) است. همانند گزینه -L (در بالا ببینید).
آستانه پرش سروو را مشخص می‌کند. این مقدار حداکثر آفستی است که سروو با تغییر فرکانس ساعت (تغییر فاز هنگام استفاده از سروو nullf) به جای پرش دادن ساعت اصلاح می‌کند. اگر آفست بزرگ‌تر از ۲۰ میکروثانیه باشد، صرف‌نظر از این گزینه، ساعت در زمان شروع پرش داده می‌شود (مگر اینکه از گزینه -F استفاده شود). این مقدار بر حسب ثانیه مشخص می‌شود. مقدار 0.0 پرش پس از شروع را غیرفعال می‌کند. پیش‌فرض 0.0 است. همانند گزینه -S (در بالا ببینید).
اشاره‌گر پارامترهای امنیتی (spp) را برای ارتباط امنیتی مورد نظر جهت استفاده در پشتیبانی از authentication tlv مشخص می‌کند. در صورت تعیین، پورتی که مالک spp است تلاش می‌کند برای تمام پیام‌ها مطابق با ارتباط امنیتی متناظر تهیه‌شده از طریق دستورالعمل sa_file، هدرهای authentication tlv را ضمیمه (خروجی) و بررسی (ورودی) کند. با پورت‌های یک‌مرحله‌ای (one step) سازگار نیست. باید در محدوده -1 تا 255 (شامل هر دو) باشد. پیش‌فرض -1 (غیرفعال) است.
فیلد ویژه لایه انتقال (transport specific). باید در محدوده 0 تا 255 باشد. پیش‌فرض 0 است.
آدرس سوکت دامنه یونیکس سرور را مشخص می‌کند. پیش‌فرض ‎/var/run/ptp4l است. همانند گزینه -z (در بالا ببینید).
در صورت فعال بودن، پیام‌ها را در وقایع‌نگار سیستم چاپ می‌کند. پیش‌فرض 1 (فعال) است. مرتبط با گزینه -q (در بالا ببینید).
در صورت فعال بودن، پیام‌ها را در خروجی استاندارد چاپ می‌کند. پیش‌فرض 0 (غیرفعال) است. مرتبط با گزینه -m (در بالا ببینید).

دستور ptp4l یا از مقیاس زمانی PTP و یا از مقیاس زمانی ساعت هماهنگ جهانی (UTC) استفاده می‌کند. مقیاس زمانی PTP پیوسته بوده و به میزان چند ده ثانیه نسبت به UTC اختلاف دارد، زیرا در مقیاس زمانی PTP ثانیه‌های کبیسه اعمال نمی‌شوند.

در حالت برچسب‌گذاری زمانی سخت‌افزاری، ptp4l استفاده از مقیاس زمانی PTP را اعلام می‌کند و از PHC برای برچسب‌ها استفاده می‌شود. این بدان معناست که PHC باید از مقیاس زمانی PTP پیروی کند در حالی که ساعت سیستم از UTC پیروی می‌کند. آفست زمانی میان این دو توسط phc2sys حفظ و مدیریت می‌شود.

دستور phc2sys مقدار آفست را یا با خواندن آن از ptp4l در هنگامی که گزینه -a یا -w فعال است، یا از طریق خط فرمان در صورت ارائه گزینه -O به‌دست می‌آورد. عدم حفظ آفست صحیح می‌تواند منجر به این شود که در حالت کلاینت، ساعت سیستم محلی به اندازه چند ثانیه کامل با ساعت سرور دامنه اختلاف پیدا کند، یا در صورتی که میزبان سرور دامنه باشد، زمان نادرست PTP در شبکه اعلام شود.

همگام‌سازی خودکار زمان مطابق با وضعیت جاری ptp4l، به‌طوری که ساعت سیستم با سرور راه دور همگام شود:

phc2sys -a -r

مشابه بالا، اما زمانی که میزبان تبدیل به سرور دامنه شود، زمان در دامنه با ساعت سیستم آن همگام می‌گردد:

phc2sys -a -rr

مشابه بالا، در یک دامنه استاندارد IEEE 802.1AS:

phc2sys -a -rr --transportSpecific=1

میزبان یک سرور دامنه است، ساعت PTP با ساعت سیستم همگام شده و آفست زمانی از ptp4l به‌دست می‌آید. phc2sys پیش از آغاز همگام‌سازی منتظر می‌ماند تا ptp4l حداقل یک پورت را در حالت سرور یا کلاینت قرار دهد:

phc2sys -c /dev/ptp0 -s CLOCK_REALTIME -w

مشابه بالا، با این تفاوت که آفست زمانی در خط فرمان داده شده و phc2sys منتظر ptp4l نمی‌ماند:

phc2sys -c /dev/ptp0 -s CLOCK_REALTIME -O 37

میزبان در حالت کلاینت است، ساعت سیستم از روی ساعت PTP همگام می‌شود، phc2sys منتظر ptp4l می‌ماند و آفست به‌طور خودکار تنظیم می‌گردد:

phc2sys -s /dev/ptp0 -w

مشابه بالا، شناسه ساعت PTP از رابط شبکه خوانده می‌شود، آفست در خط فرمان داده شده و phc2sys منتظر نمی‌ماند:

phc2sys -s eth0 -O -37

هنگامی که از یک فایل پیکربندی یکسان برای هر دو دستور ptp4l و phc2sys استفاده می‌شود، احتیاط کنید. به یاد داشته باشید که مقادیر مشخص‌شده در فایل پیکربندی بر مقادیر پیش‌فرض آن‌ها اولویت دارند. اگر یک گزینه خاص، که بین ptp4l و phc2sys مشترک است، با مقداری غیر از پیش‌فرض در فایل پیکربندی (برای نمونه برای ptp4l) تعیین شده باشد، این مقدار غیرپیش‌فرض برای phc2sys نیز اعمال خواهد شد. این موضوع ممکن است نتیجه مورد انتظار شما نباشد.

توصیه می‌شود برای جلوگیری از هرگونه رفتار غیرمنتظره، از فایل‌های پیکربندی جداگانه برای ptp4l و phc2sys استفاده کنید.

ptp4l(8)

March 2024 linuxptp