見出し画像

拡張MIBに対応したSNMPエージェントのソースコードを自動生成

ASN.1で定義した拡張MIBをSNMPエージェントに組み込むためにNET-SNMPのmib2cでソースコードを自動生成する方法の説明です。
SNMP拡張エージェントの開発の流れは

拡張MIBに対応したSNMPエージェントの開発の流れ

ほとんどのSNMP開発キットでは、ASN.1で拡張MIBを定義すると、ASN.1のMIBモジュールファイルからMIBコンパイラによって、自動的に拡張MIB対応部分のソースコードを生成することができます。生成されたソースコードを実際に管理情報の取得やTRAPの送信などの部分を加えることで拡張MIB対応のSNMPエージェントを完成させることができます。

実践SNMP教科書原稿

ほとんどのSNMP開発キットと書いていますが、今SNMPのエージェントを開発するために使えるのはNET-SNMPだけしかないように思います。

データ処理モデル

管理情報の取得とSNMPエージェント内部での記憶方法によって、いくつかのデータ処理モデルがあります。

①イベント駆動モデル
イベント駆動モデルは下の図に示すようにSNMPマネージャからのリクエスト毎に、情報源からの取得を行う方式です。最新の情報をSNMPマネージャに返せる反面、情報源からの取得に時間がかかる場合、応答時間も大きくなるという欠点をもっています。また、SNMPエージェント以外のソフトが同じ情報源にアクセスする場合、競合問題についても検討する必要がでてきます。

実践SNMP教科書原稿
イベント駆動モデル

②変数共有(データウォッチ)モデル
変数共有モデルは下の図に示すようにMIBのオブジェクトは共通の変数に格納されていて、データ取得/設定の処理が変数に情報源から取得したデータを書き込んだり、変数が変化した場合に、情報源に通知を行います。SNMPマネージャからのリクエストに対しては、変数の値を返したり、変数の変更を行うのみですみます。共通変数の変更に関する競合に注意する必要があります。SNMPの応答時間は、非常に早くすることができます。しかし、情報の更新は、一定周期で行われるため、必ずしも最新の情報を返せないという欠点が生じます。特に設定(SET)の場合は、この問題が深刻になる可能性があります。

実践SNMP教科書原稿


変数共有モデル


両方を併用した実装も可能です。例えば、ほとんどのMIBオブジェクトは、変数共有モデルで実装し、特定のオブジェクトの取得や設定の場合だけ、イベント駆動モデルで実装する方式です。

気象観測システムの例では下の図に示すようなデータ処理モデルで実装しています。基本的には、変数共有モデルですが、閾値の変更などは、イベント駆動モデルを使用しています。WEBでの情報表示とSNMPエージェントが情報を共有できるように、気象観測装置からのデータ取得は別プロセスで行って、SNMPエージェントには、ファイルで情報を渡しています。SNMPエージェントは、ファイルが変更された場合、読み出して情報を更新します。

実践SNMP教科書原稿
気象観測システムのデータ処理モデル

ここから先は

34,328字 / 1画像
SNMPの仕様について解説した本やサイトは、沢山あると思います。 独自の拡張MIBを自分で設計してMIBファイルやエージェントを作る方法を解説した教科書はないと思います。

20年近く前に書いた「実践SNMP教科書」を現在でも通用する部分だけ書き直して復刻するマガジンです。最近MIBの設計で困っている人に遭遇し…

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