8.2.7. 境界クロックと時間スレーブクロックへのアシストなしホールドオーバーの適用
Intel E810-XXVDA4T NIC は、PTP 境界クロック (T-BC) または通信時刻同期クロック (T-TSC) として設定されている場合、アップストリームのタイミングソースが利用できなくなった場合でも、非アシストホールドオーバー機能によって時刻同期を維持できます。
ts2phc サービスは、タイミングレシーバー (TR) ポートにバインドされた ptp4l インスタンスを監視します。たとえば、TR ポートがタイムレシーバーとしての動作を停止したり、アップストリームグランドマスタークロック (T-GM) の品質が低下したり、リンクが切断されたりすると、システムはホールドオーバーモードに入り、動的に再設定されます。
T-BC および T-TSC へのアシストなしホールドオーバーの適用は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてログインしている。 - PTP Operator をインストールします。
- Intel E810-XXVDA4T NIC。
手順
トリプルポート T-BC NIC を設定します。以下の例では、
PtpConfigリソースに 2 つのプロファイルが含まれています。1 つは時間送信ポート (00-tbc-tt) 用で、もう 1 つはすべてのハードウェア、TR ポート、およびts2phcとphc2sysプロセスを設定するためのものです。apiVersion: ptp.openshift.io/v1 kind: PtpConfig metadata: name: t-bc namespace: openshift-ptp spec: profile: - name: 00-tbc-tt ptp4lConf: | [ens4f0] masterOnly 11 [ens8f0] masterOnly 12 [ens1f0] masterOnly 13 [global] # # Default Data Set # twoStepFlag 1 slaveOnly 0 priority1 128 priority2 128 domainNumber 25 clockClass 248 clockAccuracy 0xFE offsetScaledLogVariance 0xFFFF free_running 0 freq_est_interval 1 dscp_event 0 dscp_general 0 dataset_comparison G.8275.x G.8275.defaultDS.localPriority 128 # # Port Data Set # logAnnounceInterval -3 logSyncInterval -4 logMinDelayReqInterval -4 logMinPdelayReqInterval -4 announceReceiptTimeout 3 syncReceiptTimeout 0 delayAsymmetry 0 fault_reset_interval -4 neighborPropDelayThresh 20000000 masterOnly 0 G.8275.portDS.localPriority 128 # # Run time options # assume_two_step 0 logging_level 6 path_trace_enabled 0 follow_up_info 0 hybrid_e2e 0 inhibit_multicast_service 0 net_sync_monitor 0 tc_spanning_tree 0 tx_timestamp_timeout 50 unicast_listen 0 unicast_master_table 0 unicast_req_duration 3600 use_syslog 1 verbose 0 summary_interval 0 kernel_leap 1 check_fup_sync 0 clock_class_threshold 135 # # Servo Options # pi_proportional_const 0.60 pi_integral_const 0.001 pi_proportional_scale 0.0 pi_proportional_exponent -0.3 pi_proportional_norm_max 0.7 pi_integral_scale 0.0 pi_integral_exponent 0.4 pi_integral_norm_max 0.3 step_threshold 2.0 first_step_threshold 0.00002 max_frequency 900000000 clock_servo pi sanity_freq_limit 200000000 ntpshm_segment 0 # # Transport options # transportSpecific 0x0 ptp_dst_mac AA:BB:CC:DD:EE:FF p2p_dst_mac BB:CC:DD:EE:FF:GG udp_ttl 1 udp6_scope 0x0E uds_address /var/run/ptp4l # # Default interface options # clock_type BC network_transport L2 delay_mechanism E2E time_stamping hardware tsproc_mode filter delay_filter moving_median delay_filter_length 10 egressLatency 0 ingressLatency 0 boundary_clock_jbod 1 # # Clock description # productDescription ;; revisionData ;; manufacturerIdentity 00:00:00 userDescription ; timeSource 0xA0 ptp4lOpts: -2 --summary_interval -4 ptpSchedulingPolicy: SCHED_FIFO ptpSchedulingPriority: 10 ptpSettings: controllingProfile: 01-tbc-tr logReduce: "false" - name: 01-tbc-tr phc2sysOpts: -r -n 25 -N 8 -R 16 -u 0 -m -s ens4f14 plugins:5 e810: enableDefaultConfig: false interconnections:6 - gnssInput: false id: ens4f0 part: E810-XXVDA4T phaseOutputConnectors: - SMA1 - SMA2 upstreamPort: ens4f1 - id: ens1f0 inputConnector: connector: SMA1 part: E810-XXVDA4T - id: ens8f0 inputConnector: connector: SMA1 part: E810-XXVDA4T pins: ens4f0: SMA1: 2 1 SMA2: 2 2 U.FL1: 0 1 U.FL2: 0 2 ens1f0: SMA1: 1 1 SMA2: 0 2 U.FL1: 0 1 U.FL2: 0 2 ens8f0: SMA1: 1 1 SMA2: 0 2 U.FL1: 0 1 U.FL2: 0 2 settings: LocalHoldoverTimeout: 14400 LocalMaxHoldoverOffSet: 1500 MaxInSpecOffset: 100 ptp4lConf: | # The interface name is hardware-specific [ens4f1] masterOnly 0 [global] # # Default Data Set # twoStepFlag 1 slaveOnly 0 priority1 128 priority2 128 domainNumber 25 clockClass 248 clockAccuracy 0xFE offsetScaledLogVariance 0xFFFF free_running 0 freq_est_interval 1 dscp_event 0 dscp_general 0 dataset_comparison G.8275.x G.8275.defaultDS.localPriority 128 # # Port Data Set # logAnnounceInterval -3 logSyncInterval -4 logMinDelayReqInterval -4 logMinPdelayReqInterval -4 announceReceiptTimeout 3 syncReceiptTimeout 0 delayAsymmetry 0 fault_reset_interval -4 neighborPropDelayThresh 20000000 masterOnly 0 G.8275.portDS.localPriority 128 # # Run time options # assume_two_step 0 logging_level 6 path_trace_enabled 0 follow_up_info 0 hybrid_e2e 0 inhibit_multicast_service 0 net_sync_monitor 0 tc_spanning_tree 0 tx_timestamp_timeout 50 unicast_listen 0 unicast_master_table 0 unicast_req_duration 3600 use_syslog 1 verbose 0 summary_interval 0 kernel_leap 1 check_fup_sync 0 clock_class_threshold 135 # # Servo Options # pi_proportional_const 0.60 pi_integral_const 0.001 pi_proportional_scale 0.0 pi_proportional_exponent -0.3 pi_proportional_norm_max 0.7 pi_integral_scale 0.0 pi_integral_exponent 0.4 pi_integral_norm_max 0.3 step_threshold 2.0 first_step_threshold 0.00002 max_frequency 900000000 clock_servo pi sanity_freq_limit 200000000 ntpshm_segment 0 # # Transport options # transportSpecific 0x0 ptp_dst_mac AA:BB:CC:DD:EE:HH p2p_dst_mac BB:CC:DD:EE:FF:II udp_ttl 1 udp6_scope 0x0E uds_address /var/run/ptp4l # # Default interface options # clock_type OC network_transport L2 delay_mechanism E2E time_stamping hardware tsproc_mode filter delay_filter moving_median delay_filter_length 10 egressLatency 0 ingressLatency 0 boundary_clock_jbod 1 # # Clock description # productDescription ;; revisionData ;; manufacturerIdentity 00:00:00 userDescription ; timeSource 0xA0 ptp4lOpts: -2 --summary_interval -4 ptpSchedulingPolicy: SCHED_FIFO ptpSchedulingPriority: 10 ptpSettings: inSyncConditionThreshold: "10" inSyncConditionTimes: "12" logReduce: "false" ts2phcConf: | [global] use_syslog 0 verbose 1 logging_level 7 ts2phc.pulsewidth 100000000 leapfile /usr/share/zoneinfo/leap-seconds.list domainNumber 257 uds_address /var/run/ptp4l.0.socket8 [ens4f0]9 ts2phc.extts_polarity rising ts2phc.extts_correction -10 ts2phc.master 0 [ens1f0] ts2phc.extts_polarity rising ts2phc.extts_correction -27 ts2phc.master 0 [ens8f0] ts2phc.extts_polarity rising ts2phc.extts_correction -27 ts2phc.master 0 ts2phcOpts: -s generic -a --ts2phc.rh_external_pps 110 recommend: - match: - nodeLabel: node-role.kubernetes.io/master priority: 4 profile: 00-tbc-tt - match: - nodeLabel: node-role.kubernetes.io/master priority: 4 profile: 01-tbc-tr- 1 2 3
- すべての TT ポートの
masterOnlyは 1 に設定されています。 - 4
- TR プロファイルの
phc2sysOpts設定では、ノードの時刻同期のソースとしてアップストリームポートens4f1を指定します。 - 5
- TR プロファイルには、ハードウェアプラグインセクションが含まれています。
- 6
- ハードウェアプラグインの相互接続セクションには、
ens4f0、ens1f0、ens8f0の 3 つの NIC があります。プライマリー NIC (ens4f0) は、gnnsInputフィールドがfalseに設定され、かつ TR ポートを指定するupstreamPortフィールドを持つ唯一の NIC です。また、phaseOutputConnectors、SMA1、SMA2のリストもあります。次の NIC にはinputConnectorフィールドがあります。T-BC 設定と T-TSC 設定の両方で、タイムレシーバー NICens4f0と特定の TR ポート (upstreamPort: ens4f1) を設定します。 - 7
ts2phc設定には、アップストリーム PTP ドメインのdomainNumberが含まれています。- 8
ts2phc設定にはuds_addressが含まれています。その値は重要ではありません。なぜなら、デーモンが正しいアドレスでそれにパッチを当てるからです。- 9
ts2phc設定には、このセットアップに参加しているすべての NIC (ens4f0、ens1f0、およびens8f0) を含める必要があります。- 10
ts2phcOptsは、-s genericでソースを汎用に設定し、-aで自動に設定します。最後のオプション--ts2phc.rh_external_pps 1は、外部位相ソースである Digital Phase-Locked Loop (DPLL) と連携して動作するように設定します。注記単一 NIC の場合、1PPS 測定に使用する場合はすべてのピンを無効にするか、出力を有効にします。
この設定を T-TSC 操作用にレンダリングするには、00-tbc-tt プロファイルを削除し、TR NIC のみをリストするように ts2phcConf セクションを調整します。
検証
T-BC ステータスを取得するには、次のコマンドを実行します。
$ oc -linuxptp-daemon-container logs ds/linuxptp-daemon --since=1s -f |grep T-BC
出力例
T-BC[1760525446]:[ts2phc.1.config] ens4f0 offset 1 T-BC-STATUS s2
T-BC[1760525447]:[ts2phc.1.config] ens4f0 offset 1 T-BC-STATUS s2
T-BC[1760525448]:[ts2phc.1.config] ens4f0 offset -1 T-BC-STATUS s2
これは 1 秒ごとに報告されます。s2 はロックされていることを示し、s1 はホールドオーバーがアクティブになっていることを示し、s0 はロック解除されていることを示します。