Arista CloudVisionの機能拡張にともない、フィールドでもネットワークテレメトリが活躍するケースが増えてきました。その効果を実感するユーザも増えてきたのではないでしょうか。CloudVision Telemetryにより、SNMPだけでは監視ができないメトリックス可視化(例えば、放送・映像におけるPTPメトリックスの可視化)、間欠的に発生するバーストトラフィックの把握(例えば、分散型システムにおけるファンイントラフィックの把握)が容易になりました。一方、技術的には、どのような強化が進んでいるのでしょうか。以前は、実際の導入を意識してテレメトリデータの取得方法やデータモデルが話題になった時期もありました。EOSは、常に市場動向をウォッチしながら、機能の強化を続けています。今回は、EOSのgNMI対応状況をアップデートを紹介します。
gNMI
gNMIを簡単におさらいします。gNMIは、監視対象デバイスからのテレメトリデータの取得に加えて設定の取得や変更にも対応することを目的にしています。つまり、gNMIでは、gRPCだけでは難しかった単一のNMS(ネットワーク管理システム)からのデバイス管理(テレメトリデータの取得とデバイスの設定取得や変更)が可能になります。NMSと監視対象のデバイスは、単一のポートを通じて監視のコミュニケーションを行うことになります。単一のポートを介したコミュニケーションになるので、リソース面、セキュリティ面を考慮すると双方にメリットがある方法と言えるでしょう。
EOSのgNMI
EOS4.18.1Fから、EOSのテレメトリエージェント(TerminAttr)もgNMIのサポートを開始しました。その後もリリースを重ねるごとに実装を強化しています。最新のEOS4.22(2019年8月現在)では、gNMIのインターフェースを介して、EOSのネイティブデータモデルとOpenConfigモデル双方のデータ取得、任意のパスへのサブスクライブ (ストリーミング)、さらに変更や削除といったオペレーションが可能になっています。gNMIを通じて対象デバイスに対して複数のオペレーションが可能になることから、EOSは、従来からサポートしてきたgRPCをgNMIに統一していく予定です。
EOS gNMI動作確認
それでは、EOSのgNMIインターフェースの強化を確認してみましょう。以前にこのシリーズでEOSのgNMI動作を紹介しました。gNMIの機能強化に応じてバイナリも機能を拡張しています。詳しくは、Githubに公開しているコマンドツールを参照ください。今回もこのコマンドツールを利用してデータの取得や設定変更を確認してみましょう。
EOSの設定
最新のEOSでは、設定が変更になっています。これまでのEOSでは、”daemon”コマンドから関連するエージェントを直接起動していました。最新のEOS4.22では、”management api”コマンドからgNMIを起動します。以下の設定例では、VRF managementでgNMIのデフォルトポート6030番を起動しています。gNMIを通じてEOSネイティブ・データモデル、OpenConfigデータモデル双方にアクセスが可能です。”proviser eos-native”コマンドを指定すると、”Octa”と呼ばれるエージェントが起動します。このエージェントは、外部からの要求がEOSネイティブ・データモデル、OpenConfigデータモデルのいずれかを識別して処理してくれます。設定が完了したら、”show management api gnmi”コマンドでgNMIの起動を確認します。”proviser eos-native”を指定していれば、”Octa:enabled”と出力されます。
localhost(config-mgmt-api-gnmi)#sh active management api gnmi transport grpc grpc vrf management provider eos-native localhost(config-gnmi-transport-grpc)#show management api gnmi Octa: enabled Enabled: Yes Server: running on port 6030, in management VRF SSL Profile: none QoS DSCP: none
gNMIの出力例
それでは、コマンド発行ツールgNMIを利用して、いくつかのオペレーションを確認してみましょう。今回は、gNMIを通じた
- コマンドライン発行による設定変更
- 任意のパスへのサブスクライブ(ストリーミング)
- 任意のアトリビュートの取得
を試してみます。なお、コマンドツールから発行するパスについては、CloudVision Telemetryで提供されているMetrics Browserを参照するか、お近くの当社エンジニアにお問い合わせください。
・コマンドライン発行
gNMIコマンドツールから直接EOS CLIを発行してみます。
./gnmi -addr 192.168.0.21:6030 -username admin -password admin update 'origin=cli' "" 'ip routing' ./gnmi -addr 192.168.0.21:6030 -username admin -password admin update 'origin=cli' "" 'no ip routing'
Syslogの内容から、発行したCLIにしたがって、config sessionを開いて設定していることが確認できます。
Sep 11 11:14:20 localhost ConfigAgent: %SYS-5-CONFIG_SESSION_ENTERED: User admin entered configuration session session17772500895469 on GNMI (192.168.0.12:61730)
Sep 11 11:14:21 localhost ConfigAgent: %SYS-5-CONFIG_SESSION_COMMIT_SUCCESS: User admin committed configuration session session17772500895469 successfully on GNMI (192.168.0.12:61730)
Sep 11 11:14:21 localhost ConfigAgent: %SYS-5-CONFIG_SESSION_EXITED: User admin exited configuration session session17772500895469 on GNMI (192.168.0.12:61730)
・サブスクライブ
任意のパスにサブスクライブすることで、コマンドを実行したIPアドレスに対してgRPCによるストリーミングが可能になります。
./gnmi -addr 192.168.0.21:6030 -username admin -password admin subscribe origin=eos_native '/Sysdb/interface/counter/eth/slice/phy/1/intfCounterDir/Manaegment1/intfCounter/current'
・アトリビュート取得
任意のパスを指定することでアトリビュートの取得も可能になりました。(ストリーミングではなく、オンデマンドでアトリビュートを取得することになります)
./gnmi -addr 192.168.0.21:6030 -username admin -password admin get origin=eos_native '/Kernel/proc/cpu/utilization/cpu/0' /Kernel/proc/cpu/utilization/cpu/0/name: 0 /Kernel/proc/cpu/utilization/cpu/0/util: 1 /Kernel/proc/cpu/utilization/cpu/0/user: 51012 /Kernel/proc/cpu/utilization/cpu/0/nice: 2649 /Kernel/proc/cpu/utilization/cpu/0/system: 19395 /Kernel/proc/cpu/utilization/cpu/0/idle: 1463744
EOSは、既存のネットワークをクラウドネイティブなアーキテクチャに移行するため、さまざまな機能を提供しています。ネットワークテレメトリにおいてもCloudVisionとEOS gNMIの強化により、ユーザがネットワークテレメトリのメリットを享受できるよう機能強化を進めています。(2019年9月現在)すぐにネットワークテレメトリを活用したいなら、EOSとCloudVisionを利用すれば、gRPCトランスポートとEOSネイティブのデータモデルによってネットワークテレメトリの世界を体感できます。最新のEOSを利用すれば、gNMIのサポートによりマルチベンダ環境のネットワークテレメトリを実現可能です。