見出し画像

TWSNMP FC/FKのgNMI対応開発12日目:Nexus 9Kでテストしてエンコーディングに悩む

今朝はサッカー日本代表戦を見ながら開発です。昨日の夜、助手の猫さんに3時前に起こしてとお願いしておいたら、2時前に起こしてくれました。二度寝したら3時半でした。前半の途中から観られました。

TWSNMPシリーズのgNMI対応を一通り作ったので、SR Linux 以外の対象でテストしてみました。前にEVE-NGに

の時に追加したNexus 9Kを対象にしてみると、いろいろ問題が見つかりました。
Nexus 9KのgNMIを有効にする方法は、

ですが、


gRPC機能を有効にする

の説明でコマンドが抜けています。

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は、奥が深い! まだまだ調べることがあります。

明日に続く


いいなと思ったら応援しよう!

twsnmp
開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。