Skip to content

Commit a643d60

Browse files
committed
Adding O-RAN API docs for PTP events
Review updates further updates for Jack Lisa's comments
1 parent 7e89c5e commit a643d60

32 files changed

+5269
-425
lines changed

_topic_maps/_topic_map.yml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1378,10 +1378,14 @@ Topics:
13781378
File: about-ptp
13791379
- Name: Configuring PTP hardware
13801380
File: configuring-ptp
1381-
- Name: Using PTP events
1382-
File: using-ptp-events
1383-
- Name: Developing PTP events consumer applications
1381+
- Name: Developing PTP events consumer applications with the REST API v2
1382+
File: ptp-cloud-events-consumer-dev-reference-v2
1383+
- Name: PTP events REST API v2 reference
1384+
File: ptp-events-rest-api-reference-v2
1385+
- Name: Developing PTP events consumer applications with the REST API v1
13841386
File: ptp-cloud-events-consumer-dev-reference
1387+
- Name: PTP events REST API v1 reference
1388+
File: ptp-events-rest-api-reference
13851389
- Name: External DNS Operator
13861390
Dir: external_dns_operator
13871391
Topics:
Loading

modules/cnf-about-ptp-and-clock-synchronization.adoc

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,21 @@
11
// Module included in the following assemblies:
22
//
3-
// * networking/ptp/using-ptp-events.adoc
3+
// * networking/ptp/about-ptp.adoc
44

55
:_mod-docs-content-type: CONCEPT
66
[id="cnf-about-ptp-and-clock-synchronization_{context}"]
77
= About PTP and clock synchronization error events
88

9-
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.
9+
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.
10+
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).
1011

11-
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.
12+
Loss of PTP synchronization is a critical error for a RAN network.
13+
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.
14+
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.
15+
16+
Event notifications are available to vRAN applications running on the same DU node.
17+
A publish/subscribe REST API passes events notifications to the messaging bus.
18+
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.
1219

