見出し画像

EVE-NGでTWSNMPのテスト6日目:Ciscoの拡張MIBの定義を添削しています

今朝は3時ぐらいから助手の猫さんが騒いで起こしてくれたいましたが、昨日寝るのが遅くなったのでまったく起きられませんでした。4時に何とか起きて猫さんにご飯をあげて二度寝しました。次に起きたのは明るくなった5時半です。

EVE-NGに追加したCisco Nexus 9000v(仮想スイッチ)にSNMPでアクセスするテストの続きです。
取得結果をMIBツリーで表示する処理は、

のような感じで完成しました。JavaScriptで長時間かかる処理で応答がないというメッセージを回避する技を習得しました。

Ciscoの拡張MIBを

からダウンロードしてTWSNMPに読み込んだ時に発生した沢山のエラーの調査です。


CISCOからはじまる拡張MIBファイルだけで1154ありました。
どうやら、CISCOで始まる拡張MIBファイルだけ読み込むとMIBツリーの親子関係が解決できないエラーが発生するようです。
ダウンロードしたMIBに含まれるBASIS-MIB.myなどを読み込むと、この問題は改善しましたが、まだ、同じエラーが残っています。

MIBファイルの読み込み方法を見直すと、階層が深いMIBの定義だと正しく読み込めない問題があることがわかりました。MIBツリーの親子が解決しない場合には、1回だけ再読み込みする作りになっていましたが、今回のCiscoの拡張MIBでは1回で解決できない場合があることがわかりました。
そこで

  • ディレクトリにある拡張MIBを一通り読み込む

  • ツリーの親子が解決できない拡張MIBをリストに追加する

  • リストの拡張MIBを再読込して、親子の解決ができらたリストから削除する

  • 読み込めないリストが空になるか、再読み込みで親子関係を解決できた拡張MIBがなくなるまで続ける

  • リストが残っていたら、最後にもう一度読み込みをして、親子関係が解決できないものはエラーを記録する

というような処理に変えました。
これで深い階層の拡張MIBも読み込めるようになりました。

この改善の結果、拡張MIBの読み込みエラーは10件ぐらいに減りました。

残ったものはCiscoの人の定義が間違っているようです。

CISCO-IETF-PW-MPLS-CAPABILITY.my	
no parent name=cpwVcMplsCapability,oid=cpwVcMplsCapability.1.1.1.1

のエラーを調べてみると

cpwVcMplsCapability AGENT-CAPABILITIES

PRODUCT-RELEASE "Cisco IOS 12.0(29)S"
STATUS      current
|略
     ::= { cpwVcMplsCapability 1 } 

END

のように、間違っていました。
cpwVcMplsCapabilityがcpwVcMplsCapability.1だと定義しています。自分が自分の1人目の子供という定義です。自分の親が自分という定義とも言えます。他の拡張MIBの定義を見習って

cpwVcMplsCapabilityV12R0029 AGENT-CAPABILITIES

PRODUCT-RELEASE "Cisco IOS 12.0(29)S"
STATUS      current
|略
     ::= { cpwVcMplsCapability 1 } 

END

のように修正すれば、エラーは消えました。

他にもいろいろありますが、

CISCO-ITP-GACT-CAPABILITY.my	
60:21: unexpected "deprecated" (expected ("current" | "obsolete") ...) 
46:21: unexpected "deprecated" (expected ("current" | "obsolete") ...)
 

が面白かったです。
たぶん、SNMPのMIBではobsolete(時代遅れ)と定義するところをdeprecated(旧式)と書いたのだと思います。プログラムの世界ではdeprecatedという言葉を使うので、その影響だと思います。
この間違いは、370ファイルに4000箇所以上あります。

ただ、どれも使う人がいないようなMIB定義なので修正するよりファイルを削除すればよいと思います。
あるいは、私のように面倒だからCiscoで始まる全部のMIBをコピーするのではなく必要なMIBファイルだけコピーすればよいと思います。

明日に続く


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