検索

11.10. PTP ハードウェアの高速イベント通知フレームワーク

download PDF
重要

通常のクロックを使用した PTP イベントは、テクノロジープレビューとしてのみ機能します。テクノロジープレビュー機能は、Red Hat の実稼働環境におけるサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

11.10.1. PTP およびクロック同期エラーイベントについて

仮想 RAN などのクラウドネイティブアプリケーションでは、ネットワーク全体の機能に重要なハードウェアタイミングイベントに関する通知へのアクセスが必要です。高速イベント通知は、差し迫ったおよび Real-time Precision Time Protocol (PTP) のクロック同期イベントに関する早期の警告シグナルです。PTP クロック同期エラーは、分散ユニット (DU) で実行している vRAN アプリケーションなど、低レイテンシーアプリケーションのパフォーマンスおよび信頼性に悪影響を及ぼす可能性があります。

PTP 同期の損失は、RAN ネットワークでは重大なエラーです。ノードで同期が失われると、無線がシャットダウンされ、ネットワークの OTA(Over the Air) トラフィックがワイヤレスネットワーク内の別のノードにシフトされる可能性があります。高速のイベント通知は、クラスターノードが DU で実行している vRAN アプリケーションに対して PTP クロック同期ステータスと通信できるようにすることで、ワークロードのエラーを軽減します。

イベント通知は、同じ DU ノードで実行している RAN アプリケーションで利用できます。パブリッシュ/サブスクライブ REST API は、イベント通知をメッセージングバスに渡します。パブリッシュ/サブスクライブメッセージング、または pub/sub メッセージングは、トピックに公開されたメッセージがトピックのすべてのサブスクライバーに即座に受信される、サービス通信アーキテクチャーへの非同期サービスです。

高速イベント通知は、すべての PTP 対応ネットワークインターフェイスについて OpenShift Container Platform の PTP Operator によって生成されます。イベントは、Advanced Message Queuing Protocol (AMQP) メッセージバスで cloud-event-proxy サイドカーコンテナーを使用して利用可能になります。AMQP メッセージバスは AMQ Interconnect Operator によって提供されます。

注記

PTP 高速イベント通知は、PTP もしくは通常のクロックを使用するように設定されたネットワークインターフェイスでのみ利用できます。

11.10.2. PTP 高速イベント通知フレームワークについて

分散ユニット (DU) アプリケーションを、PTP Operator および cloud-event-proxy サイドカーコンテナーを使用して、OpenShift Container Platform によって生成される Precision Time Protocol(PTP) 高速イベント通知にサブスクライブできます。ptpOperatorConfig カスタムリソース (CR) で enableEventPublisher フィールドを true に設定し、transportHost アドレスを指定することで、cloud-event-proxy サイドカーコンテナーを有効にします 。PTP 高速イベントは、AMQ Interconnect Operator によって提供される Advanced Message Queuing Protocol (AMQP) イベント通知バスを使用します。AMQ Interconnect は Red Hat AMQ のコンポーネントで、AMQP 対応エンドポイント間でメッセージを柔軟にルーティングするメッセージングルーターです。

cloud-event-proxy サイドカーコンテナーは、プライマリーアプリケーションのリソースを使用せずに、プライマリー vRAN アプリケーションと同じリソースにアクセスでき、レイテンシーが大きくなくても構いません。

高速イベント通知フレームワークは通信に REST API を使用し、O-RAN REST API 仕様に基づいています。フレームワークは、パブリッシャーとサブスクライバーアプリケーション間の通信を処理するパブリッシャー、サブスクライバー、および AMQ メッセージングバスで設定されます。cloud-event-proxy サイドカーは、DU ノードのメイン DU アプリケーションコンテナーにゆるく結合された Pod で実行するユーティリティーコンテナーです。これは、DU アプリケーションを公開された PTP イベントにサブスクライブできるようにするイベント公開フレームワークを提供します。

