From 8936b26f9e8124101cad6688f0a55e33b8cefa48 Mon Sep 17 00:00:00 2001 From: aireilly Date: Thu, 28 Sep 2023 13:14:50 +0100 Subject: [PATCH] E810 hardware plugin doc updates WPC T-GM + GNSS updates General PTP docs reorg and clean up Updates based on Aneesh's review comments removing gnss-state-change from api/ocloudNotifications/v1//CurrentState Adding metric details Adding new PTP image Adding final PTP 4.14 image Aneesh's comments jack's comments Adjust TOC Peer review comments --- .vale/styles/Vocab/OpenShiftDocs/accept.txt | 23 ++- .vale/styles/Vocab/OpenShiftDocs/reject.txt | 4 +- _topic_maps/_topic_map.yml | 13 +- .../sd-configuring-identity-providers.adoc | 2 +- ...hift_PTP_bare-metal_OCP_nodes_1023_PTP.png | Bin 0 -> 128515 bytes ..._bare-metal_OCP_nodes_1123_PTP_network.png | Bin 0 -> 146363 bytes modules/cnf-about-collecting-ptp-data.adoc | 8 +- ...f-about-ptp-and-clock-synchronization.adoc | 4 +- ...tp-fast-event-notifications-framework.adoc | 2 +- ...ring-fifo-priority-scheduling-for-ptp.adoc | 6 +- ...onfiguring-log-filtering-for-linuxptp.adoc | 6 +- ...figuring-the-ptp-fast-event-publisher.adoc | 2 +- ...t-event-notifications-api-refererence.adoc | 136 ++++++++++-------- ...alling-amq-interconnect-messaging-bus.adoc | 2 +- ...migrating-from-amqp-to-http-transport.adoc | 2 +- .../cnf-monitoring-fast-events-metrics.adoc | 39 +++-- ...leshooting-common-ptp-operator-issues.adoc | 36 ++++- ...ted-cluster-etcd-quorum-loss-recovery.adoc | 6 +- ...es-advanced-customizing-live-ca-certs.adoc | 2 +- ...anced-customizing-live-network-config.adoc | 2 +- ...ra-machines-advanced-customizing-live.adoc | 2 +- modules/kmm-hub-hub-and-spoke.adoc | 2 +- ...installing-kmm-hub-creating-resources.adoc | 2 +- modules/kmm-hub-installing-kmm-hub-olm.adoc | 2 +- modules/kmm-hub-installing-kmm-hub.adoc | 2 +- modules/kmm-hub-kmm-hub.adoc | 2 +- modules/kmm-hub-running-kmm-on-the-spoke.adoc | 2 +- ...mm-hub-using-the-managedclustermodule.adoc | 2 +- modules/kmm-uninstalling-kmm.adoc | 2 +- modules/kmm-uninstalling-kmmo-cli.adoc | 2 +- ...kmm-uninstalling-kmmo-red-hat-catalog.adoc | 2 +- modules/log-forwarding-implementations.adoc | 2 +- modules/logging-loki-log-access.adoc | 2 +- modules/logging-upgrading-loki.adoc | 2 +- ...-secrets-creating-web-console-secrets.adoc | 11 +- modules/nvidia-gpu-cuda-mps.adoc | 2 +- modules/nvidia-gpu-cuda-streams.adoc | 2 +- modules/nvidia-gpu-mig-gpu.adoc | 2 +- modules/nvidia-gpu-sharing-methods.adoc | 2 +- modules/nvidia-gpu-time-slicing.adoc | 2 +- .../nvidia-gpu-virtualization-with-gpu.adoc | 2 +- ...-columbiaville-ptp-config-refererence.adoc | 7 +- ...g-linuxptp-services-as-boundary-clock.adoc | 4 +- ...inuxptp-services-as-grandmaster-clock.adoc | 18 ++- ...g-linuxptp-services-as-ordinary-clock.adoc | 4 +- modules/nw-ptp-device-discovery.adoc | 3 +- ...e810-hardware-configuration-reference.adoc | 100 +++++++++++++ ...ptp-grandmaster-clock-class-reference.adoc | 35 +++++ ...dmaster-clock-configuration-reference.adoc | 2 +- modules/nw-ptp-installing-operator-cli.adoc | 2 +- ...w-ptp-installing-operator-web-console.adoc | 13 +- modules/nw-ptp-introduction.adoc | 26 ++-- .../nw-ptp-operator-metrics-reference.adoc | 75 ++++++++++ .../oadp-gcp-wif-cloud-authentication.adoc | 4 +- .../oadp-installing-dpa-1-2-and-earlier.adoc | 4 +- modules/oadp-installing-dpa-1-3.adoc | 4 +- .../ptp-cloud-event-proxy-sidecar-api.adoc | 2 +- ...p-services-as-boundary-clock-dual-nic.adoc | 2 +- modules/ptp-dual-nics.adoc | 4 +- modules/ptp-events-consumer-application.adoc | 2 +- ...-getting-the-current-ptp-clock-status.adoc | 2 +- modules/ptp-linuxptp-introduction.adoc | 18 ++- ...tp-overview-of-gnss-grandmaster-clock.adoc | 30 ++++ ...-reference-deployment-and-service-crs.adoc | 2 +- ...tp-subscribing-consumer-app-to-events.adoc | 2 +- ...-using-hardware-specific-nic-features.adoc | 16 +++ ...ents-consumer-app-is-receiving-events.adoc | 2 +- ...observability-loki-resource-exhausted.adoc | 10 +- ...virt-attaching-virtio-disk-to-windows.adoc | 4 +- ...-enabling-volume-snapshot-boot-source.adoc | 4 +- networking/ptp/_attributes | 1 + networking/ptp/about-ptp.adoc | 38 +++++ networking/ptp/configuring-ptp.adoc | 67 +++++++++ networking/ptp/images | 1 + networking/ptp/modules | 1 + ...p-cloud-events-consumer-dev-reference.adoc | 2 +- networking/ptp/snippets | 1 + networking/ptp/using-ptp-events.adoc | 66 +++++++++ networking/using-ptp.adoc | 121 ---------------- .../ztp-advanced-policy-config.adoc | 2 +- snippets/ptp-clock-holdover-note.adoc | 10 ++ snippets/ptp_PtpConfigGmWpc.yaml | 68 ++++++++- snippets/snip-noobaa-and-mcg.adoc | 4 +- snippets/snip-post-mig-hook | 4 +- 84 files changed, 794 insertions(+), 339 deletions(-) create mode 100644 images/319_OpenShift_PTP_bare-metal_OCP_nodes_1023_PTP.png create mode 100644 images/319_OpenShift_PTP_bare-metal_OCP_nodes_1123_PTP_network.png create mode 100644 modules/nw-ptp-e810-hardware-configuration-reference.adoc create mode 100644 modules/nw-ptp-grandmaster-clock-class-reference.adoc create mode 100644 modules/nw-ptp-operator-metrics-reference.adoc create mode 100644 modules/ptp-overview-of-gnss-grandmaster-clock.adoc create mode 100644 modules/ptp-using-hardware-specific-nic-features.adoc create mode 120000 networking/ptp/_attributes create mode 100644 networking/ptp/about-ptp.adoc create mode 100644 networking/ptp/configuring-ptp.adoc create mode 120000 networking/ptp/images create mode 120000 networking/ptp/modules rename networking/{ => ptp}/ptp-cloud-events-consumer-dev-reference.adoc (88%) create mode 120000 networking/ptp/snippets create mode 100644 networking/ptp/using-ptp-events.adoc delete mode 100644 networking/using-ptp.adoc create mode 100644 snippets/ptp-clock-holdover-note.adoc diff --git a/.vale/styles/Vocab/OpenShiftDocs/accept.txt b/.vale/styles/Vocab/OpenShiftDocs/accept.txt index 5ef46f4774..6a0fcd8ba1 100644 --- a/.vale/styles/Vocab/OpenShiftDocs/accept.txt +++ b/.vale/styles/Vocab/OpenShiftDocs/accept.txt @@ -1,20 +1,29 @@ # Regex terms added to accept.txt are ignored by the Vale linter and override RedHat Vale rules. # Add terms that have a corresponding incorrectly capitalized form to reject.txt. - +# URL slugs +(.*/)+ +(?kE*na>y~u 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
    Cc%Lc=oF5)icNjf3D@Vj)(B(&G`%O+19L} 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 I%+Fl^4}@Rgc>n+a literal 0 HcmV?d00001 diff --git a/images/319_OpenShift_PTP_bare-metal_OCP_nodes_1123_PTP_network.png b/images/319_OpenShift_PTP_bare-metal_OCP_nodes_1123_PTP_network.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3654b072a5d4fa046f754e5a828a34745042a2 GIT binary patch literal 146363 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 F{{i6{ZZZG> literal 0 HcmV?d00001 diff --git a/modules/cnf-about-collecting-ptp-data.adoc b/modules/cnf-about-collecting-ptp-data.adoc index c210481f69..b2009621bd 100644 --- a/modules/cnf-about-collecting-ptp-data.adoc +++ b/modules/cnf-about-collecting-ptp-data.adoc @@ -1,12 +1,12 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="cnf-about-collecting-nro-data_{context}"] -= Collecting Precision Time Protocol (PTP) Operator data += Collecting PTP Operator data -You can use the `oc adm must-gather` CLI command to collect information about your cluster, including features and objects associated with Precision Time Protocol (PTP) Operator. +You can use the `oc adm must-gather` command to collect information about your cluster, including features and objects associated with PTP Operator. .Prerequisites @@ -23,4 +23,4 @@ You can use the `oc adm must-gather` CLI command to collect information about yo [source,terminal,subs="attributes+"] ---- $ oc adm must-gather --image=registry.redhat.io/openshift4/ptp-must-gather-rhel8:v{product-version} ----- \ No newline at end of file +---- diff --git a/modules/cnf-about-ptp-and-clock-synchronization.adoc b/modules/cnf-about-ptp-and-clock-synchronization.adoc index 4562d20658..33b1673c9d 100644 --- a/modules/cnf-about-ptp-and-clock-synchronization.adoc +++ b/modules/cnf-about-ptp-and-clock-synchronization.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/using-ptp-events.adoc :_mod-docs-content-type: CONCEPT [id="cnf-about-ptp-and-clock-synchronization_{context}"] @@ -8,7 +8,7 @@ Loss of PTP synchronization is a critical error for a RAN network. If synchronization is lost on a node, the radio might be shut down and the network Over the Air (OTA) traffic might be shifted to another node in the wireless network. Fast event notifications mitigate against workload errors by allowing cluster nodes to communicate PTP clock sync status to the vRAN application running in the DU. -Event notifications are available to vRAN applications running on the same DU node. A publish-subscribe REST API passes events notifications to the messaging bus. Publish-subscribe messaging, or pub-sub messaging, is an asynchronous service-to-service communication architecture where any message published to a topic is immediately received by all of the subscribers to the topic. +Event notifications are available to vRAN applications running on the same DU node. A publish/subscribe REST API passes events notifications to the messaging bus. Publish/subscribe messaging, or pub-sub messaging, is an asynchronous service-to-service communication architecture where any message published to a topic is immediately received by all of the subscribers to the topic. The PTP Operator generates fast event notifications for every PTP-capable network interface. You can access the events by using a `cloud-event-proxy` sidecar container over an HTTP or Advanced Message Queuing Protocol (AMQP) message bus. diff --git a/modules/cnf-about-ptp-fast-event-notifications-framework.adoc b/modules/cnf-about-ptp-fast-event-notifications-framework.adoc index 6cb9f4d2e8..beb4fd6d55 100644 --- a/modules/cnf-about-ptp-fast-event-notifications-framework.adoc +++ b/modules/cnf-about-ptp-fast-event-notifications-framework.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/using-ptp-events.adoc :_mod-docs-content-type: CONCEPT [id="cnf-about-ptp-fast-event-notifications-framework_{context}"] diff --git a/modules/cnf-configuring-fifo-priority-scheduling-for-ptp.adoc b/modules/cnf-configuring-fifo-priority-scheduling-for-ptp.adoc index 0686c4bb1e..a7cf8c959a 100644 --- a/modules/cnf-configuring-fifo-priority-scheduling-for-ptp.adoc +++ b/modules/cnf-configuring-fifo-priority-scheduling-for-ptp.adoc @@ -1,12 +1,12 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="cnf-configuring-fifo-priority-scheduling-for-ptp_{context}"] = Configuring FIFO priority scheduling for PTP hardware -In telco or other deployment configurations that require low latency performance, PTP daemon threads run in a constrained CPU footprint alongside the rest of the infrastructure components. By default, PTP threads run with the `SCHED_OTHER` policy. Under high load, these threads might not get the scheduling latency they require for error-free operation. +In telco or other deployment types that require low latency performance, PTP daemon threads run in a constrained CPU footprint alongside the rest of the infrastructure components. By default, PTP threads run with the `SCHED_OTHER` policy. Under high load, these threads might not get the scheduling latency they require for error-free operation. To mitigate against potential scheduling latency errors, you can configure the PTP Operator `linuxptp` services to allow threads to run with a `SCHED_FIFO` policy. If `SCHED_FIFO` is set for a `PtpConfig` CR, then `ptp4l` and `phc2sys` will run in the parent container under `chrt` with a priority set by the `ptpSchedulingPriority` field of the `PtpConfig` CR. @@ -76,5 +76,3 @@ $ oc -n openshift-ptp logs linuxptp-daemon-lgm55 -c linuxptp-daemon-container|gr ---- I1216 19:24:57.091872 1600715 daemon.go:285] /bin/chrt -f 65 /usr/sbin/ptp4l -f /var/run/ptp4l.0.config -2 --summary_interval -4 -m ---- - - diff --git a/modules/cnf-configuring-log-filtering-for-linuxptp.adoc b/modules/cnf-configuring-log-filtering-for-linuxptp.adoc index 7a04f8c11f..9eb306f578 100644 --- a/modules/cnf-configuring-log-filtering-for-linuxptp.adoc +++ b/modules/cnf-configuring-log-filtering-for-linuxptp.adoc @@ -1,12 +1,12 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="cnf-configuring-log-filtering-for-linuxptp_{context}"] = Configuring log filtering for linuxptp services -The `linuxptp` daemon generates logs that you can use for debugging purposes. In telco or other deployment configurations that feature a limited storage capacity, these logs can add to the storage demand. +The `linuxptp` daemon generates logs that you can use for debugging purposes. In telco or other deployment types that feature a limited storage capacity, these logs can add to the storage demand. To reduce the number log messages, you can configure the `PtpConfig` custom resource (CR) to exclude log messages that report the `master offset` value. The `master offset` log message reports the difference between the current node's clock and the master clock in nanoseconds. @@ -77,4 +77,4 @@ $ oc -n openshift-ptp logs -c linuxptp-daemon-container ---- <1> is the name of the `linuxptp-daemon` pod, for example `linuxptp-daemon-gmv2n`. + -When you configure the `logReduce` specification, this command does not report any instances of `master offset` in the logs of the `linuxptp` daemon. \ No newline at end of file +When you configure the `logReduce` specification, this command does not report any instances of `master offset` in the logs of the `linuxptp` daemon. diff --git a/modules/cnf-configuring-the-ptp-fast-event-publisher.adoc b/modules/cnf-configuring-the-ptp-fast-event-publisher.adoc index dd6248a2b1..60ef232403 100644 --- a/modules/cnf-configuring-the-ptp-fast-event-publisher.adoc +++ b/modules/cnf-configuring-the-ptp-fast-event-publisher.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/using-ptp-events.adoc :_mod-docs-content-type: PROCEDURE [id="cnf-configuring-the-ptp-fast-event-publisher_{context}"] diff --git a/modules/cnf-fast-event-notifications-api-refererence.adoc b/modules/cnf-fast-event-notifications-api-refererence.adoc index 669dbea341..e1957e8647 100644 --- a/modules/cnf-fast-event-notifications-api-refererence.adoc +++ b/modules/cnf-fast-event-notifications-api-refererence.adoc @@ -1,39 +1,14 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/using-ptp-events.adoc +:_mod-docs-content-type: PROCEDURE [id="cnf-fast-event-notifications-api-refererence_{context}"] -= Subscribing DU applications to PTP events REST API reference += PTP events REST API reference -Use the PTP event notifications REST API to subscribe a distributed unit (DU) application to the PTP events that are generated on the parent node. - -Subscribe applications to PTP events by using the resource address `/cluster/node//ptp`, where `` is the cluster node running the DU application. - -Deploy your `cloud-event-consumer` DU application container and `cloud-event-proxy` sidecar container in a separate DU application pod. The `cloud-event-consumer` DU application subscribes to the `cloud-event-proxy` container in the application pod. - -Use the following API endpoints to subscribe the `cloud-event-consumer` DU application to PTP events posted by the `cloud-event-proxy` container at [x-]`http://localhost:8089/api/ocloudNotifications/v1/` in the DU application pod: - -* `/api/ocloudNotifications/v1/subscriptions` -- `POST`: Creates a new subscription -- `GET`: Retrieves a list of subscriptions - -* `/api/ocloudNotifications/v1/subscriptions/` -- `GET`: Returns details for the specified subscription ID - -* `/api/ocloudNotifications/v1/health` -- `GET`: Returns the health status of `ocloudNotifications` API - -* `api/ocloudNotifications/v1/publishers` -- `GET`: Returns an array of `os-clock-sync-state`, `ptp-clock-class-change`, and `lock-state` messages for the cluster node - -* `/api/ocloudnotifications/v1//CurrentState` -- `GET`: Returns the current state of one the following event types: `os-clock-sync-state`, `ptp-clock-class-change`, or `lock-state` events - -[NOTE] -==== -`9089` is the default port for the `cloud-event-consumer` container deployed in the application pod. You can configure a different port for your DU application as required. -==== +Use the PTP event notifications REST API to subscribe a cluster application to the PTP events that are generated on the parent node. +[id="api-ocloud-notifications-v1-subscriptions_{context}"] == api/ocloudNotifications/v1/subscriptions [discrete] @@ -42,7 +17,7 @@ Use the following API endpoints to subscribe the `cloud-event-consumer` DU appli `GET api/ocloudNotifications/v1/subscriptions` [discrete] -==== Description +=== Description Returns a list of subscriptions. If subscriptions exist, a `200 OK` status code is returned along with the list of subscriptions. @@ -65,17 +40,19 @@ Returns a list of subscriptions. If subscriptions exist, a `200 OK` status code `POST api/ocloudNotifications/v1/subscriptions` [discrete] -==== Description +=== Description Creates a new subscription. If a subscription is successfully created, or if it already exists, a `201 Created` status code is returned. .Query parameters -|=== -| Parameter | Type +[cols=2*, width="60%", options="header"] +|==== +|Parameter +|Type -| subscription -| data -|=== +|subscription +|data +|==== .Example payload [source,json] @@ -86,6 +63,7 @@ Creates a new subscription. If a subscription is successfully created, or if it } ---- +[id="api-ocloud-notifications-v1-subscriptions-subscription_id_{context}"] == api/ocloudNotifications/v1/subscriptions/ [discrete] @@ -94,17 +72,19 @@ Creates a new subscription. If a subscription is successfully created, or if it `GET api/ocloudNotifications/v1/subscriptions/` [discrete] -==== Description +=== Description Returns details for the subscription with ID `` .Query parameters -|=== -| Parameter | Type +[cols=2*, width="60%", options="header"] +|==== +|Parameter +|Type -| `` -| string -|=== +|`` +|string +|==== .Example API response [source,json] @@ -117,7 +97,8 @@ Returns details for the subscription with ID `` } ---- -== api/ocloudNotifications/v1/health/ +[id="api-ocloudnotifications-v1-health_{context}"] +== api/ocloudNotifications/v1/health [discrete] === HTTP method @@ -125,7 +106,7 @@ Returns details for the subscription with ID `` `GET api/ocloudNotifications/v1/health/` [discrete] -==== Description +=== Description Returns the health status for the `ocloudNotifications` REST API. @@ -135,6 +116,7 @@ Returns the health status for the `ocloudNotifications` REST API. OK ---- +[id="api-ocloudnotifications-v1-publishers_{context}"] == api/ocloudNotifications/v1/publishers [discrete] @@ -143,13 +125,17 @@ OK `GET api/ocloudNotifications/v1/publishers` [discrete] -==== Description +=== Description -Returns an array of `os-clock-sync-state`, `ptp-clock-class-change`, and `lock-state` details for the cluster node. The system generates notifications when the relevant equipment state changes. +Returns an array of `os-clock-sync-state`, `ptp-clock-class-change`, `lock-state`, and `gnss-sync-status` details for the cluster node. +The system generates notifications when the relevant equipment state changes. * `os-clock-sync-state` notifications describe the host operating system clock synchronization state. Can be in `LOCKED` or `FREERUN` state. * `ptp-clock-class-change` notifications describe the current state of the PTP clock class. * `lock-state` notifications describe the current status of the PTP equipment lock state. Can be in `LOCKED`, `HOLDOVER` or `FREERUN` state. +* `gnss-sync-status` notifications describe the GPS synchronization state with regard to the external GNSS clock signal. Can be in `LOCKED` or `FREERUN` state. + +You can use equipment synchronization status subscriptions together to deliver a detailed view of the overall synchronization health of the system. .Example API response [source,json] @@ -172,11 +158,17 @@ Returns an array of `os-clock-sync-state`, `ptp-clock-class-change`, and `lock-s "endpointUri": "http://localhost:9085/api/ocloudNotifications/v1/dummy", "uriLocation": "http://localhost:9085/api/ocloudNotifications/v1/publishers/44aa480d-7347-48b0-a5b0-e0af01fa9677", "resource": "/cluster/node/compute-1.example.com/sync/ptp-status/lock-state" + }, + { + "id": "778da345d-4567-67b0-a43f0-rty885a456", + "endpointUri": "http://localhost:9085/api/ocloudNotifications/v1/dummy", + "uriLocation": "http://localhost:9085/api/ocloudNotifications/v1/publishers/778da345d-4567-67b0-a43f0-rty885a456", + "resource": "/cluster/node/compute-1.example.com/sync/gnss-status/gnss-sync-status" } ] ---- -You can find `os-clock-sync-state`, `ptp-clock-class-change` and `lock-state` events in the logs for the `cloud-event-proxy` container. For example: +You can find `os-clock-sync-state`, `ptp-clock-class-change`, `lock-state`, and `gnss-sync-status` events in the logs for the `cloud-event-proxy` container. For example: [source,terminal] ---- @@ -264,7 +256,37 @@ $ oc logs -f linuxptp-daemon-cvgr6 -n openshift-ptp -c cloud-event-proxy } ---- -== /api/ocloudnotifications/v1//CurrentState +.Example gnss-sync-status event +[source,json] +---- +{ + "id": "435e1f2a-6854-4555-8520-767325c087d7", + "type": "event.sync.gnss-status.gnss-state-change", + "source": "/cluster/node/compute-1.example.com/sync/gnss-status/gnss-sync-status", + "dataContentType": "application/json", + "time": "2023-09-27T19:35:33.42347206Z", + "data": { + "version": "v1", + "values": [ + { + "resource": "/cluster/node/compute-1.example.com/ens2fx/master", + "dataType": "notification", + "valueType": "enumeration", + "value": "LOCKED" + }, + { + "resource": "/cluster/node/compute-1.example.com/ens2fx/master", + "dataType": "metric", + "valueType": "decimal64.3", + "value": "5" + } + ] + } +} +---- + +[id="resource-address-current-state_{context}"] +== api/ocloudNotifications/v1//CurrentState [discrete] === HTTP method @@ -276,21 +298,23 @@ $ oc logs -f linuxptp-daemon-cvgr6 -n openshift-ptp -c cloud-event-proxy `GET api/ocloudNotifications/v1/cluster/node//sync/ptp-status/ptp-clock-class-change/CurrentState` [discrete] -==== Description +=== Description -Configure the `CurrentState` API endpoint to return the current state of the `os-clock-sync-state`, `ptp-clock-class-change`, or `lock-state` events for the cluster node. +Configure the `CurrentState` API endpoint to return the current state of the `os-clock-sync-state`, `ptp-clock-class-change`, `lock-state` events for the cluster node. * `os-clock-sync-state` notifications describe the host operating system clock synchronization state. Can be in `LOCKED` or `FREERUN` state. * `ptp-clock-class-change` notifications describe the current state of the PTP clock class. * `lock-state` notifications describe the current status of the PTP equipment lock state. Can be in `LOCKED`, `HOLDOVER` or `FREERUN` state. .Query parameters -|=== -| Parameter | Type +[cols=2*, width="60%", options="header"] +|==== +|Parameter +|Type -| `` -| string -|=== +|`` +|string +|==== .Example lock-state API response [source,json] diff --git a/modules/cnf-installing-amq-interconnect-messaging-bus.adoc b/modules/cnf-installing-amq-interconnect-messaging-bus.adoc index 4870a28181..5279cb2c5e 100644 --- a/modules/cnf-installing-amq-interconnect-messaging-bus.adoc +++ b/modules/cnf-installing-amq-interconnect-messaging-bus.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/using-ptp-events.adoc :_mod-docs-content-type: PROCEDURE [id="cnf-installing-amq-interconnect-messaging-bus_{context}"] diff --git a/modules/cnf-migrating-from-amqp-to-http-transport.adoc b/modules/cnf-migrating-from-amqp-to-http-transport.adoc index 886ca61065..7ae356838f 100644 --- a/modules/cnf-migrating-from-amqp-to-http-transport.adoc +++ b/modules/cnf-migrating-from-amqp-to-http-transport.adoc @@ -1,7 +1,7 @@ // Module included in the following assemblies: // // * monitoring/using-rfhe.adoc -// * networking/using-ptp.adoc +// * networking/ptp/using-ptp-events.adoc :_mod-docs-content-type: PROCEDURE [id="cnf-migrating-from-amqp-to-http-transport_{context}"] diff --git a/modules/cnf-monitoring-fast-events-metrics.adoc b/modules/cnf-monitoring-fast-events-metrics.adoc index 0eac102fc2..71ab3d7355 100644 --- a/modules/cnf-monitoring-fast-events-metrics.adoc +++ b/modules/cnf-monitoring-fast-events-metrics.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/using-ptp-events.adoc :_mod-docs-content-type: PROCEDURE [id="cnf-monitoring-fast-events-metrics_{context}"] @@ -19,35 +19,28 @@ You can also monitor PTP fast event metrics in the {product-title} web console b .Procedure -. Check for exposed PTP metrics on any node where the `linuxptp-daemon` is running. For example, run the following command: +. Start a debug pod for the node by running the following command: + [source,terminal] ---- -$ curl http://:9091/metrics +$ oc debug node/ +---- + +. Check for PTP metrics exposed by the `linuxptp-daemon` container. For example, run the following command: ++ +[source,terminal] +---- +sh-4.4# curl http://localhost:9091/metrics ---- + .Example output ---- -# HELP openshift_ptp_clock_state 0 = FREERUN, 1 = LOCKED, 2 = HOLDOVER -# TYPE openshift_ptp_clock_state gauge -openshift_ptp_clock_state{iface="ens1fx",node="compute-1.example.com",process="ptp4l"} 1 -openshift_ptp_clock_state{iface="ens3fx",node="compute-1.example.com",process="ptp4l"} 1 -openshift_ptp_clock_state{iface="ens5fx",node="compute-1.example.com",process="ptp4l"} 1 -openshift_ptp_clock_state{iface="ens7fx",node="compute-1.example.com",process="ptp4l"} 1 -# HELP openshift_ptp_delay_ns -# TYPE openshift_ptp_delay_ns gauge -openshift_ptp_delay_ns{from="master",iface="ens1fx",node="compute-1.example.com",process="ptp4l"} 842 -openshift_ptp_delay_ns{from="master",iface="ens3fx",node="compute-1.example.com",process="ptp4l"} 480 -openshift_ptp_delay_ns{from="master",iface="ens5fx",node="compute-1.example.com",process="ptp4l"} 584 -openshift_ptp_delay_ns{from="master",iface="ens7fx",node="compute-1.example.com",process="ptp4l"} 482 -openshift_ptp_delay_ns{from="phc",iface="CLOCK_REALTIME",node="compute-1.example.com",process="phc2sys"} 547 -# HELP openshift_ptp_offset_ns -# TYPE openshift_ptp_offset_ns gauge -openshift_ptp_offset_ns{from="master",iface="ens1fx",node="compute-1.example.com",process="ptp4l"} -2 -openshift_ptp_offset_ns{from="master",iface="ens3fx",node="compute-1.example.com",process="ptp4l"} -44 -openshift_ptp_offset_ns{from="master",iface="ens5fx",node="compute-1.example.com",process="ptp4l"} -8 -openshift_ptp_offset_ns{from="master",iface="ens7fx",node="compute-1.example.com",process="ptp4l"} 3 -openshift_ptp_offset_ns{from="phc",iface="CLOCK_REALTIME",node="compute-1.example.com",process="phc2sys"} 12 +# HELP cne_api_events_published Metric to get number of events published by the rest api +# TYPE cne_api_events_published gauge +cne_api_events_published{address="/cluster/node/compute-1.example.com/sync/gnss-status/gnss-sync-status",status="success"} 1 +cne_api_events_published{address="/cluster/node/compute-1.example.com/sync/ptp-status/lock-state",status="success"} 94 +cne_api_events_published{address="/cluster/node/compute-1.example.com/sync/ptp-status/ptp-clock-class-change",status="success"} 18 +cne_api_events_published{address="/cluster/node/compute-1.example.com/sync/sync-status/os-clock-sync-state",status="success"} 27 ---- . To view the PTP event in the {product-title} web console, copy the name of the PTP metric you want to query, for example, `openshift_ptp_offset_ns`. diff --git a/modules/cnf-troubleshooting-common-ptp-operator-issues.adoc b/modules/cnf-troubleshooting-common-ptp-operator-issues.adoc index 61259b2594..83959c1d6a 100644 --- a/modules/cnf-troubleshooting-common-ptp-operator-issues.adoc +++ b/modules/cnf-troubleshooting-common-ptp-operator-issues.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="cnf-troubleshooting-common-ptp-operator-issues_{context}"] @@ -141,3 +141,37 @@ sending: GET PORT_DATA_SET logMinPdelayReqInterval -4 versionNumber 2 ---- + +. For GNSS-sourced grandmaster clocks, verify that the in-tree NIC ice driver is correct by running the following command, for example: ++ +[source,terminal] +---- +$ oc rsh -n openshift-ptp -c linuxptp-daemon-container linuxptp-daemon-74m2g ethtool -i ens7f0 +---- ++ +.Example output +[source,terminal] +---- +driver: ice +version: 5.14.0-356.bz2232515.el9.x86_64 +firmware-version: 4.20 0x8001778b 1.3346.0 +---- + +. For GNSS-sourced grandmaster clocks, verify that the `linuxptp-daemon` container is receiving signal from the GNSS antenna. +If the container is not receiving the GNSS signal, the `/dev/gnss0` file is not populated. +To verify, run the following command: ++ +[source,terminal] +---- +$ oc rsh -n openshift-ptp -c linuxptp-daemon-container linuxptp-daemon-jnz6r cat /dev/gnss0 +---- ++ +.Example output +[source,terminal] +---- +$GNRMC,125223.00,A,4233.24463,N,07126.64561,W,0.000,,300823,,,A,V*0A +$GNVTG,,T,,M,0.000,N,0.000,K,A*3D +$GNGGA,125223.00,4233.24463,N,07126.64561,W,1,12,99.99,98.6,M,-33.1,M,,*7E +$GNGSA,A,3,25,17,19,11,12,06,05,04,09,20,,,99.99,99.99,99.99,1*37 +$GPGSV,3,1,10,04,12,039,41,05,31,222,46,06,50,064,48,09,28,064,42,1*62 +---- diff --git a/modules/hosted-cluster-etcd-quorum-loss-recovery.adoc b/modules/hosted-cluster-etcd-quorum-loss-recovery.adoc index 5105c9bd53..2208a4b5b1 100644 --- a/modules/hosted-cluster-etcd-quorum-loss-recovery.adoc +++ b/modules/hosted-cluster-etcd-quorum-loss-recovery.adoc @@ -2,7 +2,7 @@ // // * hcp-backup-restore-dr.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="hosted-cluster-etcd-quorum-loss-recovery_{context}"] = Recovering an etcd cluster from a quorum loss @@ -87,7 +87,7 @@ $ ETCD_POD=etcd-0 ---- + [source,terminal] ----- +---- $ oc exec -n ${CONTROL_PLANE_NAMESPACE} -c etcd -t ${ETCD_POD} -- env ETCDCTL_API=3 /usr/bin/etcdctl \ --cacert /etc/etcd/tls/etcd-ca/ca.crt \ --cert /etc/etcd/tls/client/etcd-client.crt \ @@ -116,7 +116,7 @@ $ oc cp -c etcd ${CONTROL_PLANE_NAMESPACE}/${ETCD_POD}:/var/lib/snapshot.db /tmp + [source,terminal] ---- -$ oc get -n ${CONTROL_PLANE_NAMESPACE} pods -l app=etcd +$ oc get -n ${CONTROL_PLANE_NAMESPACE} pods -l app=etcd ---- .... Find a pod that is running and set its name as the value of `ETCD_POD: ETCD_POD=etcd-0`, and then copy its snapshot database by entering the following command: diff --git a/modules/installation-user-infra-machines-advanced-customizing-live-ca-certs.adoc b/modules/installation-user-infra-machines-advanced-customizing-live-ca-certs.adoc index fc16028d84..e6fcfa65ef 100644 --- a/modules/installation-user-infra-machines-advanced-customizing-live-ca-certs.adoc +++ b/modules/installation-user-infra-machines-advanced-customizing-live-ca-certs.adoc @@ -4,7 +4,7 @@ // * installing/installing_bare_metal/installing-restricted-networks-bare-metal.adoc // * installing_bare_metal/installing-bare-metal-network-customizations.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="installation-user-infra-machines-advanced-customizing-live-{boot}-ca-certs_{context}"] = Modifying a live install {boot-media} to use a custom certificate authority diff --git a/modules/installation-user-infra-machines-advanced-customizing-live-network-config.adoc b/modules/installation-user-infra-machines-advanced-customizing-live-network-config.adoc index 87281de1aa..634b0bdec0 100644 --- a/modules/installation-user-infra-machines-advanced-customizing-live-network-config.adoc +++ b/modules/installation-user-infra-machines-advanced-customizing-live-network-config.adoc @@ -4,7 +4,7 @@ // * installing/installing_bare_metal/installing-restricted-networks-bare-metal.adoc // * installing_bare_metal/installing-bare-metal-network-customizations.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="installation-user-infra-machines-advanced-customizing-live-{boot}_network_keyfile_{context}"] = Modifying a live install {boot-media} with customized network settings You can embed a NetworkManager keyfile into the live {boot-media} and pass it through to the installed system with the `--network-keyfile` flag of the `customize` subcommand. diff --git a/modules/installation-user-infra-machines-advanced-customizing-live.adoc b/modules/installation-user-infra-machines-advanced-customizing-live.adoc index 5e39ebec12..4743447e39 100644 --- a/modules/installation-user-infra-machines-advanced-customizing-live.adoc +++ b/modules/installation-user-infra-machines-advanced-customizing-live.adoc @@ -4,7 +4,7 @@ // * installing/installing_bare_metal/installing-restricted-networks-bare-metal.adoc // * installing_bare_metal/installing-bare-metal-network-customizations.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="installation-user-infra-machines-advanced-customizing-live-{boot}_{context}"] = Customizing a live {op-system} {boot-media} You can customize a live {op-system} {boot-media} directly with the diff --git a/modules/kmm-hub-hub-and-spoke.adoc b/modules/kmm-hub-hub-and-spoke.adoc index 47f35ac25a..2a31a73c43 100644 --- a/modules/kmm-hub-hub-and-spoke.adoc +++ b/modules/kmm-hub-hub-and-spoke.adoc @@ -2,7 +2,7 @@ // // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="kmm-hub-hub-and-spoke_{context}"] = KMM hub and spoke diff --git a/modules/kmm-hub-installing-kmm-hub-creating-resources.adoc b/modules/kmm-hub-installing-kmm-hub-creating-resources.adoc index 6e5b732e2a..83f671e686 100644 --- a/modules/kmm-hub-installing-kmm-hub-creating-resources.adoc +++ b/modules/kmm-hub-installing-kmm-hub-creating-resources.adoc @@ -2,7 +2,7 @@ // // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="kmm-hub-installing-kmm-hub-creating-resources_{context}"] = Installing KMM-Hub by creating KMM resources diff --git a/modules/kmm-hub-installing-kmm-hub-olm.adoc b/modules/kmm-hub-installing-kmm-hub-olm.adoc index 7a71a68a67..e60475ecce 100644 --- a/modules/kmm-hub-installing-kmm-hub-olm.adoc +++ b/modules/kmm-hub-installing-kmm-hub-olm.adoc @@ -2,7 +2,7 @@ // // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="kmm-hub-installing-kmm-hub-olm_{context}"] = Installing KMM-Hub using the Operator Lifecycle Manager diff --git a/modules/kmm-hub-installing-kmm-hub.adoc b/modules/kmm-hub-installing-kmm-hub.adoc index 686184e441..41f15602e3 100644 --- a/modules/kmm-hub-installing-kmm-hub.adoc +++ b/modules/kmm-hub-installing-kmm-hub.adoc @@ -2,7 +2,7 @@ // // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="kmm-hub-installing-kmm-hub_{context}"] = Installing KMM-Hub diff --git a/modules/kmm-hub-kmm-hub.adoc b/modules/kmm-hub-kmm-hub.adoc index 0bbd4b05c7..25fdfb7108 100644 --- a/modules/kmm-hub-kmm-hub.adoc +++ b/modules/kmm-hub-kmm-hub.adoc @@ -2,7 +2,7 @@ // // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="kmm-hub-kmm-hub_{context}"] = KMM-Hub diff --git a/modules/kmm-hub-running-kmm-on-the-spoke.adoc b/modules/kmm-hub-running-kmm-on-the-spoke.adoc index 65e05e5394..de989c9cb1 100644 --- a/modules/kmm-hub-running-kmm-on-the-spoke.adoc +++ b/modules/kmm-hub-running-kmm-on-the-spoke.adoc @@ -2,7 +2,7 @@ // // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="kmm-hub-running-kmm-on-the-spoke_{context}"] = Running KMM on the spoke diff --git a/modules/kmm-hub-using-the-managedclustermodule.adoc b/modules/kmm-hub-using-the-managedclustermodule.adoc index 810663f848..f9fff29e2a 100644 --- a/modules/kmm-hub-using-the-managedclustermodule.adoc +++ b/modules/kmm-hub-using-the-managedclustermodule.adoc @@ -2,7 +2,7 @@ // // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="kmm-hub-using-the-managedclustermodule_{context}"] = Using the `ManagedClusterModule` CRD diff --git a/modules/kmm-uninstalling-kmm.adoc b/modules/kmm-uninstalling-kmm.adoc index 1b80b0bc28..1e35501470 100644 --- a/modules/kmm-uninstalling-kmm.adoc +++ b/modules/kmm-uninstalling-kmm.adoc @@ -2,7 +2,7 @@ // // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="kmm-uninstalling-kmmo_{context}"] = Uninstalling the Kernel Module Management Operator diff --git a/modules/kmm-uninstalling-kmmo-cli.adoc b/modules/kmm-uninstalling-kmmo-cli.adoc index b5cad177b1..e4f625071a 100644 --- a/modules/kmm-uninstalling-kmmo-cli.adoc +++ b/modules/kmm-uninstalling-kmmo-cli.adoc @@ -1,6 +1,6 @@ // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="kmm-uninstalling-kmmo-cli_{context}"] = Uninstalling a CLI installation diff --git a/modules/kmm-uninstalling-kmmo-red-hat-catalog.adoc b/modules/kmm-uninstalling-kmmo-red-hat-catalog.adoc index ec1d573963..56c55d2ec3 100644 --- a/modules/kmm-uninstalling-kmmo-red-hat-catalog.adoc +++ b/modules/kmm-uninstalling-kmmo-red-hat-catalog.adoc @@ -1,6 +1,6 @@ // * hardware_enablement/kmm-kernel-module-management.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="kmm-uninstalling-kmmo-red-hat-catalog_{context}"] = Uninstalling a Red Hat catalog installation diff --git a/modules/log-forwarding-implementations.adoc b/modules/log-forwarding-implementations.adoc index 0b9f2f1312..ff165f7ca8 100644 --- a/modules/log-forwarding-implementations.adoc +++ b/modules/log-forwarding-implementations.adoc @@ -2,7 +2,7 @@ // // * logging/log_collection_forwarding/log-forwarding.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="log-forwarding-implementations_{context}"] = Log forwarding implementations diff --git a/modules/logging-loki-log-access.adoc b/modules/logging-loki-log-access.adoc index b9e7e876d5..78e8162fa7 100644 --- a/modules/logging-loki-log-access.adoc +++ b/modules/logging-loki-log-access.adoc @@ -2,7 +2,7 @@ // // * logging/cluster-logging-loki.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="logging-loki-log-access_{context}"] = Fine grained access for Loki logs In {logging} 5.8 and later, the ClusterLogging Operator does not grant all users access to logs by default. As an administrator, you need to configure your users access unless the Operator was upgraded and prior configurations are in place. Depending on your configuration and need, you can configure fine grain access to logs using the following: diff --git a/modules/logging-upgrading-loki.adoc b/modules/logging-upgrading-loki.adoc index b70fdda97b..34c5bc0c6c 100644 --- a/modules/logging-upgrading-loki.adoc +++ b/modules/logging-upgrading-loki.adoc @@ -2,7 +2,7 @@ // // * logging/cluster-logging-upgrading.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="logging-upgrading-loki_{context}"] = Updating the Loki Operator diff --git a/modules/nodes-pods-secrets-creating-web-console-secrets.adoc b/modules/nodes-pods-secrets-creating-web-console-secrets.adoc index 7b3e7ced7a..768e42274b 100644 --- a/modules/nodes-pods-secrets-creating-web-console-secrets.adoc +++ b/modules/nodes-pods-secrets-creating-web-console-secrets.adoc @@ -2,17 +2,17 @@ // // * nodes/pods/nodes-pods-secrets.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="nodes-pods-secrets-creating-web-console-secrets_{context}"] = Creating a secret using the web console -You can create secrets using the web console. +You can create secrets using the web console. .Procedure . Navigate to *Workloads* -> *Secrets*. . Click *Create* -> *From YAML*. -.. Edit the YAML manually to your specifications, or drag and drop a file into the YAML editor. +.. Edit the YAML manually to your specifications, or drag and drop a file into the YAML editor. For example: + [source,yaml] @@ -27,13 +27,12 @@ data: username: password: stringData: <2> - hostname: myapp.mydomain.com + hostname: myapp.mydomain.com ---- -<1> This example specifies an opaque secret; however, you may see other secret types such as service account token secret, basic authentication secret, SSH authentication secret, or a secret that uses Docker configuration. +<1> This example specifies an opaque secret; however, you may see other secret types such as service account token secret, basic authentication secret, SSH authentication secret, or a secret that uses Docker configuration. <2> Entries in the `stringData` map are converted to base64 and the entry will then be moved to the `data` map automatically. This field is write-only; the value will only be returned via the `data` field. . Click *Create*. . Click *Add Secret to workload*. .. From the drop-down menu, select the workload to add. .. Click *Save*. - diff --git a/modules/nvidia-gpu-cuda-mps.adoc b/modules/nvidia-gpu-cuda-mps.adoc index 1ef3893d9f..3827eac60d 100644 --- a/modules/nvidia-gpu-cuda-mps.adoc +++ b/modules/nvidia-gpu-cuda-mps.adoc @@ -2,7 +2,7 @@ // // * architecture/nvidia-gpu-architecture-overview.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="nvidia-gpu-cuda-mps_{context}"] = CUDA Multi-Process Service diff --git a/modules/nvidia-gpu-cuda-streams.adoc b/modules/nvidia-gpu-cuda-streams.adoc index 1667946f51..654e63c926 100644 --- a/modules/nvidia-gpu-cuda-streams.adoc +++ b/modules/nvidia-gpu-cuda-streams.adoc @@ -2,7 +2,7 @@ // // * architecture/nvidia-gpu-architecture-overview.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="nvidia-gpu-cuda-streams_{context}"] = CUDA streams diff --git a/modules/nvidia-gpu-mig-gpu.adoc b/modules/nvidia-gpu-mig-gpu.adoc index 949ded86d9..80e34cd767 100644 --- a/modules/nvidia-gpu-mig-gpu.adoc +++ b/modules/nvidia-gpu-mig-gpu.adoc @@ -2,7 +2,7 @@ // // * architecture/nvidia-gpu-architecture-overview.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="nvidia-gpu-mig-gpu_{context}"] = Multi-instance GPU diff --git a/modules/nvidia-gpu-sharing-methods.adoc b/modules/nvidia-gpu-sharing-methods.adoc index 388451ee7f..41658f2a3f 100644 --- a/modules/nvidia-gpu-sharing-methods.adoc +++ b/modules/nvidia-gpu-sharing-methods.adoc @@ -2,7 +2,7 @@ // // * architecture/nvidia-gpu-architecture-overview.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="nvidia-gpu-sharing-methods_{context}"] = GPU sharing methods diff --git a/modules/nvidia-gpu-time-slicing.adoc b/modules/nvidia-gpu-time-slicing.adoc index 3f9e0648ee..382d626e0f 100644 --- a/modules/nvidia-gpu-time-slicing.adoc +++ b/modules/nvidia-gpu-time-slicing.adoc @@ -2,7 +2,7 @@ // // * architecture/nvidia-gpu-architecture-overview.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="nvidia-gpu-time-slicing_{context}"] = Time-slicing diff --git a/modules/nvidia-gpu-virtualization-with-gpu.adoc b/modules/nvidia-gpu-virtualization-with-gpu.adoc index 85307cb470..bba1ccf13e 100644 --- a/modules/nvidia-gpu-virtualization-with-gpu.adoc +++ b/modules/nvidia-gpu-virtualization-with-gpu.adoc @@ -2,7 +2,7 @@ // // * architecture/nvidia-gpu-architecture-overview.adoc -:_content-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="nvidia-gpu-virtualization-with-gpu_{context}"] = Virtualization with vGPU diff --git a/modules/nw-columbiaville-ptp-config-refererence.adoc b/modules/nw-columbiaville-ptp-config-refererence.adoc index 622b84d900..6a465bc77f 100644 --- a/modules/nw-columbiaville-ptp-config-refererence.adoc +++ b/modules/nw-columbiaville-ptp-config-refererence.adoc @@ -1,12 +1,12 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: REFERENCE [id="nw-columbiaville-ptp-config-refererence_{context}"] = Intel Columbiaville E800 series NIC as PTP ordinary clock reference -The following table describes the changes that you must make to the reference PTP configuration in order to use Intel Columbiaville E800 series NICs as ordinary clocks. Make the changes in a `PtpConfig` custom resource (CR) that you apply to the cluster. +The following table describes the changes that you must make to the reference PTP configuration to use Intel Columbiaville E800 series NICs as ordinary clocks. Make the changes in a `PtpConfig` custom resource (CR) that you apply to the cluster. .Recommended PTP settings for Intel Columbiaville NIC [options="header"] @@ -21,6 +21,3 @@ The following table describes the changes that you must make to the reference PT ==== For `phc2sysOpts`, `-m` prints messages to `stdout`. The `linuxptp-daemon` `DaemonSet` parses the logs and generates Prometheus metrics. ==== - - - 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 6039458b1a..8033ace8e1 100644 --- a/modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc +++ b/modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="configuring-linuxptp-services-as-boundary-clock_{context}"] @@ -37,7 +37,7 @@ include::snippets/ptp_PtpConfigBoundary.yaml[] .PTP boundary clock CR configuration options [cols="1,3" options="header"] |==== -|Custom resource field +|CR field |Description |`name` 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 c899441ea5..4dd03b8ac3 100644 --- a/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc +++ b/modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc @@ -1,19 +1,20 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="configuring-linuxptp-services-as-grandmaster-clock_{context}"] = Configuring linuxptp services as a grandmaster clock -You can configure the `linuxptp` services (`ptp4l`, `phc2sys`, `ts2phc`) as a grandmaster clock (T-GM) by creating a `PtpConfig` custom resource (CR) that configures the host NIC. +You can configure the `linuxptp` services (`ptp4l`, `phc2sys`, `ts2phc`) as grandmaster clock (T-GM) by creating a `PtpConfig` custom resource (CR) that configures the host NIC. The `ts2phc` utility allows you to synchronize the system clock with the PTP grandmaster clock so that the node can stream precision clock signal to downstream PTP ordinary clocks and boundary clocks. [NOTE] ==== -Use the following example `PtpConfig` CR as the basis to configure `linuxptp` services as the grandmaster clock for your particular hardware and environment. -This example CR does not configure PTP fast events. To configure PTP fast events, set appropriate values for `ptp4lOpts`, `ptp4lConf`, and `ptpClockThreshold`. +Use the following example `PtpConfig` CR as the basis to configure `linuxptp` services as T-GM for an Intel Westport Channel E810-XXVDA4T network interface. + +To configure PTP fast events, set appropriate values for `ptp4lOpts`, `ptp4lConf`, and `ptpClockThreshold`. `ptpClockThreshold` is used only when events are enabled. See "Configuring the PTP fast event notifications publisher" for more information. ==== @@ -30,7 +31,7 @@ See "Configuring the PTP fast event notifications publisher" for more informatio .Procedure -. Create the `PtpConfig` resource. For example: +. Create the `PtpConfig` CR. For example: .. 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: @@ -40,7 +41,7 @@ Save the YAML in the `grandmaster-clock-ptp-config.yaml` file: ===== [source,yaml] ---- -include::snippets/ptp_PtpConfigMaster.yaml[] +include::snippets/ptp_PtpConfigGmWpc.yaml[] ---- [NOTE] @@ -57,6 +58,11 @@ The example PTP grandmaster clock configuration is for test purposes only and is include::snippets/ptp_PtpConfigGmWpc.yaml[] ---- ==== ++ +[NOTE] +==== +For E810 Westport Channel NICs, set the value for `ts2phc.nmea_serialport` to `/dev/gnss0`. +==== .. 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 13c4a25955..3f1508dafe 100644 --- a/modules/nw-ptp-configuring-linuxptp-services-as-ordinary-clock.adoc +++ b/modules/nw-ptp-configuring-linuxptp-services-as-ordinary-clock.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="configuring-linuxptp-services-as-ordinary-clock_{context}"] @@ -36,7 +36,7 @@ include::snippets/ptp_PtpConfigOrdinaryClock.yaml[] .PTP ordinary clock CR configuration options [cols="1,3" options="header"] |==== -|Custom resource field +|CR field |Description |`name` diff --git a/modules/nw-ptp-device-discovery.adoc b/modules/nw-ptp-device-discovery.adoc index 08806bf32f..00c9583ced 100644 --- a/modules/nw-ptp-device-discovery.adoc +++ b/modules/nw-ptp-device-discovery.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="discover-ptp-devices_{context}"] @@ -40,4 +40,3 @@ items: ---- <1> The value for the `name` parameter is the same as the name of the parent node. <2> The `devices` collection includes a list of the PTP capable devices that the PTP Operator discovers for the node. - diff --git a/modules/nw-ptp-e810-hardware-configuration-reference.adoc b/modules/nw-ptp-e810-hardware-configuration-reference.adoc new file mode 100644 index 0000000000..410a77efb8 --- /dev/null +++ b/modules/nw-ptp-e810-hardware-configuration-reference.adoc @@ -0,0 +1,100 @@ +// Module included in the following assemblies: +// +// * networking/ptp/configuring-ptp.adoc + +:_mod-docs-content-type: REFERENCE +[id="nw-ptp-wpc-hardware-pins-reference_{context}"] += Intel Westport Channel E810 hardware configuration reference + +Use this information to understand how to use the link:https://github.com/openshift/linuxptp-daemon/blob/release-4.14/addons/intel/e810.go[Intel E810-XXVDA4T hardware plugin] to configure the E810 network interface as PTP grandmaster clock. +Hardware pin configuration determines how the network interface interacts with other components and devices in the system. +The E810-XXVDA4T NIC has four connectors for external 1PPS signals: `SMA1`, `SMA2`, `U.FL1`, and `U.FL2`. + +.Intel E810 NIC hardware connectors configuration +[width="90%", options="header"] +|==== +|Hardware pin|Recommended setting|Description +|`U.FL1`|`0 1`|Disables the `U.FL1` connector input. +The `U.FL1` connector is output-only. +|`U.FL2`|`0 2`|Disables the `U.FL2` connector output. +The `U.FL2` connector is input-only. +|`SMA1`|`0 1`|Disables the `SMA1` connector input. +The `SMA1` connector is bidirectional. +|`SMA2`|`0 2`|Disables the `SMA2` connector output. +The `SMA2` connector is bidirectional. +|==== + +[NOTE] +==== +`SMA1` and `U.FL1` connectors share channel one. +`SMA2` and `U.FL2` connectors share channel two. +==== + +Set `spec.profile.plugins.e810.ublxCmds` parameters to configure the GNSS clock in the `PtpConfig` custom resource (CR). +Each of these `ublxCmds` stanzas correspond to a configuration that is applied to the host NIC by using `ubxtool` commands. +For example: + +[source,yaml] +---- +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 +---- + +The following table describes the equivalent `ubxtool` commands: + +.Intel E810 ublxCmds configuration +[width="90%", options="header"] +|==== +|ubxtool command|Description +|`ubxtool -P 29.20 -z CFG-HW-ANT_CFG_VOLTCTRL,1`|Enables antenna voltage control. Enables antenna status to be reported in the `UBX-MON-RF` and `UBX-INF-NOTICE` log messages. +|`ubxtool -P 29.20 -e GPS`|Enables the antenna to receive GPS signals. +|`ubxtool -P 29.20 -d Galileo`|Configures the antenna to receive signal from the Galileo GPS satellite. +|`ubxtool -P 29.20 -d GLONASS`|Disables the antenna from receiving signal from the GLONASS GPS satellite. +|`ubxtool -P 29.20 -d BeiDou`|Disables the antenna from receiving signal from the BeiDou GPS satellite. +|`ubxtool -P 29.20 -d SBAS`|Disables the antenna from receiving signal from the SBAS GPS satellite. +|`ubxtool -P 29.20 -t -w 5 -v 1 -e SURVEYIN,600,50000`| Configures the GNSS receiver survey-in process to improve its initial position estimate. This can take up to 24 hours to achieve an optimal result. +|`ubxtool -P 29.20 -p MON-HW`|Runs a single automated scan of the hardware and reports on the NIC state and configuration settings. +|==== + +The E810 plugin implements the following interfaces: + +.E810 plugin interfaces +[cols="1,3", width="90%", options="header"] +|==== +|Interface +|Description + +|`OnPTPConfigChangeE810` +|Runs whenever you update the `PtpConfig` CR. +The function parses the plugin options and applies the required configurations to the network device pins based on the configuration data. + +|`AfterRunPTPCommandE810` +|Runs after launching the PTP processes and running the `gpspipe` PTP command. +The function processes the plugin options and runs `ubxtool` commands, storing the output in the plugin-specific data. + +|`PopulateHwConfigE810` +|Populates the `NodePtpDevice` CR based on hardware-specific data in the `PtpConfig` CR. +|==== + +The E810 plugin has the following structs and variables: + +.E810 plugin structs and variables +[cols="1,3", width="90%", options="header"] +|==== +|Struct +|Description + +|`E810Opts` +|Represents options for the E810 plugin, including boolean flags and a map of network device pins. + +|`E810UblxCmds` +|Represents configurations for `ubxtool` commands with a boolean flag and a slice of strings for command arguments. + +|`E810PluginData` +|Holds plugin-specific data used during plugin execution. +|==== diff --git a/modules/nw-ptp-grandmaster-clock-class-reference.adoc b/modules/nw-ptp-grandmaster-clock-class-reference.adoc new file mode 100644 index 0000000000..d242538b22 --- /dev/null +++ b/modules/nw-ptp-grandmaster-clock-class-reference.adoc @@ -0,0 +1,35 @@ +// Module included in the following assemblies: +// +// * networking/ptp/configuring-ptp.adoc + +:_mod-docs-content-type: REFERENCE +[id="nw-ptp-grandmaster-clock-class-reference_{context}"] += Grandmaster clock class sync state reference + +The following table describes the PTP grandmaster clock (T-GM) `gm.ClockClass` states. +Clock class states categorize T-GM clocks based on their accuracy and stability with regard to the Primary Reference Time Clock (PRTC) or other timing source. + +Holdover specification is the amount of time a PTP clock can maintain synchronization without receiving updates from the primary time source. + +.T-GM clock class states +[cols="1,3" options="header"] +|==== +|Clock class state +|Description + +|`gm.ClockClass 6` +|T-GM clock is connected to a PRTC in `LOCKED` mode. +For example, the PRTC is traceable to a GNSS time source. + +|`gm.ClockClass 7` +|T-GM clock is in `HOLDOVER` mode, and within holdover specification. +The clock source might not be traceable to a category 1 frequency source. + +|`gm.ClockClass 140` +|T-GM clock is in `HOLDOVER` mode, is out of holdover specification, but it is still traceable to the category 1 frequency source. + +|`gm.ClockClass 248` +|T-GM clock is in `FREERUN` mode. +|==== + +For more information, see link:https://www.itu.int/rec/T-REC-G.8275.1-202211-I/en["Phase/time traceability information", ITU-T G.8275.1/Y.1369.1 Recommendations]. diff --git a/modules/nw-ptp-grandmaster-clock-configuration-reference.adoc b/modules/nw-ptp-grandmaster-clock-configuration-reference.adoc index 34aa84113b..826e928a13 100644 --- a/modules/nw-ptp-grandmaster-clock-configuration-reference.adoc +++ b/modules/nw-ptp-grandmaster-clock-configuration-reference.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: REFERENCE [id="nw-ptp-grandmaster-clock-configuration-reference_{context}"] diff --git a/modules/nw-ptp-installing-operator-cli.adoc b/modules/nw-ptp-installing-operator-cli.adoc index 4daf17ca37..04b89578bd 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/using-ptp.adoc +// * networking/ptp/about-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 bc9fc7e090..8e32081f67 100644 --- a/modules/nw-ptp-installing-operator-web-console.adoc +++ b/modules/nw-ptp-installing-operator-web-console.adoc @@ -1,12 +1,12 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/about-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="install-ptp-operator-web-console_{context}"] -= Installing the PTP Operator using the web console += Installing the PTP Operator by using the web console -As a cluster administrator, you can install the PTP Operator using the web console. +As a cluster administrator, you can install the PTP Operator by using the web console. [NOTE] ==== @@ -40,8 +40,5 @@ If the installation later succeeds with an *InstallSucceeded* message, you can i If the Operator does not appear as installed, to troubleshoot further: + -* Go to the *Operators* -> *Installed Operators* page and inspect -the *Operator Subscriptions* and *Install Plans* tabs for any failure or errors -under *Status*. -* Go to the *Workloads* -> *Pods* page and check the logs for pods in the -`openshift-ptp` project. +* Go to the *Operators* -> *Installed Operators* page and inspect the *Operator Subscriptions* and *Install Plans* tabs for any failure or errors under *Status*. +* Go to the *Workloads* -> *Pods* page and check the logs for pods in the `openshift-ptp` project. diff --git a/modules/nw-ptp-introduction.adoc b/modules/nw-ptp-introduction.adoc index 399a30638c..19f04afc34 100644 --- a/modules/nw-ptp-introduction.adoc +++ b/modules/nw-ptp-introduction.adoc @@ -1,29 +1,31 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/about-ptp.adoc :_mod-docs-content-type: CONCEPT -[id="ptp-introduction_{context}"] -= About PTP - -Precision Time Protocol (PTP) is used to synchronize clocks in a network. When used in conjunction with hardware support, PTP is capable of sub-microsecond accuracy, and is more accurate than Network Time Protocol (NTP). - [id="ptp-elements_{context}"] -== Elements of a PTP domain += Elements of a PTP domain + +PTP is used to synchronize multiple nodes connected in a network, with clocks for each node. +The clocks synchronized by PTP are organized in a leader-follower hierarchy. +The hierarchy is created and updated automatically by the best master clock (BMC) algorithm, which runs on every clock. +Follower clocks are synchronized to leader clocks, and follower clocks can themselves be the source for other downstream clocks. + +.PTP nodes in the network +image::319_OpenShift_PTP_bare-metal_OCP_nodes_1123_PTP_network.png[Diagram showing a PTP grandmaster clock, boundary clock, and ordinary clock syncing from a GPS satellite that is connected to the PTP grandmaster clock. The boundary and ordinary clocks are synced to the grandmaster clock.] -PTP is used to synchronize multiple nodes connected in a network, with clocks for each node. The clocks synchronized by PTP are organized in a source-destination hierarchy. -The hierarchy is created and updated automatically by the best master clock (BMC) algorithm, which runs on every clock. Destination clocks are synchronized to source clocks, and destination clocks can themselves be the source for other downstream clocks. The three primary types of PTP clocks are described below. Grandmaster clock:: The grandmaster clock provides standard time information to other clocks across the network and ensures accurate and stable synchronisation. It writes time stamps and responds to time requests from other clocks. Grandmaster clocks synchronize to a Global Navigation Satellite System (GNSS) time source. The Grandmaster clock is the authoritative source of time in the network and is responsible for providing time synchronization to all other devices. -Ordinary clock:: The ordinary clock has a single port connection that can play the role of source or destination clock, depending on its position in the network. The ordinary clock can read and write time stamps. - Boundary clock:: The boundary clock has ports in two or more communication paths and can be a source and a destination to other destination clocks at the same time. The boundary clock works as a destination clock upstream. The destination clock receives the timing message, adjusts for delay, and then creates a new source time signal to pass down the network. The boundary clock produces a new timing packet that is still correctly synced with the source clock and can reduce the number of connected devices reporting directly to the source clock. +Ordinary clock:: The ordinary clock has a single port connection that can play the role of source or destination clock, depending on its position in the network. The ordinary clock can read and write timestamps. + +[discrete] [id="ptp-advantages-over-ntp_{context}"] == Advantages of PTP over NTP One of the main advantages that PTP has over NTP is the hardware support present in various network interface controllers (NIC) and network switches. The specialized hardware allows PTP to account for delays in message transfer and improves the accuracy of time synchronization. To achieve the best possible accuracy, it is recommended that all networking components between PTP clocks are PTP hardware enabled. -Hardware-based PTP provides optimal accuracy, since the NIC can time stamp the PTP packets at the exact moment they are sent and received. Compare this to software-based PTP, which requires additional processing of the PTP packets by the operating system. +Hardware-based PTP provides optimal accuracy, since the NIC can timestamp the PTP packets at the exact moment they are sent and received. Compare this to software-based PTP, which requires additional processing of the PTP packets by the operating system. diff --git a/modules/nw-ptp-operator-metrics-reference.adoc b/modules/nw-ptp-operator-metrics-reference.adoc new file mode 100644 index 0000000000..2626be7952 --- /dev/null +++ b/modules/nw-ptp-operator-metrics-reference.adoc @@ -0,0 +1,75 @@ +// Module included in the following assemblies: +// +// * networking/ptp/using-ptp-events.adoc + +:_mod-docs-content-type: REFERENCE +[id="nw-ptp-operator-metrics-reference_{context}"] += PTP fast event metrics reference + +The following table describes the PTP fast events metrics that are available from cluster nodes where the `linuxptp-daemon` service is running. + +[NOTE] +==== +Some of the following metrics are applicable for PTP grandmaster clocks (T-GM) only. +==== + +.PTP fast event metrics +[cols="1,4,3", options="header"] +|==== +|Metric +|Description +|Example + +|`openshift_ptp_clock_class` +|Returns the PTP clock class for the interface. +Possible values for PTP clock class are `6` (`LOCKED`), `7` (`HOLDOVER` within specification), `140` (`HOLDOVER` outside specification), and `248` (`FREERUN`). +Applicable to T-GM clocks only. +|`openshift_ptp_clock_class {node="compute-1.example.com", process="ptp4l"} 6` + +|`openshift_ptp_clock_state` +|Returns the current PTP clock state for the interface. +Possible values for PTP clock state are `FREERUN`, `LOCKED`, or `HOLDOVER`. +|`openshift_ptp_clock_state {iface="CLOCK_REALTIME", node="compute-1.example.com", process="phc2sys"} 1` + +|`openshift_ptp_delay_ns` +|Returns the delay in nanoseconds between the primary clock sending the timing packet and the secondary clock receiving the timing packet. +|`openshift_ptp_delay_ns {from="master", iface="ens2fx", node="compute-1.example.com", process="ts2phc"} 0` + +|`openshift_ptp_frequency_adjustment_ns` +|Returns the frequency adjustment in nanoseconds between 2 PTP clocks. +For example, between the upstream clock and the NIC, between the system clock and the NIC, or between the PTP hardware clock (`phc`) and the NIC. +Applicable to T-GM clocks only. +|`openshift_ptp_frequency_adjustment_ns {from="phc", iface="CLOCK_REALTIME", node="compute-1.example.com", process="phc2sys"} -6768` + +|`openshift_ptp_interface_role` +|Describes the configured PTP clock role for the interface. +Possible values are 0 (`PASSIVE`), 1 (`SLAVE`), 2 (`MASTER`), 3 (`FAULTY`), 4 (`UNKNOWN`), or 5 (`LISTENING`). + +|`openshift_ptp_interface_role {iface="ens2f0", node="compute-1.example.com", process="ptp4l"} 2` + +|`openshift_ptp_max_offset_ns` +|Returns the maximum offset in nanoseconds between 2 clocks or interfaces. +For example, between the upstream GNSS clock and the NIC (`ts2phc`), or between the PTP hardware clock (`phc`) and the system clock (`phc2sys`). +Applicable to T-GM clocks only. +|`openshift_ptp_max_offset_ns {from="master", iface="ens2fx", node="compute-1.example.com", process="ts2phc"} 1.038099569e+09` + +|`openshift_ptp_offset_ns` +|Returns the offset in nanoseconds between the DPLL clock or the GNSS clock source and the NIC hardware clock. +Applicable to T-GM clocks only. +|`openshift_ptp_offset_ns {from="phc", iface="CLOCK_REALTIME", node="compute-1.example.com", process="phc2sys"} -9` + +|`openshift_ptp_process_restart_count` +|Returns a count of the number of times the `ptp4l` process was restarted. +|`openshift_ptp_process_restart_count {config="ptp4l.0.config", node="compute-1.example.com",process="phc2sys"} 1` + +|`openshift_ptp_process_status` +|Returns a status code that shows whether the PTP process is running or not. +|`openshift_ptp_process_status {config="ptp4l.0.config", node="compute-1.example.com",process="phc2sys"} 1` + +|`openshift_ptp_threshold` +a|Returns values for `HoldOverTimeout`, `MaxOffsetThreshold`, and `MinOffsetThreshold`. + +* `holdOverTimeout` is the time value in seconds before the PTP clock event state changes to `FREERUN` when the PTP master clock is disconnected. +* `maxOffsetThreshold` and `minOffsetThreshold` are offset values in nanoseconds that compare against the values for `CLOCK_REALTIME` (`phc2sys`) or master offset (`ptp4l`) values that you configure in the `PtpConfig` CR for the NIC. +|`openshift_ptp_threshold {node="compute-1.example.com", profile="grandmaster", threshold="HoldOverTimeout"} 5` +|==== diff --git a/modules/oadp-gcp-wif-cloud-authentication.adoc b/modules/oadp-gcp-wif-cloud-authentication.adoc index adf7b3ede9..89c3b84601 100644 --- a/modules/oadp-gcp-wif-cloud-authentication.adoc +++ b/modules/oadp-gcp-wif-cloud-authentication.adoc @@ -2,7 +2,7 @@ // // * backup_and_restore/application_backup_and_restore/installing/installing-oadp-gcp.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="oadp-gcp-wif-cloud-authentication_{context}"] = Google workload identity federation cloud authentication @@ -96,5 +96,3 @@ $ oc create namespace ---- $ oc apply -f manifests/openshift-adp-cloud-credentials-gcp-credentials.yaml ---- - - diff --git a/modules/oadp-installing-dpa-1-2-and-earlier.adoc b/modules/oadp-installing-dpa-1-2-and-earlier.adoc index 3803136500..87fab7918f 100644 --- a/modules/oadp-installing-dpa-1-2-and-earlier.adoc +++ b/modules/oadp-installing-dpa-1-2-and-earlier.adoc @@ -6,7 +6,7 @@ // * backup_and_restore/application_backup_and_restore/installing/installing-oadp-mcg.adoc // * backup_and_restore/application_backup_and_restore/installing/installing-oadp-ocs.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="oadp-installing-dpa-1-2-and-earlier_{context}"] = Installing the Data Protection Application 1.2 and earlier @@ -403,4 +403,4 @@ NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true ---- -. Verify that the `PHASE` is in `Available`. \ No newline at end of file +. Verify that the `PHASE` is in `Available`. diff --git a/modules/oadp-installing-dpa-1-3.adoc b/modules/oadp-installing-dpa-1-3.adoc index 6eb1511d3e..5d9f59669c 100644 --- a/modules/oadp-installing-dpa-1-3.adoc +++ b/modules/oadp-installing-dpa-1-3.adoc @@ -6,7 +6,7 @@ // * backup_and_restore/application_backup_and_restore/installing/installing-oadp-mcg.adoc // * backup_and_restore/application_backup_and_restore/installing/installing-oadp-ocs.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="oadp-installing-dpa-1-3_{context}"] = Installing the Data Protection Application 1.3 @@ -419,4 +419,4 @@ NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 1s 3d16h true ---- -. Verify that the `PHASE` is in `Available`. \ No newline at end of file +. Verify that the `PHASE` is in `Available`. diff --git a/modules/ptp-cloud-event-proxy-sidecar-api.adoc b/modules/ptp-cloud-event-proxy-sidecar-api.adoc index 0d0bdd9648..21cb5f9899 100644 --- a/modules/ptp-cloud-event-proxy-sidecar-api.adoc +++ b/modules/ptp-cloud-event-proxy-sidecar-api.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/ptp-cloud-events-consumer-dev-reference.adoc +// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc :_mod-docs-content-type: REFERENCE [id="ptp-cloud-event-proxy-sidecar-api_{context}"] diff --git a/modules/ptp-configuring-linuxptp-services-as-boundary-clock-dual-nic.adoc b/modules/ptp-configuring-linuxptp-services-as-boundary-clock-dual-nic.adoc index 13df9c6c9f..0f3261acb1 100644 --- a/modules/ptp-configuring-linuxptp-services-as-boundary-clock-dual-nic.adoc +++ b/modules/ptp-configuring-linuxptp-services-as-boundary-clock-dual-nic.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/configuring-ptp.adoc :_mod-docs-content-type: PROCEDURE [id="ptp-configuring-linuxptp-services-as-bc-for-dual-nic_{context}"] diff --git a/modules/ptp-dual-nics.adoc b/modules/ptp-dual-nics.adoc index 91a197bdc1..11a5b41a87 100644 --- a/modules/ptp-dual-nics.adoc +++ b/modules/ptp-dual-nics.adoc @@ -1,8 +1,8 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/about-ptp.adoc -:_module-type: CONCEPT +:_mod-docs-content-type: CONCEPT [id="ptp-dual-nics_{context}"] = Using PTP with dual NIC hardware diff --git a/modules/ptp-events-consumer-application.adoc b/modules/ptp-events-consumer-application.adoc index 5c3f2a1c88..e8886a4ba4 100644 --- a/modules/ptp-events-consumer-application.adoc +++ b/modules/ptp-events-consumer-application.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/ptp-cloud-events-consumer-dev-reference.adoc +// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc :_mod-docs-content-type: REFERENCE [id="ptp-events-consumer-application_{context}"] diff --git a/modules/ptp-getting-the-current-ptp-clock-status.adoc b/modules/ptp-getting-the-current-ptp-clock-status.adoc index 49d2e6ccb6..dedcdbd928 100644 --- a/modules/ptp-getting-the-current-ptp-clock-status.adoc +++ b/modules/ptp-getting-the-current-ptp-clock-status.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/ptp-cloud-events-consumer-dev-reference.adoc +// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc :_mod-docs-content-type: REFERENCE [id="ptp-getting-the-current-ptp-clock-status_{context}"] diff --git a/modules/ptp-linuxptp-introduction.adoc b/modules/ptp-linuxptp-introduction.adoc index 40ce99f5d7..6a28fade43 100644 --- a/modules/ptp-linuxptp-introduction.adoc +++ b/modules/ptp-linuxptp-introduction.adoc @@ -1,12 +1,15 @@ // Module included in the following assemblies: // -// * networking/using-ptp.adoc +// * networking/ptp/about-ptp.adoc :_mod-docs-content-type: CONCEPT [id="ptp-linuxptp-introduction_{context}"] -= Overview of linuxptp in {product-title} nodes += Overview of linuxptp and gpsd in {product-title} nodes + +{product-title} uses the PTP Operator with `linuxptp` and `gpsd` packages for high precision network synchronization. +The `linuxptp` package provides tools and daemons for PTP timing in networks. +Cluster hosts with Global Navigation Satellite System (GNSS) capable NICs use `gpsd` to interface with GNSS clock sources. -{product-title} uses PTP and `linuxptp` for high precision system timing in bare-metal infrastructure. The `linuxptp` package includes the `ts2phc`, `pmc`, `ptp4l`, and `phc2sys` programs for system clock synchronization. ts2phc:: `ts2phc` synchronizes the PTP hardware clock (PHC) across PTP devices with a high degree of precision. @@ -24,10 +27,17 @@ pmc:: `pmc` implements a PTP management client (`pmc`) according to IEEE standar ptp4l:: `ptp4l` implements the PTP boundary clock and ordinary clock and runs as a system daemon. `ptp4l` does the following: - * Synchronizes the PHC to the source clock with hardware time stamping * Synchronizes the system clock to the source clock with software time stamping phc2sys:: `phc2sys` synchronizes the system clock to the PHC on the network interface controller (NIC). The `phc2sys` system daemon continuously monitors the PHC for timing information. When it detects a timing error, the PHC corrects the system clock. + +The `gpsd` package includes the `ubxtool`, `gspipe`, `gpsd`, programs for GNSS clock synchronization with the host clock. + +ubxtool:: `ubxtool` CLI allows you to communicate with a u-blox GPS system. The `ubxtool` CLI uses the u-blox binary protocol to communicate with the GPS. + +gpspipe:: `gpspipe` connects to `gpsd` output and pipes it to `stdout`. + +gpsd:: `gpsd` is a service daemon that monitors one or more GPS or AIS receivers connected to the host. diff --git a/modules/ptp-overview-of-gnss-grandmaster-clock.adoc b/modules/ptp-overview-of-gnss-grandmaster-clock.adoc new file mode 100644 index 0000000000..fc13b228e4 --- /dev/null +++ b/modules/ptp-overview-of-gnss-grandmaster-clock.adoc @@ -0,0 +1,30 @@ +// Module included in the following assemblies: +// +// * networking/ptp/about-ptp.adoc + +:_mod-docs-content-type: CONCEPT +[id="ptp-overview-of-gnss-grandmaster-clock_{context}"] += Overview of GNSS timing for PTP grandmaster clocks + +{product-title} supports receiving precision PTP timing from Global Navigation Satellite System (GNSS) sources and grandmaster clocks (T-GM) in the cluster. + +[IMPORTANT] +==== +{product-title} supports PTP timing from GNSS sources with Intel E810 Westport Channel NICs only. +==== + +.Overview of Synchronization with GNSS and T-GM +image::319_OpenShift_PTP_bare-metal_OCP_nodes_1023_PTP.png[GNSS and T-GM system architecture] + +Global Navigation Satellite System (GNSS):: +GNSS is a satellite-based system used to provide positioning, navigation, and timing information to receivers around the globe. +In PTP, GNSS receivers are often used as a highly accurate and stable reference clock source. +These receivers receive signals from multiple GNSS satellites, allowing them to calculate precise time information. +The timing information obtained from GNSS is used as a reference by the PTP grandmaster clock. ++ +By using GNSS as a reference, the grandmaster clock in the PTP network can provide highly accurate timestamps to other devices, enabling precise synchronization across the entire network. + +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. diff --git a/modules/ptp-reference-deployment-and-service-crs.adoc b/modules/ptp-reference-deployment-and-service-crs.adoc index 4664e56e39..5205794ba9 100644 --- a/modules/ptp-reference-deployment-and-service-crs.adoc +++ b/modules/ptp-reference-deployment-and-service-crs.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/ptp-cloud-events-consumer-dev-reference.adoc +// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc :_mod-docs-content-type: REFERENCE [id="ptp-reference-deployment-and-service-crs_{context}"] diff --git a/modules/ptp-subscribing-consumer-app-to-events.adoc b/modules/ptp-subscribing-consumer-app-to-events.adoc index 6393e84d28..cc2dfce734 100644 --- a/modules/ptp-subscribing-consumer-app-to-events.adoc +++ b/modules/ptp-subscribing-consumer-app-to-events.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/ptp-cloud-events-consumer-dev-reference.adoc +// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc :_mod-docs-content-type: REFERENCE [id="ptp-subscribing-consumer-app-to-events_{context}"] diff --git a/modules/ptp-using-hardware-specific-nic-features.adoc b/modules/ptp-using-hardware-specific-nic-features.adoc new file mode 100644 index 0000000000..e47bb6c2eb --- /dev/null +++ b/modules/ptp-using-hardware-specific-nic-features.adoc @@ -0,0 +1,16 @@ +// Module included in the following assemblies: +// +// * networking/ptp/configuring-ptp.adoc + +:_mod-docs-content-type: CONCEPT +[id="ptp-using-hardware-specific-nic-features_{context}"] += Using hardware-specific NIC features with the PTP Operator + +NIC hardware with built-in PTP capabilities sometimes require device-specific configuration. +You can use hardware-specific NIC features for supported hardware with the PTP Operator by configuring a plugin in the `PtpConfig` custom resource (CR). +The `linuxptp-daemon` service uses the named parameters in the `plugin` stanza to start `linuxptp` processes (`ptp4l` and `phc2sys`) based on the specific hardware configuration. + +[IMPORTANT] +==== +In {product-title} {product-version}, the Intel E810 NIC is supported with a `PtpConfig` plugin. +==== diff --git a/modules/ptp-verifying-events-consumer-app-is-receiving-events.adoc b/modules/ptp-verifying-events-consumer-app-is-receiving-events.adoc index ea32632040..8e339a6875 100644 --- a/modules/ptp-verifying-events-consumer-app-is-receiving-events.adoc +++ b/modules/ptp-verifying-events-consumer-app-is-receiving-events.adoc @@ -1,6 +1,6 @@ // Module included in the following assemblies: // -// * networking/ptp-cloud-events-consumer-dev-reference.adoc +// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc :_mod-docs-content-type: PROCEDURE [id="ptp-verifying-events-consumer-app-is-receiving-events_{context}"] diff --git a/modules/troubleshooting-network-observability-loki-resource-exhausted.adoc b/modules/troubleshooting-network-observability-loki-resource-exhausted.adoc index 2c16cef33e..70a345a74c 100644 --- a/modules/troubleshooting-network-observability-loki-resource-exhausted.adoc +++ b/modules/troubleshooting-network-observability-loki-resource-exhausted.adoc @@ -2,15 +2,15 @@ // * networking/network_observability/troubleshooting-network-observability.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="network-observability-troubleshooting-loki-resource-exhausted_{context}"] = Troubleshooting Loki ResourceExhausted error -Loki may return a `ResourceExhausted` error when network flow data sent by Network Observability exceeds the configured maximum message size. If you are using the Loki Operator, this maximum message size is configured to 100 MiB. +Loki may return a `ResourceExhausted` error when network flow data sent by Network Observability exceeds the configured maximum message size. If you are using the Loki Operator, this maximum message size is configured to 100 MiB. .Procedure . Navigate to *Operators* -> *Installed Operators*, viewing *All projects* from the *Project* drop-down menu. . In the *Provided APIs* list, select the Network Observability Operator. -. Click the *Flow Collector* then the *YAML view* tab. +. Click the *Flow Collector* then the *YAML view* tab. .. If you are using the Loki Operator, check that the `spec.loki.batchSize` value does not exceed 98 MiB. -.. If you are using a Loki installation method that is different from the Red Hat Loki Operator, such as Grafana Loki, verify that the `grpc_server_max_recv_msg_size` link:https://grafana.com/docs/loki/latest/configure/#server[Grafana Loki server setting] is higher than the `FlowCollector` resource `spec.loki.batchSize` value. If it is not, you must either increase the `grpc_server_max_recv_msg_size` value, or decrease the `spec.loki.batchSize` value so that it is lower than the limit. -. Click *Save* if you edited the *FlowCollector*. \ No newline at end of file +.. If you are using a Loki installation method that is different from the Red Hat Loki Operator, such as Grafana Loki, verify that the `grpc_server_max_recv_msg_size` link:https://grafana.com/docs/loki/latest/configure/#server[Grafana Loki server setting] is higher than the `FlowCollector` resource `spec.loki.batchSize` value. If it is not, you must either increase the `grpc_server_max_recv_msg_size` value, or decrease the `spec.loki.batchSize` value so that it is lower than the limit. +. Click *Save* if you edited the *FlowCollector*. diff --git a/modules/virt-attaching-virtio-disk-to-windows.adoc b/modules/virt-attaching-virtio-disk-to-windows.adoc index 9fdbf6c220..acb9e300f9 100644 --- a/modules/virt-attaching-virtio-disk-to-windows.adoc +++ b/modules/virt-attaching-virtio-disk-to-windows.adoc @@ -2,7 +2,7 @@ // // * virt/virtual_machines/creating_vms/virt-installing-qemu-guest-agent.adoc -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="virt-attaching-virtio-disk-to-windows_{context}"] = Attaching VirtIO container disk to Windows VMs during installation @@ -15,4 +15,4 @@ You must attach the VirtIO container disk to the Windows VM to install the neces . Click the *Customize VirtualMachine parameters*. . Click *Create VirtualMachine*. -After the VM is created, the `virtio-win` SATA CD disk will be attached to the VM. \ No newline at end of file +After the VM is created, the `virtio-win` SATA CD disk will be attached to the VM. diff --git a/modules/virt-enabling-volume-snapshot-boot-source.adoc b/modules/virt-enabling-volume-snapshot-boot-source.adoc index faa8e91e92..10e033768c 100644 --- a/modules/virt-enabling-volume-snapshot-boot-source.adoc +++ b/modules/virt-enabling-volume-snapshot-boot-source.adoc @@ -3,7 +3,7 @@ // * virt/storage/virt-automatic-bootsource-updates.adoc // -:_content-type: PROCEDURE +:_mod-docs-content-type: PROCEDURE [id="virt-enabling-volume-snapshot-boot-source_{context}"] = Enabling volume snapshot boot sources @@ -54,4 +54,4 @@ $ oc get storageprofile -oyaml . Confirm that the `dataImportCronSourceFormat` specification of the `StorageProfile` is set to 'snapshot', and that any `DataSource` objects that the `DataImportCron` points to now reference volume snapshots. -You can now use these boot sources to create virtual machines. \ No newline at end of file +You can now use these boot sources to create virtual machines. diff --git a/networking/ptp/_attributes b/networking/ptp/_attributes new file mode 120000 index 0000000000..20cc1dcb77 --- /dev/null +++ b/networking/ptp/_attributes @@ -0,0 +1 @@ +../../_attributes/ \ No newline at end of file diff --git a/networking/ptp/about-ptp.adoc b/networking/ptp/about-ptp.adoc new file mode 100644 index 0000000000..79ee2ad18b --- /dev/null +++ b/networking/ptp/about-ptp.adoc @@ -0,0 +1,38 @@ +:_mod-docs-content-type: ASSEMBLY +[id="about-ptp"] += About PTP in {product-title} cluster nodes +include::_attributes/common-attributes.adoc[] +:context: about-ptp + +toc::[] + +Precision Time Protocol (PTP) is used to synchronize clocks in a network. +When used in conjunction with hardware support, PTP is capable of sub-microsecond accuracy, and is more accurate than Network Time Protocol (NTP). + +You can configure `linuxptp` services and use PTP-capable hardware in {product-title} cluster nodes. + +Use the {product-title} web console or OpenShift CLI (`oc`) to install PTP by deploying the PTP Operator. The PTP Operator creates and manages the `linuxptp` services and provides the following features: + +* Discovery of the PTP-capable devices in the cluster. + +* Management of the configuration of `linuxptp` services. + +* Notification of PTP clock events that negatively affect the performance and reliability of your application with the PTP Operator `cloud-event-proxy` sidecar. + +[NOTE] +==== +The PTP Operator works with PTP-capable devices on clusters provisioned only on bare-metal infrastructure. +==== + +include::modules/nw-ptp-introduction.adoc[leveloffset=+1] + +[IMPORTANT] +==== +Before enabling PTP, ensure that NTP is disabled for the required nodes. You can disable the chrony time service (`chronyd`) using a `MachineConfig` custom resource. For more information, see xref:../../post_installation_configuration/machine-configuration-tasks.adoc#cnf-disable-chronyd_post-install-machine-configuration-tasks[Disabling chrony time service]. +==== + +include::modules/ptp-dual-nics.adoc[leveloffset=+1] + +include::modules/ptp-linuxptp-introduction.adoc[leveloffset=+1] + +include::modules/ptp-overview-of-gnss-grandmaster-clock.adoc[leveloffset=+1] diff --git a/networking/ptp/configuring-ptp.adoc b/networking/ptp/configuring-ptp.adoc new file mode 100644 index 0000000000..88323e18a7 --- /dev/null +++ b/networking/ptp/configuring-ptp.adoc @@ -0,0 +1,67 @@ +:_mod-docs-content-type: ASSEMBLY +[id="configuring-ptp"] += Configuring PTP devices +include::_attributes/common-attributes.adoc[] +:context: configuring-ptp + +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. + +include::modules/nw-ptp-installing-operator-cli.adoc[leveloffset=+1] + +include::modules/nw-ptp-installing-operator-web-console.adoc[leveloffset=+1] + +include::modules/nw-ptp-device-discovery.adoc[leveloffset=+1] + +include::modules/ptp-using-hardware-specific-nic-features.adoc[leveloffset=+1] + +include::modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc[leveloffset=+1] + +[role="_additional-resources"] +.Additional resources + +* xref:../../networking/ptp/using-ptp-events.adoc#cnf-configuring-the-ptp-fast-event-publisher_using-ptp-hardware-fast-events-framework[Configuring the PTP fast event notifications publisher] + +include::modules/nw-ptp-grandmaster-clock-configuration-reference.adoc[leveloffset=+2] + +include::modules/nw-ptp-grandmaster-clock-class-reference.adoc[leveloffset=+2] + +include::modules/nw-ptp-e810-hardware-configuration-reference.adoc[leveloffset=+2] + +include::modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc[leveloffset=+1] + +[role="_additional-resources"] +.Additional resources + +* xref:../../networking/ptp/configuring-ptp.adoc#cnf-configuring-fifo-priority-scheduling-for-ptp_configuring-ptp[Configuring FIFO priority scheduling for PTP hardware] + +* xref:../../networking/ptp/using-ptp-events.adoc#cnf-configuring-the-ptp-fast-event-publisher_using-ptp-hardware-fast-events-framework[Configuring the PTP fast event notifications publisher] + +include::modules/ptp-configuring-linuxptp-services-as-boundary-clock-dual-nic.adoc[leveloffset=+2] + +include::modules/nw-ptp-configuring-linuxptp-services-as-ordinary-clock.adoc[leveloffset=+1] + +[role="_additional-resources"] +.Additional resources + +* xref:../../networking/ptp/configuring-ptp.adoc#cnf-configuring-fifo-priority-scheduling-for-ptp_configuring-ptp[Configuring FIFO priority scheduling for PTP hardware] + +* xref:../../networking/ptp/using-ptp-events.adoc#cnf-configuring-the-ptp-fast-event-publisher_using-ptp-hardware-fast-events-framework[Configuring the PTP fast event notifications publisher] + +include::modules/nw-columbiaville-ptp-config-refererence.adoc[leveloffset=+2] + +[role="_additional-resources"] +.Additional resources + +* For a complete example CR that configures `linuxptp` services as an ordinary clock with PTP fast events, see xref:../../networking/ptp/configuring-ptp.adoc#configuring-linuxptp-services-as-ordinary-clock_configuring-ptp[Configuring linuxptp services as ordinary clock]. + +include::modules/cnf-configuring-fifo-priority-scheduling-for-ptp.adoc[leveloffset=+1] + +include::modules/cnf-configuring-log-filtering-for-linuxptp.adoc[leveloffset=+1] + +include::modules/cnf-troubleshooting-common-ptp-operator-issues.adoc[leveloffset=+1] + +include::modules/cnf-about-collecting-ptp-data.adoc[leveloffset=+1] diff --git a/networking/ptp/images b/networking/ptp/images new file mode 120000 index 0000000000..847b03ed05 --- /dev/null +++ b/networking/ptp/images @@ -0,0 +1 @@ +../../images/ \ No newline at end of file diff --git a/networking/ptp/modules b/networking/ptp/modules new file mode 120000 index 0000000000..36719b9de7 --- /dev/null +++ b/networking/ptp/modules @@ -0,0 +1 @@ +../../modules/ \ No newline at end of file diff --git a/networking/ptp-cloud-events-consumer-dev-reference.adoc b/networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc similarity index 88% rename from networking/ptp-cloud-events-consumer-dev-reference.adoc rename to networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc index aa59376781..c9ce69df03 100644 --- a/networking/ptp-cloud-events-consumer-dev-reference.adoc +++ b/networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc @@ -10,7 +10,7 @@ When developing consumer applications that make use of Precision Time Protocol ( The `cloud-event-proxy` container receives the events from the PTP Operator pod and passes it to the consumer application. The consumer application subscribes to the events posted in the `cloud-event-proxy` container by using a REST API. -For more information about deploying PTP events applications, see xref:../networking/using-ptp.adoc#cnf-about-ptp-fast-event-notifications-framework_using-ptp[About the PTP fast event notifications framework]. +For more information about deploying PTP events applications, see xref:../../networking/ptp/using-ptp-events.adoc#cnf-about-ptp-fast-event-notifications-framework_using-ptp-hardware-fast-events-framework[About the PTP fast event notifications framework]. [NOTE] ==== diff --git a/networking/ptp/snippets b/networking/ptp/snippets new file mode 120000 index 0000000000..5a3f5add14 --- /dev/null +++ b/networking/ptp/snippets @@ -0,0 +1 @@ +../../snippets/ \ No newline at end of file diff --git a/networking/ptp/using-ptp-events.adoc b/networking/ptp/using-ptp-events.adoc new file mode 100644 index 0000000000..48f1109b72 --- /dev/null +++ b/networking/ptp/using-ptp-events.adoc @@ -0,0 +1,66 @@ +:_mod-docs-content-type: ASSEMBLY +[id="using-ptp-hardware-fast-events-framework"] += Using the PTP hardware fast event notifications framework +include::_attributes/common-attributes.adoc[] +:context: using-ptp-hardware-fast-events-framework + +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). + +include::modules/cnf-about-ptp-and-clock-synchronization.adoc[leveloffset=+1] + +include::modules/cnf-about-ptp-fast-event-notifications-framework.adoc[leveloffset=+1] + +include::modules/cnf-configuring-the-ptp-fast-event-publisher.adoc[leveloffset=+1] + +[role="_additional-resources"] +.Additional resources + +* For a complete example CR that configures `linuxptp` services as an ordinary clock with PTP fast events, see xref:../../networking/ptp/configuring-ptp.adoc#configuring-linuxptp-services-as-ordinary-clock_configuring-ptp[Configuring linuxptp services as ordinary clock]. + +include::modules/cnf-migrating-from-amqp-to-http-transport.adoc[leveloffset=+1] + +include::modules/cnf-installing-amq-interconnect-messaging-bus.adoc[leveloffset=+1] + +[id="subscribing-du-applications-to-ptp-events-rest-api-reference_{context}"] +== Subscribing DU applications to PTP events with the REST API + +Subscribe applications to PTP events by using the resource address `/cluster/node//ptp`, where `` is the cluster node running the DU application. + +Deploy your `cloud-event-consumer` DU application container and `cloud-event-proxy` sidecar container in a separate DU application pod. The `cloud-event-consumer` DU application subscribes to the `cloud-event-proxy` container in the application pod. + +Use the following API endpoints to subscribe the `cloud-event-consumer` DU application to PTP events posted by the `cloud-event-proxy` container at [x-]`http://localhost:8089/api/ocloudNotifications/v1/` in the DU application pod: + +* xref:../../networking/ptp/using-ptp-events.adoc#api-ocloud-notifications-v1-subscriptions_{context}[`/api/ocloudNotifications/v1/subscriptions`] +- `POST`: Creates a new subscription +- `GET`: Retrieves a list of subscriptions + +* xref:../../networking/ptp/using-ptp-events.adoc#api-ocloud-notifications-v1-subscriptions-subscription_id_{context}[`/api/ocloudNotifications/v1/subscriptions/`] +- `GET`: Returns details for the specified subscription ID + +* xref:../../networking/ptp/using-ptp-events.adoc#api-ocloudnotifications-v1-health_{context}[`/api/ocloudNotifications/v1/health`] +- `GET`: Returns the health status of `ocloudNotifications` API + +* xref:../../networking/ptp/using-ptp-events.adoc#api-ocloudnotifications-v1-publishers_{context}[`api/ocloudNotifications/v1/publishers`] +- `GET`: Returns an array of `os-clock-sync-state`, `ptp-clock-class-change`, `lock-state`, and `gnss-sync-status` messages for the cluster node + +* xref:../../networking/ptp/using-ptp-events.adoc#resource-address-current-state_{context}[`/api/ocloudnotifications/v1//CurrentState`] +- `GET`: Returns the current state of one the following event types: `os-clock-sync-state`, `ptp-clock-class-change`, `lock-state`, or `gnss-state-change` events + +[NOTE] +==== +`9089` is the default port for the `cloud-event-consumer` container deployed in the application pod. You can configure a different port for your DU application as required. +==== + +include::modules/cnf-fast-event-notifications-api-refererence.adoc[leveloffset=+2] + +include::modules/cnf-monitoring-fast-events-metrics.adoc[leveloffset=+1] + +[role="_additional-resources"] +.Additional resources + +* xref:../../monitoring/managing-metrics.adoc#managing-metrics[Managing metrics] + +include::modules/nw-ptp-operator-metrics-reference.adoc[leveloffset=+1] diff --git a/networking/using-ptp.adoc b/networking/using-ptp.adoc deleted file mode 100644 index fe16a5f0b9..0000000000 --- a/networking/using-ptp.adoc +++ /dev/null @@ -1,121 +0,0 @@ -:_mod-docs-content-type: ASSEMBLY -[id="using-ptp"] -= Using PTP hardware -include::_attributes/common-attributes.adoc[] -:context: using-ptp - -toc::[] - -You can configure `linuxptp` services and use PTP-capable hardware in {product-title} cluster nodes. - -[id="about-using-ptp-hardware"] -== About PTP hardware - -You can use the {product-title} console or OpenShift CLI (`oc`) to install PTP by deploying the PTP Operator. The PTP Operator creates and manages the `linuxptp` services and provides the following features: - -* Discovery of the PTP-capable devices in the cluster. - -* Management of the configuration of `linuxptp` services. - -* Notification of PTP clock events that negatively affect the performance and reliability of your application with the PTP Operator `cloud-event-proxy` sidecar. - -[NOTE] -==== -The PTP Operator works with PTP-capable devices on clusters provisioned only on bare-metal infrastructure. -==== - -include::modules/nw-ptp-introduction.adoc[leveloffset=+1] - -[IMPORTANT] -==== -Before enabling PTP, ensure that NTP is disabled for the required nodes. You can disable the chrony time service (`chronyd`) using a `MachineConfig` custom resource. For more information, see xref:../post_installation_configuration/machine-configuration-tasks.adoc#cnf-disable-chronyd_post-install-machine-configuration-tasks[Disabling chrony time service]. -==== - -include::modules/ptp-dual-nics.adoc[leveloffset=+2] - -include::modules/ptp-linuxptp-introduction.adoc[leveloffset=+1] - -include::modules/nw-ptp-installing-operator-cli.adoc[leveloffset=+1] - -include::modules/nw-ptp-installing-operator-web-console.adoc[leveloffset=+1] - -== Configuring PTP devices - -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. - -include::modules/nw-ptp-device-discovery.adoc[leveloffset=+2] - -include::modules/nw-ptp-configuring-linuxptp-services-as-grandmaster-clock.adoc[leveloffset=+2] - -[role="_additional-resources"] -.Additional resources - -* xref:../networking/using-ptp.adoc#cnf-configuring-the-ptp-fast-event-publisher_using-ptp[Configuring the PTP fast event notifications publisher] - -include::modules/nw-ptp-grandmaster-clock-configuration-reference.adoc[leveloffset=+3] - -include::modules/nw-ptp-configuring-linuxptp-services-as-ordinary-clock.adoc[leveloffset=+2] - -[role="_additional-resources"] -.Additional resources - -* For more information about FIFO priority scheduling on PTP hardware, see xref:../networking/using-ptp.adoc#cnf-configuring-fifo-priority-scheduling-for-ptp_using-ptp[Configuring FIFO priority scheduling for PTP hardware]. - -* For more information about configuring PTP fast events, see xref:../networking/using-ptp.adoc#cnf-configuring-the-ptp-fast-event-publisher_using-ptp[Configuring the PTP fast event notifications publisher]. - -include::modules/nw-ptp-configuring-linuxptp-services-as-boundary-clock.adoc[leveloffset=+2] - -[role="_additional-resources"] -.Additional resources - -* For more information about FIFO priority scheduling on PTP hardware, see xref:../networking/using-ptp.adoc#cnf-configuring-fifo-priority-scheduling-for-ptp_using-ptp[Configuring FIFO priority scheduling for PTP hardware]. - -* For more information about configuring PTP fast events, see xref:../networking/using-ptp.adoc#cnf-configuring-the-ptp-fast-event-publisher_using-ptp[Configuring the PTP fast event notifications publisher]. - -include::modules/ptp-configuring-linuxptp-services-as-boundary-clock-dual-nic.adoc[leveloffset=+2] - -include::modules/nw-columbiaville-ptp-config-refererence.adoc[leveloffset=+2] - -[role="_additional-resources"] -.Additional resources - -* For a complete example CR that configures `linuxptp` services as an ordinary clock with PTP fast events, see xref:../networking/using-ptp.adoc#configuring-linuxptp-services-as-ordinary-clock_using-ptp[Configuring linuxptp services as ordinary clock]. - -include::modules/cnf-configuring-fifo-priority-scheduling-for-ptp.adoc[leveloffset=+2] - -include::modules/cnf-configuring-log-filtering-for-linuxptp.adoc[leveloffset=+2] - -include::modules/cnf-troubleshooting-common-ptp-operator-issues.adoc[leveloffset=+1] - -include::modules/cnf-about-collecting-ptp-data.adoc[leveloffset=+2] - -== PTP hardware fast event notifications framework - -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). - -include::modules/cnf-about-ptp-and-clock-synchronization.adoc[leveloffset=+2] - -include::modules/cnf-about-ptp-fast-event-notifications-framework.adoc[leveloffset=+2] - -include::modules/cnf-configuring-the-ptp-fast-event-publisher.adoc[leveloffset=+2] - -[role="_additional-resources"] -.Additional resources - -* For a complete example CR that configures `linuxptp` services as an ordinary clock with PTP fast events, see xref:../networking/using-ptp.adoc#configuring-linuxptp-services-as-ordinary-clock_using-ptp[Configuring linuxptp services as ordinary clock]. - -include::modules/cnf-migrating-from-amqp-to-http-transport.adoc[leveloffset=+2] - -include::modules/cnf-installing-amq-interconnect-messaging-bus.adoc[leveloffset=+2] - -include::modules/cnf-fast-event-notifications-api-refererence.adoc[leveloffset=+2] - -include::modules/cnf-monitoring-fast-events-metrics.adoc[leveloffset=+2] - -[role="_additional-resources"] -.Additional resources - -* xref:../monitoring/managing-metrics.adoc#managing-metrics[Managing metrics] diff --git a/scalability_and_performance/ztp_far_edge/ztp-advanced-policy-config.adoc b/scalability_and_performance/ztp_far_edge/ztp-advanced-policy-config.adoc index 866297fb7e..b247001d96 100644 --- a/scalability_and_performance/ztp_far_edge/ztp-advanced-policy-config.adoc +++ b/scalability_and_performance/ztp_far_edge/ztp-advanced-policy-config.adoc @@ -75,7 +75,7 @@ include::modules/ztp-configuring-ptp-fast-events-amqp.adoc[leveloffset=+2] [role="_additional-resources"] .Additional resources -* xref:../../networking/using-ptp.adoc#cnf-installing-amq-interconnect-messaging-bus_using-ptp[Installing the AMQ messaging bus] +* xref:../../networking/ptp/using-ptp-events.adoc#cnf-installing-amq-interconnect-messaging-bus_using-ptp-events[Installing the AMQ messaging bus] * For more information about container image registries, see xref:../../registry/index.adoc#registry-overview[{product-registry} overview]. [id="ztp-advanced-policy-config-bare-metal_{context}"] diff --git a/snippets/ptp-clock-holdover-note.adoc b/snippets/ptp-clock-holdover-note.adoc new file mode 100644 index 0000000000..5ba4867e07 --- /dev/null +++ b/snippets/ptp-clock-holdover-note.adoc @@ -0,0 +1,10 @@ +:_mod-docs-content-type: SNIPPET +[NOTE] +==== +During holdover, the T-GM or T-BC uses the internal system clock to continue generating time synchronization signals as accurately as possible based on the last known good reference. + +You can set the time holdover specification threshold controlling the time spent advertising `ClockClass` values `7` or `135` to `0` so that the T-GM or T-BC advertises a degraded `ClockClass` value directly after losing traceability to a PRTC. +In this case, after initially advertising `ClockClass` values between `140–165`, a clock can still be within the holdover specification. +==== + +For more information, see link:https://www.itu.int/rec/T-REC-G.8275.1-202211-I/en["Phase/time traceability information", ITU-T G.8275.1/Y.1369.1 Recommendations]. diff --git a/snippets/ptp_PtpConfigGmWpc.yaml b/snippets/ptp_PtpConfigGmWpc.yaml index f8f1c01fcb..ff7da9d788 100644 --- a/snippets/ptp_PtpConfigGmWpc.yaml +++ b/snippets/ptp_PtpConfigGmWpc.yaml @@ -3,8 +3,6 @@ kind: PtpConfig metadata: name: grandmaster namespace: openshift-ptp - annotations: - ran.openshift.io/ztp-deploy-wave: "10" spec: profile: - name: "grandmaster" @@ -16,7 +14,71 @@ spec: logReduce: "true" plugins: e810: - enableDefaultConfig: true + 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] diff --git a/snippets/snip-noobaa-and-mcg.adoc b/snippets/snip-noobaa-and-mcg.adoc index 29bf2454eb..de7ae0dcf9 100644 --- a/snippets/snip-noobaa-and-mcg.adoc +++ b/snippets/snip-noobaa-and-mcg.adoc @@ -1,8 +1,8 @@ -:_content-type: SNIPPET +:_mod-docs-content-type: SNIPPET [NOTE] ==== Unless specified otherwise, "NooBaa" refers to the open source project that provides lightweight object storage, while "Multicloud Object Gateway (MCG)" refers to the Red Hat distribution of NooBaa. For more information on the MCG, see link:https://access.redhat.com/documentation/en-us/red_hat_openshift_data_foundation/4.13/html-single/managing_hybrid_and_multicloud_resources/index#accessing-the-multicloud-object-gateway-with-your-applications_rhodf[Accessing the Multicloud Object Gateway with your applications]. -==== \ No newline at end of file +==== diff --git a/snippets/snip-post-mig-hook b/snippets/snip-post-mig-hook index ffeed3e10f..1595f97bcf 100644 --- a/snippets/snip-post-mig-hook +++ b/snippets/snip-post-mig-hook @@ -1,4 +1,4 @@ -:_content-type: SNIPPET +:_mod-docs-content-type: SNIPPET [NOTE] ==== @@ -7,4 +7,4 @@ Post-migration hooks are not likely to work well with the OADP 1.3 Data Mover. The OADP 1.1 and OADP 1.2 Data Movers use synchronous processes to back up and restore application data. Because the processes are synchronous, users can be sure that any post-restore hooks start only after the persistent volumes (PVs) of the related pods are released by the persistent volume claim (PVC) of the Data Mover. However, the OADP 1.3 Data Mover uses an asynchronous process. As a result of this difference in sequencing, a post-restore hook might be called before the related PVs were released by the PVC of the Data Mover. If this happens, the pod remains in `Pending` status and cannot run the hook. The hook attempt might time out before the pod is released, leading to a `PartiallyFailed` restore operation. -==== \ No newline at end of file +====