はじめに
NSOには、デバイスとの同期状態を確認するためにcheck-syncコマンドがあります。
このドキュメントでは、check-syncコマンドが同期・非同期を判定する仕組みについて説明します。
説明
NSOでcheck-syncコマンドを実行すると、デバイスが提示するトランザクションIDと、NSOが保持しているトランザクションIDを比較し、同じ場合はin-sync、異なる場合はout-of-syncと判定します。
トランザクションIDは、一般的にはデバイスの状態 (show running-configの出力結果など) をハッシュした数値です。
この値を比較することで、デバイスとNSOの保持する状態が同期あるいは非同期のいずれであるかを判定しています。
NEDには、トランザクションIDのハッシュ値生成方法に複数のオプションが用意されている場合があり、お客様の環境や運用状況に合わせてより適切なハッシュ値生成方法に変更することができます。
詳細につきましては、各NEDに含まれるREADMEをご参照ください。
以下は、cisco-nx NED README の抜粋です。
Alternative way to calculate transaction ID
--
To avoid the overhead of 'show running-config' in each transaction,
especially with large device configurations, there is now a new way to
calculate transaction IDs. This method by default let's the device calculate
an md5-hash of the running-config by running the following commands (run as a
one line towards device):
show running-config | exclude Time: > volatile:///ncstransconf.tmp
show file volatile:///ncstransconf.tmp md5sum
delete volatile:///ncstransconf.tmp no-prompt
To enable this behaviour, use the following ned-setting:
ned-settings cisco-nx transaction trans-id-method device-command
The command(s) to run on the device to calculate the transaction-id is
configurable (e.g. to be able to configure a 'cli alias' to be used together
with NXAPI). This can be done with the following ned-setting:
ned-settings cisco-nx transaction trans-id-cmd mycommand
(here 'mycommand' could be a cli alias configured on the device)
The output from the command is hashed by the NED (to make it into a valid
transaction-id in NSO), so the only thing to consider is that the output from
the given command should be fixed for a given device configuration, being an
equivalent of a 'hash' calculated from the 'static' running-config
(e.g. excluding timestamp).