From 348ebcbdd83a80aa71d040b3367caa01a1ff327b Mon Sep 17 00:00:00 2001 From: Aidan Reilly <74046732+aireilly@users.noreply.github.com> Date: Thu, 25 Jul 2024 17:33:16 +0100 Subject: [PATCH] Adding docs for TELCODOCS-1879 - PTP Operator T-GM leap seconds Adding leap second config procedure --- ...ervices-as-grandmaster-clock-dual-nic.adoc | 2 +- ...inuxptp-services-as-grandmaster-clock.adoc | 16 +- modules/nw-ptp-installing-operator-cli.adoc | 2 +- ...w-ptp-installing-operator-web-console.adoc | 2 +- ...dynamic-leap-seconds-handling-for-tgm.adoc | 149 ++++++ ...tp-overview-of-gnss-grandmaster-clock.adoc | 11 + networking/ptp/configuring-ptp.adoc | 4 +- networking/ptp/using-ptp-events.adoc | 2 +- snippets/ptp_PtpConfigDualCardGmWpc.yaml | 230 --------- snippets/ptp_PtpConfigGmWpc.yaml | 208 -------- snippets/ztp_PtpConfigDualCardGmWpc.yaml | 443 +++++++++--------- snippets/ztp_PtpConfigGmWpc.yaml | 7 +- 12 files changed, 404 insertions(+), 672 deletions(-) create mode 100644 modules/ptp-configuring-dynamic-leap-seconds-handling-for-tgm.adoc delete mode 100644 snippets/ptp_PtpConfigDualCardGmWpc.yaml delete mode 100644 snippets/ptp_PtpConfigGmWpc.yaml diff --git a/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock-dual-nic.adoc b/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock-dual-nic.adoc index 3dcd41ca14..8afd0981ac 100644 --- a/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock-dual-nic.adoc +++ b/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock-dual-nic.adoc @@ -46,7 +46,7 @@ See "Configuring the PTP fast event notifications publisher" for more informatio ==== [source,yaml] ---- -include::snippets/ptp_PtpConfigDualCardGmWpc.yaml[] +include::snippets/ztp_PtpConfigDualCardGmWpc.yaml[] ---- ==== + 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 4dd03b8ac3..ef8291ce2c 100644 --- a/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc +++ b/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc @@ -36,26 +36,12 @@ See "Configuring the PTP fast event notifications publisher" for more informatio .. Depending on your requirements, use one of the following T-GM configurations for your deployment. Save the YAML in the `grandmaster-clock-ptp-config.yaml` file: + -.Example PTP grandmaster clock configuration -[%collapsible] -===== -[source,yaml] ----- -include::snippets/ptp_PtpConfigGmWpc.yaml[] ----- - -[NOTE] -==== -The example PTP grandmaster clock configuration is for test purposes only and is not intended for production. -==== -===== -+ .PTP grandmaster clock configuration for E810 NIC [%collapsible] ==== [source,yaml] ---- -include::snippets/ptp_PtpConfigGmWpc.yaml[] +include::snippets/ztp_PtpConfigGmWpc.yaml[] ---- ==== + diff --git a/modules/nw-ptp-installing-operator-cli.adoc b/modules/nw-ptp-installing-operator-cli.adoc index 04b89578bd..ccfd3a2892 100644 --- a/modules/nw-ptp-installing-operator-cli.adoc +++ b/modules/nw-ptp-installing-operator-cli.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/ptp/about-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="install-ptp-operator-cli_{context}"] diff --git a/modules/nw-ptp-installing-operator-web-console.adoc b/modules/nw-ptp-installing-operator-web-console.adoc index 8e32081f67..93726203d4 100644 --- a/modules/nw-ptp-installing-operator-web-console.adoc +++ b/modules/nw-ptp-installing-operator-web-console.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/ptp/about-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="install-ptp-operator-web-console_{context}"] diff --git a/modules/ptp-configuring-dynamic-leap-seconds-handling-for-tgm.adoc b/modules/ptp-configuring-dynamic-leap-seconds-handling-for-tgm.adoc new file mode 100644 index 0000000000..c850077466 --- /dev/null +++ b/modules/ptp-configuring-dynamic-leap-seconds-handling-for-tgm.adoc @@ -0,0 +1,149 @@ +// Module included in the following assemblies: +// +// * networking/ptp/configuring-ptp.adoc + +:_mod-docs-content-type: PROCEDURE +[id="ptp-configuring-dynamic-leap-seconds-handling-for-tgm_{context}"] += Configuring dynamic leap seconds handling for PTP grandmaster clocks + +The PTP Operator container image includes the latest `leap-seconds.list` file that is available at the time of release. +You can configure the PTP Operator to automatically update the leap second file by using Global Positioning System (GPS) announcements. + +Leap second information is stored in an automatically generated `ConfigMap` resource named `leap-configmap` in the `openshift-ptp` namespace. +The PTP Operator mounts the `leap-configmap` resource as a volume in the `linuxptp-daemon` pod that is accessible by the `ts2phc` process. + +If the GPS satellite broadcasts new leap second data, the PTP Operator updates the `leap-configmap` resource with the new data. +The `ts2phc` process picks up the changes automatically. + +[NOTE] +==== +The following procedure is provided as reference. +The {product-version} version of the PTP Operator enables automatic leap second management by default. +==== + +.Prerequisites + +* You have installed the OpenShift CLI (`oc`). + +* You have logged in as a user with `cluster-admin` privileges. + +* You have installed the PTP Operator and configured a PTP grandmaster clock (T-GM) in the cluster. + +.Procedure + +. Configure automatic leap second handling in the `phc2sysOpts` section of the `PtpConfig` CR. +Set the following options: ++ +[source,yaml] +---- +phc2sysOpts: -r -u 0 -m -w -N 8 -R 16 -S 2 -s ens2f0 -n 24 <1> +---- +<1> Set `-w` to force `phc2sys` to wait until `ptp4l` has synchronized the system hardware clock before starting its own synchronization process. ++ +[NOTE] +==== +Previously, the T-GM required an offset adjustment in the `phc2sys` configuration (`-O -37`) to account for historical leap seconds. +This is no longer needed. +==== + +. Configure the Intel e810 NIC to enable periodical reporting of `NAV-TIMELS` messages by the GPS receiver in the `spec.profile.plugins.e810.ublxCmds` section of the `PtpConfig` CR. +For example: ++ +[source,yaml] +---- +- args: #ubxtool -P 29.20 -p CFG-MSG,1,38,248 + - "-P" + - "29.20" + - "-p" + - "CFG-MSG,1,38,248" +---- + +.Verification + +. Validate that the configured T-GM is receiving `NAV-TIMELS` messages from the connected GPS. +Run the following command: ++ +[source,terminal] +---- +$ oc -n openshift-ptp -c linuxptp-daemon-container exec -it $(oc -n openshift-ptp get pods -o name | grep daemon) -- ubxtool -t -p NAV-TIMELS -P 29.20 +---- ++ +.Example output +[source,terminal] +---- +1722509534.4417 +UBX-NAV-STATUS: + iTOW 384752000 gpsFix 5 flags 0xdd fixStat 0x0 flags2 0x8 + ttff 18261, msss 1367642864 + +1722509534.4419 +UBX-NAV-TIMELS: + iTOW 384752000 version 0 reserved2 0 0 0 srcOfCurrLs 2 + currLs 18 srcOfLsChange 2 lsChange 0 timeToLsEvent 70376866 + dateOfLsGpsWn 2441 dateOfLsGpsDn 7 reserved2 0 0 0 + valid x3 + +1722509534.4421 +UBX-NAV-CLOCK: + iTOW 384752000 clkB 784281 clkD 435 tAcc 3 fAcc 215 + +1722509535.4477 +UBX-NAV-STATUS: + iTOW 384753000 gpsFix 5 flags 0xdd fixStat 0x0 flags2 0x8 + ttff 18261, msss 1367643864 + +1722509535.4479 +UBX-NAV-CLOCK: + iTOW 384753000 clkB 784716 clkD 435 tAcc 3 fAcc 218 +---- + +. Validate that the `leap-configmap` resource has been successfully generated by the PTP Operator and is up to date with the latest version of the link:https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list[leap-seconds.list]. +Run the following command: ++ +[source,terminal] +---- +$ oc -n openshift-ptp get configmap leap-configmap -o jsonpath='{.data.}' <1> +---- +<1> Replace `` with the node where you have installed and configured the PTP T-GM clock with automatic leap second management. +Escape special characters in the node name. +For example, `node-1\.example\.com`. + ++ +.Example output +[source,terminal] +---- +# Do not edit +# This file is generated automatically by linuxptp-daemon +#$ 3913697179 +#@ 4291747200 +2272060800 10 # 1 Jan 1972 +2287785600 11 # 1 Jul 1972 +2303683200 12 # 1 Jan 1973 +2335219200 13 # 1 Jan 1974 +2366755200 14 # 1 Jan 1975 +2398291200 15 # 1 Jan 1976 +2429913600 16 # 1 Jan 1977 +2461449600 17 # 1 Jan 1978 +2492985600 18 # 1 Jan 1979 +2524521600 19 # 1 Jan 1980 +2571782400 20 # 1 Jul 1981 +2603318400 21 # 1 Jul 1982 +2634854400 22 # 1 Jul 1983 +2698012800 23 # 1 Jul 1985 +2776982400 24 # 1 Jan 1988 +2840140800 25 # 1 Jan 1990 +2871676800 26 # 1 Jan 1991 +2918937600 27 # 1 Jul 1992 +2950473600 28 # 1 Jul 1993 +2982009600 29 # 1 Jul 1994 +3029443200 30 # 1 Jan 1996 +3076704000 31 # 1 Jul 1997 +3124137600 32 # 1 Jan 1999 +3345062400 33 # 1 Jan 2006 +3439756800 34 # 1 Jan 2009 +3550089600 35 # 1 Jul 2012 +3644697600 36 # 1 Jul 2015 +3692217600 37 # 1 Jan 2017 + +#h e65754d4 8f39962b aa854a61 661ef546 d2af0bfa +---- diff --git a/modules/ptp-overview-of-gnss-grandmaster-clock.adoc b/modules/ptp-overview-of-gnss-grandmaster-clock.adoc index fc13b228e4..9ae039beef 100644 --- a/modules/ptp-overview-of-gnss-grandmaster-clock.adoc +++ b/modules/ptp-overview-of-gnss-grandmaster-clock.adoc @@ -28,3 +28,14 @@ Digital Phase-Locked Loop (DPLL):: DPLL provides clock synchronization between different PTP nodes in the network. DPLL compares the phase of the local system clock signal with the phase of the incoming synchronization signal, for example, PTP messages from the PTP grandmaster clock. The DPLL continuously adjusts the local clock frequency and phase to minimize the phase difference between the local clock and the reference clock. + +[discrete] +[id="handling-leap-second-events-in-gnss_{context}"] +== Handling leap second events in GNSS-synced PTP grandmaster clocks + +A leap second is a one-second adjustment that is occasionally applied to Coordinated Universal Time (UTC) to keep it synchronized with International Atomic Time (TAI). +UTC leap seconds are unpredictable. +Internationally agreed leap seconds are listed in link:https://hpiers.obspm.fr/iers/bul/bulc/ntp/leap-seconds.list[leap-seconds.list]. +This file is regularly updated by the International Earth Rotation and Reference Systems Service (IERS). +An unhandled leap second can have a significant impact on far edge RAN networks. +It can cause the far edge RAN application to immediately disconnect voice calls and data sessions. diff --git a/networking/ptp/configuring-ptp.adoc b/networking/ptp/configuring-ptp.adoc index 1aced4565b..0fd3928a66 100644 --- a/networking/ptp/configuring-ptp.adoc +++ b/networking/ptp/configuring-ptp.adoc @@ -8,7 +8,7 @@ toc::[] The PTP Operator adds the `NodePtpDevice.ptp.openshift.io` custom resource definition (CRD) to {product-title}. -When installed, the PTP Operator searches your cluster for PTP-capable network devices on each node. It creates and updates a `NodePtpDevice` custom resource (CR) object for each node that provides a compatible PTP-capable network device. +When installed, the PTP Operator searches your cluster for Precision Time Protocol (PTP) capable network devices on each node. It creates and updates a `NodePtpDevice` custom resource (CR) object for each node that provides a compatible PTP-capable network device. include::modules/nw-ptp-installing-operator-cli.adoc[leveloffset=+1] @@ -35,6 +35,8 @@ include::modules/nw-ptp-e810-hardware-configuration-reference.adoc[leveloffset=+ include::modules/nw-ptp-dual-wpc-hardware-config-reference.adoc[leveloffset=+2] +include::modules/ptp-configuring-dynamic-leap-seconds-handling-for-tgm.adoc[leveloffset=+1] + include::modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc[leveloffset=+1] [role="_additional-resources"] diff --git a/networking/ptp/using-ptp-events.adoc b/networking/ptp/using-ptp-events.adoc index 560eab9a3e..cde01d97a4 100644 --- a/networking/ptp/using-ptp-events.adoc +++ b/networking/ptp/using-ptp-events.adoc @@ -7,7 +7,7 @@ include::_attributes/common-attributes.adoc[] toc::[] Cloud native applications such as virtual RAN (vRAN) require access to notifications about hardware timing events that are critical to the functioning of the overall network. -PTP clock synchronization errors can negatively affect the performance and reliability of your low-latency application, for example, a vRAN application running in a distributed unit (DU). +Precision Time Protocol (PTP) clock synchronization errors can negatively affect the performance and reliability of your low-latency application, for example, a vRAN application running in a distributed unit (DU). include::modules/cnf-about-ptp-and-clock-synchronization.adoc[leveloffset=+1] diff --git a/snippets/ptp_PtpConfigDualCardGmWpc.yaml b/snippets/ptp_PtpConfigDualCardGmWpc.yaml deleted file mode 100644 index ddde1e7bf7..0000000000 --- a/snippets/ptp_PtpConfigDualCardGmWpc.yaml +++ /dev/null @@ -1,230 +0,0 @@ -apiVersion: ptp.openshift.io/v1 -kind: PtpConfig -metadata: - name: grandmaster - namespace: openshift-ptp - annotations: - ran.openshift.io/ztp-deploy-wave: "10" -spec: - profile: - - name: "grandmaster" - ptp4lOpts: "-2 --summary_interval -4" - phc2sysOpts: -r -u 0 -m -O -37 -N 8 -R 16 -s $iface_nic1 -n 24 - ptpSchedulingPolicy: SCHED_FIFO - ptpSchedulingPriority: 10 - ptpSettings: - logReduce: "true" - plugins: - e810: - enableDefaultConfig: false - settings: - LocalMaxHoldoverOffSet: 1500 - LocalHoldoverTimeout: 14400 - MaxInSpecOffset: 100 - pins: - "$iface_nic1": - "U.FL2": "0 2" - "U.FL1": "0 1" - "SMA2": "0 2" - "SMA1": "2 1" - "$iface_nic2": - "U.FL2": "0 2" - "U.FL1": "0 1" - "SMA2": "0 2" - "SMA1": "1 1" - ublxCmds: - - args: #ubxtool -P 29.20 -z CFG-HW-ANT_CFG_VOLTCTRL,1 - - "-P" - - "29.20" - - "-z" - - "CFG-HW-ANT_CFG_VOLTCTRL,1" - reportOutput: false - - args: #ubxtool -P 29.20 -e GPS - - "-P" - - "29.20" - - "-e" - - "GPS" - reportOutput: false - - args: #ubxtool -P 29.20 -d Galileo - - "-P" - - "29.20" - - "-d" - - "Galileo" - reportOutput: false - - args: #ubxtool -P 29.20 -d GLONASS - - "-P" - - "29.20" - - "-d" - - "GLONASS" - reportOutput: false - - args: #ubxtool -P 29.20 -d BeiDou - - "-P" - - "29.20" - - "-d" - - "BeiDou" - reportOutput: false - - args: #ubxtool -P 29.20 -d SBAS - - "-P" - - "29.20" - - "-d" - - "SBAS" - reportOutput: false - - args: #ubxtool -P 29.20 -t -w 5 -v 1 -e SURVEYIN,600,50000 - - "-P" - - "29.20" - - "-t" - - "-w" - - "5" - - "-v" - - "1" - - "-e" - - "SURVEYIN,600,50000" - reportOutput: true - - args: #ubxtool -P 29.20 -p MON-HW - - "-P" - - "29.20" - - "-p" - - "MON-HW" - reportOutput: true - ts2phcOpts: " " - ts2phcConf: | - [nmea] - ts2phc.master 1 - [global] - use_syslog 0 - verbose 1 - logging_level 7 - ts2phc.pulsewidth 100000000 - #cat /dev/GNSS to find available serial port - #example value of gnss_serialport is /dev/ttyGNSS_1700_0 - ts2phc.nmea_serialport $gnss_serialport - leapfile /usr/share/zoneinfo/leap-seconds.list - [$iface_nic1] - ts2phc.extts_polarity rising - ts2phc.extts_correction 0 - [$iface_nic2] - ts2phc.master 0 - ts2phc.extts_polarity rising - #this is a measured value in nanoseconds to compensate for SMA cable delay - ts2phc.extts_correction -10 - ptp4lConf: | - [$iface_nic1] - masterOnly 1 - [$iface_nic1_1] - masterOnly 1 - [$iface_nic1_2] - masterOnly 1 - [$iface_nic1_3] - masterOnly 1 - [$iface_nic2] - masterOnly 1 - [$iface_nic2_1] - masterOnly 1 - [$iface_nic2_2] - masterOnly 1 - [$iface_nic2_3] - 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 - 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 - 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 1 - # - # Clock description - # - productDescription ;; - revisionData ;; - manufacturerIdentity 00:00:00 - userDescription ; - timeSource 0x20 - recommend: - - profile: "grandmaster" - priority: 4 - match: - - nodeLabel: "node-role.kubernetes.io/$mcp" \ No newline at end of file diff --git a/snippets/ptp_PtpConfigGmWpc.yaml b/snippets/ptp_PtpConfigGmWpc.yaml deleted file mode 100644 index ff7da9d788..0000000000 --- a/snippets/ptp_PtpConfigGmWpc.yaml +++ /dev/null @@ -1,208 +0,0 @@ -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 $iface_master -n 24 - ptpSchedulingPolicy: SCHED_FIFO - ptpSchedulingPriority: 10 - ptpSettings: - logReduce: "true" - plugins: - e810: - enableDefaultConfig: false - settings: - LocalMaxHoldoverOffSet: 1500 - LocalHoldoverTimeout: 14400 - MaxInSpecOffset: 100 - pins: $e810_pins - # "$iface_master": - # "U.FL2": "0 2" - # "U.FL1": "0 1" - # "SMA2": "0 2" - # "SMA1": "0 1" - ublxCmds: - - args: #ubxtool -P 29.20 -z CFG-HW-ANT_CFG_VOLTCTRL,1 - - "-P" - - "29.20" - - "-z" - - "CFG-HW-ANT_CFG_VOLTCTRL,1" - reportOutput: false - - args: #ubxtool -P 29.20 -e GPS - - "-P" - - "29.20" - - "-e" - - "GPS" - reportOutput: false - - args: #ubxtool -P 29.20 -d Galileo - - "-P" - - "29.20" - - "-d" - - "Galileo" - reportOutput: false - - args: #ubxtool -P 29.20 -d GLONASS - - "-P" - - "29.20" - - "-d" - - "GLONASS" - reportOutput: false - - args: #ubxtool -P 29.20 -d BeiDou - - "-P" - - "29.20" - - "-d" - - "BeiDou" - reportOutput: false - - args: #ubxtool -P 29.20 -d SBAS - - "-P" - - "29.20" - - "-d" - - "SBAS" - reportOutput: false - - args: #ubxtool -P 29.20 -t -w 5 -v 1 -e SURVEYIN,600,50000 - - "-P" - - "29.20" - - "-t" - - "-w" - - "5" - - "-v" - - "1" - - "-e" - - "SURVEYIN,600,50000" - reportOutput: true - - args: #ubxtool -P 29.20 -p MON-HW - - "-P" - - "29.20" - - "-p" - - "MON-HW" - reportOutput: true - ts2phcOpts: " " - ts2phcConf: | - [nmea] - ts2phc.master 1 - [global] - use_syslog 0 - verbose 1 - logging_level 7 - ts2phc.pulsewidth 100000000 - ts2phc.nmea_serialport $gnss_serialport - leapfile /usr/share/zoneinfo/leap-seconds.list - [$iface_master] - ts2phc.extts_polarity rising - ts2phc.extts_correction 0 - ptp4lConf: | - [$iface_master] - masterOnly 1 - [$iface_master_1] - masterOnly 1 - [$iface_master_2] - masterOnly 1 - [$iface_master_3] - 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 - 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 - 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/$mcp" diff --git a/snippets/ztp_PtpConfigDualCardGmWpc.yaml b/snippets/ztp_PtpConfigDualCardGmWpc.yaml index 2b6034dffc..d2a63aa0f3 100644 --- a/snippets/ztp_PtpConfigDualCardGmWpc.yaml +++ b/snippets/ztp_PtpConfigDualCardGmWpc.yaml @@ -1,221 +1,238 @@ -# 2 cards $iface_master and $iface_master_1 are connected via SMA1 ports by a cable and $iface_master_1 receives 1PPS signals from $iface_master +# In this example two cards $iface_nic1 and $iface_nic2 are connected via +# SMA1 ports by a cable and $iface_nic2 receives 1PPS signals from $iface_nic1 apiVersion: ptp.openshift.io/v1 kind: PtpConfig metadata: name: grandmaster namespace: openshift-ptp - annotations: {} + annotations: + ran.openshift.io/ztp-deploy-wave: "10" spec: profile: - - name: "grandmaster" - ptp4lOpts: "-2 --summary_interval -4" - phc2sysOpts: -r -u 0 -m -O -37 -N 8 -R 16 -s $iface_master -n 24 - ptpSchedulingPolicy: SCHED_FIFO - ptpSchedulingPriority: 10 - ptpSettings: - logReduce: "true" - plugins: - e810: - enableDefaultConfig: false - settings: - LocalMaxHoldoverOffSet: 1500 - LocalHoldoverTimeout: 14400 - MaxInSpecOffset: 100 - pins: $e810_pins - # "$iface_master": - # "U.FL2": "0 2" - # "U.FL1": "0 1" - # "SMA2": "0 2" - # "SMA1": "2 1" - # "$iface_master_1": - # "U.FL2": "0 2" - # "U.FL1": "0 1" - # "SMA2": "0 2" - # "SMA1": "1 1" - ublxCmds: - - args: #ubxtool -P 29.20 -z CFG-HW-ANT_CFG_VOLTCTRL,1 - - "-P" - - "29.20" - - "-z" - - "CFG-HW-ANT_CFG_VOLTCTRL,1" - reportOutput: false - - args: #ubxtool -P 29.20 -e GPS - - "-P" - - "29.20" - - "-e" - - "GPS" - reportOutput: false - - args: #ubxtool -P 29.20 -d Galileo - - "-P" - - "29.20" - - "-d" - - "Galileo" - reportOutput: false - - args: #ubxtool -P 29.20 -d GLONASS - - "-P" - - "29.20" - - "-d" - - "GLONASS" - reportOutput: false - - args: #ubxtool -P 29.20 -d BeiDou - - "-P" - - "29.20" - - "-d" - - "BeiDou" - reportOutput: false - - args: #ubxtool -P 29.20 -d SBAS - - "-P" - - "29.20" - - "-d" - - "SBAS" - reportOutput: false - - args: #ubxtool -P 29.20 -t -w 5 -v 1 -e SURVEYIN,600,50000 - - "-P" - - "29.20" - - "-t" - - "-w" - - "5" - - "-v" - - "1" - - "-e" - - "SURVEYIN,600,50000" - reportOutput: true - - args: #ubxtool -P 29.20 -p MON-HW - - "-P" - - "29.20" - - "-p" - - "MON-HW" - reportOutput: true - ts2phcOpts: " " - ts2phcConf: | - [nmea] - ts2phc.master 1 - [global] - use_syslog 0 - verbose 1 - logging_level 7 - ts2phc.pulsewidth 100000000 - #cat /dev/GNSS to find available serial port - #example value of gnss_serialport is /dev/ttyGNSS_1700_0 - ts2phc.nmea_serialport $gnss_serialport - leapfile /usr/share/zoneinfo/leap-seconds.list - [$iface_master] - ts2phc.extts_polarity rising - ts2phc.extts_correction 0 - [$iface_master_1] - ts2phc.extts_polarity rising - #this is a measured value in nanoseconds to compensate for SMA cable delay - ts2phc.extts_correction -10 - ptp4lConf: | - [$iface_master] - masterOnly 1 - [$iface_master_1] - masterOnly 1 - [$iface_master_1_1] - masterOnly 1 - [$iface_master_1_2] - 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 - 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 - 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 1 - # - # Clock description - # - productDescription ;; - revisionData ;; - manufacturerIdentity 00:00:00 - userDescription ; - timeSource 0x20 + - name: "grandmaster" + ptp4lOpts: "-2 --summary_interval -4" + phc2sysOpts: -r -u 0 -m -w -N 8 -R 16 -s $iface_nic1 -n 24 + ptpSchedulingPolicy: SCHED_FIFO + ptpSchedulingPriority: 10 + ptpSettings: + logReduce: "true" + plugins: + e810: + enableDefaultConfig: false + settings: + LocalMaxHoldoverOffSet: 1500 + LocalHoldoverTimeout: 14400 + MaxInSpecOffset: 100 + pins: $e810_pins + # "$iface_nic1": + # "U.FL2": "0 2" + # "U.FL1": "0 1" + # "SMA2": "0 2" + # "SMA1": "2 1" + # "$iface_nic2": + # "U.FL2": "0 2" + # "U.FL1": "0 1" + # "SMA2": "0 2" + # "SMA1": "1 1" + ublxCmds: + - args: #ubxtool -P 29.20 -z CFG-HW-ANT_CFG_VOLTCTRL,1 + - "-P" + - "29.20" + - "-z" + - "CFG-HW-ANT_CFG_VOLTCTRL,1" + reportOutput: false + - args: #ubxtool -P 29.20 -e GPS + - "-P" + - "29.20" + - "-e" + - "GPS" + reportOutput: false + - args: #ubxtool -P 29.20 -d Galileo + - "-P" + - "29.20" + - "-d" + - "Galileo" + reportOutput: false + - args: #ubxtool -P 29.20 -d GLONASS + - "-P" + - "29.20" + - "-d" + - "GLONASS" + reportOutput: false + - args: #ubxtool -P 29.20 -d BeiDou + - "-P" + - "29.20" + - "-d" + - "BeiDou" + reportOutput: false + - args: #ubxtool -P 29.20 -d SBAS + - "-P" + - "29.20" + - "-d" + - "SBAS" + reportOutput: false + - args: #ubxtool -P 29.20 -t -w 5 -v 1 -e SURVEYIN,600,50000 + - "-P" + - "29.20" + - "-t" + - "-w" + - "5" + - "-v" + - "1" + - "-e" + - "SURVEYIN,600,50000" + reportOutput: true + - args: #ubxtool -P 29.20 -p MON-HW + - "-P" + - "29.20" + - "-p" + - "MON-HW" + reportOutput: true + - args: #ubxtool -P 29.20 -p CFG-MSG,1,38,248 + - "-P" + - "29.20" + - "-p" + - "CFG-MSG,1,38,248" + reportOutput: true + ts2phcOpts: " " + ts2phcConf: | + [nmea] + ts2phc.master 1 + [global] + use_syslog 0 + verbose 1 + logging_level 7 + ts2phc.pulsewidth 100000000 + #cat /dev/GNSS to find available serial port + #example value of gnss_serialport is /dev/ttyGNSS_1700_0 + ts2phc.nmea_serialport $gnss_serialport + leapfile /usr/share/zoneinfo/leap-seconds.list + [$iface_nic1] + ts2phc.extts_polarity rising + ts2phc.extts_correction 0 + [$iface_nic2] + ts2phc.master 0 + ts2phc.extts_polarity rising + #this is a measured value in nanoseconds to compensate for SMA cable delay + ts2phc.extts_correction -10 + ptp4lConf: | + [$iface_nic1] + masterOnly 1 + [$iface_nic1_1] + masterOnly 1 + [$iface_nic1_2] + masterOnly 1 + [$iface_nic1_3] + masterOnly 1 + [$iface_nic2] + masterOnly 1 + [$iface_nic2_1] + masterOnly 1 + [$iface_nic2_2] + masterOnly 1 + [$iface_nic2_3] + 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 + 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 + 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 1 + # + # Clock description + # + productDescription ;; + revisionData ;; + manufacturerIdentity 00:00:00 + userDescription ; + timeSource 0x20 recommend: - - profile: "grandmaster" - priority: 4 - match: - - nodeLabel: "node-role.kubernetes.io/$mcp" + - profile: "grandmaster" + priority: 4 + match: + - nodeLabel: "node-role.kubernetes.io/$mcp" diff --git a/snippets/ztp_PtpConfigGmWpc.yaml b/snippets/ztp_PtpConfigGmWpc.yaml index 45c3151e51..9557ca5271 100644 --- a/snippets/ztp_PtpConfigGmWpc.yaml +++ b/snippets/ztp_PtpConfigGmWpc.yaml @@ -80,6 +80,12 @@ spec: - "-p" - "MON-HW" reportOutput: true + - args: #ubxtool -P 29.20 -p CFG-MSG,1,38,248 + - "-P" + - "29.20" + - "-p" + - "CFG-MSG,1,38,248" + reportOutput: true ts2phcOpts: " " ts2phcConf: | [nmea] @@ -92,7 +98,6 @@ spec: #cat /dev/GNSS to find available serial port #example value of gnss_serialport is /dev/ttyGNSS_1700_0 ts2phc.nmea_serialport $gnss_serialport - leapfile /usr/share/zoneinfo/leap-seconds.list [$iface_master] ts2phc.extts_polarity rising ts2phc.extts_correction 0