1320
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 message bus.
1421

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc
4+
5+
:_mod-docs-content-type: CONCEPT
6+
[id="cnf-about-ptp-events-consumer-sidecar-and-http-transport_{context}"]
7+
= Retrieving PTP events with the PTP events REST API v1
8+
9+
Applications run the `cloud-event-proxy` container in a sidecar pattern to subscribe to PTP events.
10+
The `cloud-event-proxy` sidecar container can access the same resources as the primary application container without using any of the resources of the primary application and with no significant latency.
11+
12+
.Overview of PTP fast events with consumer sidecar and HTTP message transport
13+
image::319_OpenShift_PTP_bare-metal_OCP_nodes_0323_4.13.png[Overview of PTP fast events with consumer sidecar and HTTP message transport]
14+
15+
image:darkcircle-1.png[20,20] Event is generated on the cluster host::
16+
`linuxptp-daemon` in the PTP Operator-managed pod runs as a Kubernetes `DaemonSet` and manages the various `linuxptp` processes (`ptp4l`, `phc2sys`, and optionally for grandmaster clocks, `ts2phc`).
17+
The `linuxptp-daemon` passes the event to the UNIX domain socket.
18+
19+
image:darkcircle-2.png[20,20] Event is passed to the cloud-event-proxy sidecar::
20+
The PTP plugin reads the event from the UNIX domain socket and passes it to the `cloud-event-proxy` sidecar in the PTP Operator-managed pod.
21+
`cloud-event-proxy` delivers the event from the Kubernetes infrastructure to Cloud-Native Network Functions (CNFs) with low latency.
22+
23+
image:darkcircle-3.png[20,20] Event is persisted::
24+
The `cloud-event-proxy` sidecar in the PTP Operator-managed pod processes the event and publishes the cloud-native event by using a REST API.
25+
26+
image:darkcircle-4.png[20,20] Message is transported::
27+
The message transporter transports the event to the `cloud-event-proxy` sidecar in the application pod over HTTP.
28+
29+
image:darkcircle-5.png[20,20] Event is available from the REST API::
30+
The `cloud-event-proxy` sidecar in the Application pod processes the event and makes it available by using the REST API.
31+
32+
image:darkcircle-6.png[20,20] Consumer application requests a subscription and receives the subscribed event::
33+
The consumer application sends an API request to the `cloud-event-proxy` sidecar in the application pod to create a PTP events subscription.
34+
The `cloud-event-proxy` sidecar creates an HTTP messaging listener protocol for the resource specified in the subscription.
35+
36+
The `cloud-event-proxy` sidecar in the application pod receives the event from the PTP Operator-managed pod, unwraps the cloud events object to retrieve the data, and posts the event to the consumer application.
37+
The consumer application listens to the address specified in the resource qualifier and receives and processes the PTP event.
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Module included in the following assemblies:
2+
//
3+
// * networking/ptp/ptp-cloud-events-consumer-dev-reference-v2.adoc
4+
5+
:_mod-docs-content-type: CONCEPT
6+
[id="cnf-about-ptp-events-using-ptp-event-producer-with-o-ran-api_{context}"]
7+
= Retrieving PTP events with the PTP events REST API v2
8+
9+
Applications subscribe to PTP events by using an O-RAN v3 compatible REST API in the producer-side cloud event proxy sidecar.
10+
The `cloud-event-proxy` sidecar container can access the same resources as the primary application container without using any of the resources of the primary application and with no significant latency.
11+
12+
.Overview of consuming PTP fast events from the PTP event producer REST API v2
13+
image::319_OpenShift_PTP_bare-metal_OCP_nodes_0323_4.17.png[Overview of consuming PTP fast events from the PTP event producer REST API]
14+
15+
image:darkcircle-1.png[20,20] Event is generated on the cluster host::
16+
The `linuxptp-daemon` process in the PTP Operator-managed pod runs as a Kubernetes `DaemonSet` and manages the various `linuxptp` processes (`ptp4l`, `phc2sys`, and optionally for grandmaster clocks, `ts2phc`).
17+
The `linuxptp-daemon` passes the event to the UNIX domain socket.
18+
19+
image:darkcircle-2.png[20,20] Event is passed to the cloud-event-proxy sidecar::
20+
The PTP plugin reads the event from the UNIX domain socket and passes it to the `cloud-event-proxy` sidecar in the PTP Operator-managed pod.
21+
`cloud-event-proxy` delivers the event from the Kubernetes infrastructure to Cloud-Native Network Functions (CNFs) with low latency.
22+
23+
image:darkcircle-3.png[20,20] Event is published::
24+
The `cloud-event-proxy` sidecar in the PTP Operator-managed pod processes the event and publishes the event by using the PTP events REST API v2.
25+
26+
image:darkcircle-4.png[20,20] Consumer application requests a subscription and receives the subscribed event::
27+
The consumer application sends an API request to the producer `cloud-event-proxy` sidecar to create a PTP events subscription.
28+
Once subscribed, the consumer application listens to the address specified in the resource qualifier and receives and processes the PTP events.
Lines changed: 7 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,17 @@
11
// Module included in the following assemblies:
22
//
3-
// * networking/ptp/using-ptp-events.adoc
3+
// * networking/ptp/ptp-cloud-events-consumer-dev-reference-v2.adoc
4+
// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc
45

56
:_mod-docs-content-type: CONCEPT
6-
[id="cnf-about-ptp-fast-event-notifications-framework_{context}"]
7+
[id="cnf-about-ptp-fast-event-notifications-framework-{ptp-events-rest-api}_{context}"]
78
= About the PTP fast event notifications framework
89
9-
Use the Precision Time Protocol (PTP) fast event notifications framework to subscribe cluster applications to PTP events that the bare-metal cluster node generates.
10+
Use the Precision Time Protocol (PTP) fast event REST API v2 to subscribe cluster applications to PTP events that the bare-metal cluster node generates.
1011
1112
[NOTE]
1213
====
13-
The fast events notifications framework uses a REST API for communication. The REST API is based on the _O-RAN O-Cloud Notification API Specification for Event Consumers 3.0_ that is available from link:https://orandownloadsweb.azurewebsites.net/specifications[O-RAN ALLIANCE Specifications].
14-
====
15-
16-
The framework consists of a publisher, subscriber, and an HTTP messaging protocol to handle communications between the publisher and subscriber applications.
17-
Applications run the `cloud-event-proxy` container in a sidecar pattern to subscribe to PTP events.
18-
The `cloud-event-proxy` sidecar container can access the same resources as the primary application container without using any of the resources of the primary application and with no significant latency.
19-
20-
.Overview of PTP fast events
21-
image::319_OpenShift_PTP_bare-metal_OCP_nodes_0323_4.13.png[Overview of PTP fast events]
22-
23-
image:darkcircle-1.png[20,20] Event is generated on the cluster host::
24-
`linuxptp-daemon` in the PTP Operator-managed pod runs as a Kubernetes `DaemonSet` and manages the various `linuxptp` processes (`ptp4l`, `phc2sys`, and optionally for grandmaster clocks, `ts2phc`).
25-
The `linuxptp-daemon` passes the event to the UNIX domain socket.
26-
27-
image:darkcircle-2.png[20,20] Event is passed to the cloud-event-proxy sidecar::
28-
The PTP plugin reads the event from the UNIX domain socket and passes it to the `cloud-event-proxy` sidecar in the PTP Operator-managed pod.
29-
`cloud-event-proxy` delivers the event from the Kubernetes infrastructure to Cloud-Native Network Functions (CNFs) with low latency.
14+
The fast events notifications framework uses a REST API for communication. The PTP events REST API v1 and v2 are based on the _O-RAN O-Cloud Notification API Specification for Event Consumers 3.0_ that is available from link:https://orandownloadsweb.azurewebsites.net/specifications[O-RAN ALLIANCE Specifications].
3015

