RFC1187 日本語訳

1187 Bulk Table Retrieval with the SNMP. M.T. Rose, K. McCloghrie,J.R. Davin. October 1990. (Format: TXT=27220 bytes) (Status: EXPERIMENTAL)
プログラムでの自動翻訳です。
RFC一覧
英語原文

Network Working Group                                            M. Rose
Request for Comments: 1187       Performance Systems International, Inc.
                                                           K. McCloghrie
                                                      Hughes LAN Systems
                                                                J. Davin
                                     MIT Laboratory for Computer Science
                                                            October 1990

コメントを求めるワーキンググループM.バラ要求をネットワークでつないでください: Inc.K.McCloghrieヒューズLANシステムJ.デーヴィンMITコンピュータサイエンス研究所1990年10月の国際の1187個の言語運用機構

                   Bulk Table Retrieval with the SNMP

SNMPとの大量のテーブル検索

1.  Status of this Memo

1. このMemoの状態

   This memo reports an interesting family of algorithms for bulk table
   retrieval using the Simple Network Management Protocol (SNMP).  This
   memo describes an Experimental Protocol for the Internet community,
   and requests discussion and suggestions for improvements.  This memo
   does not specify a standard for the Internet community.  Please refer
   to the current edition of the "IAB Official Protocol Standards" for
   the standardization state and status of this protocol.  Distribution
   of this memo is unlimited.

このメモは、Simple Network Managementプロトコル(SNMP)を使用することで大量のテーブル検索のためのアルゴリズムのおもしろい家族を報告します。 このメモは改良のためにインターネットコミュニティ、要求議論、および提案のためのExperimentalプロトコルについて説明します。 このメモはインターネットコミュニティの規格を指定しません。 このプロトコルの標準化状態と状態の「IABの公式のプロトコル標準」の現行版を参照してください。 このメモの分配は無制限です。

Table of Contents

目次

   1. Status of this Memo ..................................    1
   2. Abstract .............................................    1
   3. Bulk Table Retrieval with the SNMP ...................    2
   4. The Pipelined Algorithm ..............................    3
   4.1 The Maximum Number of Active Threads ................    4
   4.2 Retransmissions .....................................    4
   4.3 Some Definitions ....................................    4
   4.4 Top-Level ...........................................    5
   4.5 Wait for Events .....................................    6
   4.6 Finding the Median between two OIDs .................    8
   4.7 Experience with the Pipelined Algorithm .............   10
   4.8 Dynamic Range of Timeout Values .....................   10
   4.9 Incorrect Agent Implementations .....................   10
   5. The Parallel Algorithm ...............................   11
   5.1 Experience with the Parallel Algorithm ..............   11
   6. Acknowledgements .....................................   11
   7. References ...........................................   12
   Security Considerations..................................   12
   Authors' Addresses.......................................   12

1. このMemoの状態… 1 2. 要約… 1 3. SNMPとのテーブル検索を膨らませてください… 2 4. Pipelinedアルゴリズム… 3 4.1 アクティブな糸の最大数… 4 4.2Retransmissions… 4 4.3 いくつかの定義… 4 4.4 トップレベル… 5 4.5 出来事を待ってください… 6 4.6 2OIDsの間のMedianを見つけます… 8 4.7 Pipelinedアルゴリズムの経験… 10 タイムアウト値の4.8ダイナミックレンジ… 10 4.9 不正確なエージェント実現… 10 5. 平行なアルゴリズム… 11 5.1 平行なアルゴリズムの経験… 11 6. 承認… 11 7. 参照… 12 セキュリティ問題… 12人の作者のアドレス… 12

2.  Abstract

2. 要約

   This memo reports an interesting family of algorithms for bulk table
   retrieval using the Simple Network Management Protocol (RFC 1157) [1].

このメモは、Simple Network Managementプロトコル(RFC1157)[1]を使用することで大量のテーブル検索のためのアルゴリズムのおもしろい家族を報告します。