DU アプリケーションはサイドカーパターンで cloud-event-proxy コンテナーを実行し、PTP イベントにサブスクライブします。以下のワークフローでは、DU アプリケーションが PTP 高速イベントを使用する方法について説明します。

  1. DU アプリケーションはサブスクリプションを要求: DU は API リクエストを cloud-event-proxy サイドカーに送信し、PTP イベントサブスクリプションを作成します。cloud-event-proxy サイドカーは、サブスクリプションリソースを作成します。
  2. cloud-event-proxy サイドカーは、サブスクリプションを作成: イベントリソースは cloud-event-proxy サイドカーによって永続化されます。cloud-event-proxy サイドカーコンテナーは、ID と URL の場所で確認応答を送信し、保存されたサブスクリプションリソースにアクセスします。サイドカーは、サブスクリプションに指定されたリソースの AMQ メッセージングリスナープロトコルを作成します。
  3. DU アプリケーションは PTP イベント通知を受受け取る: cloud-event-proxy サイドカーコンテナーは、リソース修飾子で指定されたアドレスをリッスンします。DU イベントのコンシューマーはメッセージを処理し、これをサブスクリプションで指定した返信 URL に渡します。
  4. cloud-event-proxy サイドカーは、PTP イベントを検証し、これを DU アプリケーションに送信: cloud-event-proxy サイドカーはイベントを受信し、クラウドイベントオブジェクトをアンラップデータを取得し、イベントを返す URL を取得して DU コンシューマーアプリケーションに返します。
  5. DU アプリケーションは PTP イベントを使用: DU アプリケーションイベントコンシューマーは PTP イベントを受信して処理します。

11.10.3. AMQ メッセージングバスのインストール

ノードのパブリッシャーとサブスクライバー間で PTP 高速イベント通知を渡すには、ノードでローカルに実行するように AMQ メッセージングバスをインストールおよび設定する必要があります。これは、クラスターで使用するために AMQ Interconnect Operator をインストールして行います。

前提条件

  • OpenShift Container Platform CLI (oc) をインストールします。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

検証

  1. AMQ Interconnect Operator が利用可能で、必要な Pod が実行していることを確認します。

    $ oc get pods -n amq-interconnect

    出力例

    NAME                                    READY   STATUS    RESTARTS   AGE
    amq-interconnect-645db76c76-k8ghs       1/1     Running   0          23h
    interconnect-operator-5cb5fc7cc-4v7qm   1/1     Running   0          23h

  2. 必要な linuxptp-daemon PTP イベントプロデューサー Pod が openshift-ptp namespace で実行していることを確認します。

    $ oc get pods -n openshift-ptp

    出力例

    NAME                     READY   STATUS    RESTARTS       AGE
    linuxptp-daemon-2t78p    3/3     Running   0              12h
    linuxptp-daemon-k8n88    3/3     Running   0              12h

11.10.4. PTP 高速イベント通知パブリッシャーの設定

クラスター内のネットワークインターフェイスの PTP 高速イベント通知の使用を開始するには、PTP Operator PtpOperatorConfig カスタムリソース (CR) で高速イベントパブリッシャーを有効にし、作成する PtpConfig CR に ptpClockThreshold 値を設定する必要があります。

前提条件

  • OpenShift Container Platform CLI (oc) をインストールします。
  • cluster-admin 権限を持つユーザーとしてログインしている。
  • PTP Operator および AMQ Interconnect Operator をインストールします。

