TWSNMP FC/FKのgNMI対応開発12日目:Nexus 9Kでテストしてエンコーディングに悩む
今朝はサッカー日本代表戦を見ながら開発です。昨日の夜、助手の猫さんに3時前に起こしてとお願いしておいたら、2時前に起こしてくれました。二度寝したら3時半でした。前半の途中から観られました。
TWSNMPシリーズのgNMI対応を一通り作ったので、SR Linux 以外の対象でテストしてみました。前にEVE-NGに
の時に追加したNexus 9Kを対象にしてみると、いろいろ問題が見つかりました。
Nexus 9KのgNMIを有効にする方法は、
ですが、
の説明でコマンドが抜けています。
switch#conf t
switch(config)# feature grpc
を実行すれば有効にできます。
動作しているかは、
# show grpc gnmi transactions
=============
gRPC Endpoint
=============
Vrf : management
Server address : [::]:50051
Cert notBefore : Oct 10 19:01:26 2024 GMT
Cert notAfter : Oct 11 19:01:26 2024 GMT
Client Root Cert notBefore : n/a
Client Root Cert notAfter : n/a
RPC DataType Session Time In Duration(ms) Status
------------ ---------- --------------- -------------------- ------------ ------
Get ALL 4 10/11 05:24:46 1346 0
subtype: dtx: st: path:
- - OK /System
Get ALL 3 10/11 05:23:06 1 3
subtype: dtx: st: path:
- - ERR /system
Get ALL 2 10/11 05:22:39 2 3
subtype: dtx: st: path:
- - ERR /interface
Capabilities - 0 10/11 04:11:47 0 0
Get ALL 1 10/11 04:09:53 16 0
subtype: dtx: st: path:
- - OK /System/bgp-items/inst-items/dom-items/Dom-list/rtrId
のように確認できます。
ポート番号が57400ではなく50051です。57400を標準として作ったのは良くないようです。
gNMIcでアクセスすると、
$gnmic -a 10.30.1.11:50051 -u admin -p admin --skip-verify get --path /System/bgp-items/inst-items/dom-items/Dom-list/rtrId
[
{
"source": "10.30.1.11:50051",
"timestamp": 1728587393872996463,
"time": "2024-10-11T04:09:53.872996463+09:00",
"updates": [
{
"Path": "System/bgp-items/inst-items/dom-items/Dom-list/rtrId",
"values": {
"System/bgp-items/inst-items/dom-items/Dom-list/rtrId": null
}
}
]
}
]
のような感じで取得できました。
調子がでてきたので、TWSNMP FKで試してみました。
Capabilitiesは、
のような感じです。エンコーディングが少ないのが気になりました。
サポートしているモデルもSR Linuxに比べて少ないです。
Getしてみると、
のようにエラーです。エンコーディングをサポートしていないというエラーでした。エンコーディングをjson_ietfからjsonに変更すると
のように、なんとなく取得できました。表示がおかしいです。
エンコーディングをjson固定でいけるのかなと思ってSR Linuxも試してみると
のようにエラーでした。jsonというエンコーディングがないというエラーです。gNMIは、あまり仕様が統一されていないのかなと思いました。
ということで、以下の仕様に変更しようと思います。
ノードの設定に
gNMIのポート番号
gNMIのユーザーID、パスワード
エンコーディング
を追加しようと思います。
gNMIは、奥が深い! まだまだ調べることがあります。
明日に続く