[ruby-list:45570] Re: SNMP Libraryのerror_status=1(tooBig)について

From: Kiyotaka Kodama <kiyotaka@...>
Date: 2008-10-20 11:00:12 UTC
List: ruby-list #45570
とくしまさま

 児玉といいます。

 tooBigは、SNMPの応答パケットが大きすぎる場合にでるエラーですよね。

At Mon, 20 Oct 2008 11:22:03 +0900,
> 
> 植田さん、ありがとうございます。
> 
> >  snmplib は使ったことが無いのですが、他の手段(net-snmp のコマンドなど)
> > では該当サーバから正常にデータが取得できるのでしょうか?
> 
> 別に取得しているシステムがあるので、これは間違いなく取得できます。
> 私は数百のsnmpgetを試してはいませんが、snmpwalkは正常に返ってきます。

  snmpgetで同時に複数のoidを指定すると、受けた側は指定された
oidの数だけ同時に一つのパケットで返答しようとします。
 一つのパケットに全ての返答のデータを詰め込んで返そうとする
わけですが、それが大きくなりすぎる場合には、tooBigのエラーを
返します。

 snmpwalkの場合は一つのoidを指定して、そのoidから順に次のoid
のデータ、次のoidのデータともらうようになるので、一つのパケッ
トで全てのデータをもらうわけではありません。
 何度もsnmpのやりとりするような感じになります。
 ですので、snmpgetで一度に取得するのとは異なって、一つ一つの
返答のパケットは小さいですから正常に受信できてるのではないで
しょうか。

snmpgetで一度にoidを大量に指定して、実行してみるといかがでしょ
うか?
tooBig返ってくると思います。

> いろいろ試したところ特定のoidがおかしいということもなく、数に依存するエラーに
> 思えました。別の対象に対して行うとerror_status=1となるoidの数が異なるため、
> 数ではなく量なのではないかと思います。
> 同じ対象に対しては同じ数でエラーとなり再現性があります。

返答するパケットのデータ量によるので、oidの個数の制限ではなく
装置ごとの返答するデータ量に依存しているのだと思います。

snmpwalkでは正常にデータの受信できているということですので、
manager.getではなく、manager.walkを使ってみるといいのでは
ないでしょうか。


> アドバイスいただけると助かります。
> よろしくお願いいたします。
> 
> 
> 2008/10/20 9:28 "(株)ネットフォレスト 植田裕之" <ueda@netforest.ad.jp>:
> > 植田と申します。
> >
> >
> > Sun, 19 Oct 2008 00:07:49 +0900 のメールにて、
> > "徳島学" <manabu.tokushima@gmail.com> さんは書きました :
> >
> >> みなさま、こんばんは。とくしまと申します。
> >>
> >> SNMP Library
> >> http://snmplib.rubyforge.org/
> >> を使ってみたのですが、エラーとなり困っています。
> >>
> >> 下記のコードは正常に動作するのですが、oidの数を増やしていくと、
> >> responseにerror_status=1(tooBig)が返ってきます。
> >> MaxReceiveBytesの設定かとおもいデフォルトから一桁増やして80000に
> >> してみましたが結果は同じでした。
> >
> >  snmplib は使ったことが無いのですが、他の手段(net-snmp のコマンドなど)
> > では該当サーバから正常にデータが取得できるのでしょうか?
> >
> > # 既に確認済みだったらゴメンナサイ。
> >

In This Thread