手順

  1. PtpOperatorConfig リソースの spec.ptpEventConfig フィールドを変更し、以下のコマンドを実行して適切な値を設定します。

    $ oc edit PtpOperatorConfig default -n openshift-ptp
    ...
    spec:
      daemonNodeSelector:
        node-role.kubernetes.io/worker: ""
      ptpEventConfig:
        enableEventPublisher: true 1
        transportHost: amqp://<instance_name>.<namespace>.svc.cluster.local 2
    1
    enableEventPublishertrue に設定して、PTP 高速イベント通知を有効にします。
    2
    transportHost を、設定した AMQ ルーターに設定します。<instance_name> および <namespace> は AMQ Interconnect ルーターインスタンス名および namespace に対応します (例: amqp://amq-interconnect.amq-interconnect.svc.cluster.local)。
  2. PTP 対応インターフェイスの PtpConfig カスタムリソースを作成し、ptpClockThreshold に必要な値を設定します。以下に例を示します。

    apiVersion: ptp.openshift.io/v1
    kind: PtpConfig
    metadata:
      name: example-ptpconfig
      namespace: openshift-ptp
    spec:
      profile:
      - name: "profile1"
        interface: "enp5s0f0"
        ptp4lOpts: "-2 -s --summary_interval -4" 1
        phc2sysOpts: "-a -r -m -n 24 -N 8 -R 16" 2
        ptp4lConf: ""                            3
      ptpClockThreshold:                         4
        holdOverTimeout: 5
        maxOffsetThreshold: 100
        minOffsetThreshold: -100
    1
    --summary_interval -4を追加して、PTP 高速イベントを使用します。
    2
    phc2sysOpts の値が必要です。-m はメッセージを stdout に出力します。linuxptp-daemon DaemonSet はログを解析し、Prometheus メトリックを生成します。
    3
    デフォルトの /etc/ptp4l.conf ファイルを置き換える設定が含まれる文字列を指定します。デフォルト設定を使用するには、フィールドを空のままにします。
    4
    オプション:ptpClockThreshold スタンザが存在しない場合は、ptpClockThreshold フィールドにデフォルト値が使用されます。スタンザは、デフォルトの ptpClockThreshold 値を示します。ptpClockThreshold 値は、PTP マスタークロックが PTP イベントが発生する前に切断されてからの期間を設定します。holdOverTimeout は、PTP マスタークロックが切断されたときに、PTP クロックイベントの状態が FREERUN に変わるまでの時間値 (秒単位) です。maxOffsetThreshold および minOffsetThreshold 設定は、CLOCK_REALTIME (phc2sys) またはマスターオフセット (ptp4l) の値と比較するナノ秒単位のオフセット値を設定します。ptp4l または phc2sys のオフセット値がこの範囲外の場合、PTP クロックの状態が FREERUN に設定されます。オフセット値がこの範囲内にある場合、PTP クロックの状態が LOCKED に設定されます。

11.10.5. DU アプリケーションを PTP イベントにサブスクライブする RESTAPI リファレンス

PTP イベント通知 REST API を使用して、分散ユニット (DU) アプリケーションを親ノードで生成される PTP イベントにサブスクライブします。

リソースアドレス/cluster/node/<node_name>/ptp を使用して、アプリケーションを PTP イベントにサブスクライブします。ここで、<node_name> は、DU アプリケーションを実行しているクラスターノードです。

cloud-event-consumerDUアプリケーションコンテナーとcloud-event-proxyサイドカーコンテナーを別々の DU アプリケーション Pod にデプロイします。cloud-event-consumer DU アプリケーションは、アプリケーション Pod のcloud-event-proxyコンテナーにサブスクライブします。

次の API エンドポイントを使用して、cloud-event-consumer DU アプリケーションを、DU アプリケーション Pod の http://localhost:8089/api/cloudNotifications/v1/ にある cloud-event-proxy コンテナーによって投稿された PTP イベントにサブスクライブします。

  • /api/cloudNotifications/v1/subscriptions

    • POST: 新しいサブスクリプションを作成します。
    • GET: サブスクリプションの一覧を取得します。
  • /api/cloudNotifications/v1/subscriptions/<subscription_id>

    • GET: 指定されたサブスクリプション ID の詳細を返します。
  • api/cloudNotifications/v1/subscriptions/status/<subscription_id>

    • PUT: 指定されたサブスクリプション ID に新しいステータス ping 要求を作成します。
  • /api/cloudNotifications/v1/health

    • GET: cloudNotifications API の正常性ステータスを返します。
注記

9089 は、アプリケーション Pod にデプロイされた cloud-event-consumer コンテナーのデフォルトポートです。必要に応じて、DU アプリケーションに別のポートを設定できます。

11.10.5.1. api/cloudNotifications/v1/subscriptions

11.10.5.1.1. HTTP メソッド

GET api/cloudNotifications/v1/subscriptions

11.10.5.1.1.1. 説明

サブスクリプションの一覧を返します。サブスクリプションが存在する場合は、サブスクリプションの一覧とともに 200 OK のステータスコードが返されます。

API 応答の例

[
 {
  "id": "75b1ad8f-c807-4c23-acf5-56f4b7ee3826",
  "endpointUri": "http://localhost:9089/event",
  "uriLocation": "http://localhost:8089/api/cloudNotifications/v1/subscriptions/75b1ad8f-c807-4c23-acf5-56f4b7ee3826",
  "resource": "/cluster/node/compute-1.example.com/ptp"
 }
]

11.10.5.1.2. HTTP メソッド

POST api/cloudNotifications/v1/subscriptions

11.10.5.1.2.1. 説明

新しいサブスクリプションを作成します。サブスクリプションが正常に作成されるか、すでに存在する場合は、201 Created ステータスコードが返されます。

表11.1 クエリーパラメーター
パラメーター

subscription

data

ペイロードの例

{
  "uriLocation": "http://localhost:8089/api/cloudNotifications/v1/subscriptions",
  "resource": "/cluster/node/compute-1.example.com/ptp"
}

11.10.5.2. api/cloudNotifications/v1/subscriptions/<subscription_id>

11.10.5.2.1. HTTP メソッド

GET api/cloudNotifications/v1/subscriptions/<subscription_id>

11.10.5.2.1.1. 説明

ID が <subscription_id>のサブスクリプションの詳細を返します。

表11.2 クエリーパラメーター
パラメーター

<subscription_id>

string

API 応答の例

{
  "id":"48210fb3-45be-4ce0-aa9b-41a0e58730ab",
  "endpointUri": "http://localhost:9089/event",
  "uriLocation":"http://localhost:8089/api/cloudNotifications/v1/subscriptions/48210fb3-45be-4ce0-aa9b-41a0e58730ab",
  "resource":"/cluster/node/compute-1.example.com/ptp"
}

11.10.5.3. api/cloudNotifications/v1/subscriptions/status/<subscription_id>

11.10.5.3.1. HTTP メソッド

PUT api/cloudNotifications/v1/subscriptions/status/<subscription_id>

11.10.5.3.1.1. 説明

ID <subscription_id> のサブスクリプションの新規ステータス ping 要求を作成します。サブスクリプションが存在する場合は、ステータスリクエストに成功し、202 Accepted ステータスコードが返されます。

表11.3 クエリーパラメーター
パラメーター

<subscription_id>

string

API 応答の例

{"status":"ping sent"}

11.10.5.4. api/cloudNotifications/v1/health/

11.10.5.4.1. HTTP メソッド

GET api/cloudNotifications/v1/health/

11.10.5.4.1.1. 説明

cloudNotifications REST API の正常性ステータスを返します。

API 応答の例

OK

11.10.6. CLI を使用した PTP 高速イベントメトリクスの監視

oc CLI を使用して、cloud-event-proxy コンテナーから直接高速イベントバスメトリクスをモニターできます。

注記

PTP 高速イベント通知メトリクスは OpenShift Container Platform Web コンソールでも利用できます。

前提条件

  • OpenShift Container Platform CLI (oc) をインストールします。
  • cluster-admin 権限を持つユーザーとしてログインしている。
  • PTP Operator をインストールし、設定します。

手順

  1. アクティブな linuxptp-daemon Pod の一覧を取得します。

    $ oc get pods -n openshift-ptp

    出力例

    NAME                    READY   STATUS    RESTARTS   AGE
    linuxptp-daemon-2t78p   3/3     Running   0          8h
    linuxptp-daemon-k8n88   3/3     Running   0          8h

  2. 以下のコマンドを実行して、必要な cloud-event-proxy コンテナーのメトリクスにアクセスします。

    $ oc exec -it <linuxptp-daemon> -n openshift-ptp -c cloud-event-proxy -- curl 127.0.0.1:9091/metrics

    ここでは、以下のようになります。

    <linuxptp-daemon>

    問い合わせる Pod を指定します (例: linuxptp-daemon-2t78p)。

    出力例

    # HELP cne_amqp_events_published Metric to get number of events published by the transport
    # TYPE cne_amqp_events_published gauge
    cne_amqp_events_published{address="/cluster/node/compute-1.example.com/ptp/status",status="success"} 1041
    # HELP cne_amqp_events_received Metric to get number of events received  by the transport
    # TYPE cne_amqp_events_received gauge
    cne_amqp_events_received{address="/cluster/node/compute-1.example.com/ptp",status="success"} 1019
    # HELP cne_amqp_receiver Metric to get number of receiver created
    # TYPE cne_amqp_receiver gauge
    cne_amqp_receiver{address="/cluster/node/mock",status="active"} 1
    cne_amqp_receiver{address="/cluster/node/compute-1.example.com/ptp",status="active"} 1
    cne_amqp_receiver{address="/cluster/node/compute-1.example.com/redfish/event",status="active"}
    ...

11.10.7. Web コンソールでの PTP 高速イベントメトリクスの監視

事前に設定された自己更新型の Prometheus モニターリングスタックを使用して、OpenShift Container Platform Web コンソールで PTP 高速イベントメトリクスをモニターリングできます。

前提条件

  • OpenShift Container Platform CLI (oc) をインストールしている。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. 以下のコマンドを実行して、cloud-event-proxy サイドカーコンテナーから利用可能な PTP メトリクスの一覧を返します。

    $ oc exec -it <linuxptp_daemon_pod> -n openshift-ptp -c cloud-event-proxy -- curl 127.0.0.1:9091/metrics

    ここでは、以下のようになります。

    <linuxptp_daemon_pod>
    問い合わせる Pod を指定します (例: linuxptp-daemon-2t78p)。
  2. 返されるメトリクスの一覧から問い合わせる PTP メトリクスの名前 (例: cne_amqp_events_received) をコピーします。
  3. OpenShift Container Platform Web コンソールで、Observe Metrics をクリックします。
  4. PTP メトリクスを Expression フィールドに貼り付け、Run queries をクリックします。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.