2

私は net-snmp ライブラリ (c/c++) を使用して、snmp トラップ送信者を作成しています。基本的なオブジェクト タイプの場合、オブジェクトをトラップに追加するのは非常に簡単です。


snmp_varlist_add_variable(notification_vars, MibName, length, MIBType, MIBValue, len);

「MibName」は OID、「MIBValue」は文字列としての値、「MIBType」は ASN タイプです。では、インデックス付きテーブルに対してこれを行う方法は? これに対するサポートはありますか?すべての行とその要素をトラップに追加する方法は?

または、これに代わるより簡単な方法はありますか?

4

1 に答える 1

1

SNMP トラップ内で SNMP テーブル全体を送信するのは悪い習慣です。通常、SNMP テーブルは、OID インスタンスの数という点でかなり大きくなります。問題は、SNMP がトランスポート プロトコルとして UDP を使用することです。SNMP は、ネットワークの MTU までのサイズの PDU を許可します。バッファーは、予想される最大のパケットと同じ大きさにする必要があるため、可能であれば、おそらく MTU に対応する必要があります。たとえば、イーサネットでは最大 1500 バイトのフレーム ペイロードが許可されます。

したがって、PDU の最大サイズは通常、平均して最大 10 個の varbind です。

ここでの一般的な使用例のシナリオは、何かが変更/発生したことをユーザーに通知する SNMP トラップを送信することです。このイベントの詳細を取得するには、トラップの受信時に Get-Next/Get-Bulk を使用してテーブルからデータを取得する必要があります。

于 2016-11-08T11:32:38.753 に答える