はじめに
このドキュメントでは、CLIおよびGeneric type NEDトレースを分析し、Cisco Crosswork NSOの外部エラーの原因を特定する方法について説明します。
前提条件
要件
- このドキュメントのトラブルシューティングの側面は、現在サポートされているすべてのNetwork Element Driver(NED)バージョンおよびCisco® Crosswork Network Service Orchestrator(NSO)バージョンに適用されます。
- NEDの外部エラーをトラブルシューティングするには、NEDトレースログを有効にし、これらのログにアクセスできる必要があります。
- NEDの外部エラーを正確に評価するには、NSOとそのAPIで管理されているネットワークデバイスに関する知識が推奨されます。
使用するコンポーネント
- Crosswork NSO 6.4.3
- NED cisco-iosxr-7.64.1
外部エラーのタイプ
NED外部エラーは、NEDとデバイス間の通信障害の兆候です。これらは大きく3つのカテゴリに分類されます。
- NEDは、予期していなかったネットワークデバイスからの応答を受信します。
- NEDは、NEDのyangモデルに違反する応答をネットワークデバイスから受信します。
- NEDは割り当てられた時間内に応答を受信しません。
予期しない応答のカテゴリは、最も一般的なカテゴリは、NEDが遭遇する可能性のある外部エラーです。これには、エラーメッセージ、情報メッセージ、またはNSOが返されると予想していたものと一致しない他の種類の情報を返すデバイスが含まれます。NEDは、無視しても問題のない情報メッセージまたは警告を処理するように設計されています。多くのNEDには、無視するメッセージや外部エラーとして扱うメッセージをカスタマイズするためのned-settingsがあります。
sync-from
またはcompare-config
の操作中にNEDがyangモデルと一致しない情報を受信すると、NEDによって外部エラーが発生していることが確認できます。典型的な例は、特定のリーフに対して0 ~ 8の値を受け入れるyangモデルですが、このOSの最新バージョンでは、範囲が0 ~ 16に拡大されています。NEDはモデル化された範囲外であるため、16の値は受け入れません。あるいは、yangモデルでリーフがmandatoryとマークされているがデバイスで提供されていない場合、またはNSOが整数を期待する場合にデバイスが文字列を提供する場合に、エラーが発生する可能性があります。
CLIおよび汎用NEDでは、NED yangモデルでモデル化されていない設定をNEDが受信した場合、外部エラーは発生しません。代わりに、トレースファイルに「skipped line
」として記録されます。
最後に、割り当てられた時間内にNEDがデバイスから期待される応答を受信しなかった場合、外部エラーが発生します。これは、デバイスが応答せず、応答を送信しなかったために発生する可能性がありますが、デバイスからの応答がNEDによって認識されなかった場合にも発生する可能性があります。
NEDトレースログの読み取り
トレースログは、外部エラーのトラブルシューティングに最適なログです。
NEDトレースログの有効化
NSO CLIからNEDトレースログが有効になります。
ncs_cli -C -u admin
admin@ncs# configure
admin@ncs(config)# devices device dev-1 ned-settings [ned-id] logging level debug
admin@ncs(config)# devices device dev-1 trace raw
admin@ncs(config)# commit
admin@ncs(config)# devices device dev-1 disconnect
admin@ncs(config)# devices clear-trace
admin@ncs(config)# devices device dev-1 compare-config
[ned-id]
では、コマンドで対象とするデバイスのned-idを使用します。
注意: clear-traceコマンドは、現在ログディレクトリに存在するすべてのNEDトレースログのデータをクリアします。このデバイスまたはその他のデバイス用に保存するトレースログがある場合は、このコマンドを実行する前にそれらをアーカイブする必要があります。現在のNSOバージョンでは、単一のデバイスに対してclear-traceを実行できます。
注:「ned-settings [ned-id] logging level debug」が見つからない場合は、このコマンドを省略できます。
これらのコマンドは、トレースファイルから古いデータをすべてクリアし、デバイスの現在の設定でデータを準備します。この時点で、ncs_cli
またはNSOサービスを使用して、見つかった問題を再現します。コミット操作中にエラーが発生した場合、今後の参照用にCLI出力のcommit dry-run
およびcommit dry-run outformat native
をキャプチャする必要があります。
NED READMEファイルには、「How to report NED issues and feature requests」という章があり、より詳細な手順を参照できます。
CLIおよび汎用NED
CLIおよび汎用NEDのNEDトレースは、トラブルシューティングに役立つ明確なフェーズでセクション分けされています。外部エラーのトラブルシューティングを目的として理解しておく必要がある最も重要なフェーズは、表示フェーズと準備フェーズです。
NSOがネットワークデバイスから情報を読み取っているときに、SHOWフェーズが呼び出されます。これは、sync-from
およびcompare-config
の動作の一部です。このステップでは、NSOはデバイスからの応答を読み取って解析する前に、show running-config
などのコマンドを使用してデバイスにプロンプトを表示します。NSOからデバイスに送信される発信メッセージは「*** output
」で始まり、デバイスからNSOに送信される着信メッセージは「no」で始まります *** input.
注:SHOW操作中の外部エラーには、現在のyangモデルでは受け入れられない値、およびタイムアウトの問題が含まれます。
PREPAREフェーズは、commit
操作の一部として呼び出されます。このフェーズでは、NSOはデバイスに指示を送信します。PREPAREフェーズの開始時に、NEDはNSOがトレースファイルに加える変更のリストを出力します。この初期要約の後、NSOは指示をデバイスに送信します。特定のデバイスでは、NSOはコマンドを一括で送信しますが、他のデバイスでは、これらのコマンドは1つずつ送信されます。この動作は、これをサポートするNEDの関連するned-settingsを使用して変更できます。たとえば、cisco-iosxr-cli NEDにはNED設定があります "write number-of-lines-to-send-in-chunk <1-1000> (default 100)"
CLI NEDでは、NSOから送信されたコマンドが入力として返される出力を確認するのが一般的です。これは、コマンドがデバイスのテキストベースのUIに表示され、NSOはこのUIに表示されるすべてのテキストを入力として認識するためです。NSOがコマンドを1つずつ送信する例は、次のようになります。
*** output 1-Jan-2024::09:56:00.928 user: admin/425 thandle 7428 hostname NSO1 device test-device ***
interface GigabitEthernet 0/0/0/2.34280485 l2transport
*** input 1-Jan-2024::09:56:00.929 user: admin/425 thandle 7428 hostname NSO1 device test-device ***
interface GigabitEthernet 0/0/0/2.34280485 l2transport
注:PREPARE操作中の外部エラーには、デバイスから返されたメッセージのうち、エラー、警告、情報メッセージなど、NSOの期待に合わないメッセージが含まれます。
外部エラーのトラブルシューティング
CLIおよび汎用NEDの外部エラーをトラブルシューティングする場合:トレースを有効にし、問題を再現し、エラーをトリガーした操作に応じて最新のSHOWまたはPREPAREフェーズを調べます。
デバイスから提供される特定の値についてNSOから苦情が出ている問題の場合:
- NSOが苦情を申し立てた設定の部分は何ですか。
- デバイスで共有されている設定は、このモデルとデバイスのバージョンに対して正しいですか。
- このNEDを使用している他のデバイスモデルまたはバージョンで、入力要件がより厳しいものはありますか。
NSOでタイムアウトに関連する外部エラーが発生する問題の場合:
- タイムアウト前にNSOによって送信される最後のコマンドは何ですか。
- NSOは次に進む前に何を待っていますか。
NSOが何を待っているのかを判断するのは困難な場合があります。冗長性が向上した一部のNEDは、探している正規表現を出力します。場合によっては、NSOが探していたメッセージがトレースファイルに表示されますが、NSOはそれを認識せず、待機し続けます。
予期しない応答が原因でNSOが外部エラーを発生する問題の場合:
- デバイスが提供する具体的な応答は何ですか。
- NSOから送信されたどのコマンドが応答をトリガーしましたか。
- 応答はNSOの送信内容に基づいて予想されますか。
- デバイスからの応答を安全に無視できますか、それともコミットを中止する必要がありますか。
- NSOは正しいコマンドを正しい順序で送信しましたか。
一般的な特定の問題:
変換の問題
NSOの意図は正しいが、デバイスに送信するコマンドが完全に正しくない場合、変換の問題が発生します。この問題は、同じNEDを使用する異なるデバイスバージョンまたはモデルの構文がわずかに異なる場合に発生する可能性があります。古いバージョンのNEDを使用している場合は、NEDの最新リリースでも同じ動作が存在するかどうかを確認してください。また、NEDに含まれるREADME-ned-settings.mdファイルに利用可能なned-settingsがあるかどうかを確認して、この動作をカスタマイズできる設定があるかどうかを確認してください。最新のNEDにまだ問題があり、ned-settingsに解決する方法がない場合は、TACでケースをオープンしてください。次を提供:
- NSOバージョン
- 最新のNEDを使用すると、
compare-config
の操作をキャプチャしたNEDトレースと、不正なコマンドを送信したcommit
の操作が続きます。
- NEDが現在送信しているコマンド
- 正しいコマンド(実際のデバイスのCLIでの例として表示することが望ましい)
- 問題が発生しているデバイスのバージョンとモデル
- 現在のNEDの動作が正しく、このNEDを使用しているネットワーク内のデバイスの他のバージョンおよびモデル。
発注上の問題
NEDが正しいコマンドを誤った順序で送信すると、順序の問題が発生します。一部のデバイスおよび特定の設定ペイロードでは、順序が重要です。古いバージョンのNEDを使用している場合は、NEDの最新リリースでも同じ動作が存在するかどうかを確認してください。また、NEDに含まれるREADME-ned-settings.mdファイルに利用可能なned-settingsがあるかどうかを確認して、この動作をカスタマイズできる設定があるかどうかを確認してください。最新のNEDにまだ問題があり、ned-settingsに解決する方法がない場合は、TACでケースをオープンしてください。次を提供:
- NSOバージョン
- サービスを使用せずに最新のNEDを使用する:
compare-config
操作の後に正しくない順序を送信するcommit
操作をキャプチャするNEDトレース。
- 障害のあるコミットに対する
commit dry-run outformat native
の出力。これは、NEDが現在コマンドを送信している順序を示しています。
- 正しい順序(実際のデバイスのCLIでの例として表示することが望ましい)
- この発注要件に関連するその他の前提条件
注:まれに、NEDを介して発注要件に対応できない場合があります。その場合、マルチコミットワークフローを実装したり、関連ベンダーにバグレポートを提出したりすることができます。
無効な値の問題
NSOがデバイスが受け入れる値と異なる範囲の値を設定できる場合、またはNSOがデバイスが許可する全範囲を許可しない場合に、無効な値の問題が発生します。たとえば、NSOでは0 ~ 15の値を定義できますが、デバイスでは0 ~ 8の値しか受け入れられません。これは、NEDが特定のデバイスモデルとバージョンを念頭に置いてモデル化されているが、他のデバイスが異なる期待を持っている場合に発生する可能性があります。古いバージョンのNEDを使用している場合は、NEDの最新リリースでも同じ動作が存在するかどうかを確認してください。また、NEDに含まれるREADME-ned-settings.mdファイルに利用可能なned-settingsがあるかどうかを確認して、この動作をカスタマイズできる設定があるかどうかを確認してください。最新のNEDにまだ問題があり、ned-settingsに解決する方法がない場合は、TACでケースをオープンしてください。次を提供:
- NSOバージョン
- デバイスで受け入れられないデータをNSOで許可するには、最新のNEDを使用します。
compare-config
操作をキャプチャするNEDトレースに続いて、デバイスで拒否される値を送信するcommit
を実行します。
- デバイスで許可されているよりも厳密なデータ解釈を持つNSOの場合、最新のNEDを使用します。現在NSOで受け入れられていないデバイスでデータを設定した後、
sync-from
操作をキャプチャするNEDトレース。
- 正しい値の範囲
- 問題が発生しているデバイスのバージョンとモデル
- 現在のNEDの動作が正しく、このNEDを使用しているネットワーク内のデバイスの他のバージョンおよびモデル。
デバイスからのエラー、警告、情報メッセージ:
デバイスがエラーまたはその他のメッセージでNSOコマンドに応答すると、NSOで外部エラーがトリガーされる可能性があります。NSO NEDには、安全に無視できる正規表現の内部リストと、エラーを引き起こす式があります。一部のNEDにはned-settingsがあり、NED機能拡張を必要とせずにこれらのリストをカスタマイズできます。例: cisco-iosxr-cli NED ned-setting write config-warning.
最新のNEDにそのようなオプションがない場合は、TACでケースをオープンしてください。次を提供:
- NSOバージョン
compare-config
操作の後にエラーを引き起こす操作をキャプチャするNEDトレース
- 内部リストを変更する要求、またはリストを自分でカスタマイズする最終設定オプションのサポートを追加する要求
- デバイスが送信している特定のメッセージが原因で問題が発生
解像度
ユーザエラー
NSOから送信されたコマンドが正しくないと判断した場合は、NSOへの入力とサービスパッケージが正しい変更を生成したことを確認します。commit dry-run
の出力が行う変更に一致するかどうか、および、commit dry-run outformat native
の出力に、変更を引き起こす正しいコマンドと順序が表示されるかどうかを確認します。ドライランによって予期しない変更が予測される場合は、NSOまたはサービスコードへの入力を確認する必要があります。ドライランが正しいにもかかわらず、NSOに送信されるコマンドが正しくない場合は、変換および注文の問題の解決策を確認します。
ネットワークデバイス
場合によっては、外部エラーは、ネットワークデバイス自体の設定、設定、またはバグ(正しい許可を持たないユーザや特定の操作を制限するデバイスなど)の結果である場合があります。NSOがデバイスで適切に動作するように、設定またはデバイス設定を変更できるかどうかを評価します。
ネッド設定
各NEDには、NSOがデバイスと通信する方法をカスタマイズするのに役立つ広範なned-settingsがあります。Ned-settingsはNED内部のREADME-ned-settings.mdファイルに記述されており、NEDごとに異なる傾向があります。Cisco-iosxr-cliのNEDには、NSOによるデバイスのチェックサムの計算方法、一括送信されるコマンドの数、特定のトリガーに基づいて挿入する追加のコマンドのカスタマイズ、またはNEDが"show running-config"
を使用して設定データを収集する必要があるかどうか、デバイス上のファイルに設定を書き込んでsftpを使用してファイルを転送する必要があるかどうか、など、さまざまなオプションがあります。
NEDサービスの競合
NEDサービスの競合は、サービスパッケージを使用して設定を変更または削除するときに問題のある動作が存在し、サービスパッケージを使用せずに同じ設定を変更するときに発生しません。このタイプの動作は、予期しない設定が追加または削除され、その結果デバイスから外部エラーが発生する可能性があります。これは通常、設定の一部に対するサービス所有権の結果です。サービスパッケージによるNSO CDB設定の変更は、通常は誤った変更から保護されるNEDロジックを上書きする可能性があります。この動作が発生した疑いがある場合は、サービスパッケージを使用せずに同じ設定変更を試みることによって確認してください。
サービスの所有権と考えられるソリューションの詳細については、「NSOサービスの所有権について」の記事を参照してください。
NEDの機能拡張とTACサポート
他に利用できるオプションがない場合は、Cisco TACでチケットを開き、ニーズに合わせてNEDを更新するように依頼できます。
シスコが提供するNSO NEDは、お客様のユースケースに基づいて更新されます。シスコは、可能性のあるすべてのデバイスモデルとバージョンを積極的にカバーしようとはしません。ただし、NEDは、進化するネットワークと新しいユーザのニーズを満たすように常に更新されています。Crosswork NSO Developersが提供するNEDサポートの範囲の概要については、こちらを参照してください。
注:シスコは広範な社内テスト環境を維持するために最善を尽くしていますが、さまざまなベンダーのすべてのモデルとバージョンをカバーする環境を維持することはできません。したがって、問題の動作を示すデバイスへのアクセスを提供するように求めることができます。
シスコが提供するNEDについてCisco TACでケースをオープンする際は、以下を提供してください。
- NSOバージョン
- NEDトレースをlogging level debugに設定
- NEDトレースは、
compare-config
またはsync-from
のいずれかの操作をキャプチャする必要があります
- NEDトレースでは、サポートが必要な特定の問題をキャプチャする必要があります
- 他のデバイスまたはNEDに関する情報で、問題が発生しているものがある。
- 同じNED上の同様のデバイスに関する情報で、問題が示されていないもの
注:NSO NED Builderツールを使用して構築されたNetconf NEDは、ツール自体の問題の外部では、シスコによってサポートされていません。
ヒント:Crosswork NSO開発者が提供するNEDについては、Technology: NMS(Network Management Services and Sub-Technology: Network Service Orchestrator(NSO) - NED)を使用してください。