Linux ベースの組み込みシステムで、MIB ファイルで指定されたすべての OID の SNMP MIB OID 値とアクセス タイプはどこに保存されますか? (ネットワーク機器、セットトップ ボックス、マシン制御、産業オートメーションなど) これらすべての OID MIB 値、名前、アクセス タイプを内部に格納するための内部データベースが必要です。
2 に答える
通常、データが存在し、snmp エージェントによってアクセスされる方法はいくつかあります。
1) エージェントの内部メモリ。通常は、エージェント自体の構成と監視のみを目的としています。
2) エージェントは、システム コールを実行して、ローカル デバイス/ソフトウェアにクエリを実行し、必要な情報を検索します。たとえば、HOST-RESOURCES-MIB からマシンのアップタイムを要求すると、エージェントはカーネルに (API を介して、またはファイルシステムなどの /proc を介して) 要求することによってそれを決定します。
3) エージェントは、RPC のようなメカニズムを介して他の何かと通信します。そのようなメカニズムの 1 つが AgentX プロトコルです。これは、ローカル システムで使用するための SNMP のサブセットであるマスター エージェントからサブエージェントへのプロトコルです。サブエージェントは、MIB ツリーの一部にサービスを提供することを示すマスター エージェントに登録します。
基本的に、エージェント自体がデータを知っていることは非常にまれです。ほとんどの場合、情報を報告するためにシステム上の何か他のものに問い合わせる必要があります。
一般に、net-snmp ベースのエージェントについて言えば、オブジェクト定義を使用して C ソース ファイルが生成されます。このファイルは、最終的に構築され、SNMP エージェントである snmpd にリンクされます。net-snmp のすべてのソース コードを読んだわけではありませんが、内部データベースが使用されているかどうかは疑問です。