diff --git a/modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc b/modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc index e9e748c754..e8f521771d 100644 --- a/modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc +++ b/modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc @@ -28,136 +28,10 @@ See "Configuring the PTP fast event notifications publisher" for more informatio . Create the following `PtpConfig` CR, and then save the YAML in the `boundary-clock-ptp-config.yaml` file. + -.Recommended PTP boundary clock configuration +.Example PTP boundary clock configuration [source,yaml] ---- ---- -apiVersion: ptp.openshift.io/v1 -kind: PtpConfig -metadata: - name: boundary-clock-ptp-config - namespace: openshift-ptp -spec: - profile: - - name: boundary-clock - phc2sysOpts: "-a -r -n 24" - ptp4lOpts: "-2" - ptpSchedulingPolicy: SCHED_FIFO - ptpSchedulingPriority: 10 - ptp4lConf: | - [] - masterOnly 0 - [] - masterOnly 1 - [] - masterOnly 1 - [] - masterOnly 1 - [global] - # - # Default Data Set - # - twoStepFlag 1 - slaveOnly 0 - priority1 128 - priority2 128 - domainNumber 24 - 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 - # - # Servo Options - # - pi_proportional_const 0.0 - pi_integral_const 0.0 - 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 01:1B:19:00:00:00 - p2p_dst_mac 01:80:C2:00:00:0E - 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 0 - # - # Clock description - # - productDescription ;; - revisionData ;; - manufacturerIdentity 00:00:00 - userDescription ; - timeSource 0xA0 - recommend: - - profile: boundary-clock - priority: 4 - match: - - nodeLabel: node-role.kubernetes.io/master - nodeName: +include::snippets/ptp_PtpConfigBoundary.yaml[] ---- + .PTP boundary clock CR configuration options diff --git a/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc b/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc index d8d1f78338..6bc8665f01 100644 --- a/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc +++ b/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc @@ -34,7 +34,11 @@ See "Configuring the PTP fast event notifications publisher" for more informatio .. Save the following YAML in the `grandmaster-clock-ptp-config.yaml` file: + -include::snippets/grandmaster-clock-ptp-config.adoc[] +.Example PTP grandmaster clock configuration +[source,yaml] +---- +include::snippets/ptp_PtpConfigMaster.yaml[] +---- .. Create the CR by running the following command: + diff --git a/modules/nw-ptp-configuring-linuxptp-services-as-ordinary-clock.adoc b/modules/nw-ptp-configuring-linuxptp-services-as-ordinary-clock.adoc index 3687d309b4..2d36e46dda 100644 --- a/modules/nw-ptp-configuring-linuxptp-services-as-ordinary-clock.adoc +++ b/modules/nw-ptp-configuring-linuxptp-services-as-ordinary-clock.adoc @@ -27,128 +27,10 @@ See "Configuring the PTP fast event notifications publisher" for more informatio . Create the following `PtpConfig` CR, and then save the YAML in the `ordinary-clock-ptp-config.yaml` file. + [[ptp-ordinary-clock]] -.Recommended PTP ordinary clock configuration +.Example PTP ordinary clock configuration [source,yaml] ---- -apiVersion: ptp.openshift.io/v1 -kind: PtpConfig -metadata: - name: ordinary-clock-ptp-config - namespace: openshift-ptp - spec: - profile: - - name: ordinary-clock - interface: "" - phc2sysOpts: "-a -r -n 24" - ptp4lOpts: "-2 -s" - ptpSchedulingPolicy: SCHED_FIFO - ptpSchedulingPriority: 10 - ptp4lConf: | - [global] - # - # Default Data Set - # - twoStepFlag 1 - slaveOnly 1 - priority1 128 - priority2 128 - domainNumber 24 - clockClass 255 - 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 - # - # Servo Options - # - pi_proportional_const 0.0 - pi_integral_const 0.0 - 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 01:1B:19:00:00:00 - p2p_dst_mac 01:80:C2:00:00:0E - 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 0 - # - # Clock description - # - productDescription ;; - revisionData ;; - manufacturerIdentity 00:00:00 - userDescription ; - timeSource 0xA0 - recommend: - - profile: ordinary-clock - priority: 4 - match: - - nodeLabel: "node-role.kubernetes.io/worker" - nodeName: "" +include::snippets/ptp_PtpConfigOrdinaryClock.yaml[] ---- + .PTP ordinary clock CR configuration options diff --git a/snippets/grandmaster-clock-ptp-config.adoc b/snippets/grandmaster-clock-ptp-config.adoc deleted file mode 100644 index b3d240a895..0000000000 --- a/snippets/grandmaster-clock-ptp-config.adoc +++ /dev/null @@ -1,146 +0,0 @@ -.Recommended PTP grandmaster clock configuration -[source,yaml] ----- -apiVersion: ptp.openshift.io/v1 -kind: PtpConfig -metadata: - name: grandmaster - namespace: openshift-ptp -spec: - profile: - - name: "grandmaster" - ptp4lOpts: "-2 --summary_interval -4" - phc2sysOpts: -r -u 0 -m -O -37 -N 8 -R 16 -s ens2f1 -n 24 - ptpSchedulingPolicy: SCHED_FIFO - ptpSchedulingPriority: 10 - plugins: - e810: - enableDefaultConfig: true - ts2phcOpts: " " - ts2phcConf: | - [nmea] - ts2phc.master 1 - [global] - use_syslog 0 - verbose 1 - logging_level 7 - ts2phc.pulsewidth 100000000 - #GNSS module - ls /dev/gnss* -al - ts2phc.nmea_serialport /dev/gnss0 - leapfile /usr/share/zoneinfo/leap-seconds.list - [ens2f1] - ts2phc.extts_polarity rising - ts2phc.extts_correction 0 - ptp4lConf: | - [ens2f1] - masterOnly 1 - [ens2f2] - masterOnly 1 - [ens2f3] - masterOnly 1 - [ens2f4] - masterOnly 1 - [global] - # - # Default Data Set - # - twoStepFlag 1 - priority1 128 - priority2 128 - domainNumber 24 - #utc_offset 37 - clockClass 6 - clockAccuracy 0x27 - 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 0 - 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 -4 - kernel_leap 1 - check_fup_sync 0 - # - # Servo Options - # - pi_proportional_const 0.0 - pi_integral_const 0.0 - 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 0.0 - first_step_threshold 0.00002 - clock_servo pi - sanity_freq_limit 200000000 - ntpshm_segment 0 - # - # Transport options - # - transportSpecific 0x0 - ptp_dst_mac 01:1B:19:00:00:00 - p2p_dst_mac 01:80:C2:00:00:0E - 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 0 - # - # Clock description - # - productDescription ;; - revisionData ;; - manufacturerIdentity 00:00:00 - userDescription ; - timeSource 0x20 - recommend: - - profile: "grandmaster" - priority: 4 - match: - - nodeLabel: "node-role.kubernetes.io/worker" ----- diff --git a/snippets/ptp_PtpConfigBoundary.yaml b/snippets/ptp_PtpConfigBoundary.yaml new file mode 100644 index 0000000000..5c5d8f9fbc --- /dev/null +++ b/snippets/ptp_PtpConfigBoundary.yaml @@ -0,0 +1,131 @@ +apiVersion: ptp.openshift.io/v1 +kind: PtpConfig +metadata: + name: boundary-clock + namespace: openshift-ptp + annotations: {} +spec: + profile: + - name: boundary-clock + ptp4lOpts: "-2" + phc2sysOpts: "-a -r -n 24" + ptpSchedulingPolicy: SCHED_FIFO + ptpSchedulingPriority: 10 + ptpSettings: + logReduce: "true" + ptp4lConf: | + # The interface name is hardware-specific + [$iface_slave] + masterOnly 0 + [$iface_master_1] + masterOnly 1 + [$iface_master_2] + masterOnly 1 + [$iface_master_3] + masterOnly 1 + [global] + # + # Default Data Set + # + twoStepFlag 1 + slaveOnly 0 + priority1 128 + priority2 128 + domainNumber 24 + #utc_offset 37 + 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 7 + # + # Servo Options + # + pi_proportional_const 0.0 + pi_integral_const 0.0 + 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 01:1B:19:00:00:00 + p2p_dst_mac 01:80:C2:00:00:0E + 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 0 + # + # Clock description + # + productDescription ;; + revisionData ;; + manufacturerIdentity 00:00:00 + userDescription ; + timeSource 0xA0 + recommend: + - profile: boundary-clock + priority: 4 + match: + - nodeLabel: "node-role.kubernetes.io/$mcp" diff --git a/snippets/ptp_PtpConfigMaster.yaml b/snippets/ptp_PtpConfigMaster.yaml new file mode 100644 index 0000000000..2b8160d0b6 --- /dev/null +++ b/snippets/ptp_PtpConfigMaster.yaml @@ -0,0 +1,124 @@ +apiVersion: ptp.openshift.io/v1 +kind: PtpConfig +metadata: + name: grandmaster-clock + namespace: openshift-ptp + annotations: {} +spec: + profile: + - name: grandmaster-clock + # The interface name is hardware-specific + interface: $interface + ptp4lOpts: "-2" + phc2sysOpts: "-a -r -r -n 24" + ptpSchedulingPolicy: SCHED_FIFO + ptpSchedulingPriority: 10 + ptpSettings: + logReduce: "true" + ptp4lConf: | + [global] + # + # Default Data Set + # + twoStepFlag 1 + slaveOnly 0 + priority1 128 + priority2 128 + domainNumber 24 + #utc_offset 37 + clockClass 255 + 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 7 + # + # Servo Options + # + pi_proportional_const 0.0 + pi_integral_const 0.0 + 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 01:1B:19:00:00:00 + p2p_dst_mac 01:80:C2:00:00:0E + 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 0 + # + # Clock description + # + productDescription ;; + revisionData ;; + manufacturerIdentity 00:00:00 + userDescription ; + timeSource 0xA0 + recommend: + - profile: grandmaster-clock + priority: 4 + match: + - nodeLabel: "node-role.kubernetes.io/$mcp" diff --git a/snippets/ptp_PtpConfigOrdinaryClock.yaml b/snippets/ptp_PtpConfigOrdinaryClock.yaml new file mode 100644 index 0000000000..08ab6e8a82 --- /dev/null +++ b/snippets/ptp_PtpConfigOrdinaryClock.yaml @@ -0,0 +1,124 @@ +apiVersion: ptp.openshift.io/v1 +kind: PtpConfig +metadata: + name: ordinary-clock + namespace: openshift-ptp + annotations: {} +spec: + profile: + - name: ordinary-clock + # The interface name is hardware-specific + interface: $interface + ptp4lOpts: "-2 -s" + phc2sysOpts: "-a -r -n 24" + ptpSchedulingPolicy: SCHED_FIFO + ptpSchedulingPriority: 10 + ptpSettings: + logReduce: "true" + ptp4lConf: | + [global] + # + # Default Data Set + # + twoStepFlag 1 + slaveOnly 1 + priority1 128 + priority2 128 + domainNumber 24 + #utc_offset 37 + clockClass 255 + 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 7 + # + # Servo Options + # + pi_proportional_const 0.0 + pi_integral_const 0.0 + 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 01:1B:19:00:00:00 + p2p_dst_mac 01:80:C2:00:00:0E + 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 0 + # + # Clock description + # + productDescription ;; + revisionData ;; + manufacturerIdentity 00:00:00 + userDescription ; + timeSource 0xA0 + recommend: + - profile: ordinary-clock + priority: 4 + match: + - nodeLabel: "node-role.kubernetes.io/$mcp"