Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

gNOI診断(診断)サービス

gNOI診断(Diag)サービスを使用して、2つのデバイス間のリンクの信頼性をテストします。

概要

DiagサービスRPCを使用して、接続されたポートのペアでビットエラーレートテスト(BERT)を実行します。Diagサービスプロト定義ファイルは、https://github.com/openconfig/gnoi/blob/master/diag/diag.proto にあります。

BERTは、擬似ランダムバイナリシーケンス(PRBS)テストとも呼ばれ、リンクの信頼性をテストします。 StartBERT() gNOI RPCは、接続された物理インターフェイスのペアで双方向BERTを開始します。デバイスは、リンク全体で1と0の設定されたパターンを交換します。デバイスは受信したメッセージと送信したメッセージを比較し、エラーの数をカウントします。エラー数が少ないほど、リンクの品質は高くなります。

デバイスが結果を比較できるように、リンクの両側でgNOI BERTを実行する必要があります。テストしているリンクは、BERTの実行中にダウンし、BERTの終了後に再び立ち上がります。ただし、BERTを実行しているデバイスの1つが再起動すると、もう一方のデバイスでBERTを停止しない限り、リンクはダウンしたままになります。

テストパターンは、いくつかの所定のタイプから選択できます。BERTまたはPRBSテストパターンのタイトルは、PRBSxの形式で、xは数値です。Junosデバイスは、gNOI BERTの以下のテストパターンをサポートしています。

  • PRBS7
  • PRBS9
  • PRBS15
  • PRBS23
  • PRBS31

各 gNOI BERT に固有の操作 ID を指定する必要があります。BERT の開始、BERT の停止、および BERT 結果の取得を行う RPC は、BERT 操作 ID によってリンクされます。新しいBERTを実行する場合は、操作IDを新しい文字列に変更する必要があります。RPCは各BERTをその操作IDで識別するため、同じIDを持つ異なるインターフェイスで複数のBERTを実行できます。

デバイスは、過去 5 回の BERT 操作の結果を保持します。ただし、保存されたBERT結果は永続的ではありません。システムが再起動すると、それらは失われます。

保存された特定のBERT操作の結果を表示するには、目的のBERT操作IDのGetBERTResultRequestメッセージを送信し、result_from_all_portsフィールドをFalseに設定します。異なるIDのすべてのリクエスト結果を表示するには、GetBERTResultRequestメッセージのresult_from_all_portsフィールドをTrueに設定します。

デバイス上で GetBERTResult() RPCを実行すると、RPCは、特定のデバイスがBERT中に検出した不一致ビットの数を表示します。RPCには合格または不合格の基準が設定されていないため、結果を評価するのはユーザー次第です。以下のような理由により、多数のエラーが発生することがあります。

  • リンクの品質が悪い。
  • BERT中にデバイスの1つがオフラインになりました。
  • BERTは1台のデバイスでのみ実行されました。
  • BERTは、両方のデバイスで同時に起動および停止しませんでした。

最後のエラーを回避するために、 StartBERT() RPCを両方のデバイスに同時に送信することをお勧めします。一方のデバイスで他方のデバイスよりも先にBERTを開始した場合、もう一方のデバイスでBERTが起動するまで、最初のデバイスは応答を受信しません。最初のデバイスは、応答の欠如を不一致ビットとして記録します。2番目のデバイスでBERTが起動するまで、最初のデバイスはエラーを報告し続けます。BERTを同時に起動できない場合は、最後にBERTを開始したデバイスで GetBERTResult() RPCを実行することをお勧めします。BERTはすでに最初のデバイスで実行されていたため、2番目のデバイスは誤った欠落ビットを報告しません。

サポートされているRPC

表1:サポートされているdiag.proto RPC
RPC 説明 リリースで導入
StartBERT()

一連のポートでBERTを開始します。Junosデバイスは、gNOI BERTに対して以下のPRBSパターンをサポートしています。

  • PRBS7
  • PRBS9
  • PRBS15
  • PRBS23
  • PRBS31

Junos OS Evolved 22.2R1

StopBert()

一連のポートですでに進行中のBERTを停止します。

Junos OS Evolved 22.2R1

GetBERTResult()

BERT中またはBERT完了後にBERT結果を取得します。

Junos OS Evolved 22.2R1

ネットワークデバイスの設定

始める前に:

  • BERTを実行するリンクについて、サーバーとピアインターフェイスの速度を一致するように設定します。BERTは、インターフェイスの速度が一致する場合にのみ実行されます。

例:BERTを実行する

注:

インターフェイス上でBERTが進行中は、そのインターフェイス上の物理リンクがダウンします。

gNOI クライアントとサーバーを設定したら、BERT を実行するためのアプリケーションを作成して実行する準備が整います。この例では、クライアントが gnoi_bert_client.py Pythonアプリケーションを実行して、サーバーとピアデバイス間のリンクをテストします。 gnoi_bert_client.py アプリケーションは、引数に応じて、BERTの開始、BERTの停止、またはBERT結果の取得を行うことができます。

まず、クライアントは gnoi_bert_client.py を使用して StartBERT() RPC を送信し、サーバーとピアで BERT を開始します。BERTの実行中、サーバーとピアは、et-1/0/2とet-1/0/3インターフェイス間のリンクを介してBERTテストパケットを交換します。

図1:BERTNetwork diagram of Bit Error Rate Test setup with Client, Server, and Peer exchanging test packets.時のネットワークトポロジー

BERTは、設定された時間が終了すると終了します。次に、クライアントは GetBERTResult() RPC でアプリケーションを 2 回実行し、サーバーから BERT 結果を取得します。

StartBERTRequestメッセージのパラメーターは、input_bert_start.json JSONファイルに保存されます。このファイルは、PRBSパターン31を使用してBERTを60秒間実行することを指定します。GetBERTResultRequestメッセージのパラメーターは、input_bert_get.json JSONファイルに保存されます。result_from_all_portsフィールドはFalseに設定されているため、GetBERTResult() RPCはこの特定のBERTの結果のみをこのポートから取得します。BERT操作IDは、両方のJSONファイルでBERT-operation id 1されています。

アプリケーションは、チャネルを確立するための grpc_channel モジュールをインポートします。 grpc_channel モジュールについては、 gNOIサービスを設定するで説明しています。アプリケーションファイルとJSONファイルはこちらに示されています。

gnoi_bert_client.py

input_bert_start.json

input_bert_get.json

アプリケーションの実行

  1. クライアントからgnoi_bert_client.pyアプリケーションを実行し、ピア(図示せず)でBERTを開始します。次に、gnoi_bert_client.py アプリケーションを実行して、サーバー上で BERT を起動します (以下を参照)。BERTを開始するには、messageStartBERTRequestに設定し、input_fileをinput_bert_start.jsonファイルパスに設定します。各デバイスについて、入力ファイルには、そのデバイスでテストされたインターフェイスを指定する必要があります。BERT_STATUS_OKステータスは、BERTが正常に開始されたことを示しています。

  2. (オプション)BERTの実行中に、サーバーまたはピアデバイスで show interfaces コマンドを使用して、進行中のBERT結果を表示します。BERTが実行されている場合、PRBSモードは Enabledです。この例の出力は、わかりやすくするために切り捨てられています。

  3. BERTが終了したら、messageGetBERTResultRequestに設定し、input_fileをinput_bert_get.jsonファイルパスに設定して、gnoi_bert_client.pyアプリケーションを再度実行し、テストの結果を取得します。この例では、BERTは1分間のテスト中にエラーを検出しませんでした。

    BERTは正常に完了し、リンクの品質が良好であることを示しています。