はじめに
このドキュメントでは、NSO NEDトレースのさまざまなフェーズを正しく読んで理解する方法について説明します。
背景
Cisco® Crosswork Network Service Orchestrator(NSO)は、NSOとNSOのNetwork Element Driver(NED)が管理するデバイス間の通信の詳細なトレースを生成できます。 JavaベースのNEDの場合、これらのトレースファイルには、共有フレームワークに従って構造化されたファイルが含まれます。このドキュメントは、この共有フレームワークとこれらのログの詳細を理解するのに役立ちます。
前提条件
使用するコンポーネント
- NSO 6.4
- NED cisco-iosxr-cli
- NED cisco-ios-cli
- NED cisco-nx-cli
- NED zte-zxros-cli
- NED alu-sr-cli
- NED juniper-junos_nc-gen
免責事項
このドキュメントでは、シスコが開発したJava NEDを使用していることを前提としています。これには、CLI、Generic、および3PY NEDが含まれます。このドキュメントで説明するフェーズとフレームワークはNetconf NEDに適用されますが、Netconf NEDに対して生成されるトレースログは、このドキュメントで示されている方法と同じ方法でラベル付けされません。
このドキュメントで説明するフェーズは、すべてのJava NEDで共有されますが、そのフェーズの一部として実行される特定の操作は、個々のデバイスのニーズに応じてNEDごとに異なります。
データのタイプ
NEDトレースファイル内のデータは、3つの異なるカテゴリで表示できます。
コアNSOとNED間の通信
NSOは、特定のフェーズを開始するようにNEDに指示します。NSOの各操作では同じ一連のフェーズが生成されますが、各NEDはネットワークデバイスに対して固有の命令を実行します。NEDトレースファイルには、NSOとNEDの間を流れる正確なデータは記録されませんが、フェーズを開始する指示と、フェーズが完了したことを示すNED応答は記録されます。「>>」で始まる行は、フェーズを開始する手順を示します。<<で始まる行は、フェーズが終了したことをNSOに通知するNEDを示します。
>> 20-Mar-2025::23:23:17.277 user: admin/56 thandle 86091 hostname ncs device xr-netsim0 trace-id=1ee09d76-4415-4bb8-bd39-05f99072bd54 CLI CONNECT to xr-netsim0-127.0.0.1:10025 as admin (Trace=raw)<< CONNECTED
<< 20-Mar-2025::23:23:17.623 user: admin/56 thandle 86091 hostname ncs device xr-netsim0 trace-id=1ee09d76-4415-4bb8-bd39-05f99072bd54 CONNECTED 0
>> 20-Mar-2025::23:24:41.703 user: admin/56 thandle 86213 hostname ncs device xr-netsim0 trace-id=1ee09d76-4415-4bb8-bd39-05f99072bd54 SHOW 0:
<< 20-Mar-2025::23:24:41.879 user: admin/56 thandle 86213 hostname ncs device xr-netsim0 trace-id=1ee09d76-4415-4bb8-bd39-05f99072bd54 SHOW
NEDとサウスバウンドデバイス間の通信
各フェーズ内で、NEDは各フェーズの目標を達成するためにネットワークデバイスに向けてコマンドを実行します。NEDからデバイスへの通信は*** output
としてマークされ、NEDがデバイスから受信する通信は*** input
としてマークされます。
*** output 20-Mar-2025::13:08:31.955 user: admin/316551 thandle 18978916 hostname ncs device xr-netsim0 trace-id=- ***
show running-config
*** input 20-Mar-2025::13:08:31.987 user: admin/316551 thandle 18978916 hostname ncs device xr-netsim0 trace-id=- ***
show running-config
Thu Jan 5 13:08:37.274 BRT
Building configuration...
!! IOS XR Configuration 7.2.1
...
CLI NEDでは、入力はNSOによって送信されたコマンドを含む、デバイスのCLIに表示されるすべての情報で構成されます。
NED自身による内部ロギング
NEDは、デバイスにもNSOにもリレーされない一定量の情報をログに記録します。これには、基本設定、データの処理、およびNSOデータベース(CDB)での予想される変更が含まれます。
このタイプの情報は、多くの場合--
で始まりますが、このタイプのすべての情報に適用されるわけではありません。
*** output 20-Mar-2025::13:08:31.955 user: admin/316551 thandle 18978916 hostname ncs device xr-netsim0 trace-id=- ***
-- BEGIN SHOW
-- [20-Mar-2025::13:08:31.956] progress: show: reading config...
-- Reading running config...
show running-config
工程別連番
このセクションでは、一般的な操作のリストを確認し、各操作でNSOが開始する予想されるフェーズの順序について説明します。各フェーズの詳細については、このドキュメントの「フェーズ」セクションを参照してください。
注:IS_ALIVE、SET_TIMEOUT、およびCLOSEフェーズはトラブルシューティングの値が少ないため、各シーケンスでは省略されています
[Connect]
>> CLI CONNECT
<< CONNECTED
または
>> GENERIC CONNECT
<< CONNECTED
機能的には、CLIフェーズとGENERIC CONNECTフェーズはほぼ同じですが、CLIタイプとGENERICタイプのNEDは異なるCONNECTフェーズを使用します。
チェック同期
>> CLI CONNECT
<< CONNECTED
>> GET_TRANS_ID
<< TRANS_ID
同期元
>> CLI CONNECT
<< CONNECTED
>> SHOW
<< SHOW
>> GET_TRANS_ID
<< TRANS_ID
または
>> CLI CONNECT
<< CONNECTED
>> SHOW
<< SHOW
<< PROVISIONAL TRANS_ID
一部のNEDは、GET_TRANS_ID
の代わりにPROVISIONAL TRANS_ID
を使用するように最適化されています。
構成の比較
>> CLI CONNECT
<< CONNECTED
>> SHOW
<< SHOW
compare-config操作はsync-fromと非常によく似ていますが、CDBを更新しません。compare-configは、設定の違いを検出した場合、GET_TRANS_IDを呼び出してチェックサムを更新しません。設定に違いがない場合は、GET_TRANS_IDを呼び出してチェックサムを更新します。
Commit
>> CLI CONNECT
<< CONNECTED
>> INITIALIZE
<< INITIALIZED
>> PREPARE
<< PREPARE OK
>> COMMIT
<< COMMIT OK
>> PERSIST
<< PERSIST OK
>> GET_TRANS_ID
<< TRANS_ID
ドライランを実行し、ネットワーキングを行わない
これらの操作はNEDロジックに関与せず、NEDトレースファイルにログが生成されることもありません。
Dry-Run Outformat Nativeをコミットします
この操作ではネットワークデバイスにデータは送信されませんが、NEDロジックが使用されます。
>> CLI CONNECT
<< CONNECTED
>> PREPARE DRY
<< PREPARE DRY
上書き禁止のコミット
>> CLI CONNECT
<< CONNECTED
>> INITIALIZE
<< INITIALIZED
>> SHOW_PARTIAL
<< SHOW
>> PREPARE
<< PREPARE OK
>> COMMIT
<< COMMIT OK
>> PERSIST
<< PERSIST OK
>> GET_TRANS_ID
<< TRANS_ID
この順序は誤解を招きやすい。NEDはINITIALIZEフェーズを含めると主張していますが、このフェーズ中にコマンドをトリガーすることはなく、このフェーズを効果的にスキップします。これは、no-overwriteフラグではチェックサムはチェックされず、代わりにSHOW_PARTIALを使用して設定がチェックされるためです。
エラーを伴うコミット
>> CLI CONNECT
<< CONNECTED
>> INITIALIZE
<< INITIALIZED
>> PREPARE
>> CLOSE
<< CLOSED
>> CLI CONNECT
<< CONNECTED
>> SHOW_PARTIAL
<< SHOW
>> ABORT
<< ABORT OK
>> GET_TRANS_ID
<< TRANS_ID
コミット中に何らかの問題が発生すると、NSOは接続を終了し、再接続して、システムの復元を試みます。NSOはこれを行うために、SHOW_PARTIALを使用してデバイスの設定をチェックし、ABORTフェーズのコミットが開始される前に、現在の設定を設定に戻す一連のコマンドを送信します。候補設定を持つデバイスには、エラーがいつ発生したかによって、NSOが活用できる別の回復方法があります。
ライブステータス
>> CLI CONNECT
<< CONNECTED
>> COMMAND
<< COMMAND
フェーズ
すべてのJavaベースのNEDは同じフェーズを使用しますが、各NEDは処理している特定のデバイスに対してフェーズの正確な実行を調整します。
CLI接続、汎用接続、および再接続
CONNECTフェーズでは、NEDはそれ自体に関する情報を出力し、接続を確立し、ページングを無効にし(CLI NEDに対して)、デバイス情報を収集します。これには、NSOとNEDのバージョン、NEDの設定、SSHアルゴリズム、デバイスのモデルとバージョンが含まれます。パスワード交換は記録されません。
NSOがデバイスに接続できない場合は、このフェーズのどの部分が原因である可能性もあります。NSOがSSHセッションを確立できても、デバイスのモデルとバージョンを取得できなかった可能性があります。
NEDは、操作が終了した後、デバイスとのセッションを数秒間維持します。その期間内に同じデバイスに対して他の操作が必要になった場合、NEDはCLI/GENERIC CONNECTの代わりにRECONNECTフェーズをログに記録し、情報を再利用します。
GET_TRANS_ID
GET_TRANS_IDフェーズは、チェックサムを計算するための情報を収集します。このチェックサムを検証して、コミットまたはチェック同期操作中にデバイスが非同期かどうかを確認したり、将来のチェックのために保存したりできます。シスコは、各デバイスで利用可能な最も軽量なオプションを選択します。cisco-ios-cli NEDは、チェックサムを生成するために完全なデバイス設定を収集します。cisco-iosxr NEDはコミットリストを使用して、最後の同期以降にcommit-idが変更されたかどうかを確認します。
NEDは、GET_TRANS_IDフェーズの最後に計算したチェックサムを出力します。
>> 15-Mar-2025::10:29:41.410 user: admin/205 thandle 1559 hostname ncs device alu0 GET_TRANS_ID
*** output 15-Mar-2025::10:29:41.411 user: admin/205 thandle 1559 hostname ncs device alu0 ***
-- get config method: cli dump
admin display-config
*** input 15-Mar-2025::10:29:41.415 user: admin/205 thandle 1559 hostname ncs device alu0 ***
admin display-config
...
<< 15-Mar-2025::10:29:42.045 user: admin/205 thandle 1559 hostname ncs device alu0 TRANS_ID 8f42fe893c448f47c155710bb909800b
GET_TRANS_IDは、check-sync時、sync-fromの終了時、commitの終了時、またはdiffが検出されなかった場合はcompare-configの終了時に呼び出されます。チェックサムがGET_TRANS_IDの一部として更新されるのは、check-syncの間だけです。コミット操作の開始時に、NSOはチェックサムも検証しますが、GET_TRANS_IDの代わりにINITIALIZEを使用します。
SHOW
SHOWフェーズでは、NEDがデバイスの現在の設定を収集して解析し、更新またはCDBとの比較ができるようにします。SHOWフェーズは、関連データを収集する1つ以上のコマンドで構成されます。一部のNEDは、設定の異なるセクションに対して複数のSHOWフェーズを連続してプロンプトします。
<< 15-Mar-2025::14:17:07.190 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c CONNECTED 0
>> 15-Mar-2025::14:17:07.210 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:07.211 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.211 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:07.212 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.212 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:07.212 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.213 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:07.213 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.214 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0: <'vlan-configuration'>
<< 15-Mar-2025::14:17:07.214 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.214 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0: <'switchvlan-configuration'>
<< 15-Mar-2025::14:17:07.215 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
>> 15-Mar-2025::14:17:07.215 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW 0:
<< 15-Mar-2025::14:17:08.672 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c SHOW
<< 15-Mar-2025::14:17:08.672 user: admin/17279 thandle 7896374 hostname ncs device zte0 trace-id=438b8c PROVISIONAL TRANS_ID 8bb56df1e125549b62f96e8007866
データが収集されると、NEDは解析を行い、NSOの準備を行います。CLI NEDでは、このプロセスはturbo-parserでマークされています。NSOが現在のyangモデルを認識せず、マッピングできないデータは、スキップされた行として記録されます。
-- turbo-mode parsing (setvalues) :: performance numbers :
-- --------------------------------------------------------------------------------
-- number of lines parsed : 469
-- number of lines skipped : 2
-- time to parse config (ms) : 20
-- time to transfer xml to nso (ms) : 531
-- --------------------------------------------------------------------------------
-- skipped 2 lines in context '/' :
-- (line 16) : 'platform sslvpn use-pd'
-- (line 74) : 'pae'
-- --------------------------------------------------------------------------------
-- [15-Mar-2025::17:00:07.906] progress: show: populating cdb ok [531 ms]
-- transformed >= sorted 8 'neighbor ' lines for hash checksum
-- show trans_id = 12b6f28a48520ca4b5c6ebdfe3d333ee
-- done show [5055 ms]
<< 15-Mar-2025::17:00:07.912 user: nsoadmin/23219 thandle 3068964 hostname ncs device ios0 SHOW
暫定TRANS_ID
PROVISIONAL TRANS_IDは、一部のNEDで実装された最適化で、同期元操作の終了時にGET_TRANS_IDを置き換えます。この最適化を行わないと、チェックサムを計算するためにデバイスの完全な設定を収集する必要があるNEDは、同期元の間にこのデータを2回収集します。SHOWフェーズで1回、およびGET_TRANS_IDフェーズで再び発生。このような状況では、SHOW操作で得られたデータを再利用するために、PROVISIONAL TRANS_IDによってGET_TRANS_IDが置き換えられます。
この最適化の特別な実装は、cisco-iosxr-cli NEDにあります。このNEDは完全な設定を必要としませんが、設定が非常に大きいため、GET_TRANS_IDの開始時までにSSHセッションがタイムアウトするまでに、解析に十分な時間がかかる場合があります。これを回避するために、NEDはSHOWの一部として必要な情報を収集し、代わりにPRO仮TRANS_IDを使用します。
初期化
INITIALIZEフェーズはGET_TRANS_IDと似ています。このコマンドは、同じデータを収集してチェックサムを計算しますが、コミット処理の開始時にのみ、デバイスがIn-Sync状態かどうかを検証するために使用されます。デバイスが同期していないことが判明した場合、INITIALIZEフェーズの後にUNINITIALIZEフェーズが続き、エラーがNSOに返されます。INITIALIZEはチェックサムを更新しません。
注:Commit no-overwriteにはINITIALIZEフェーズがありますが、out-of-syncは関係がないため、実行中にコマンドは実行されません。
準備
PREPAREフェーズは、コミット操作の最も重要なフェーズです。PREPAREフェーズでは、NEDがNSO CDBで意図された変更を、デバイスが理解するコマンドに変換します。次に、configモードへの移行など、UIをナビゲートするコマンドを含め、これらのコマンドをデバイスに送信します。
候補設定が行われていないデバイスでは、コマンドを送信すると、実行コンフィギュレーションとネットワークの動作にただちに影響が及びます。
COMMIT
COMMITフェーズでは、NEDが設定をデバイスに適用します。cisco-ios-cli NEDによって管理されるデバイスなど、候補設定のないデバイスのCOMMITフェーズは空です。デバイスにコミット確認済みの機能がある場合、NSOはこのフェーズでこれらの機能を利用します。
>> 8-Mar-2025::14:06:54.238 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a COMMIT 1: (Timeout 30)
*** output 8-Mar-2025::14:06:54.239 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
-- BEGIN COMMIT
-- [08-Mar-2025::14:06:54.239] progress: commit: committing config...
-- Committing (confirmed) [num-commit 0 0a delayed=0]
commit confirmed 30 show-error
*** input 8-Mar-2025::14:06:54.268 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
commit confirmed 30 show-error
Wed Mar 8 14:06:54.354 BRT
RP/0/RP0/CPU0:RNCOBSA0101(config)#
*** output 8-Mar-2025::14:06:58.377 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
commit show-error
*** input 8-Mar-2025::14:06:58.404 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
commit show-error
Wed Mar 8 14:06:58.493 BRT
% Confirming commit for trial session.
RP/0/RP0/CPU0:RNCOBSA0101(config)#
*** output 8-Mar-2025::14:06:58.734 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
end
*** input 8-Mar-2025::14:06:58.763 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
end
RP/0/RP0/CPU0:RNCOBSA0101#
*** output 8-Mar-2025::14:06:58.832 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a ***
-- [08-Mar-2025::14:06:58.832] progress: commit: committing config ok [4593 ms]
-- DONE COMMIT [4594 ms]
<< 8-Mar-2025::14:06:58.832 user: admin/397910 thandle 18935883 hostname ncs device xr0 trace-id=c9c7a91b-dfd2-45bd-bbe4-71a0ddb1039a COMMIT OK
持続
一部のデバイスでは、デバイスの再起動時にも設定が維持されるように、追加の指示が必要です。これらのコマンドは、PERSISTフェーズで送信されます。
乾燥させる
PREPARE DRYフェーズは、commit dry-run outformat native
オペレーションに固有のフェーズです。PREPAREフェーズと同様に、NSOインテントをデバイスコマンドに変換しますが、それらのコマンドはデバイスに送信しません。
部分を表示(_P)
SHOW_PARTIALフェーズは、maapi命令によって呼び出すこともできますし、commit no-overwite
およびrollback during commit error
の際に使用することもできます。
このフェーズは、デバイスから設定データを収集して解析するという点でSHOWフェーズと似ています。完全なコンフィギュレーションではなく、現在のコミット操作に関連する、より具体的なデータのセットを収集します。すべてのデバイスが、より小さなデータセットの収集をサポートしているわけではありません。
中断
ABORTフェーズはPREPAREフェーズに似ていますが、ロールバック・リカバリ専用です。NSOからコマンドが送信され、デバイスの設定がコミット前の状態に戻されます。
元に戻す
REVERTフェーズは、コミットでエラーが発生したがNSOが単にデバイスに以前の設定に戻すように指示できる状況で使用されます。この場合、SHOW_PARTIALフェーズとABORTフェーズは不要です。
COMMAND
COMMANDフェーズは、ライブステータス操作に固有です。COMMANDフェーズでは、NSOは通常のコミット操作の範囲外のデバイスに指示を渡します。
IS_ALIVE
IS_ALIVEフェーズは、NED、デバイス、およびNSO間のセッションが正常に動作しているかどうかを確認するヘルスチェックです。IS_ALIVE falseが発生した場合、いずれかのセッションでタイムアウトが発生した可能性があります。
閉じる
CLOSEフェーズでは、NEDがエンドデバイスへのSSHセッションを閉じます。
タイムアウトを設定する
SET_TIMEOUTフェーズは、NSOおよびNEDによって管理されるさまざまなタイムアウトの更新を示します。
トレース内のその他の情報
修正
SHOWフェーズの後、NEDはNSO CDBで予想される変更のリストを出力します。
created /ios:line/vty[first='5'][last='15']/login
created /ios:line/vty[first='5'][last='15']/login/local
modified /ios:interface/Loopback[name='2']
created /ios:interface/Loopback[name='2']/shutdown
created /ios:username[name='cisco']
value_set /ios:username[name='cisco']/privilege 15