2017-07-06 22 views
0

asyncioを使用して非同期pysnmp bulkCmdを使用している場合、要求されたOIDには(Ciscoスイッチで学習したMACアドレスを示す1.3.6.1.2.1.17.4.3.1.2のような)多くの値があるか、要求、私はすべてのOIDを受け取ったわけではないことを意味するネットワークのMTU/MSSによって応答のOIDの総数が制限されているという問題があります。lexicographicMode in asyncio bulkCmd

この問題は、同期bulkCmdでlexicographicModeを使用していても、非同期bulkCmdジェネレータでそのオプションが使用できない場合に制御できます。

getNextを使用することは可能ですが、パケットの総数(OIDごとに1つの要求/応答)が増加するため、パフォーマンスが大幅に低下します。 Asynchronous bulkCmdを使用してすべての "sub oid"が応答で受信することを制御する方法はありますか?

答えて

0

要求されたOIDごとに応答OIDの数を制限するのに、maxRepetitionsパラメータを使用できますか。このexampleには50です。

私は、lexicographicModeオプションは、最初の接頭辞が範囲外になると、MIBの歩行を止めるように設計されていると思います。そのため、メッセージサイズに対しては間接的な影響しか与えないため、目的に合った信頼性がありません。

+0

私の問題は、最大パケットサイズのために必要なすべてのデータ(OID)を受信しなかったことです。 asyncioバルク要求を使用すると、1つのudpパケットだけが受信され、maxRepetitionsの値は設定されません。しかし、私はすでにここで解決策を見つけています。(例:http://pysnmp.sourceforge.net/examples/hlapi/asyncio/manager/cmdgen/walking-operations.html)ループとマニュアルコントロール中に一括要求を入れることができます。多くのリクエスト/レスポンスが送信されます。 –

+0

'maxRepetitions'パラメータは、各リクエストOIDごとに返される"次の "OIDの数を制限します。したがって、間接的にUDPパケットサイズを制御しますが、応答するUDPパケットの数には決して影響しません(常に1パケットです)。したがって、解決策は、あなたが言っているように、GETBULKを反復して、 'maxRepetitions'をMTUをオーバーサイズしないような普通の値に制限することです。 –