31-
image:darkcircle-3.png[20,20] Event is persisted::
32-
The `cloud-event-proxy` sidecar in the PTP Operator-managed pod processes the event and publishes the cloud-native event by using a REST API.
33-
34-
image:darkcircle-4.png[20,20] Message is transported::
35-
The message transporter transports the event to the `cloud-event-proxy` sidecar in the application pod over HTTP.
36-
37-
image:darkcircle-5.png[20,20] Event is available from the REST API::
38-
The `cloud-event-proxy` sidecar in the Application pod processes the event and makes it available by using the REST API.
39-
40-
image:darkcircle-6.png[20,20] Consumer application requests a subscription and receives the subscribed event::
41-
The consumer application sends an API request to the `cloud-event-proxy` sidecar in the application pod to create a PTP events subscription.
42-
The `cloud-event-proxy` sidecar creates an HTTP messaging listener protocol for the resource specified in the subscription.
43-
44-
The `cloud-event-proxy` sidecar in the application pod receives the event from the PTP Operator-managed pod, unwraps the cloud events object to retrieve the data, and posts the event to the consumer application.
45-
The consumer application listens to the address specified in the resource qualifier and receives and processes the PTP event.
16+
Only the PTP events REST API v2 is O-RAN v3 compliant.
17+
====

modules/cnf-configuring-the-ptp-fast-event-publisher.adoc

Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
// Module included in the following assemblies:
22
//
3-
// * networking/ptp/using-ptp-events.adoc
3+
// * networking/ptp/ptp-cloud-events-consumer-dev-reference-v2.adoc
4+
// * networking/ptp/ptp-cloud-events-consumer-dev-reference.adoc
45

56
:_mod-docs-content-type: PROCEDURE
6-
[id="cnf-configuring-the-ptp-fast-event-publisher_{context}"]
7+
[id="cnf-configuring-the-ptp-fast-event-publisher-{ptp-events-rest-api}_{context}"]
78
= Configuring the PTP fast event notifications publisher
89
910
To start using PTP fast event notifications for a network interface in your cluster, you must enable the fast event publisher in the PTP Operator `PtpOperatorConfig` custom resource (CR) and configure `ptpClockThreshold` values in a `PtpConfig` CR that you create.
@@ -22,21 +23,12 @@ To start using PTP fast event notifications for a network interface in your clus
2223
2324
.. Save the following YAML in the `ptp-operatorconfig.yaml` file:
2425
+
25-
[source,yaml]
26-
----
27-
apiVersion: ptp.openshift.io/v1
28-
kind: PtpOperatorConfig
29-
metadata:
30-
name: default
31-
namespace: openshift-ptp
32-
spec:
33-
daemonNodeSelector:
34-
node-role.kubernetes.io/worker: ""
35-
ptpEventConfig:
36-
enableEventPublisher: true <1>
37-
----
38-
<1> Set `enableEventPublisher` to `true` to enable PTP fast event notifications.
39-
26+
ifeval::["{ptp-events-rest-api}" == "v1"]
27+
include::snippets/ptp-event-config-api-v1.adoc[]
28+
endif::[]
29+
ifeval::["{ptp-events-rest-api}" == "v2"]
30+
include::snippets/ptp-event-config-api-v2.adoc[]
31+
endif::[]
4032
+
4133
[NOTE]
4234
====

0 commit comments

Comments
 (0)