Rose, McCloghrie & Davin                                        [Page 1]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[1ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

   The reader is expected to be familiar with both the Simple Network
   Management Protocol and SNMP's powerful get-next operator.  Please
   send comments to: Marshall T. Rose <mrose@psi.com>.

読者がSimple Network ManagementプロトコルとSNMPの強力な気付いているオペレータの両方によく知られさせると予想されます。 以下のことのためにコメントを送ってください。 マーシャルT. Rose <mrose@psi.com 、gt。

3.  Bulk Table Retrieval with the SNMP

3. SNMPとの大量のテーブル検索

   Empirical evidence has shown that SNMP's powerful get-next operator is
   effective for table traversal, particularly when the management
   station is interested in well-defined subsets of a particular table.
   There has been some concern that bulk table retrieval can not be
   efficiently accomplished using the powerful get-next operator.  Recent
   experience suggests otherwise.

実証的証拠は、テーブル縦断に、SNMPの強力な気付いているオペレータが有能であることを示しました、特に管理局が特定のテーブルの明確な部分集合に興味を持っているとき。 強力な気付いているオペレータを使用することで効率的に大量のテーブル検索を実行できないという何らかの関心がありました。 最近の経験は別の方法で示されます。

   In the simplest case, using the powerful get-next operator, one can
   traverse an entire table by retrieving one object at a time.  For
   example, to traverse the entire ipRoutingTable, the management station
   starts with:

最も簡単な場合では、強力な気付いているオペレータを使用して、1つは、一度に、1個の物を検索することによって、全体のテーブルを横断できます。 例えば、全体のipRoutingTableを横断するために、管理局は以下から始まります。

                  get-next (ipRouteDest)

気付いてください。(ipRouteDest)

   which might return

どれが戻るかもしれませんか。

                  ipRouteDest.0.0.0.0

ipRouteDest.0.0、.0、.0

   The management station then continues invoking the powerful get-next
   operator, using the value provided by the previous response, e.g.,

そして、管理局は、例えば前の応答で提供された値を使用して、強力な気付いているオペレータを呼び出し続けています。

                  get-next (ipRouteDest.0.0.0.0)

気付いてください。(ipRouteDest.0.0、.0、.0)

   As this sequence continues, each column of the ipRoutingTable can be
   retrieved, e.g.,

この系列が続くように、例えばipRoutingTableに関する各コラムを検索できます。

                  get-next (ipRouteDest.192.33.4.0)

気付いてください。(ipRouteDest.192.33、.4、.0)

   which might return

どれが戻るかもしれませんか。

                  ipRouteIfIndex.0.0.0.0

ipRouteIfIndex.0.0、.0、.0

   Eventually, a response is returned which is outside the table, e.g.,

結局、テーブルの外に例えばある応答を返します。

                  get-next (ipRouteMask.192.33.4.0)

気付いてください。(ipRouteMask.192.33、.4、.0)

   which might return

どれが戻るかもしれませんか。

                  ipNetToMediaIfIndex.192.33.4.1

ipNetToMediaIfIndex.192.33、.4、.1

   So, using this scheme, O(rows x columns) management operations are
   required to retrieve the entire table.

それで、この計画を使用して、O(xコラムをこぐ)管理操作が、全体のテーブルを検索するのに必要です。

Rose, McCloghrie & Davin                                        [Page 2]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[2ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

   This approach is obviously sub-optimal as the powerful get-next
   operator can be given several operands.  Thus, the first step is to
   retrieve an entire row of the table with each operation, e.g.,

このアプローチは、強力な気付いているオペレータにいくつかのオペランドを与えることができるので、明らかにサブ最適です。 したがって、第一歩は各操作のときに例えばテーブルの全体の列を検索することです。

              get-next (ipRouteDest, ipRouteIfIndex, ..., ipRouteMask)

気付いてください。(ipRouteDest、ipRouteIfIndex、…、ipRouteMask)

   which might return

どれが戻るかもしれませんか。

                  ipRouteDest.0.0.0.0
                  ipRouteIfIndex.0.0.0.0
                  ipRouteMask.0.0.0.0

ipRouteDest.0.0.0.0ipRouteIfIndex.0.0.0.0ipRouteMask.0.0、.0、.0

   The management station can then continue invoking the powerful get-
   next operator, using the results of the previous operation as the
   operands to the next operation.  Using this scheme O(rows) management
   operations are required to retrieve the entire table.

強力を呼び出す次にステーションが続けることができる経営者側は次期オペレータを得ます、オペランドとして次の操作に古い手術痕の結果を使用して。 この計画O(列)を使用して、管理操作が、全体のテーブルを検索するのに必要です。

   Some have suggested that this is a weakness of the SNMP, in that
   O(rows) serial operations is time-expensive.  The problem with such
   arguments however is that implicit emphasis on the word "serial".  In
   fact, there is nothing to prevent a clever management station from
   invoking the powerful get-next operation several times, each with
   different operands, in order to achieve parallelism and pipelining in
   the network.  Note that this approach requires no changes in the
   SNMP, nor does it add any significant burden to the agent.

O(列)直列操作が時間高価であるので、或るものは、これがSNMPの弱点であると示唆しました。 しかしながら、そのような議論に関する問題は「シリーズ」という言葉へのその暗黙の強調です。 事実上、何も賢明な管理局が何度か強力な気付いている操作を呼び出すのを防ぐものがありません、それぞれ異なったオペランドで、ネットワークで平行関係とパイプライン処理を達成するために。 このアプローチがSNMPにおける変化を全く必要としないことに注意してください、そして、それは少しの重要な負担もエージェントに言い足しません。

4.  The Pipelined Algorithm

4. Pipelinedアルゴリズム

   Let us now consider an algorithm for bulk table retrieval with the
   SNMP.  In the interests of brevity, the "pipelined algorithm" will
   retrieve only a single column from the table; without loss of
   generality, the pipelined algorithm can be easily extended to
   retrieve all columns.

現在、SNMPとの大量のテーブル検索のためのアルゴリズムを考えましょう。 簡潔さのために、「pipelinedアルゴリズム」はテーブルからただ一つのコラムだけに取り戻すでしょう。 一般性の喪失がなければ、すべてのコラムを検索するためにpipelinedアルゴリズムを容易に広げることができます。

   The algorithm operates by adopting a multi-threaded approach: each
   thread generates its own stream of get-next requests and processes
   the resulting stream of responses.  For a given thread, a request
   will correspond to a different row in the table.

アルゴリズムはマルチスレッド化されたアプローチを取ることによって、作動します: 各糸は、それ自身の気付いている要求のストリームを発生させて、応答の結果として起こる流れを処理します。 与えられた糸に関しては、要求はテーブルの異なった列に対応するでしょう。

   Overall retrieval efficiency is improved by being able to keep
   several transactions in transit, and by having the agent and
   management station process transactions simultaneously.

総合的な検索効率は、トランジットにおけるいくつかの取引を保つことができて、同時にエージェントと管理局過程取引を持っていることによって、高められます。

   The algorithm will adapt itself to varying network conditions and
   topologies as well as varying loads on the agent.  It does this both
   by varying the number of threads that are active (i.e., the number of
   transactions that are being processed and in transit) and by varying
   the retransmission timeout.  These parameters are varied based on the

アルゴリズムはエージェントで負荷を変えることと同様に異なったネットワーク状態とtopologiesに慣れるでしょう。 それは、アクティブな糸(すなわち、処理されてトランジット中であることの取引の数)の数を変えて、再送タイムアウトを変えることによって、これをします。 これらのパラメタがベースで変えられる、オン

Rose, McCloghrie & Davin                                        [Page 3]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[3ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

   transaction round-trip-time and on the loss/timeout of transactions.

取引往復の時間と取引の損失/タイムアウトに関して。

4.1.  The Maximum Number of Active Threads

4.1. アクティブな糸の最大数

   One part of the pipelined algorithm which must be dynamic to get best
   results is the determination of how many threads to have active at a
   time.  With only one thread active, the pipelined algorithm
   degenerates to the serial algorithm mentioned earlier.  With more
   threads than necessary, there is a danger of overrunning the agent,
   whose only recourse is to drop requests, which is wasteful.  The
   ideal number is just enough to have the next request arrive at the
   agent, just as it finishes processing the previous request.  This
   obviously depends on the round-trip time, which not only varies
   dynamically depending on network topology and traffic-load, but can
   also be different for different tables in the same agent.

効果が出るためにダイナミックでなければならないpipelinedアルゴリズムの一部が一度にいくつの糸をアクティブにするかに関する決断です。 1個の糸だけがアクティブな状態で、pipelinedアルゴリズムは、より早く言及された連続のアルゴリズムに退化しています。 必要とするより多くの糸で、要求を落とす唯一の償還請求がことであるエージェントをオーバランさせるという無駄な危険があります。 理想的な数は次の要求をエージェントに到着させるようにただ十分です、ちょうど前の要求を処理し終えるように。 これは往復の時間に明らかによります。(それも、異なったテーブルに、また、ダイナミックにネットワーク形態とトラヒック負荷によって、異なるだけではなく、同じエージェントでいろいろである場合があります)。

   With too few threads active, the round-trip time barely increases
   with each increase in the number of active threads; with too many,
   the round-trip time increases by the amount of time taken by the
   agent to process one request.  The number is dynamically estimated by
   calculating the round-trip-time divided by the number of active
   threads; whenever this value takes on a new minimum value, the limit
   on the number of threads is adjusted to be the number of threads
   active at the time the corresponding request was sent (plus one to
   allow for loss of requests).

あまりにわずかな糸がアクティブな状態で、アクティブな糸の数の各増加に従って、往復の時間はほとんど増加しません。 多く過ぎることで、往復の時間は1つの要求を処理するためにエージェントによってかけられた時間までに増加します。 数は往復のアクティブな糸の数が割られた時間について計算することによって、ダイナミックに見積もられています。 この値が新しい最小値を呈するときはいつも、糸の数における限界は、対応する要求が送られた時代(要求の損失で許容するプラス1つ)にアクティブな糸の数になるように調整されます。

4.2.  Retransmissions

4.2. Retransmissions

   When there are no gateways between the manager and agent, the
   likelihood of in-order arrival of requests and responses is quite
   high.  At present, the decision to retransmit is based solely on the
   timeout.  One possible optimization is for the manager to remember
   the order in which requests are sent, and correlate this to incoming
   responses.  If one thread receives a response before another thread
   which sent an earlier request, then lossage could be assumed, and a
   retransmission made immediately.

マネージャとエージェントの間にゲートウェイが全くないとき、要求と応答のオーダーへの到達の見込みはかなり高いです。 現在のところ、再送するという決定は唯一タイムアウトに基づいています。 最適化がマネージャが要求が送られるオーダーを覚えていて、入って来る応答にこれを関連させることであることが可能な1つ。 1個の糸が以前の要求を送った別の糸の前に応答を受けるなら、lossageを想定できて、「再-トランスミッション」がすぐに作ったその時です。

4.3.  Some Definitions

4.3. いくつかの定義

   To begin, let us define a "thread" as some state information kept in
   the management station which corresponds to a portion of the table to
   be retrieved.  A thread has several bits of information associated
   with it:

何らかの州の情報が検索されるためにテーブルの一部に対応する管理局に閉じ込めたので、始まるように、「糸」を定義させてください。 糸には、それに関連している情報の数ビットがあります:

      (1)  the range of SNMP request-ids which this thread can use,
           along with the last request-id used;

(1) この糸が使用される最後の要求イドと共に使用できるSNMP要求イドの範囲。

      (2)  last SNMP message sent, the number of times it has been

最後のSNMPメッセージが送った(2)、それが回数であった

Rose, McCloghrie & Davin                                        [Page 4]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[4ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

           (re)sent, the time it was (re)sent;

それを送ったとき(re)、(re)は発信しました。

      (3)  the inclusive lower-bound and exclusive upper-bound of
           the object-instance for the portion of the table that
           this thread will retrieve, along with the current
           object-instance being used;

(3) この糸が使用される現在の物例と共に検索するテーブルの一部への物例の包括的な下界と排他的な上限。

      (4)  the number of threads which were active at the time it
           was last sent;

(4) それが最後であったことで、アクティブであった糸の数は発信しました。

   When a thread is created, it automatically sends a get-next message
   using its inclusive lower-bound OID.  Further, it is placed at the
   end of the "thread queue".

糸が作成されるとき、それは、包括的な下界OIDを使用することで自動的に気付いているメッセージを送ります。 さらに、「糸の待ち行列」の終わりに置かれます。

   Let us also define an OID as a concrete representation of an object
   identifier which contains two parts:

また、2つの部品を含む物の識別子の具体的な表現とOIDを定義しましょう:

      (1)  the number of sub-identifiers present, "nelem";

サブ識別子の数が提示する(1)、"nelem"。

      (2)  the sub-identifiers themselves in an array, "elems",
           indexed from 1 up to (and including) "nelem".

(2) アレイのサブ識別子"elems"自体は1つの上から(そして、包含)"nelem"まで索引をつけました。

4.4.  Top-Level

4.4. トップレベル

   The top-level consists of starting three threads, and then entering a
   loop.  As long as there are existing threads, the top-level waits for
   events (described next), and then acts upon the incoming messages.
   For each thread which received a response, a check is made to see if
   the OID of the response is greater than or equal to the exclusive
   upper-bound of the thread.  If so, the portion of the table
   corresponding to the thread has been completely retrieved, so the
   thread is destroyed.

トップレベルは3個の糸を始動して、次に、輪を入れるのから成ります。 既存の糸がある限り、トップレベルは、出来事(次に、説明される)を待っていて、次に、入力メッセージに作用します。 応答を受けた各糸に関しては、応答のOIDが糸の排他的な上限以上であるかどうか考えるのをチェックをします。 そうだとすれば、糸に対応するテーブルの一部を完全に検索してあるので、糸は破壊されます。

   Otherwise, the variable bindings in the response are stored.
   Following this, if a new thread should be created, then the portion
   of the table corresponding to the thread is split accordingly.
   Regardless, another powerful get-next operator is issued on behalf of
   the thread.

さもなければ、応答における変項束縛は格納されます。 これに続いて、新しい糸が作成されるなら、糸に対応するテーブルの一部がそれに従って、分けられます。 不注意に、糸を代表して別の強力な気付いているオペレータを発行します。

   The initial starting positions (column, column.127, and column.192),
   were selected to form optimal partitions for tables which are indexed
   by IP addresses.  The algorithm could easily be modified to choose
   other partitions; however, it must be stressed that the current
   choices work for any tabular object.

(コラム、コラム.127、およびコラム.192)がIPアドレスによって索引をつけられるテーブルのための最適のパーティションを形成するのが選択されたという初期の開始位置。 他のパーティションを選ぶように容易にアルゴリズムを変更できました。 しかしながら、現在の選択はどんな表物にも効き目があると強調しなければなりません。

      pipelined_algorithm (column)
      OID  column;
      {

pipelined_アルゴリズム(コラム)OIDコラム。 {

Rose, McCloghrie & Davin                                        [Page 5]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[5ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

          timeout ::= some initial value;

タイムアウト:、:= 或るものは値に頭文字をつけます。

          start new thread for [column, column.127);
          start new thread for [column.127, column.192);
          start new thread for [column.192, column+1);

[コラム、コラム.127)のために新しい糸を始動してください; [コラム.127、コラム.192)のために新しい糸を始動してください; [コラム.192、コラム+1)のために新しい糸を始動してください。

          while (threads exist) {
             wait for events;
             foreach (thread that has an incoming message,
                      examined in order from the thread queue) {
                 OID     a;

ゆったり過ごす(糸は存在している)、foreach(糸の待ち行列によって整然とした状態で調べられた入力メッセージを持っている糸)に出来事を待ってください、OID a。

                 if (message's OID >= thread's upper-bound) {
                     destroy thread;
                     continue;
                 }

(メッセージのOID>=スレッドの上限)です。糸を破壊してください; 続いてください;。

                 store variable-bindings from message;

メッセージから変項束縛を格納してください。

                 if (number of simultaneous threads does NOT
                             exceed a maximum number
                          && NOT backoff
                          && (a ::= oid_median (message's OID,
                                                thread's
                                                    upper-bound))) {
                      start new thread for [a, thread's upper-bound);
                      thread's upper-bound ::= a;
                      place thread at end of thread queue;
                      backoff ::= TRUE;
                  }
                  do another get-next for thread;
              }
          }
      }

(同時の糸の数が最大数を超えていない、どんなbackoff、も[a、スレッドの上限)a; 糸の待ち行列の終わりの場所糸; backoff: : (スレッドの上限: : ==TRUE)のための(a: : =oid_メディアン(メッセージのOID、スレッドの上限))スタートの新しい糸がそうしない、別のものが気付く、糸のために。

4.5.  Wait for Events

4.5. 出来事を待ってください。

   Waiting for events consists of waiting a small amount of time or
   until at least one message is received.

出来事を待つのは少量の時間か少なくとも1つのメッセージが受信されるまで待つのから成ります。

   Any messages encountered are then collated with the appropriate
   thread.  In addition, the largest round-trip time for
   request/responses is measured, and the maximum number of active
   threads is calculated.

そして、遭遇するどんなメッセージも適切な糸に照合されます。 さらに、要求/応答のための最も大きい往復の時間は測定されます、そして、アクティブな糸の最大数は計算されます。

   Next, the timeout is adjusted: if no responses were received, then
   the timeout is doubled; otherwise, a timeout-adjustment is calculated

次に、タイムアウトは調整されます: 応答を全く受けなかったなら、タイムアウトを倍にします。 さもなければ、タイムアウト調整は計算されます。

Rose, McCloghrie & Davin                                        [Page 6]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[6ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

   as 1.5 times the largest observed round-trip time.  If the timeout-
   adjustment is greater than the current timeout, the current timeout
   is set to the timeout-adjustment.  Otherwise, the current timeout is
   averaged with the timeout-adjustment.

1.5回として、最も大きいのは往復の時間を観測しました。 タイムアウト調整が現在のタイムアウトより大きいなら、現在のタイムアウトはタイムアウト調整に設定されます。 さもなければ、現在のタイムアウトはタイムアウト調整で平均されています。

   Finally, if at least one thread did not receive a response, then the
   thread is identified which has waited the longest.  If the elapsed
   time (with noise factor) since the last request (or retransmission)
   is greater than the current timeout value, another retransmission is
   attempted.

最終的に、少なくとも1個の糸が応答を受けなかったなら、糸は特定されます(最も長い間、待っています)。 最後の要求(または、「再-トランスミッション」)が現在のタイムアウト値より大きい時から経過時間であるなら(雑音指数がある)、別の「再-トランスミッション」は試みられます。

   wait for events ()
   {
       backoff ::= TRUE, maxrtt ::= 0;
       find the thread which has been waiting the longest
           for a response;
       timedelta = timeout
                       - time since request was sent for thread;
       wait up to timedelta seconds or until some messages arrive;

出来事()を待ってください、backoff: : =TRUE、maxrtt: : =0; 糸のために要求を送ったので、最も長い間timedeltaがタイムアウトと等しいという応答を待っている糸に時間を見つけてください; timedelta秒かいくつかのメッセージが到着するまで、待ってください。

       if (least one message arrived) {
           discard any messages which aren't responses;
           foreach (response which corresponds to a thread) {
               if (the response is a duplicate)
                   drop it and continue;

(最少の1つのメッセージが到着しました)、foreachに応答でないあらゆるメッセージ(糸に対応する応答)を捨ててください、(応答は写しです) それを落としてください、そして、続いてください。

               if (this response is for a message that was
                       not retransmitted) {
                  if (the round-trip time is larger than maxrtt)
                       set maxrtt to the new round-trip time;
                   if (round-trip time / number of active threads
                         < minimum previous round-trip time / number
                              of active threads) {
                       set new minimum round-trip time per number of
                           active threads
                       set new maximum number of threads
                  }
                   backoff ::= FALSE;
               }
           }
       }
       if (backoff)
           double timeout;
       elsif (maxrtt > 0) {
          timeadjust ::= maxrtt * 3 / 2;
           if (timeadjust > timeout)
               timeout ::= timeadjust; backoff ::= TRUE;
           else

(この応答は再送されなかったメッセージのためのものです) 新しい往復の時間までのmaxrtt; 設定されるなら(往復の時間はmaxrttより大きいです)、(アクティブの前の<最小の往復の時間/数が糸を通すアクティブな糸の往復の時間/数)であるならアクティブな糸の数あたりの新しい最小の往復の時間、backoffに設定新しい最大数の糸を設定してください: : =FALSE (backoff)であるなら、タイムアウトを倍にしてください。 elsif(maxrtt>0)、timeadjust:、:= maxrtt*3 / 2。 以下のこと、(timeadjust>タイムアウト)タイムアウトであるなら:= timeadjust。 backoff:、:= 本当。 ほか

Rose, McCloghrie & Davin                                        [Page 7]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[7ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

               timeout ::= (timeout + timeadjust) / 2;
       }
       if (timeout exceeds some threshold)
          set timeout to that threshold;
      elsif (timeout is smaller than some threshold)
           set timeout to that threshold;

タイムアウト:、:= (タイムアウト+timeadjust) / 2; その敷居への(タイムアウトは何らかの敷居を超えています)セットタイムアウトであるなら。 elsif(タイムアウトは何らかの敷居より小さい)はその敷居にタイムアウトを設定しました。

       if (at least one thread didn't receive a response) {
           find the thread which has been waiting the longest
               for a response,
               and determine the elapsed time since a message
               was sent;
           if (the elapsed time with noise is greater than timeout) {
               if (the number of retransmissions for this thread
                       exceeds a threshold)
                   abort the algorithm;
               retransmit the request;
               backoff ::= TRUE;
           }
       }
  }

(少なくとも1個の糸は応答を受けませんでした)、最も長い間応答を待っている糸を見つけてください、そして、メッセージを送ったので、経過時間を決定してください;、(雑音を伴う経過時間はタイムアウトよりすばらしいです) アルゴリズム; (この糸のための「再-トランスミッション」の数は敷居を超えています)アボートであるなら、要求を再送してください; backoff: : =TRUE

4.6.  Finding the Median between two OIDs

4.6. 2OIDsの間のMedianを見つけます。

   The object identifier space is neither uniform nor continuous.  As
   such, it is not always possible to choose an object identifier which
   is lexicographically-between two arbitrary object identifiers.  In
   view of this, the pipelined algorithm makes a best-effort attempt.

物の識別子スペースは、一定でなくて、また連続していません。 そういうものとして、2つの間の辞書編集の任意の物の識別子である物の識別子を選ぶのはいつも可能であるというわけではありません。 これから見て、pipelinedアルゴリズムは最大限の努力の試みをします。

   Starting from the beginning, each sub-identifier of the two OIDs is
   scanned until a difference is encountered.  At this point there are
   several possible conditions:

始めから始めて、違いが遭遇するまで、2OIDsに関するそれぞれのサブ識別子はスキャンされます。 ここに、いくつかの可能な状態があります:

      (1)  The upper OID has run out of sub-identifiers.  In this
           case, either the two OIDs are are identical or the lower
           OID is greater than the upper OID (an interface error),
           so no OID is returned.

(1) 上側のOIDはサブ識別子を使い果たしました。 同じであるか、より低いことはOIDです。この場合2OIDsがそう、上側であるよりすばらしいOIDは(インタフェース誤り)であり、したがって、OIDを全く返しません。

      (2)  The lower OID has run out of sub-identifiers.  In this
           case, the first subsequent non-zero sub-identifier from
           the upper OID is located.  If no such sub-identifier is
           found, then no OID exists between the lower and upper
           OIDs, and no OID is returned.  Otherwise, a copy of the
           upper OID is made, but truncated at this non-zero
           sub-identifier, which is subsequently halved, and the
           resulting OID is returned.

(2) 下側のOIDはサブ識別子を使い果たしました。 この場合、上側のOIDからのサブ識別子の最初のその後の非ゼロは見つけられています。 何かそのようなサブ識別子が見つけられないなら、どんなOIDも下側の、そして、上側のOIDsの間に存在していません、そして、OIDを全く返しません。 さもなければ、この非ゼロサブ識別子では、上側のOIDのコピーに作りますが、先端を切らせます、そして、結果として起こるOIDを返します。(識別子は次に、半分にされます)。

      (3)  Otherwise, a copy of the lower OID is made, but truncated

(3) さもなければ、下側のOIDのコピーは、作られていますが、先端を切られます。

Rose, McCloghrie & Davin                                        [Page 8]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[8ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

           at the point of difference.  This last sub-identifier is
           then set to the arithmetic mean of the difference.  In
           the case where the difference is only 1 (so the last
           sub-identifier remains the same) then a new sub-
           identifier is added, taking care to be larger than a
           possible sub-identifier present in the lower OID.
           Regardless, the resulting OID is returned.

違いのポイントで。 そして、この最後のサブ識別子は違いの算術平均に設定されます。 違いが1であるにすぎない(したがって、最後のサブ識別子は同じままで残っている)場合では、次に、新しいサブ識別子は加えられます、下側のOIDの現在の可能なサブ識別子より大きくなるように注意して。 不注意に、結果として起こるOIDを返します。

       oid_median (lower, upper)
       OID     lower,
               upper;
       {
           for (i ::= 1; i < upper:nelem; i++) {
               if (i > lower:nelem) {
                   while (upper:elems[i] == 0)
                       if (++i > upper:nelem)
                           return NULL;
                   median ::= copy of upper;
                   median:nelem ::= i;
                   median:elems[i] ::= upper:elems[i] / 2;

oid_メディアン(下側の、そして、上側の)OIDは上側で下ろします。 (i: : =1; i<覚醒剤: nelem; i++)、(i>は下ろされます: nelem)である、(+ + i>覚醒剤: nelem)リターンNULL; メディアン: : より上にの=コピー; メディアン: nelem: : =iであるメディアン: elems[i]: : =覚醒剤: (elems[i] / 2)ならゆったり過ごします(覚醒剤: elems[i]=0)。

                   return median;
              }

メディアンを返してください。 }

              if (lower:elems[i] == upper:elems[i])
                  continue;

(下ろしてください: elems[i]=覚醒剤: elems[i])は続きます。

               median ::= copy of lower;
               median:nelem ::= i;
               median:elems[i] ::= (lower:elems[i]+upper:elems[i])/2;
               if (median:elems[i] == lower:elems[i]) {
                   median:nelem ::= (i + 1);
                  if (lower:nelem < i)
                      median:elems[median:nelem] ::= 127;
                   elsif ((x ::= lower:elems[i + 1]) >= 16383)
                      median:elems[median:nelem] ::= x + 16383;
                   elsif (x >= 4095)
                      median:elems[median:nelem] ::= x + 4095;
                   elsif (x >= 1023)
                       median:elems[median:nelem] ::= x + 1023;
                   elsif (x >= 255)
                       median:elems[median:nelem] ::= x + 255;
                   else median:elems[median:nelem] ::=
                                                (x / 2) + 128;
               }

メディアン:、:= より低くコピーする、。 メディアン: nelem:、:= i。 メディアン: elems[i]:、:= (: elems[i]+覚醒剤: elems[i])を下ろしてください。/2; (メディアン: =が下ろすelems[i]: elems[i]){ median:nelem ::= (i + 1); if (lower:nelem < i) median:elems[median:nelem] ::= 127; elsif ((x ::= lower:elems[i + 1]) >= 16383) median:elems[median:nelem] ::= x + 16383; elsif (x >= 4095) median:elems[median:nelem] ::= x + 4095; elsif (x >= 1023) median:elems[median:nelem] ::= x + 1023; elsif (x >= 255) median:elems[median:nelem] ::= x + 255; else median:elems[median:nelem] ::= (x / 2) + 128; }

                return median;
           }

メディアンを返してください。 }

Rose, McCloghrie & Davin                                        [Page 9]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[9ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

           return NULL;
       }

NULLを返してください。 }

4.7.  Experience with the Pipelined Algorithm

4.7. Pipelinedアルゴリズムの経験

   This pipelined algorithm has been implemented and some
   experimentation has been performed.  It would be premature to provide
   extensive performance figures at this time, as the pipelined
   algorithm is still being tuned, and is implemented only in a
   prototype setting.  However, on tables of size O(2500), performance
   of 121 entries/second has been observed.  In contrast, the serial
   algorithm has performance of roughly 56 entries/second for the same
   table.

このpipelinedアルゴリズムは実行されました、そして、何らかの実験が実行されました。 このとき大量の性能の数字を明らかにするのは時期尚早でしょう、pipelinedアルゴリズムがまだ調整されていて、原型設定だけで実行されるとき。 しかしながら、サイズO(2500)のテーブルでは、121エントリー/秒の性能は観測されました。 対照的に、連続のアルゴリズムには、同じテーブルのためのおよそ56エントリー/秒の性能があります。

4.8.  Dynamic Range of Timeout Values

4.8. タイムアウト値のダイナミックレンジ

   It should be noted that the pipelined algorithm takes a simplistic
   approach with the timeout value: it does not maintain a history of
   the value and act accordingly.

pipelinedアルゴリズムがタイムアウト値に関する安易なアプローチを取ることに注意されるべきです: それはそれに従って、値と行為の歴史を維持しません。

   For example, if the timeout reaches the maximum timeout limit, and
   then latches for some period of time, this indicates a resource
   (either the network or the agent) is saturated.  Unfortunately, a
   solution is difficult: an elegant approach would be to combine two
   threads (but it is quite possible that no two consecutive threads
   exist when this determination is made).  Another approach might be to
   delay the transmission for threads which are ready to issue a new
   get-next operation.

例えば、タイムアウトが最大のタイムアウト限界に達して、次に、いつかの期間の間、掛け金をおろすなら、これは、リソース(ネットワークかエージェントのどちらか)が飽和しているのを示します。 残念ながら、解決策は難しいです: 上品なアプローチは2個の糸を結合するだろう(この決断をするとき、2個の連続した糸が存在しないのは、かなり可能です)ことです。 別のアプローチは新しい気付いている操作を発行する準備ができている糸のためのトランスミッションを遅らせることであるかもしれません。

   Similarly, if the timeout drops to the minimum value and subsequently
   latches, more threads should be started.

同様に、タイムアウトが最小値に落ちて、次に掛け金をおろすなら、より多くの糸が始動されるべきです。

4.9.  Incorrect Agent Implementations

4.9. 不正確なエージェント実現

   An interesting result is that many agents do not properly implement
   the powerful get-next operator.  In particular, when a get-next
   request contains an operand with an arbitrarily-generated suffix,
   some agent implementations will handle this improperly, and
   ultimately return a result which is lexicographically less than the
   operand!

おもしろい結果は多くのエージェントが適切に強力な気付いているオペレータを実行しないということです。 気付いている要求が任意に発生している接尾語があるオペランドを含んでいると、いくつかのエージェント実現が、特に、不適切にこれを扱って、結局、オペランドよりそれほど辞書編集である結果を返すでしょう!

   A typical cause of this is when the instance-identifier for a
   columnar object is formed by a MAC or IP address, so each octet of
   the address forms a sub-identifier of the instance-identifier.  In
   such circumstances, the incorrect agent implementations compare
   against only the least significant octet of the sub-identifiers in
   the operand, instead of the full value of the sub-identifiers.

この典型的な原因が円柱状の物のための例識別子がMACかIPアドレスによって形成される時であるので、アドレスの各八重奏は例識別子に関するサブ識別子を形成します。 そのような事情では、不正確なエージェント実現はサブ識別子のオペランドで最も重要でない八重奏だけに対して比較されます、サブ識別子の全額の代わりに。

Rose, McCloghrie & Davin                                       [Page 10]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[10ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

   Upon encountering such an interaction, the pipelined algorithm
   implementation declares the thread dead (noting a possible gap in the
   table), and continues.

そのような相互作用に遭遇すると、pipelinedアルゴリズム実装は、糸が死んでいると(テーブルの可能なギャップに注意します)宣言して、続きます。

5.  The Parallel Algorithm

5. 平行なアルゴリズム

   One interesting optimization is to view the problem in two steps: in
   the first step, one column of the table is traversed to determine the
   full range of instances identifiers meaningful in the table.
   (Indeed, although as described above, the pipelined algorithm
   retrieves a single column, the prototype implementation can retrieve
   multiple columns).  In the second step, additional columns can be
   retrieved using the SNMP get operation, since the instance
   identifiers are already known.  Further, the manager can dynamically
   determine how many variables can be placed in a single SNMP get
   operation in order to minimize the number of requests.  Of course,
   since the agent's execution of the get operation is often less
   expensive than execution of the powerful get-next operation, when
   multiple columns are request, this two-step process requires less
   execution time on the agent.

1つのおもしろい最適化は以下の2ステップで問題を見ることです: 第一歩では、テーブルに関する1つのコラムが、テーブルで重要な例の識別子の最大限の範囲を決定するために横断されます。 (本当に、pipelinedアルゴリズムは上で説明されるようにシングル・コラムを検索しますが、原型実現は複数のコラムを検索できます。) 第2ステップでは、追加コラムはSNMPが操作を得る検索された使用であることができます、例の識別子が既に知られているので。 さらに、マネージャは、SNMPが要求の数を最小にするために操作を得るシングルにいくつの変数を置くことができるかをダイナミックに決心できます。 得てください。もちろん、エージェントの処刑、操作は強力な気付いている操作の実行よりしばしば高価であるというわけではありません。(複数のコラムが要求である、その時、この二段構えの体制はエージェントの上の、より少ない実行時間を必要とします)。

   A second algorithm can be developed, the "parallel algorithm".  At
   present, each thread is mapped onto a single SNMP operation.  A
   powerful insight is to suggest mapping several threads onto a single
   SNMP operation: the manager must dynamically determine how many
   variables can be placed in a single powerful get-next operation.
   This has the advantage of reducing traffic, at the expense of
   requiring the agent to utilize more resources for each request.

2番目のアルゴリズムを開発できる、「平行なアルゴリズム。」 現在のところ、各糸はただ一つのSNMP操作に写像されます。 強力な洞察はただ一つのSNMP操作に数個の糸を写像するのを示すことです: マネージャは、ただ一つの強力な気付いている操作にいくつの変数を置くことができるかをダイナミックに決心しなければなりません。 これには、交通を抑える利点があります、エージェントが各要求のための、より多くのリソースを利用するのが必要であることを犠牲にして。

   Earlier it was noted that the serial retrieval of objects could be
   viewed as a degenerate case of the pipelined algorithm, in which the
   number of active threads was one.  Similarly, the pipelined algorithm
   is a special case of the parallel algorithm, in which the number of
   threads per SNMP operation is one.

より早く、アクティブな糸の数が1であったpipelinedアルゴリズムの堕落したケースとして物の連続の検索を見なすことができることに注意されました。 同様に、pipelinedアルゴリズムは平行なアルゴリズムの特別なケースです。(それでSNMP操作あたりの糸の数は1です)。

5.1.  Experience with the Parallel Algorithm

5.1. 平行なアルゴリズムの経験

   The parallel algorithm has been implemented and some experimentation
   has been performed.  It would be premature to provide extensive
   performance figures at this time, as the algorithm is still being
   tuned, and is implemented only in a prototype setting.  However, on
   tables of size O(2500), performance of 320 entries/second has been
   observed, a performance improvement of 571% over the serial
   algorithm.

平行なアルゴリズムは実装されました、そして、何らかの実験が実行されました。 このとき大量の性能の数字を明らかにするのは時期尚早でしょう、アルゴリズムがまだ調整されていて、プロトタイプ設定だけで実装されるとき。 しかしながら、サイズO(2500)のテーブルでは、320エントリー/秒の性能は観測されました、連続のアルゴリズムの上の571%の性能改良。

6.  Acknowledgements

6. 承認

   A lot of the ideas on pipelining are motivated by Van Jacobson's work

パイプライン処理に関する多くの考えがヴァン・ジェーコブソンの仕事で動機づけられています。

Rose, McCloghrie & Davin                                       [Page 11]

RFC 1187           Bulk Table Retrieval with the SNMP       October 1990

ローズ、McCloghrie、およびデーヴィン[11ページ]RFC1187は1990年10月にSNMPとのテーブル検索を膨らませます。

   on adaptive timers in TCP.  The parallelization modifications were
   originally suggested by Jeffrey D. Case.

TCPの適応型のタイマに関して。 並列化変更は元々、ジェフリーD.Caseによって勧められました。

   Finally, the comments of the following individual is acknowledged:

最終的に、以下の個人のコメントは承諾されます:

      Frank Kastenholz, Racal-Interlan

フランクKastenholz、Racal-Interlan

7.  References

7. 参照

   [1] Case, J., Fedor, M., Schoffstall, M., and J. Davin, Simple
       Network Management Protocol (SNMP), RFC 1157, SNMP Research,
       Performance Systems International, Performance Systems
       International, MIT Laboratory for Computer Science, May 1990.

[1] ケースとJ.とヒョードルとM.とSchoffstall、M.とJ.デーヴィン、簡単なネットワーク管理プロトコル(SNMP)、RFC1157、SNMPは研究します、国際言語運用機構、国際言語運用機構、MITコンピュータサイエンス研究所、1990年5月。

Security Considerations

セキュリティ問題

   Security issues are not discussed in this memo.

このメモで安全保障問題について議論しません。

Authors' Addresses

作者のアドレス

   Marshall T. Rose
   PSI, Inc.
   PSI California Office
   P.O. Box 391776
   Mountain View, CA 94039

マウンテンビュー、マーシャルT.バラψInc.ψカリフォルニアオフィスP.O. Box391776カリフォルニア 94039

   Phone: (415) 961-3380
   EMail: mrose@PSI.COM

以下に電話をしてください。 (415) 961-3380 メールしてください: mrose@PSI.COM

   Keith McCloghrie
   Hughes LAN Systems
   1225 Charleston Road
   Mountain View, CA 94043

マウンテンビュー、キースMcCloghrieヒューズLANシステム1225チャールストンRoadカリフォルニア 94043

   Phone: (415) 966-7934
   EMail: KZM@HLS.COM

以下に電話をしてください。 (415) 966-7934 メールしてください: KZM@HLS.COM

   James R. Davin
   MIT Laboratory for Computer Science, NE43-507
   545 Technology Square
   Cambridge, MA 02139

ジェームスR.デーヴィンMITコンピュータサイエンス研究所、NE43-507 545の技術の正方形のケンブリッジ、MA 02139

   Phone:  (617) 253-6020
   EMail:  jrd@ptt.lcs.mit.edu

以下に電話をしてください。 (617) 253-6020 メールしてください: jrd@ptt.lcs.mit.edu

Rose, McCloghrie & Davin                                       [Page 12]

ローズ、McCloghrie、およびデーヴィン[12ページ]

一覧

 RFC 1〜100  RFC 1401〜1500  RFC 2801〜2900  RFC 4201〜4300 
 RFC 101〜200  RFC 1501〜1600  RFC 2901〜3000  RFC 4301〜4400 
 RFC 201〜300  RFC 1601〜1700  RFC 3001〜3100  RFC 4401〜4500 
 RFC 301〜400  RFC 1701〜1800  RFC 3101〜3200  RFC 4501〜4600 
 RFC 401〜500  RFC 1801〜1900  RFC 3201〜3300  RFC 4601〜4700 
 RFC 501〜600  RFC 1901〜2000  RFC 3301〜3400  RFC 4701〜4800 
 RFC 601〜700  RFC 2001〜2100  RFC 3401〜3500  RFC 4801〜4900 
 RFC 701〜800  RFC 2101〜2200  RFC 3501〜3600  RFC 4901〜5000 
 RFC 801〜900  RFC 2201〜2300  RFC 3601〜3700  RFC 5001〜5100 
 RFC 901〜1000  RFC 2301〜2400  RFC 3701〜3800  RFC 5101〜5200 
 RFC 1001〜1100  RFC 2401〜2500  RFC 3801〜3900  RFC 5201〜5300 
 RFC 1101〜1200  RFC 2501〜2600  RFC 3901〜4000  RFC 5301〜5400 
 RFC 1201〜1300  RFC 2601〜2700  RFC 4001〜4100  RFC 5401〜5500 
 RFC 1301〜1400  RFC 2701〜2800  RFC 4101〜4200 

スポンサーリンク

<BGSOUND> 効果音・BGMを指定する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る