sFlow.org Peter Phaal http://www.sFlow.org/ InMon Corp. info@sflow.org Marc Lavine Foundry Networks July 2004 sFlow Version 5 Copyright Notice 著作権表示 Copyright (C) sFlow.org (2004). All Rights Reserved. Abstract 概要 This memo defines sFlow.org's sFlow system. sFlow is a technology for monitoring traffic in data networks containing switches and routers. In particular, it defines the traffic sampling mechanisms implemented in sFlow Agents, the sFlow MIB for configuring sFlow Agents, and the format of the sFlow Datagram that carries traffic measurement data from sFlow Agents to an sFlow Collector. このメモは、sFlow.orgのsFlowシステムについて定義するものです。sFlowは、スイッチとルータで構成されるデータネットワークのトラフィックをモニタする技術です。特に、このメモは、sFlowエージェントに実装されるサンプリングメカニズム、sFlowエージェントを設定するためのsFlow MIB、sFlowエージェントからsFlowコレクタへ計測データを転送するsFlowデータグラムのフォーマットを定義しています。 Table of Contents 目次 1. Overview ...................................................... 2 2. Terminology and Architecture .................................. 2 2.1 Terminology ............................................... 2 2.2 sFlow Reference Model ..................................... 4 3. Sampling Mechanisms ........................................... 6 3.1 Packet Flow Sampling ...................................... 6 3.2 Counter Sampling .......................................... 7 4. sFlow MIB ..................................................... 8 4.1 The SNMP Management Framework ............................. 8 4.2 Structure of the sFlow MIB Module ......................... 9 4.2.1 The Receiver Group .................................. 9 4.2.2 The Flow Sampling Group ............................. 9 4.2.3 The Counter Polling Group ........................... 10 4.3 Definitions ............................................... 11 5. sFlow Datagram Format ......................................... 23 6. Security Considerations ....................................... 43 6.1 Configuration ............................................. 44 6.2 Transport ................................................. 44 6.3 Confidentiality ........................................... 44 v1.00 sFlow.org [Page 1] FINAL sFlow Version 5 July 2004 7. References .................................................... 45 8. Author's Addresses ............................................ 47 Appendix A: Differences Between sFlow Versions 1 and 2 ........ 49 Appendix B: Random Number Generation .......................... 50 1. Overview 概要 sFlow is a technology for monitoring traffic in data networks containing switches and routers. sFlowは、スイッチとルータによって構成されるデータネットワークのトラフィックをモニタする技術です。 The sFlow monitoring system consists of an sFlow Agent (embedded in a switch or router or in a standalone probe) and a central sFlow Collector. The architecture and sampling techniques used in the sFlow monitoring system were designed for providing continuous site- wide (and enterprise-wide) traffic monitoring of high speed switched and routed networks. This design specifically addresses issues associated with: sFlowモニタリングシステムは、(スイッチ、ルータ、独立したプローブに組み込まれた)sFlowエージェントと中央のsFlowコレクタから構成されています。sFlowモニタリングシステムで使用されるアーキテクチャとサンプリング技術は、高速なスイッチとルータのネットワークでのサイト内トラフィックを連続的にモニタ可能なように設計されています。このデザインは、次のような方向性で検討されています。 o Accurately monitoring network traffic at Gigabit speeds and higher. *ギガビット及びそれ以上のスピードで正確にネットワークトラフィックをモニタする。 o Scaling to monitor tens of thousands of agents from a single sFlow Collector. *一つのsFlowコレクタで、数万のエージェントをモニタできる。 o Extremely low cost sFlow Agent implementation. *sFlowエージェントを非常に低コストに実装可能とする。 The sFlow Agent uses sampling technology to capture traffic statistics from the device it is monitoring. sFlow Datagrams are used to immediately forward the sampled traffic statistics to an sFlow Collector for analysis. sFlowエージェントは、モニタするデバイスからトラフィックの統計情報を取得するためにサンプリング技術を使用します。解析を行うsFlowコレクタにサンプルされたトラフィック統計情報即座に送信するためにsFlowデータグラムが使用されます。 This document describes the sampling mechanisms used by the sFlow Agent, the SFLOW MIB used by the sFlow Collector to control the sFlow Agent, and the sFlow Datagram Format used by the sFlow Agent to send traffic data to the sFlow Collector. このドキュメントでは、sFlowエージェントで使用されるサンプリング技術、sFlowコレクタがsFlowエージェントを制御するためのSFLOW MIB、sFlowエージェントが、sFlowコレクタにトラフィックデータを送信するための使われるdFlowデータのフォーマットについて説明します。 This memo describes sFlow version 5. It replaces sFlow version 4 described in RFC 3176 [1]. The differences between sFlow versions 4 and 5 are described in Appendix A. このメモは、sFlowバージョン5について説明しています。これは、RFC3176で説明されたsFlowバージョン4を置き換えるものです。バージョン4と5の違いは、付録Aで説明します。 2. Terminology and Architecture  用語とアーキテクチャ This section defines the elements of the sFlow system. このセクションでは、sFlowシステムの構成要素を定義します。 2.1 Terminology 用語 v1.00 sFlow.org [Page 2] FINAL sFlow Version 5 July 2004 The terms used to specify the sFlow architecture are defined here for reference. sFlowのアーキテクチャを説明するために使用される用語を、参照の目的でここで定義します。 o Network Device: A piece of network equipment, such as a switch or router, that forwards data packets. *ネットワークデバイス:スイッチやルータなどのように、データパケットを転送するネットワーク機器 o Data Source: A Data Source refers to a location within a Network Device that can make traffic measurements. Possible Data Sources include interfaces, physical entities within the device such as the backplane and VLANs. Each Data Source has access to a subset of the traffic flowing through the device. *データソース:データソースは、トラフィック測定が可能なネットワークデバイス内の場所を示す。データソースには、インターフェイス、バックプレーンやVLANなどのデバイス内の物理的エンティティが含まれます。それぞれののデータソースは、デバイスを通過するトラフィックのサブセットにアクセスします。 The type and number of Data Sources needed to completely monitor a device will depend on the internal architecture of that device. Typically a Data Source is defined for each physical interface on the device since this ensures that every packet transiting the device to be observed. デバイスを完全にモニタするために必要なデータソースの種類や数は、デバイスの内部アーキテクチャに依存します。一般的に、データソースは、デバイスを通過する全てのパケットをモニタ可能なデバイスの物理インターフェイスとして定義されます。 o Packet Flow: A Packet Flow is defined as the path or trajectory that a packet takes through a Network Device (i.e. the path that a packet takes as it is received on one interface, is subject to a switching/routing decision and is then sent on another interface. In the case of a one-armed router, the source and destination interface could be the same. In the case of a broadcast or multicast packet there may be multiple destination interfaces). *パケットフロー:パケットフローは、ネットワークデバイスを通過するパケットのパス(経路)として定義されます。(ここで、パケットが通過するパスは、一つのインターフェイスで受信し、スイッチ/ルータで判断し、他のインターフェイスから送信されます。1ポートのルータの場合は、送信元とあて先のインターフェイスは、同じです。ブロードキャストとマルチキャストのパケットの場合は、複数のあて先インターフェイスになります。) o Packet Flow Sampling: Packet Flow Sampling refers to the random selection of a fraction of the Packet Flows observed at a Data Source. *パケットフローサンプリング:パケットフローサンプリングは、データソースでモニタしているパケットフローのランダムな断片です。 o Sampling Rate: The Sampling Rate specifies the ratio of packets observed at the Data Source to the samples generated. For example a sampling rate of 100 specifies that, on average, 1 sample will be generated for every 100 packets observed. *サンプリングレート:サンプリングレートは、データソースでモニタされるパケット数と生成されたサンプルの比率です。例えば、サンプリングレートが100ならば、平均的に、100パケットに1パケットのサンプルが生成されます。 o Packet Flow Record: A Packet Flow Record describes the attributes of a Packet Flow. There are two types of information in a flow record: *パケットフローレコード:パケットフローレコードは、パケットフローの属性を示すものです。2つの種類のレコードがあります。 1 Information on the packet itself, typically a packet header, packet length and packet encapsulation. 1.パケット自身の情報、一般的に、パケットヘッダ、パケット長、パケットカプセル化 2 Information about the path the packet took through the device, including information relating to the selection of the forwarding path. 2.転送経路選択に関係する情報を含む、デバイスを通過するパケットの経路に関する情報 o Counter Sampling: Periodic sampling or polling of counters associated with a Data Source. *カウンタサンプル:データソース上で、定期的計測されたカウンタ v1.00 sFlow.org [Page 3] FINAL sFlow Version 5 July 2004 o Sampling Interval: The time period between successive Counter Samples. *サンプル間隔:カウンタサンプルの間隔 o Counter Record: A record containing counter values associated with a Data Source at the end of a Sampling Interval. *カウンタレコード:サンプル間隔毎に生成されるデータソースに関連したカウンタ値のレコード o sFlow Instance: An sFlow Instance refers to a measurement process associated with a Data Source. There may be one or more sFlow Instances associated with a single Data Source. *sFlowインスタンス:sFlowインスタンスは、データソースに関連した計測プロセスです。一つのデータソースに対して、1つまたは複数のsFlowインスタンスを関連づけできます。 Each sFlow Instance operates independently of other sFlow Instances, for example if Packet Flow Sampling instances each have their own Sampling Rates and Counter Sampling instaces have their own Sampling Interval. それぞれのsFlowインスタンスは、他のsFlowインスタンスと独立して動作します。 例えば、パケットフローサンプリングインスタンスは、それぞれ独自のサンプルレートを設定でき、カウンタサンプリングインスタンスは、それぞれ独自のサンプリング間隔を設定できます。 o sFlow Agent: The sFlow Agent provides an interface for configuring the sFlow Instances within a device. The sFlow Agent may support command line and/or SNMP based configuration. *sFlowエージェント:sFlowエージェントは、デバイス内で、sFlowインスタンスの設定のためのインターフェイスを提供するものです。sFlowエージェントは、コマンドラインとSNMPベースの設定機能をサポートします。(片方または両方) The agent is also responsible for maintaining measurement sessions with sFlow Collectors. It marshals data into sFlow Datagrams to send to sFlow Collectors. The sFlow Agent frees resources when a session expires. エージェントは、また、sFlowコレクタとの計測セッションを管理する機能も提供します。それは、データをsFlowデータグラムに整列してsFlowコレクタに送信します。sFlowエージェントは、セッションが完了した時に、リソースを解放します。 o sFlow Sub-Agent: In the case where sFlow is implemented on a distributed device architecture it may be desireable to distribute the sFlow Agent functionality. Each sFlow Sub-Agent is responsible for a particular subset of Data Sources. *sFlowサブエージェント:sFlowが分散デバイスアーキテクチャに実装された場合、sFlowエージェントの機能を分散するためのものです。それぞれのsFlowサブエージェントは、データソースの特定のサブセットのための機能します。 o sFlow Collector: An sFlow Collector receives sFlow Datagrams from one or more sFlow Agents. The sFlow Collector may also configure sFlow Instances using the configuration mechanisms provided by the sFlow Agent. *sFlowコレクタ:sFlowコレクタは、1つ又は、複数のsFlowエージェントからsFlowデータグラムを受信します。sFlowコレクタはまた、sFlowエージェントが提供する設定メカニズムを使ってsFlowインスタンスを設定できます。 o sFlow Datagram: The sFlow Datagram is a UDP datagram that contains the measurement data, and information about the measurement source and process. The format of the sFlow Datagram is defined in this document. *sFlowデータグラム:sFlowデータグラムは、計測ソース、プロセスに関する情報、計測データを含むUDPデータグラムです。sFlowデータグラムのフォーマットは、このドキュメントで定義されます。 2.2 sFlow Reference Model sFlow参照モデル The figure below shows the relationships between the different entities within an sFlow system. 以下の図に、sFlowシステムの個々のエンティティ間の関係を示します。 v1.00 sFlow.org [Page 4] FINAL sFlow Version 5 July 2004 +--------------------------------------+ | Network Device | | | | +--------------------------------+ | | | Agent | | | | | | | | +--------------------------+ | | +-------------+ | | | Sub-agent | | | SNMP | | | | | | +<-+------------>+ | | | | +--------------------+ | | | | Collector | | | | | Data Source | | | | Datagram | | | | | | | | +--+------------>+ | | | | | +-------------+ | | | | | | | | | | | Instance | | | | | +-------------+ | | | | +-------------+ | | | | . | | | | . | | | | . | | | | . | | | | +-------------+ | | | | +-------------+ | | | | SNMP | | | | | | | Instance | | | +<-+--+--------->+ | | | | | +-------------+ | | | | | | Collector | | | | +--------------------+ | | | | Datagram | | | | | . | +--+--+--+------>+ | | | | . | | | | | | | | | | +--------------------+ | | | | | +-------------+ | | | | Data Source | | | | | | | | | +--------------------+ | | | | | | | +--------------------------+ | | | | | | . | | | | | | . | | | | | | +--------------------------+ | | | | | | | Sub-agent | | | | | | | +--------------------------+ | | | | | +--------------------------------+ | | | +--------------------------------------+ | | . | | . | | +--------------------------------------+ | | | Network Device | | | | +--------------------------------+ | | | | | +<-+--+ | | | Agent | | | | | +--+-----+ | +--------------------------------+ | +--------------------------------------+ An sFlow Collector makes use of SNMP to communicate with an sFlow Agent in order to configure sFlow monitoring on a Network Device. The sFlow MIB describes the managed objects needed to configure an sFlow sFlowコレクタは、ネットワークデバイスのsFlowモニタ機能を設定するために、sFlowエージェントとSNMPを使って通信します。sFlow MIBで、sFlowエージェントの設定を行うために管理オブジェクトを定義しています。 v1.00 sFlow.org [Page 5] FINAL sFlow Version 5 July 2004 Agent. Packet Flow Sampling and Counter Sampling is performed by sFlow Instances associated with individual Data Sources within the sFlow Agent. In order to perform Packet Flow Sampling, an sFlow Instance is configured with a Sampling Rate. The Packet Flow sampling process results in the generation of Packet Flow Records. In order to perform Counter Sampling, an sFlow Instance is configured with a Sampling Interval. The Counter Sampling process results in the generation of Counter Records. The sFlow Agent collects Counter Records and Packet Flow Records and sends them in the form of sFlow Datagrams to sFlow Collectors. sFlownエージェント内の個々のデータソース毎に存在するsFlowインスタンスによって、pパケットフローサンプルとカウンタサンプルが生成されます。パケットフローサンプルを生成するために、sFlowインスタンスに、サンプルレートが設定されます。カウンタサンプルを生成するために、sFlowインスタンスに、サンプル間隔が設定されます。カウンタサンプルの結果、カウンタレコードが生成されます。sFlowエージェントは、sFlowコレクタに、sFlowデータグラムの形式で、パケットフローレコードとカウンタレコードを送信します。 3. Sampling Mechanisms サンプリングメカニズム The sFlow Agent uses two forms of sampling: statistical packet-based sampling of switched or routed Packet Flows, and time-based sampling of counters. sFlowエージェントは、2つのサンプリング形式を使用します。スイッチ、ルータのパケットフローの統計的パケットベースサンプルと、カウンタの時間ベースサンプルです。 3.1 Packet Flow Sampling パケットフローサンプル The Packet Flow Sampling mechanism carried out by each sFlow Instance must ensure that any packet observed at a Data Source has an equal chance of being sampled, irrespective of the Packet Flow(s) to which it belongs. 各sFlowインスタンスで使用されるパケットフローサンプルのメカニズムは、パケットフローの属性によらず、データソースで観測されるすべてのパケットについて、平等にサンプリングする機会を保証しなければなりません。 Packet Flow Sampling is accomplished as follows: When a packet arrives on an interface, the Network Device makes a filtering decision to determines whether the packet should be dropped. If the packet is not filtered a destination interface is assigned by the switching/routing function. At this point a decision is made on whether or not to sample the packet. The mechanism involves a counter that is decremented with each packet. When the counter reaches zero a sample is taken. Whether or not a sample is taken, the counter Total_Packets is incremented. Total_Packets is a count of all the packets that could have been sampled. パケットフローサンプリングは、次のように実施します。 パケットが到着した時、フィルター機能は、パケットを破棄すべきか決定します。もし、パケットがフィルタされない場合、スイッチング機能/ルーティング機能によってあて先のインターフェイスを決定します。この時点で、パケットをサンプルするかどうか決定します。このメカニズムは、パケット毎に減算するカウンタを含んでいます。カウンタが0になった時点でサンプルを実施します。サンプルされるかどうかに関わらず、Total_Packetsのカウンタを増加させます。Total_Packetsは、サンプルされた全てのパケットのカウンタです。 Taking a sample involves either copying the packet's header, or extracting features from the packet. See sFlow Datagram Format for a description of the different forms of sample. サンプリングは、パケットヘッダのコピーとパケットからの情報抽出機能を含んでいます。サンプルの違った形式の説明のためのsFlowデータグラムフォーマット参照してください。 Every time a sample is taken, the counter Total_Samples, is incremented. Total_Samples is a count of the number of samples generated. Samples are sent by the sFlow Instance to the sFlow Agent for processing. The sample includes the packet information, and the values of the Total_Packets and Total_Samples counters. The sFlow Agent may then use the samples to obtain additional information about the packet's trajectory through the device. Such information depends on the forwarding functions of the device. Examples of trajectory information provided are source and destination interface, source and サンプリングの度に、Total_Samplesカウンタを増加させます。Total_Samplesは、サンプル生成の回数です。サンプルは、サンプリングエンティティからsFlowエージェントへ処理のために送信されます。サンプルには、パケットの情報とTotal_Packets、Total_Samplesのカウンタが含まれます。sFlowエージェントは、デバイスを通過するパケットの経路情報など追加の情報を提供するためにサンプルを使用することができます。そのような情報は、デバイスの転送機能に依存します。提供される経路情報の例としては、送信元、あて先のインターフェイス、送信元、あて先のVLAN、ネクストホップのサブネット、完全ASパスなどがあります。転送情報の詳細は、sFlowデータグラムフォーマットに記載されています。 v1.00 sFlow.org [Page 6] FINAL sFlow Version 5 July 2004 destination VLAN, next hop subnet, full AS path. Details of the forwarding information are given in the sFlow Datagram Format. When a sample is taken, the counter indicating how many packets to skip before taking the next sample should be reset. The value of the counter should be set to a random integer where the sequence of random integers used over time should be such that: サンプルが取得された時、次のサンプルを取得するまでスキップするカウントをリセットします。このカウンタの値は、乱数に設定します。この乱数のシーケンスは、モニタ期間において、次の条件が必要です。 (1) Total_Packets/Total_Samples = Sampling Rate An alternative strategy for Packet Flow Sampling is to generate a random number for each packet, compare the random number to a preset threshold and take a sample whenever the random number is smaller than the threshold value. Calculation of an appropriate threshold value depends on the characteristics of the random number generator, however, the resulting sample stream must still satisfy (1). パケットサンプリングの第2の方法として、受信パケット毎に、乱数を発生させます、この乱数を設定した閾値と比較します、乱数が閾値よりも小さい場合にサンプリングを行います。適切な閾値の計算は、乱数ジェネレータの性質に依存します。しかしながら、ストリームのサンプリング結果は、(1)の条件を満たさなければなりません。 Appendix B further discusses the requirements for the random number generator. 付録Bに、乱数ジェネレータの要求仕様に関して、詳しく記載しています。 3.2 Counter Sampling カウンタサンプル The primary objective of the Counter Sampling is to efficiently, periodically export counters associated with Data Sources. カウンタサンプルの主な目的は、データソースに関連したカウンタを効果的かつ定期的に出力することです。 Typically a Data Source will be associated with each interface on the device that can be an ingress or egress interface for Packet Flows. These interface Data Sources will then be used to export counters relating to the interfaces. 一般的にデータソースは、デバイスのインターフェイスです。それは、パケットフローの入力及び出力です。これらのインターフェイスデータソースは、インターフェイスに関連したカウンタを出力するために使用されます。 A maximum Sampling Interval is assigned to each sFlow Instance associated with an interface Data Source, but the sFlow Agent is free to schedule polling in order maximize internal efficiency. 最大サンプリング間隔は、インターフェイスデータソースに関連したsFlowインスタンス毎に設定されます。しかし、sFlowエージェントは、最大の内部効率を確保するためにポーリングスケジュールを自由に設定できます。 Packet Flow Sampling and Counter Sampling are designed as part of an integrated system. Both types of sample are combined in sFlow Datagrams. Since Packet Flow Sampling will cause a steady, but random, stream of sFlow Datagrams to be sent to the sFlow Collector, counter samples may be taken opportunistically in order to fill these datagrams. パケットフローサンプルと、カウンタサンプルは、統合システムの一部として設計されています。両方のタイプのサンプルは、sFlowデータグラムに合成されます。パケットフローサンプルは、ランダムに発生し、sFlowデータグラムは、sFlowコレクタに送信されます。カウンタサンプルは、これらのデータグラムに含める機会があります。 One strategy for counter sampling has the sFlow Agent keep a list of counter sources being sampled. When a Packet Flow Sample is generated the sFlow Agent examines the list and adds counters to the sample datagram, least recently sampled first. Counters are only added to the datagram if the sources are within a short period, 5 seconds say, of failing to meet the required Sampling Interval (see sFlowCounterSamplingInterval in SFLOW MIB). Whenever a counter カウンタサンプルのための一つの方式は、sFlowエージェントは、サンプリングするカウンタリソースのリストを保持します。パケットフローサンプルが生成された時点で、sFlowエージェントは、リストを確認し、最も古いサンプルを先にデータグラムに追加します。ソースは、要求されたサンプリング間隔に一致しない、短い間隔(5秒など)でカウンタを追加します。(SFLOW MIBのsFlowCounterSamplingIntervalを参照) v1.00 sFlow.org [Page 7] FINAL sFlow Version 5 July 2004 source's statistics are added to a sample datagram, the time the counter source was last sampled is updated and the counter source is placed at the end of the list. Periodically, say every second, the sFlow Agent examines the list of counter sources and sends any counters that need to be sent to meet the sampling interval requirement. カウンタソースの統計情報がサンプルデータグラムに追加された時、カウンタソースの最終サンプル時刻が更新され、カウンタソースは、リストの最後に移動します。定期的に(例えば1秒毎)sFlowエージェントは、カウンタソースのリストを確認し、サンプリング間隔の要求に一致するようにカウンタサンプルを送信します。 If the sFlow Agent chooses to regularly schedule counter sampling, then it should schedule each counter source at a different start time (preferably randomly) so that counter sampling is not synchronised within an agent or between agents. もし、sFlowエージェントが、定期的なカウンタサンプリングスケジュール方式を選択する場合、各カウンタソースは、違った(ランダムな)開始時刻でスケジュールされるべきです。結果、カウンタサンプルは、エージェント内、エージェント間で同期しません。 4. sFlow MIB The sFlow MIB provides a standard mechanism for remotely controlling and configuring an sFlow Agent. sFlow MIBは、sFlowエージェントの制御インターフェイスを定義します。このインターフェイスは、sFlowエージェントをリモート設定/制御する標準のメカニズムを提供します 4.1 The SNMP Management Framework SNMP管理フレームワーク The SNMP Management Framework presently consists of five major components: SNMP管理フレームワークは、5つの主要なコンポーネントから構成されます。 o An overall architecture, described in RFC 2571 [2]. *全体的なアーキテクチャは、RFC2571で定義されます。 o Mechanisms for describing and naming objects and events for the purpose of management. The first version of this Structure of Man- agement Information (SMI) is called SMIv1 and described in STD 16, RFC 1155 [3], STD 16, RFC 1212 [4] and RFC 1215 [5]. The second version, called SMIv2, is described in STD 58, RFC 2578 [6], STD 58, RFC 2579 [7] and STD 58, RFC 2580 [8]. *管理目的のオブジェクトやイベントの名前付け、説明のメカニズム このSMIの最初のバージョンは、SMIv1と呼ばれ、STD16(RFC1155,RFC1212,RFC1215)で定義されています。2番目のバージョンは、SMIv2と呼ばれ、STD58(RFC2578,RFC2579,RFC2580)で定義されます。 o Message protocols for transferring management information. The first version of the SNMP message protocol is called SNMPv1 and described in STD 15, RFC 1157 [9]. A second version of the SNMP message protocol, which is not an Internet standards track proto- col, is called SNMPv2c and described in RFC 1901 [10] and RFC 1906 [11]. The third version of the message protocol is called SNMPv3 and described in RFC 1906 [11], RFC 2572 [12] and RFC 2574 [13]. *管理情報の転送のためのメッセージプロトコル SNMPメッセージプロトコルの最初のバージョンは、SNMPv1とよばれSTD15(RFC1157)で定義されています。SNMPメッセージプロトコルの第2のバージョンは、インターネット標準プロトコルではありませんが、SNMPv2cとよばれ、RFC1901とRFC1906で定義されています。メッセージプロトコルの第三のバージョンは、SNMPv3と呼ばれ、RFC1906,RFC2572,RFC2574で定義されています。 o Protocol operations for accessing management information. The first set of protocol operations and associated PDU formats is described in STD 15, RFC 1157 [9]. A second set of protocol opera- tions and associated PDU formats is described in RFC 1905 [14]. *管理情報のアクセスのためのプロトコル操作 最初のバージョンのプロトコル操作とPDUフォーマットは、STD15(RFC1157)で定義されています。第二のバージョンのプロトコル操作とPDUフォーマットは、RFC1905で定義されています。 o A set of fundamental applications described in RFC 2573 [15] and the view-based access control mechanism described in RFC 2575 [16]. *主要なアプリケーションについて、RFC2573で、ビューベースアクセス制御について、RFC2575で定義しています。 A more detailed introduction to the current SNMP Management Framework v1.00 sFlow.org [Page 8] FINAL sFlow Version 5 July 2004 can be found in RFC 2570 [17]. さらに詳細の現在のSNMP管理フレームワークについては、RFC2570を参照ください。 Managed objects are accessed via a virtual information store, termed the Management Information Base or MIB. Objects in the MIB are defined using the mechanisms defined in the SMI. 管理オブジェクトは、MIBと呼ばれる仮想情報記憶によってアクセスされます。MIBのオブジェクトは、SMIで定義されたメカニズムで定義されます。 This memo specifies a MIB module that is compliant to the SMIv2. A MIB conforming to the SMIv1 can be produced through the appropriate translations. The resulting translated MIB must be semantically equivalent, except where objects or events are omitted because no translation is possible (use of Counter64). Some machine readable information in SMIv2 will be converted into textual descriptions in SMIv1 during the translation process. However, this loss of machine readable information is not considered to change the semantics of the MIB. このメモでは、SMIv2によりMIBモジュールを定義します。MIBはSMIv1形式に適切な変換が可能です。MIBの変換結果は、意味的には同じです。Counter64の使用など、オブジェクトやイベントの変換が困難な場合があります。SMIv2で定義されたコンピュータが読み込み可能な情報は、変換プロセスで、コメントに変換されます。しかしながら、このような情報のロスは、MIBの意味の変更を考える必要はありません。 4.2 Structure of the SFLOW MIB Module SFLOW MIBの構造 The MIB consists of three groups of objects: the receiver group, the flow sampling group and the counter polling group. MIBは、3つのオブジェクトグループから構成されています。 レシーバグループ、サンプリンググループ、カウンタポーリンググループです。 4.2.1 The Receiver Group レシーバーグループ The receiver group defines the set of objects used to maintain an sFlow session between an sFlow Agent and an sFlow Collector. レシーバーグループは、sFlowエージェントとsFlowコレクタ間のsFlowセッションを管理するために使用されるオブジェクトを定義します。 Before making any configuration changes, an sFlow Collector must first find a free row in the receiver table and then claim it by writing its owner string and a reservation time into a free row in the receiver table. A session will automatically time out, and the associated resources freed, unless it is periodically refreshed by the the collector. By periodically refreshing its receiver table entry, an sFlow Collector ensures that its address is learned by any bridges on the path to the sFlow Agent, minimizing the chances that the sFlow Datagrams will be flooded by a bridge. 設定を変更する前に、sFlowコレクタは、先にレシーバーテーブルの空きエントリーを検索する必要があります。次に、レシーバーテーブルの空きエントリーにオーナー文字列と予約時間を書き込むことで、それを確保します。コレクタが定期的に更新しない限り、セッションは、自動的にタイムアウトし、リソースは解放されます。定期的にレシーバーテーブルのエントリーを更新すること、sFlowコレクタのアドレスを、sFlowエージェントまでの経路にあるブリッジに学習させます。これは、sFlowデータグラムが、ブリッジ上で氾濫する期間を最小限にするためです。 Entries cannot be added to or removed from the receiver group table. An sFlow Agent implementor should limit the number of entries to ensure that the number of concurrent sFlow sessions is limited to a number that will not exceed that capacity of the device. エントリーは、レシーバーテーブルに追加や削除はできません。sFlowエージェントの実装者は、同時設定可能なsFlowセッションを制限することによってデバイスの容量を越えないことを保証するために、このエントリーの数を制限すべきです。 Having acquired a row in the receiver table, the sFlow Collector specifies an address and port that it will use to receive sFlow Datagrams. The maximum size of sFlow Datagrams can be configured in order to prevent packet fragmentation. 獲得したレシーバーテーブルのエントリーを持つ、sFlowコレクタは、sFlowデータグラムを受信するためのアドレスとポート番号を設定します。パケットのフラグメントを防ぐために、sFlowデータグラムの最大サイズを設定できます。 4.2.2 The Flow Sampling Group フローサンプリンググループ v1.00 sFlow.org [Page 9] FINAL sFlow Version 5 July 2004 The flow sampling group defines a set of locations, or Data Sources, in the device that are capable of Packet Flow sampling. Data Sources may correspond to interfaces, VLANs or other entities within the device. The set of Data Sources advertised by an sFlow Agent depends on the device architecture. For example, a device may have packet sampling integrated into its interface ASICs, in which case it will advertise Data Sources for each interface. Alternatively, a software router may simply have one Data Source associated with the routing module. フローサンプリンググループは、デバイス上でパケットフローサンプルが取得可能な場所やデータソースを定義します。データソースは、デバイス上のインターフェイス、VLAN,その他のエンティティに関係しています。sFlowエージェント上で使用可能なデータソースは、デバイスの構造に依存します。例えば、デバイスがパケットサンプリング機能を集積したインターフェイスASICをもつ場合、データソースは、各インターフェイスです。また、ソフトウェアルータは、単純にルーティングモジュールに関連した1つのデータソースを持ちます。 Each Data Source may be capable of supporting more than one independent sampling process, in which case there will be multiple sFlow Instances associated with each Data Source. Each sFlow Instance can have its own independent sampling rate. 各データソースは、独立した1つ以上のサンプリングプロセスをサポートします。この場合、各データソースには、複数のsFlowインスタンスが存在します。各sFlowインスタンスは、独立したサンプリングレートを設定できます。 Even if the Data Source hardware is only capable of generating a single stream of packet samples, it is possible for the sFlow Agent to use sub-sampling to create multiple sFlow Instances for the Data Source. For example, suppose there are two sFlow Instances, one configured with a Sampling Rate of 512 and the other with a rate of 1024. The hardware can be configured to sample at a rate of 512 and then these samples can be sub-sampled in software using a sampling rate of 2 to achieve the 1024 rate. Only allowing Sampling Rates that are powers of two is attractive since it allows the smallest configured Sampling Rate to be set in hardware and all other sampling rates can be obtained in software by sub-sampling. データソースハードウェアが、単一のパケットサンプルストリームしか生成できない場合でも、sFlowエージェントは、そのデータソースのためにサブサンプリングを使うことにより、複数のsFlowインスタンスを作成できます。例えば、2つのsFlowインスタンスがあり、1つは、サンプリングレート512に、もう一つは、1024に設定されたとします。ハードウェアは、サンプリングレートを512に設定します。これらのサンプルは、レートが1024になるように、サンプリングレート2でソフトウェアによってサブサンプリングします。設定可能なサンプリングレートは、2のN乗が最適です?ハードウェアには、最も小さなサンプリングレートを設定します。その他の全ては、サブサンプリングによってソフトウェアで実現します。 An Flow Sampling Instance may have a minimum allowable Sampling Rate. Setting a conservative value that ensures that the sFlow Agent can never become overloaded with Packet Flow Samples under worst case traffic loads is not advisable. This yeilds minimum Sampling Rate values that are very high and don't reflect typical traffic levels. The Agent may implement an automated one-way backoff of the Sampling Rate that triggers whenever an excessive number of samples per second is generated. When the triggered the Agent can double the Sampling Rate. If the threshold is exceeded again, the Sampling Rate is doubled again. The Sampling Rate will quickly reach a value that is sustainable. The sampling rate must stay at its new value and never automatically return to the originally configured value. The value may be changed back manually through the command line interface or via the sFlow MIB. This scheme protects against poorly chosen Sampling Rates or unexpected changes in peak traffic rates, but still allows low Sampling Rates to be safely selected where appropriate. sFlowのサンプリングインスタンスは、設定可能な最小サンプリングレートがあります。sFlowエージェントが最悪のケースのトラフィック負荷状態でもパケットフローサンプルにより過負荷にならないように、控えめな値を設定します。この最小サンプリングレートは、非常に高く、通常のトラフィックレベルを反映していません。エージェントは、単位時間に過度のサンプルが生成された場合に起動するサンプリングレート自動調整機能を実装するとよいでしょう。この機能が起動された場合、エージェントは、サンプリングレートを2倍にします。再度、起動された場合、もう一度2倍にします。サンプリングレートは、迅速に最適な値になります。サンプリングレートは、新しい値を保持し、決して、設定された値に自動的に戻るべきではありません。値は、コマンドライン又はSFLOW MIBによって手動で戻すことは可能です。この機能は、サンプリングレートの安易な選択やピークトラフィック負荷の不意の変化から保護するためのものです。しかし、安全のために選択された低いサンプリングレートも、有効です。 4.2.3 The Counter Polling Group カウンタポーリンググループ The counter polling group defines a set of locations, or Data Sources, in the device that can provide counter information. カウンタポーリンググループは、 v1.00 sFlow.org [Page 10] FINAL sFlow Version 5 July 2004 Typically the Data Sources will be the interfaces on the device. Each Data Source may be capable of supporting more than one independent polling process, in which case there will be multiple counter polling instances associated with each data source. Each counter polling instance can have its own independent polling interval. 4.3 Definitions 定義 SFLOW-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Integer32, enterprises FROM SNMPv2-SMI TEXTUAL-CONVENTION FROM SNMPv2-TC SnmpAdminString FROM SNMP-FRAMEWORK-MIB OwnerString FROM RMON-MIB InetAddressType, InetAddress FROM INET-ADDRESS-MIB MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF; sFlowMIB MODULE-IDENTITY LAST-UPDATED "200309240000Z" -- September 24, 2003 ORGANIZATION "sFlow.org" CONTACT-INFO "Peter Phaal sFlow.org http://www.sflow.org/ Tel: +1-415-283-3260 Email: peter.phaal@sflow.org" DESCRIPTION "The MIB module for managing the generation and transportation of sFlow data records." sFlowdデータレコードの生成と転送を管理するためのMIBモジュール -- -- Revision History -- 更新履歴 REVISION "200310180000Z" -- November 18, 2003 DESCRIPTION "Version 1.3 (draft 5) v1.00 sFlow.org [Page 11] FINAL sFlow Version 5 July 2004 Allow set to SFlowReceiver if it doesn't change value." 値を変更しない場合、SFlowReceiverを設定可能とした。 REVISION "200309240000Z" -- September 24, 2003 DESCRIPTION "Version 1.3 (draft 4) Default value of sFlowRcvrAddress should be '00000000' h. Default value of sFlowCpReceiver should be 0." sFlowRcvrAddressのデフォルト値を'00000000' sFlowCpReceiverのデフォルト値と0とする。 REVISION "200304080000Z" -- April 8, 2003 DESCRIPTION "Version 1.3 (draft 3) Clarify semantics of counter polling interval, sFlowCpInterval." カウンタのポーリング間隔sFlowCpIntervalの定義を明確化 REVISION "200209170000Z" -- September 17, 2002 DESCRIPTION "Version 1.3 (draft 2) Adds support for multiple sFlow samplers per sFlowDataSource. Moved to sflow.org enterprise number. Splits flow sampling, counter polling and receiver specification into separate tables." sFlowDataSource毎に複数のsFlowサンプラーをサポートすることを追加 企業番号をsflow.orgに変更 フローサンプル、カウンタポーリング、レシーバーの仕様を別のテーブルに分離 REVISION "200107310000Z" -- July 31, 2001 DESCRIPTION "Version 1.2 Brings MIB into SMI v2 compliance." SMIv2形式のMIBに変更 REVISION "200105010000Z" -- May 1, 2001 DESCRIPTION "Version 1.1 Adds sfDatagramVersion." sfDatagramVersionを追加 ::= { enterprises sflow(14706) 1 } sFlowAgent OBJECT IDENTIFIER ::= { sFlowMIB 1 } SFlowDataSource ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Identifies a source of sFlow data. sFloのソースを識別 The following data source types are currently defined: 次のデータソースが現在定義されています。 v1.00 sFlow.org [Page 12] FINAL sFlow Version 5 July 2004 - ifIndex. SFlowDataSources of this traditional form are called 'port-based'. Ideally the sampling entity will perform sampling on all flows originating from or destined to the specified interface. However, if the switch architecture only allows input or output sampling then the sampling agent is permitted to only sample input flows input or output flows. Each packet must only be considered once for sampling, irrespective of the number of ports it will be forwarded to. Note: Port 0 is used to indicate that all ports on the device are represented by a single data source. - sFlowFsPacketSamplingRate applies to all ports on the device capable of packet sampling. ポートベースと呼ばれる伝統的な形式のSFlowDataSources。このサンプリングエンティティは、特定のインターフェイスが送信元、あて先となる全てのフローをサンプリング可能。しかしながら、もし、そのスイッチアーキテクチャが、入力又は出力のみのサンプリングに限定される場合、エージェントは、入力フロー又は、出力フローのみが許可されます。各パケットは、転送されるポート数にかかわらず、1回だけサンプリングされます。 注意:  ポート0は、一つのデータソースによって全てのポートを示します。sFlowFsPacketSamplingRateは、パケットのサンプリング機能を持つすべてのポートに適用されます。 - smonVlanDataSource. An SFlowDataSource of this form refers to a 'Packet-based VLAN' and is called a 'VLAN-based' dataSource. is the VLAN ID as defined by the IEEE 802.1Q standard. The value is between 1 and 4094 inclusive, and it represents an 802.1Q VLAN-ID with global scope within a given bridged domain. Sampling is performed on all packets received that are part of the specified VLAN (no matter which port they arrived on). Each packet will only be considered once for sampling, irrespective of the number of ports it will be forwarded to. この形式のデータソースは、パケットベースVLANのためのもので、VLANベースデータソースと呼ばれます。は、IEEE 802.1Q標準で定義されたVLAN IDです。値は、1〜4094の範囲で設定できます。そして、それは、指定されたブリッジドメインで、802.1Q VLAN-IDとして共有されます。指定されたVLANの一部として受信された全てのパケットをサンプリングします。(どのポートで受信したかは関係ありません。)各パケットは、転送されるポートの数に関係なく、1回だけサンプリングされます。 - entPhysicalEntry. An SFlowDataSource of this form refers to a physical entity within the agent (e.g. entPhysicalClass = backplane(4)) and is called an 'entity-based' dataSource. Sampling is performed on all packets entering the resource (e.g. If the backplane is being sampled, all packets transmitted onto the backplane will be considered as single candidates for sampling irrespective of the number of ports they ultimately reach). この形式のデータソースは、(バックプレーンのような)エージェント内の物理的なエンティティのためのもので、エンティティベースデータソースと呼ばれます。そのリソースに入力されるすべてのパケットでサンプリングを行います。(例えば、バックプレーンがサンプリングされる場合、最後に到達するポートに関係なく、バックプレーンを通過するパケットの全てが、1回だけサンプリングされます。) Note: Since each SFlowDataSource operates independently a packet that crosses multiple DataSources may generate multiple flow records." 注意:  各データソースは、独立して動作するので、複数のデータソースを通過するパケットは、複数のフローレコードを生成します。 SYNTAX OBJECT IDENTIFIER SFlowInstance ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "If more than one sFlow sampler is available for this SFlowDataSource then individual samplers are distinguished using the SFlowInstance variable. The value of SFlowInstance ranges from 1..n where n is the number of samplers associated with this SFlowDataSource. もし、このデータソースのために、複数のsFlowサンプラーが存在する場合、個々のサンプラーは、SFlowInstance変数を使って定義されます。SFlowInstanceの値は、1〜nの範囲です。ここで、nは、このデータソース内のサンプラーの数です。 v1.00 sFlow.org [Page 13] FINAL sFlow Version 5 July 2004 Note: Each sFlow sampler instance must operate independently of all other instances. Setting an attribute of one sampler must not alter the the behavior and settings of other sampler instances." 注意: 各sFlowサンプラーのインスタンスは、他の全てのインスタンスと独立して動作すべきです。1つのサンプラーの属性変更は、他のサンプラーの設定を変更すべきではありません。 SYNTAX Integer32 (1..65535) SFlowReceiver ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Identify the sFlow receiver associated with this resource. このリソースに関連したsFlowレシーバーを識別します。 A value of zero indicates that this resource is available. If non-zero the value must correspond to a valid, active sFlowRcvrIndex. 値が0は、このリソースが、利用可能を示します。0以外の場合は、sFlowRcvrIndexの有効な値を設定すべきです。 If the value is currently zero it may be set to any active entry in the sFlowRcvrTable. If the value is not zero then a set to anything other than zero or its current value will result in an SNMP error (bad value). もし、値が現在0の場合、sFlowRcvrTableのエントリーの有効な値を設定できます。もし、値が0以外の時、0か現在の設定値以外を設定した場合、SNMPエラー(値不正)が発生するでしょう。 Setting to zero frees the resource and returns all the values in this entry to their default values. 0を設定した場合、リソースを解放し、このエントリーの他の値をデフォルト値に設定します。 If an entry in the sFlowRcvrTable expires, either because the sFlowRcvrOwner is set to the empty string or because the sFlowRcvrTimeout reaches zero, then the agent must mark all associated resources as available (by setting the associated SFlowReceiver entry to zero) and all values in these records must be restored to their default values. もし、sFlowRcvrTableのエントリーが無効になる場合(sFlowRcvrOwnerを空白に設定した場又は、sFlowRcvrTimeoutが0になった場合)エージェントは、すべての関連したリソースを利用可能状態にしなければなりません。(関連したSFlowReceiverを0にすることによって行います。)そして、これらのレコードの全ての値をデフォルト値に戻します。 This mechanism provides no enforcement and relies on the cooperation of management entities in order to ensure that competition for a resource is fairly resolved. A management entity should not make any changes to a resource without first aquiring it by successfully writing its sFlowRcvrIndex value as the SFlowReceiver for the resource." このメカニズムは、強制ではなく、リソースの競合を、公平に解決するための管理エンティティ間の協調を提供します。管理エンティティは、リソースのためにSFlowReceiverとして、自身のsFlowRcvrIndexの書き込み成功によって、最初に使用権を得る前に、リソースの変更を行うべきではありません。 SYNTAX Integer32 sFlowVersion OBJECT-TYPE SYNTAX SnmpAdminString MAX-ACCESS read-only STATUS current DESCRIPTION "Uniquely identifies the version and implementation of this MIB.このMIBの実装とバージョンを示す、ユニークな識別子 The version string must have the following structure: ;; バージョン文字列は、次の構造です。 ;; v1.00 sFlow.org [Page 14] FINAL sFlow Version 5 July 2004 where: must be '1.3', the version of this MIB. the name of the organization responsible for the agent implementation. the specific software build of this agent. ここで、 このMIBでは'1.3'固定 このエージェントを実装した組織名 エージェントのビルド番号 As an example, the string '1.3;InMon Corp.;2.1.1' indicates that this agent implements version '1.2' of the SFLOW MIB, that it was developed by 'InMon Corp.' and that the software build is '2.1.1'. 例として、'1.3;InMon Corp.;2.1.1'は、SFLOW MIBのバージョンは'1.3'、'InMon Corp.'が開発し、レビジョンは、'2.1.1'を示します。 The MIB Version will change with each revision of the SFLOW MIB. MIBバージョンは、SFLOW MIBの各レビジョンで変わります。 Management entities must check the MIB Version and not attempt to manage agents with MIB Versions greater than that for which they were designed. 管理エンティティは、MIBバージョンを確認して、設計されたMIBバージョン以上のエージェントを管理すべきではありません。 Note: The sFlow Datagram Format has an independent version number which may change independently from . 注意: sFlowデータグラムフォーマットは、独立したバージョン番号を持っています。それは、 MIBバージョンとは独立して変わります。 applies to the structure and semantics of the SFLOW MIB only." MIBバージョンは、SFLOW MIBの構造と文法のみに適用されます。 DEFVAL { "1.3;;" } ::= { sFlowAgent 1 } sFlowAgentAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "The address type of the address associated with this agent. Only ipv4 and ipv6 types are supported." ::= { sFlowAgent 2 } このエージェントに関連したアドレスの種類。ipv4とipv6がサポートされています。 sFlowAgentAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The IP address associated with this agent. In the case of a multi-homed agent, this should be the loopback address of the agent. The sFlowAgent address must provide SNMP connectivity to the agent. The address should be an invariant that does not change as interfaces are reconfigured, enabled, disabled, added or removed. A manager should be able to use the sFlowAgentAddress as a unique key that will identify this agent over extended periods of time so that a history can be maintained." このエージェントのIPアドレス、マルチホームエージェントの場合、そのエージェントのループバックアドレスを設定すべきです。(?)sFlowAgentのアドレスは、エージェントに対するSNMPによる接続性を提供すべきです。アドレスは、インターフェイスの再設定、ON/OFF、追加/削除などの変更がなされない不変であるべきです。マネージャは、拡張された期間、このエージェントを識別するためのキーとして、使用できます。これで、履歴を管理できます。 v1.00 sFlow.org [Page 15] FINAL sFlow Version 5 July 2004 ::= { sFlowAgent 3 } -- -- Receiver Table -- レシーバーテーブル sFlowRcvrTable OBJECT-TYPE SYNTAX SEQUENCE OF SFlowRcvrEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of the receivers of sFlow information." sFlow情報のレシーバーテーブル ::= { sFlowAgent 4 } sFlowRcvrEntry OBJECT-TYPE SYNTAX SFlowRcvrEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Attributes of an sFlow Receiver." sFlowレシーバーの属性 INDEX { sFlowRcvrIndex } ::= { sFlowRcvrTable 1 } SFlowRcvrEntry ::= SEQUENCE { sFlowRcvrIndex Integer32, sFlowRcvrOwner OwnerString, sFlowRcvrTimeout Integer32, sFlowRcvrMaximumDatagramSize Integer32, sFlowRcvrAddressType InetAddressType, sFlowRcvrAddress InetAddress, sFlowRcvrPort Integer32, sFlowRcvrDatagramVersion Integer32 } sFlowRcvrIndex OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS not-accessible STATUS current DESCRIPTION "Index into sFlowReceiverTable." sFlowReceiverTableのインデックス ::= { sFlowRcvrEntry 1 } sFlowRcvrOwner OBJECT-TYPE SYNTAX OwnerString MAX-ACCESS read-write STATUS current DESCRIPTION "The entity making use of this sFlowRcvrTable entry. The empty v1.00 sFlow.org [Page 16] FINAL sFlow Version 5 July 2004 string indicates that the entry is currently unclaimed. An entity wishing to claim an sFlowRcvrTable entry must ensure that the entry is unclaimed before trying to claim it. The entry is claimed by setting the owner string. The entry must be claimed before any changes can be made to other sampler objects. このsFlowRcvrTableを使用するエンティティ名、空白は、そのエントリーが未使用であることを示します。エンティティがsFlowRcvrTableのエントリを確保したい場合、確保する前に、それが未使用であることを確認すべきです。オナー文字列を設定することにより、エントリーが確保できます。他のサンプラーオブジェクトを変更する前に、エントリーを確保すべきです。 In order to avoid a race condition, the entity taking control of the sampler must set both the owner and a value for sFlowRcvrTimeout in the same SNMP set request. 競合を防ぐために、サンプラーの制御を取得するエンティティは、一つのSNMP SETリクエストでオナー文字列とsFlowRcvrTimeoutの値を設定すべきです。 When a management entity is finished using the sampler, it should set the value of sFlowRcvrOwner back to unclaimed. The agent must restore all other entities this row to their default values when the owner is set to unclaimed. It must also free all other resources associated with this sFlowRcvrTable entry. 管理エンティティが、サンプラーの使用を終了した時、sFlowRcvrOwnerを未使用(空白)に戻すべきです。エージェントは、オーナーが未使用に設定された時に、この行の他の全てのエントリーをデフォルト値に戻すべきです。また、sFlowRcvrTableのエントリーに関連する他すべてのリソースを解放するべきです。 This mechanism provides no enforcement and relies on the cooperation of management entities in order to ensure that competition for a receiver entry is fairly resolved." このメカニズムは、強制ではなく、サンプラー利用の競合を、公平に解決するための管理エンティティ間の協調を提供します。 DEFVAL { "" } ::= { sFlowRcvrEntry 2 } sFlowRcvrTimeout OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The time (in seconds) remaining before the sampler is released and stops sampling. When set, the owner establishes control for the specified period. When read, the remaining time in the interval is returned. サンプラーが、サンプリングを停止して、リソースを解放するまでの残り時間(秒単位)です。設定された時、指定された期間オナーは、制御を開始します。読み出した時、残り時間を返します。 A management entity wanting to maintain control of the sampler is responsible for setting a new value before the old one expires. サンプラーの制御を行いたい管理エンティティは、古い値が期限切れになる前に、新しい値を設定する必要があります。 When the interval expires, the agent is responsible for restoring all other entities in this row to their default values. It must also free all other resources associated with this sFlowRcvrTable entry." 期間が完了した時、エージェントは、この行の他全ての項目をデフォルト値に戻します。また、このsFlowRcvrTableのエントリーに関連する他の全てのリソースを解放すべきです。 DEFVAL { 0 } ::= { sFlowRcvrEntry 3 } sFlowRcvrMaximumDatagramSize OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write v1.00 sFlow.org [Page 17] FINAL sFlow Version 5 July 2004 STATUS current DESCRIPTION "The maximum number of data bytes that can be sent in a single sample datagram. The manager should set this value to avoid fragmentation of the sFlow datagrams." 一つのサンプルデータグラムで送信可能な最大データバイト数。マネージャは、sFlowデータグラムのフラグメントを防ぐために、この値を設定するべきです。 DEFVAL { 1400 } ::= { sFlowRcvrEntry 4 } sFlowRcvrAddressType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-write STATUS current DESCRIPTION "The type of sFlowRcvrCollectorAddress." sFlowRcvrCollectorAddressの種類 DEFVAL { ipv4 } ::= { sFlowRcvrEntry 5 } sFlowRcvrAddress OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-write STATUS current DESCRIPTION "The IP address of the sFlow collector. If set to 0.0.0.0 not sFlow datagrams will be sent." sFlowコレクタのIPアドレス、もし、0.0.0.0に設定された場合、sFlowデータグラムは送信されません。 DEFVAL { '00000000'h } -- 0.0.0.0 ::= { sFlowRcvrEntry 6 } sFlowRcvrPort OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The destination port for sFlow datagrams." sFlowデータグラムのあて先ポート番号 DEFVAL { 6343 } ::= { sFlowRcvrEntry 7 } sFlowRcvrDatagramVersion OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The version of sFlow datagrams that should be sent. When set to a value not support by the agent, the agent should adjust the value to the highest supported value less than the requested value, or return an SNMP bad value error if no such value exists." 送信するsFlowデータグラムのバージョン番号。 エージェントでサポートされない値を設定した場合、エージェントは、要求されたバージョンに最も近いバージョンに調整すべきです。又は、そのような値がない場合は、SNMPの値不正エラーを返します。 DEFVAL { 5 } v1.00 sFlow.org [Page 18] FINAL sFlow Version 5 July 2004 ::= { sFlowRcvrEntry 8 } -- -- Flow Sampling Table -- フローサンプルテーブル sFlowFsTable OBJECT-TYPE SYNTAX SEQUENCE OF SFlowFsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of the flow samplers within a device." デバイス上のフローサンプラーのテーブル ::= { sFlowAgent 5 } sFlowFsEntry OBJECT-TYPE SYNTAX SFlowFsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Attributes of a flow sampler." フローサンプラーの属性 INDEX { sFlowFsDataSource, sFlowFsInstance } ::= { sFlowFsTable 1 } SFlowFsEntry ::= SEQUENCE { sFlowFsDataSource SFlowDataSource, sFlowFsInstance SFlowInstance, sFlowFsReceiver SFlowReceiver, sFlowFsPacketSamplingRate Integer32, sFlowFsMaximumHeaderSize Integer32 } sFlowFsDataSource OBJECT-TYPE SYNTAX SFlowDataSource MAX-ACCESS not-accessible STATUS current DESCRIPTION "sFlowDataSource for this flow sampler." このフローサンプラーのデータソース ::= { sFlowFsEntry 1 } sFlowFsInstance OBJECT-TYPE SYNTAX SFlowInstance MAX-ACCESS not-accessible STATUS current DESCRIPTION "The sFlow instance for this flow sampler." このフローサンプラーのsFlowインスタンス ::= { sFlowFsEntry 2 } sFlowFsReceiver OBJECT-TYPE v1.00 sFlow.org [Page 19] FINAL sFlow Version 5 July 2004 SYNTAX SFlowReceiver MAX-ACCESS read-write STATUS current DESCRIPTION "The SFlowReceiver for this flow sampler." このフローサンプラーのSFlowReceiver DEFVAL { 0 } ::= { sFlowFsEntry 3 } sFlowFsPacketSamplingRate OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The statistical sampling rate for packet sampling from this source. このデータソースからのパケットサンプリングのための統計的サンプリングレート Set to N to sample 1/Nth of the packets in the monitored flows.Nを設定すると、モニタされたフローのパケットの1/Nがサンプリングされます。 An agent should choose its own algorithm to introduce variance into the sampling so that exactly every Nth packet is not counted. A sampling rate of 1 counts all packets. A sampling rate of 0 disables sampling. エージェントは、既存のサンプリング方式から選択します。結果、厳密に毎回1/Nのサンプルにならない場合があります。サンプリングレートを0に設定すると、サンプリングを停止することを意味します。 The agent is permitted to have minimum and maximum allowable values for the sampling rate. A minimum rate lets the agent designer set an upper bound on the overhead associated with sampling, and a maximum rate may be the result of hardware restrictions (such as counter size). In addition not all values between the maximum and minimum may be realizable as the sampling rate (again because of implementation considerations). エージェントには、サンプリングレートの最大、最小値が規定されています。最小値は、サンプリングのオーバーヘッドの最大値から規定されます。最大値は、(カウンタサイズなど)のハードウェアの制限から規定されます。更に、最大値と最小値の間の全ての値がサンプリングレートとして設定可能というわけではありません。(それは、実装上の問題です。) When the sampling rate is set the agent is free to adjust the value so that it lies between the maximum and minimum values and has the closest achievable value. エージェントにサンプリングレートが設定された時、エージェントは、最大値、最小値の範囲の適切な値に自由に調整することができます。 When read, the agent must return the actual sampling rate it will be using (after the adjustments previously described). The sampling algorithm must converge so that over time the number of packets sampled approaches 1/Nth of the total number of packets in the monitored flows." 読み出した時、実際のサンプリングレートを返します。(前述の調整が行われた後の値です。)サンプリングアルゴリズムは、モニタ期間において、モニタしたフローのパケットの1/Nをサンプリングするようにしなければなりません。 DEFVAL { 0 } ::= { sFlowFsEntry 4 } sFlowFsMaximumHeaderSize OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of bytes that should be copied from a v1.00 sFlow.org [Page 20] FINAL sFlow Version 5 July 2004 sampled packet. The agent may have an internal maximum and minimum permissible sizes. If an attempt is made to set this value outside the permissible range then the agent should adjust the value to the closest permissible value." サンプルパケットからコピーするヘッダのサイズ、エージェントは、内部的に最大値、最小値を規定できます。もし、許容範囲外の値が設定されたら、エージェントは、許可された範囲に調整して設定することができます。 DEFVAL { 128 } ::= { sFlowFsEntry 5 } -- -- Counter Polling Table -- カウンタポーリングテーブル sFlowCpTable OBJECT-TYPE SYNTAX SEQUENCE OF SFlowCpEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of the counter pollers within a device." デバイスのカウンタ管理者のテーブル ::= { sFlowAgent 6 } sFlowCpEntry OBJECT-TYPE SYNTAX SFlowCpEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Attributes of a counter poller." カウンタ管理者の属性 INDEX { sFlowCpDataSource, sFlowCpInstance } ::= { sFlowCpTable 1 } SFlowCpEntry ::= SEQUENCE { sFlowCpDataSource SFlowDataSource, sFlowCpInstance SFlowInstance, sFlowCpReceiver SFlowReceiver, sFlowCpInterval Integer32 } sFlowCpDataSource OBJECT-TYPE SYNTAX SFlowDataSource MAX-ACCESS not-accessible STATUS current DESCRIPTION "Identifies the source of the data for the counter poller." カウンタ管理者のデータソースを識別。 ::= { sFlowCpEntry 1 } sFlowCpInstance OBJECT-TYPE SYNTAX SFlowInstance MAX-ACCESS not-accessible STATUS current v1.00 sFlow.org [Page 21] FINAL sFlow Version 5 July 2004 DESCRIPTION "The sFlowInstance for this counter poller." カウンタ管理者のインスタンス ::= { sFlowCpEntry 2 } sFlowCpReceiver OBJECT-TYPE SYNTAX SFlowReceiver MAX-ACCESS read-write STATUS current DESCRIPTION "The SFlowReciever associated with this counter poller." カウンタ管理者に関連したSFlowReciever DEFVAL { 0 } ::= { sFlowCpEntry 3 } sFlowCpInterval OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of seconds between successive samples of the counters associated with this data source. A sampling interval of 0 disables counter sampling. このデータソースのカウンタサンプルの最大間隔、サンプリング間隔が0は、サンプリングを停止するという意味です。 The agent is permitted to have minimum and maximum allowable values for the counter polling interval. A minimum interval lets the agent designer set an upper bound on the overhead associated with polling, and a maximum interval may be the result of implementation restrictions (such as counter size). In addition not all values between the maximum and minimum may be realizable as the sampling interval (again because of implementation considerations). エージェントには、カウンタのポーリング間隔に設定可能な最大値、最小値を持つことが許されます。最小値は、エージェントの設計者が、ポーリングに関連したオーバーヘッドに基づいて決めます。最大値は、(カウンタのサイズなど)実装上の問題です。更に、サンプリング間隔として、最大値と最小値の範囲の全ての値を設定可能ということではありません。(再度 実装上の検討事項です。) When the sampling rate is set the agent is free to adjust the value so that it lies between the maximum and minimum values and has the closest achievable value. エージェントにサンプリングレートが設定された時、エージェントは、最大値、最小値の範囲の適切な値に自由に調整することができます。 ※訳者注意:たぶん、コピー&ペーストで間違ったのだと思うが、サンプリングレートではなく、サンプリング間隔だと思う。 When read, the agent must return the actual sampling interval it will be using (after the adjustments previously described). The sampling algorithm must converge so that over time the number of packets sampled approaches 1/Nth of the total number of packets in the monitored flows." 読み出した時、実際のサンプリング間隔を返します。それは、前述の調整が行われた後の値です。サンプリングアルゴリズムは、モニタ期間において、モニタしたフローのパケットの1/Nをサンプリングするようにしなければなりません。 ※訳者注意:たぶん、これも、コピー&ペーストで間違ったのだと思うが、サンプリングレートではなく、サンプリング間隔なので、この説明は不要 DEFVAL { 0 } ::= { sFlowCpEntry 4 } -- -- Compliance Statements -- sFlowMIBConformance OBJECT IDENTIFIER ::= { sFlowMIB 2 } v1.00 sFlow.org [Page 22] FINAL sFlow Version 5 July 2004 sFlowMIBGroups OBJECT IDENTIFIER ::= { sFlowMIBConformance 1 } sFlowMIBCompliances OBJECT IDENTIFIER ::= { sFlowMIBConformance 2 } sFlowCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "Compliance statements for the sFlow Agent." MODULE -- this module MANDATORY-GROUPS { sFlowAgentGroup } OBJECT sFlowAgentAddressType SYNTAX InetAddressType { ipv4(1) } DESCRIPTION "Agents need only support ipv4." OBJECT sFlowRcvrAddressType SYNTAX InetAddressType { ipv4(1) } DESCRIPTION "Agents need only support ipv4." ::= { sFlowMIBCompliances 1 } sFlowAgentGroup OBJECT-GROUP OBJECTS { sFlowVersion, sFlowAgentAddressType, sFlowAgentAddress, sFlowRcvrOwner, sFlowRcvrTimeout, sFlowRcvrMaximumDatagramSize, sFlowRcvrAddressType, sFlowRcvrAddress, sFlowRcvrPort, sFlowRcvrDatagramVersion, sFlowFsReceiver, sFlowFsPacketSamplingRate, sFlowFsMaximumHeaderSize, sFlowCpReceiver, sFlowCpInterval } STATUS current DESCRIPTION "A collection of objects for managing the generation and transportation of sFlow data records." ::= { sFlowMIBGroups 1 } END The sFlow MIB references definitions from a number of existing RFCs [18], [19], [20] and [21]. sFlow MIBは、既存のRFCの定義を参照しています。 5. sFlow Datagram Format sFlowデータグラムフォーマット The sFlow Datagram format specifies a standard format for the sFlow Agent to send sampled data to a remote sFlow Collector. sFlowデータグラムフォーマットは、sFlowエージェントからsFlowコレクタにサンプルデータを送信するための標準フォーマットを定義しています。 v1.00 sFlow.org [Page 23] FINAL sFlow Version 5 July 2004 The format of the sFlow datagram is specified using the XDR standard [32]. XDR is more compact than ASN.1 and simpler for the sFlow Agent to encode and the sFlow Collector to decode. sFlowのデータグラムフォーマットは、XDR標準を使用して定義されています。XDRは、ASN.1に比べてコンパクトです。また、sFlowエージェントでのエンコード、sFlowアナライザーでのデコードが容易です。 Samples are sent as UDP packets to the host and port specified in the SFLOW MIB. The assigned port for sFlow (and the default specified in the SFLOW MIB) is port 6343. All sFlow Agents and applications should default to using UDP port 6343. A standard sFlow port helps eliminate configuration problems between sFlow Agents and sFlow Collectors, sFlow traffic will be easier to identify, and it should make it easier to configure forwarding through intermediate devices such as firewalls. サンプルは、SFLOW MIBで指定されたホストとポートにUDPパケットとして送信されます。sFlowに割り当てられたポート(また、SFLOW MIBのデフォルト値)は、ポート6343です。全てのsFlowエージェントとアプリケーションは、UDPの6343番をデフォルトとすべきです。標準sFlowポートは、sFlowエージェントとsFlowコレクタ間の設定上のトラブルを軽減するでしょう。また、sFlowトラフィックを容易に識別可能とし、ファイヤーウォールなどの中間の機器の設定を容易にするでしょう。 The lack of reliability in the UDP transport mechanism does not significantly affect the accuracy of the measurements obtained from an sFlow Agent. UDPトランスポート層の信頼性の欠如は、sFlowエージェントからの計測データの正確性に大きな影響はありません。 o If counter samples are lost then new values will be sent during the next polling interval. The chance of an undetected counter wrap is negligible. The sFlow Datagram specifies 64 bit octet counters, and with typical counter polling intervals between 20 to 120 sec- onds the chance of a long enough sequence of sFlow Datagrams being lost to hide a counter wrap is very small. *もし、カウンターサンプルがロストした場合、次のポーリング間隔で、新しい値送信されます。カウンタのオーバーフローが発生する可能性がありますが、sFlowは、64ビットのバイト数カウンタを使用しており、ポーリング間隔は、20〜120秒であるため、非常に長い間パケットロストが発生しない限り、オーバーフローの見逃す可能性は、皆無です。 o The net effect of lost Packet Flow Samples is a slight reduction in the effective sampling rate. *フローサンプルのロストは、実効サンプリングレートを下げるだけです。 The use of UDP reduces the amount of memory required to buffer data. UDP also provides a robust means of delivering timely traffic information during periods of intense traffic (such as a denial of service attack). UDP is more robust than a reliable transport mechanism because under overload the only effect on overall system performance is a slight increase in transmission delay and a greater number of lost packets, neither of which has a significant effect on an sFlow-based monitoring sytem. If a reliable transport mechanism were used then an overload would introduce long transmission delays and require large amounts of buffer memory on the agent. UDPを使うことは、バッファデータに必要なメモリの使用量を削減します。UDPは、また、過剰トラフィック期間(DOS攻撃など)のトラフィック情報のタイムリーな送信に有効です。UDPは、過負荷状態において、信頼性のあるトランスポートよりも優れています。過負荷状態によって、転送遅延や多くのロストパケットが発生しても、sFlowベースのモニタシステムには、大きな影響はありません。もし、信頼性のあるトランスポートを使用している場合、過負荷状態は、大きな転送遅延と、エージェント上に大きなバッファが必要となるでしょう。 While the sFlow Datagram structure permits multiple samples to be included in each datagram, the sFlow Agent must not wait for a buffer to fill with samples before sending the sFlow Datagram. sFlow is intended to provide timely information on traffic. The sFlow Agent may at most delay a sample by 1 second before it is required to send the datagram. sFlowデータグラムは、各データグラムに複数のサンプルを許可する構造になっていますが、サンプリングエージェントは、データグラムを送信する前に、バッファが一杯になるまで待つ必要はありません。sFlowのサンプリングは、トラフィック情報のタイムリーな転送を提供します。エージェントは、データグラムを送信するまでにだいたい1秒ぐらいのディレーがあればよいでしょう。 The sFlow Agent should try to piggyback counter samples on the datagram stream resulting from Packet Flow Sampling. Before sending out a datagram the remaining space in the buffer can be filled with v1.00 sFlow.org [Page 24] FINAL sFlow Version 5 July 2004 counter samples. The sFlow Agent has discretion in the timing of its counter polling, the specified counter sampling interval sFlowCounterSamplingInterval is a maximum, so the sFlow Agent is free to sample counters early if it has space in a datagram. If counters must be sent in order to satisfy the maximum sampling interval then a datagram must be sent containing the outstanding counters. エージェントは、フローサンプルのデータグラムに、カウンタサンプルを同梱するべきです。データグラムを送信する前に、バッファに空きスペースがある場合、カウンタサンプルで埋めることができます。エージェントは、カウンタのポーリングタイミングを自由に決めることができます。sFlowCounterSamplingIntervalは、最大値です。ですから、エージェントは、データグラムに空きがある場合、自由にカウンタサンプルを追加することができます。もし、最大サンプリング間隔を満たすためにカウンタが送信される場合、カウンタを含むデータグラムが送信されるべきです。 The following is the XDR description of the sFlow Datagram: 次にXDRで記述したsFlowデータグラムを示します。 /* Proposed sFlow Datagram Version 5 (draft 10) */ /* Revision History 変更履歴 - version 5 adds support for: バージョン5での追加は、 Adds expanded encodings for flow_sample and counter_sample Adds unknown address type; Adds sub-agent support. Adds Packet discard information. Adds support for vendor specific extensions. Adds length information to data fields. Adds length information to sample types. Define reset semantics for flow_sample,counter_sample sequence no. Splits sFlow datagram definition from flow/counter data definitions. Note: Revision history for sFlow data definitions is now part of data definition document. */ フローサンプル、カウンタサンプルに展開されたエンコードを追加 不明アドレスタイプを追加 サブエージェントのサポート パケット破棄情報の追加 ベンダー独自拡張のサポート データフィールドのために長さ情報を追加 サンプルタイプのために長さ情報を追加 フローサンプル、カウンタサンプルのシーケンス番号のためのリセット方法を定義 フロー/カウンタデータ定義からsFlowデータグラム定義を分離 注意:sFlowデータ定義のためのレビジョン履歴は、現在、データ定義のドキュメントの一部ではありません。 /* Address types */ アドレスタイプ typedef opaque ip_v4[4]; typedef opaque ip_v6[16]; enum address_type { UNKNOWN = 0, IP_V4 = 1, IP_V6 = 2 } union address (address_type type) { case UNKNOWN: void; case IP_V4: ip_v4; case IP_V6: ip_v6; } /* Data Format データフォーマット The data_format uniquely identifies the format of an opaque structure in the sFlow specification. A data_format is contructed as follows: データフォーマットは、sFlow仕様で、opaque構造のフォーマットをユニークに識別します。データフォーマットは、次のように構成されます。 v1.00 sFlow.org [Page 25] FINAL sFlow Version 5 July 2004 - The most significant 20 bits correspond to the SMI Private Enterprise Code of the entity responsible for the structure definition. A value of zero is used to denote standard structures defined by sflow.org. -上位20ビットは、構造体の定義を行った組織を特定するためのSMIの企業拡張コードに関係しています。0は、sflow.orgによって定義された標準の構造体を示します。 - The least significant 12 bits are a structure format number assigned by the enterprise that should uniquely identify the the format of the structure. -下位12ビットは、その組織が割り当てた構造体のフォーマット番号で、ユニークに識別するための値です。 There are currently three opaque structures where which data_formats are used: 現在、以下の3つのopaque構造体がデータフォーマットで使用されています。 1. sample_data 2. counter_data 3. flow_data Structure format numbers may be re-used within each of these contexts. これらのコンテキストの各で、構造体のフォーマット番号は、再利用可能です。 For example, an (inmon,1) data_format could identify a particular set of counters when used to describe counter_data, but refer to a set of flow attributes when used to describe flow_data. 例えば、インモン社(1)データフォーマットは、counter_dataを示すために使用された時にカウンタの特定の集合を識別することができます。しかし、flow_dataを示すために使用された場合、フローの属性を参照します。 An sFlow implementor should use the standard structures where possible, even if they can only be partially populated. Vendor specific structures are allowed, but should only be used to supplement the existing structures, or to carry information that hasn't yet been standardized. ローカルな使用であっても、sFlowの実装者は、できるだけ標準の構造体を使用するべきです。ベンダー独自の構造体は、認められています。しかし、既存の構造体の補助する場合か、まだ標準化されていない情報を運ぶ場合にのみ使用すべきです。 Enterprises are encouraged to publish structure definitions in XDR format to www.sflow.org. A structure description document should contain an XDR structure definition immediately preceded by a comment listing the structure to which it applies, the enterprise number, and the structure number. See the definitions of counter_sample and flow_sample for examples. 企業がwww.sflow.orgでXDRフォーマットの構造体定義を公開することを支援します。構造体の説明ドキュメントは、XDR構造体定義を含んでいます。それは、企業番号、構造体番号を与えられた構造体に記述されたコメントが有効です。カウンタサンプルとフローサンプルを例として参照してください。 Note: An enterprise which has defined sFlow structures is permitted to extend those structure definitions at the end without changing structure numbers. Any changes that would alter or invalidate fields in published structure definitions must be implemented using a new structure number. This policy allows additional data to be added to structures while still maintaining backward compatibility. Applications receiving sFlow data must always use the opaque length information when decoding opaque<> structures so that encountering extended structures will not cause decoding errors. Note that these rules apply to the standard structures as well. */ 注意:sFlow構造体を定義した企業は、構造体番号を変更することなく、構造体の定義を拡張できます。公開した構造体の定義で、フィールドの変更、削除を行うような変更の場合は、新しい構造体番号を使って実装すべきです。このポリシーは、後方互換性を保ちながら、構造体にデータの追加を可能にします。sFlowデータを受信するアプリケーションは、opaque構造体をデコードする場合に常にopaqueの長さを使用するべきです。その結果、拡張された構造体に遭遇してもデコードエラーを起こさないですみます。このルールは、標準の構造体にも適用されます。 typedef unsigned int data_format; /* sFlowDataSource encoded as follows: sFlowDataSourceは、以下のようにエンコードされます。 v1.00 sFlow.org [Page 26] FINAL sFlow Version 5 July 2004 The most significant byte of the source_id is used to indicate the type of sFlowDataSource: 0 = ifIndex 1 = smonVlanDataSource 2 = entPhysicalEntry The lower three bytes contain the relevant index value. */ source_idの最上位バイトは、sFlowDataSourceの種類を表します。 0 = ifIndex 1 = smonVlanDataSource 2 = entPhysicalEntry 下位3バイトは、関連のあるインデックス値を含んでいます。 typedef unsigned int sflow_data_source; /* Input/output port information 入出力ポート情報 Encoding of interface(s) involved in the packet's path through the device. デバイスを通過するパケットの経路に関係したインターフェイスのエンコード 0 if interface is not known. 0は、インターフェイスが不明を示します。 The most significant 2 bits are used to indicate the format of the 30 bit value. 上位2ビットは、その他の30ビットの値の形式を示します。 - format = 0 single interface value is ifIndex of the interface. The maximum value, 0x3FFFFFFF, indicates that there is no input or output interface (according to which field it appears in). This is used in describing traffic which is not bridged, routed, or otherwise sent through the device being monitored by the agent, but which rather originates or terminates in the device itself. In the input field, this value is used to indicate packets for which the origin was the device itself (e.g. a RIP request packet sent by the device, if it is acting as an IP router). In the output field, this value is used to indicate packets for which the destination was the device itself (e.g. a RIP response packet (whether unicast or not) received by the device, if it is acting as an IP router). -フォーマット=0 一つのインターフェイス  値は、インターフェイスのifIndex 最大値の0x3FFFFFFFは、入力又は、出力のインターフェイスがないことを示します。 (入力か出力かは、出現する場所に依存します。)これは、トラフィックが、ブリッジやルータで転送されないか、デバイスを通過するように送信されエージェントでモニタされたが、デバイス自身で送信したか、受信したことを意味しています。入力フィールドで、この値は、パケットがデバイス自身から送信されたことを示します。出力フルードで、この値は、パケットのあて先がデバイス自身であることを示します。(例えば、デバイスがIPルータとして動作している場合、デバイスが受信したRIPの応答パケット(ユニキャストかどうかを問わず)などです。) - format = 1 packet discarded value is a reason code. Currently the following codes are defined: 0 - 255 use ICMP Destination Unreachable codes See www.iana.org for authoritative list. RFC 1812, section 5.2.7.1 describes the current codes. Note that the use of these codes does not imply that the packet to which they refer is an IP packet, or if it is, that an ICMP message of any kind was generated for it. Current value are: -フォーマット=1 パケット破棄 値は、理由コードを示します。現在以下の値が定義されています。 0 - 255は、ICMP Destination Unreachableのコードとして使用されます。 www.iana.orgの公式なリストを参照してください。RFC 1812のセクション 5.2.7.1に現在のコードが説明されています。注意:これらのコードは、参照したパケットがIPパケットであること、何らかのICMPメッセージがそのための送信されたことを意味していません。現在の値は、 0 Net Unreachable 1 Host Unreachable v1.00 sFlow.org [Page 27] FINAL sFlow Version 5 July 2004 2 Protocol Unreachable 3 Port Unreachable 4 Fragmentation Needed and Don't Fragment was Set 5 Source Route Failed 6 Destination Network Unknown 7 Destination Host Unknown 8 Source Host Isolated 9 Communication with Destination Network is Administratively Prohibited 10 Communication with Destination Host is Administratively Prohibited 11 Destination Network Unreachable for Type of Service 12 Destination Host Unreachable for Type of Service 13 Communication Administratively Prohibited 14 Host Precedence Violation 15 Precedence cutoff in effect 256 = unknown 257 = ttl exceeded 258 = ACL 259 = no buffer space 260 = RED 261 = traffic shaping/rate limiting 262 = packet too big (for protocols that don't support fragmentation) Note: Additional reason codes may be published over time. An application receiving sFlow must be prepared to accept additional reason codes. The authoritative list of reason codes will be maintained at www.sflow.org 注意:いつか、追加の理由コードが公開されるでしょう。sFlowを受信するアプリケーションは、追加の理由コードを受信可能なようにするべきです。公式な理由コードのリストは、www.sflow.orgで管理されるでしょう。 - format = 2 multiple destination interfaces value is the number of interfaces. A value of 0 indicates an unknown number greater than 1. -フォーマット=2 複数のあて先インターフェイス 値は、インターフェイスの数、0の場合は、2以上だか、インターフェイスの数が不明の場合を示します。 Note: Formats 1 & 2 apply only to an output interface and never to an input interface. A packet is always received on a single (possibly unknown) interface. 注意:フォーマット1と2は、出力インターフェイスのみで使用され、入力インターフェイスでは決して使用されません。パケットは常に一つの(不明かもしれないが)インターフェイスで受信します。 Examples: 0x00000002 indicates ifIndex = 2 0x00000000 ifIndex unknown. 0x40000001 packet discarded because of ACL. v1.00 sFlow.org [Page 28] FINAL sFlow Version 5 July 2004 0x80000007 indicates a packet sent to 7 interfaces. 0x80000000 indicates a packet sent to an unknown number of interfaces greater than 1. */ 例: 0x00000002 ifIndex = 2を示します。 0x00000000 ifIndexが不明 0x40000001 ACLによって破棄された. 0x80000007 7個のインターフェイスに転送された。 0x80000000 パケットは、2つ以上だが、数が不明のインターフェイスに送信された。 typedef unsigned int interface; /* Counter and Flow sample formats カウンタとフローサンプルのフォーマット Compact and expand forms of counter and flow samples are defined. An agent must not mix compact/expanded encodings. If an agent will never use ifIndex numbers >= 2^24 then it must use compact encodings for all interfaces. Otherwise the expanded formats must be used for all interfaces. カウンタとフローサンプルのコンパクト又は、エクスパンドフォーマットが定義されています。エージェントは、コンパクト/エクスパンドの両方のエンコードを混在してはいけません。もし、エージェントが、2^24以上のifIndex番号を使用しないならば、全てのインターフェイスにコンパクトエンコードを使用すべきです。それ以外は、エクスパンドフォーマットを全てのインターフェイスで使用すべきです。 While the theoretical range of ifIndex numbers is 2^32, RFC 2863 recommends that ifIndex numbers are allocated using small integer values starting at 1. For most agent implementations the 2^24 range of values for ifIndex supported by the compact encoding is more than adequate and its use saves bandwidth. The expanded encodings are provided to support the maximum possible values for ifIndex, even though large ifIndex values are not encouraged. */ ifIndexの理論上の範囲は、2^32までです。RFC2863では、ifIndexは1から始まる小さな整数を使うことを推奨しています。ほとんどのエージェントでは、コンパクトエンコードがサポートする2^24未満のifIndexで実装されています。それは、より適切であり、帯域を節約できます。エクスパンドエンコードは、可能性のある最大値をサポートするために提供されました。しかしながら、ifIndexの大きな値は、推奨されません。 struct flow_record { data_format flow_format; /* The format of sflow_data */                     フォーマット opaque flow_data<>; /* Flow data uniquely defined by the flow_format. */ flow_formatで定義されたフローデータ } struct counter_record { data_format counter_format; /* The format of counter_data */                    フォーマット opaque counter_data<>; /* A block of counters uniquely defined by the counter_format. */ counter_formatで定義されたカウンタデータ } /* Compact Format Flow/Counter samples If ifIndex numbers are always < 2^24 then the compact must be used. */ コンパクト形式の フロー/カウンタサンプル ifIndexの番号が2^24未満の場合は、コンパクト形式を使用する。 /* Format of a single flow sample */ 一つのフローサンプルの形式 /* opaque = sample_data; enterprise = 0; format = 1 */ struct flow_sample { unsigned int sequence_number; /* Incremented with each flow sample generated by this source_id. Note: If the agent resets the sample_pool then it must also reset the sequence_number.*/ このソースから生成されるフローサンプル毎に増加する。 注意;エージェントがサンプルプールをリセットした場合この値もリセットする。 sflow_data_source source_id; /* sFlowDataSource */ v1.00 sFlow.org [Page 29] FINAL sFlow Version 5 July 2004 unsigned int sampling_rate; /* sFlowPacketSamplingRate */ unsigned int sample_pool; /* Total number of packets that could have been sampled (i.e. packets skipped by sampling process + total number of samples) */ サンプルされたパケットの総数(スキップしたパケット数+サンプル数) unsigned int drops; /* Number of times that the sFlow agent detected that a packet marked to be sampled was dropped due to lack of resources. The drops counter reports the total number of drops detected since the agent was last reset. A high drop rate indicates that the management agent is unable to process samples as fast as they are being generated by hardware. Increasing sampling_rate will reduce the drop rate. Note: An agent that cannot detect drops will always report zero. */ sFlowエージェントがリソース不足で、サンプルパケットの破棄を検出した回数 ドロップカウンタは、エージェントが最後にリセットされた時から、ドロップを検出した回数をレポートします。高破棄率は、ハードウェアが生成するサンプルが速すぎてエージェントが処理できないことを示します。破棄率を下げるために、サンプリングレートを増やすべきです。注意:エージェントがドロップを検出できない場合は、常に0をレポートします。 interface input; /* Interface packet was received on. */ パケットを受信したインターフェイス interface output; /* Interface packet was sent on. */ パケットを送信したインターフェイス flow_record flow_records<>; /* Information about a sampled packet */ サンプルされたパケットの情報 } /* Format of a single counter sample */ 一つのカウンタサンプルのフォーマット /* opaque = sample_data; enterprise = 0; format = 2 */ struct counters_sample { unsigned int sequence_number; /* Incremented with each counter sample generated by this source_id Note: If the agent resets any of the counters then it must also reset the sequence_number. In the case of ifIndex-based source_id's the sequence number must be reset each time ifCounterDiscontinuityTime changes. */ このソースから生成されるカウンタサンプル毎に増加する。 注意;エージェントがカウンタをリセットした場合この値もリセットする。 ifIndexベースのソースIDの場合シーケンス番号は、ifCounterDiscontinuityTimeが変化する毎に、リセットするべきです。 sflow_data_source source_id; /* sFlowDataSource */ counter_record counters<>; /* Counters polled for this source */ このソースで取得したカウンタ } /* Expanded Format Flow/Counter samples エクスパンドフォーマット フロー/カウンタサンプル If ifIndex numbers may be >= 2^24 then the expanded must be used. */ ifIndexが2^24の場合、エクスパンドフォーマットを使用します。 v1.00 sFlow.org [Page 30] FINAL sFlow Version 5 July 2004 struct sflow_data_source_expanded { unsigned int source_id_type; /* sFlowDataSource type */ unsigned int source_id_index; /* sFlowDataSource index */ } struct interface_expanded { unsigned int format; /* interface format */ unsigned int value; /* interface value */ } /* Format of a single expanded flow sample */ /* opaque = sample_data; enterprise = 0; format = 3 */ struct flow_sample_expanded { unsigned int sequence_number; /* Incremented with each flow sample generated by this source_id. Note: If the agent resets the sample_pool then it must also reset the sequence_number.*/ このソースから生成されるフローサンプル毎に増加する。 注意;エージェントがサンプルプールをリセットした場合この値もリセットする。 sflow_data_source_expanded source_id; /* sFlowDataSource */ unsigned int sampling_rate; /* sFlowPacketSamplingRate */ unsigned int sample_pool; /* Total number of packets that could have been sampled (i.e. packets skipped by sampling process + total number of samples) */ サンプルされたパケットの総数(スキップしたパケット数+サンプル数) unsigned int drops; /* Number of times that the sFlow agent detected that a packet marked to be sampled was dropped due to lack of resources. The drops counter reports the total number of drops detected since the agent was last reset. A high drop rate indicates that the management agent is unable to process samples as fast as they are being generated by hardware. Increasing sampling_rate will reduce the drop rate. Note: An agent that cannot detect drops will always report zero. */ sFlowエージェントがリソース不足で、サンプルパケットの破棄を検出した回数 ドロップカウンタは、エージェントが最後にリセットされた時から、ドロップを検出した回数をレポートします。高破棄率は、ハードウェアが生成するサンプルが速すぎてエージェントが処理できないことを示します。破棄率を下げるために、サンプリングレートを増やすべきです。注意:エージェントがドロップを検出できない場合は、常に0をレポートします。 interface_expanded input; /* Interface packet was received on. */ パケットを受信したインターフェイス interface_expanded output; /* Interface packet was sent on. */ パケットを送信したインターフェイス flow_record flow_records<>; /* Information about a sampled packet */ サンプルされたパケットの情報 } /* Format of a single expanded counter sample */ 一つのエクスパンドカウンタサンプルフォーマット /* opaque = sample_data; enterprise = 0; format = 4 */ v1.00 sFlow.org [Page 31] FINAL sFlow Version 5 July 2004 struct counters_sample_expanded { unsigned int sequence_number; /* Incremented with each counter sample generated by this source_id Note: If the agent resets any of the counters then it must also reset the sequence_number. In the case of ifIndex-based source_id's the sequence number must be reset each time ifCounterDiscontinuityTime changes. */ このソースから生成されるカウンタサンプル毎に増加する。 注意;エージェントがカウンタをリセットした場合この値もリセットする。 ifIndexベースのソースIDの場合シーケンス番号は、ifCounterDiscontinuityTimeが変化する毎に、リセットするべきです。 sflow_data_source_expanded source_id; /* sFlowDataSource */ counter_record counters<>; /* Counters polled for this source */ このソースで取得したカウンタ } /* Format of a sample datagram */ サンプルデータグラムのフォーマット struct sample_record { data_format sample_type; /* Specifies the type of sample data */ opaque sample_data<>; /* A structure corresponding to the sample_type */ } /* Header information for sFlow version 5 datagrams sFlow Ver 5データグラムのヘッダ情報 The sub-agent field is used when an sFlow agent is implemented on a distributed architecture and where it is impractical to bring the samples to a single point for transmission. sFlowエージェントが分散アーキテクチャに実装され、送信のためにサンプルが1カ所に運ばれる場合、サブエージェントフィールドが使用されます。 However, it is strongly recommended that wherever possible the sub-agent mechanism not be used. If multiple processors are available within a device the various tasks associated with creating flow and counter samples can be distributed among the processors. However, the agent should be architected so that all the samples are marshalled into a single datagram stream. The final marshalling task involved very little processing, but has important benefits in making the overall sFlow system scalable. By reducing the number of UDP packets and packet streams, the protocol overheads associated with sFlow are significantly reduced at the receiver. しかしながら、サブエージェントメカニズムはできるだけ、使用しないことを推奨します。もし、デバイス内に複数のプロセッサが存在する場合、フローとカウンタサンプルを作成する幾つかのタスクが、プロセッサ間に分散します。しかし、エージェントは統一されるべきです。その結果、全てのサンプルは、一つのデータグラムストリームに整理されます。最終整理タスクは、非常に小さいな処理になります。しかし、それは、sFlowシステムの全体的な規模を構築する上で、重要な恩恵を与えます。UDPパケットとパケットストリームの数を減らすことによって、受信側で、sFlowに関連したプロトコルのオーバーヘッドを、大きく減らすことができます。 Each sFlowDataSource must be associated with only one sub-agent. The association between sFlowDataSource and sub-agent must remain constant for the entire duration of an sFlow session. */ 各sFlowDataSourceは、一つのサブエージェントのみから構成されるべきです。sFlowDataSourceとサブエージェントの共同体は、sFlowセッションの全期間で固定であるべきです。 struct sample_datagram_v5 { address agent_address /* IP address of sampling agent, sFlowAgentAddress. */ エージェントのIPアドレス unsigned int sub_agent_id; /* Used to distinguishing between datagram streams from separate agent sub entities v1.00 sFlow.org [Page 32] FINAL sFlow Version 5 July 2004 within an device. */ 一つのデバイス上で、別々のエージェントのサブエンティティからデータグラムストリームを分類するために使用 unsigned int sequence_number; /* Incremented with each sample datagram generated by a sub-agent within an agent. */ データグラムがエージェント内のサブエージェントで生成される毎に増加する。 unsigned int uptime; /* Current time (in milliseconds since device last booted). Should be set as close to datagram transmission time as possible. Note: While a sub-agents should try and track the global sysUptime value a receiver of sFlow packets must not assume that values are synchronised between sub-agents. */ 現在時刻(デバイスが最後に起動してからのmSec単位の時間)できるだけ、データグラムを送信した時刻に設定すべきです。 注意:サブエージェントがsysUptimeに追従している場合、sFlowパケットの受信者は、 サブエージェント間でこの値が同期していると想定するべきではありません。 sample_record samples<>; /* An array of sample records */ } enum datagram_version { VERSION5 = 5 } union sample_datagram_type (datagram_version version) { case VERSION5: sample_datagram_v5 datagram; } struct sample_datagram { sample_datagram_type version; } An sFlow Datagram contains lists of Packet Flow Records and counter records. The format of each Packet Flow Record is identified by a data_format value. The data_format name space is extensible, allowing for the addition of standard record types as well as vendor specific extensions. sFlowデータグラムは、パケットフローレコードとカウンタレコードのリスト含んでいます。各パケットフローレコードのフォーマットは、data_formatの値で識別できます。data_formatの名前空間は、拡張可能です。標準レコードタイプの追加や、ベンダー独自仕様の拡張が可能です。 A number of standard record types have been defined. However, an sFlow Agent is not required to support all the different record types, only those applicable to its treatment of the particular packet being reporting on. For example, a layer 2 switch will not report on subnet information since it is not performing a routing function. A layer 2/3 switch will report layer 2 information for packets it switches, and layer 2 and 3 information for packets it routes. いくつかの標準レコードタイプは、定義済みです。しかし、sFlowエージェントは、全ての違ったレコードタイプをサポートする必要はありません。レポートを行う特定のパケットの扱いのみ可能であればよいです。例えば、レイヤー2スイッチは、ルータ機能がないので、サブネット情報のレポートは不要です。レイヤー2/3スイッチは、それがスイッチするパケットのレイヤー2の情報と、ルーティングするパケットのレイヤー2と3の情報をレポートします。 The following is an XDR description of the standard set of data records that can be carried in sFlow Datagrams: 次に、sFlowデータグラムで転送されるデータレコードの標準形式をXDRで説明します。 /* Proposed standard sFlow data formats (draft 14) */ v1.00 sFlow.org [Page 33] FINAL sFlow Version 5 July 2004 /* Revision History 変更履歴 - version 5 バージョン5 Clarified extended_switch definitions for untagged ports Added CPU, memory utilization information Added mpls tunnel, virtual circuit and fec information Clarified next_hop definitions Added stripped count to sampled_header Added POS header_protocol Added BGP next hop router Clarify definition of packet length Remove limit on packet header size Adds host field to URL extension and clarifies url_direction Define url as http request-line Adds character set information to user data Adds NAT support Adds MPLS information タグ無しポートのためのextended_switchの定義を明確化 CPU、メモリの使用率情報を追加 MPLSトンネル、仮想回線、FECの情報を追加 next_hopの定義を明確化 POSヘッダプロトコルを追加 BGPネクストホップルータを追加 パケット長の定義を明確化 パケットヘッダサイズの制限を削除 URL拡張にホストフィールドを追加、url_directionの明確化 HTTPリクエストラインとして、URLを定義 NATのサポート MPLS情報のサポート - version 4 adds support for BGP communities バージョン4 BGPコミュニティのサポート追加 - version 3 adds support for extended_url information */ バージョン3 extended_url情報のサポート追加 /* Enterprise = 0 refers to standard sFlow structures. An sFlow implementor should use the standard structures where possible, even if they can only be partially populated. Vendor specific structures are allowed, but should only be used to supplement the existing structures, or to carry information that hasn't yet been standardized. 企業番号=0は、標準sFlow構造体を示します。ローカルな使用であっても、できるだけ、sFlowの実装者は、標準の構造体を使用すべきです。ベンダー独自仕様は、許可されていますが、既存の構造体の補助か、まだ標準化されていない情報を転送する場合にのみ使用すべきです。 The following values should be used for fields that are unknown (unless otherwise indicated in the structure definitions). 不明なフィールドのために次の値を使用すべきです。(構造体の定義で、示されていない場合) - Unknown integer value. Use a value of 0 to indicate that a value is unknown. -不明な整数値、0を使用 - Unknown counter. Use the maximum counter value to indicate that the counter is not available. Within any given sFlow session a particular counter must be always available, or always unavailable. An available counter may temporarily have the max value just before it rolls to zero. This is permitted. -不明なカウンタ。そのカウンタが無効を示すためにカウンタの最大値を使用する。 有効なsFlowセッションの間、特定のカウンタは、常に有効か無効であるべきです。 有効なカウンタは、0に戻る前に一時的に最大値になることがあります。これは、許されます。 - Unknown string. Use the zero length empty string. */ -不明な文字列、長さ0の空白文字列を使います。 /* Flow Data Types フローデータタイプ A flow_sample must contain packet header information. The prefered format for reporting packet header information is the sampled_header. However, if the packet header is not available to the sampling process then one or more of sampled_ethernet, sampled_ipv4, sampled_ipv6 may be used. */ flow_sampleは、パケットヘッダ情報を含むべきです。パケットヘッダ情報をレポートするための推奨フォーマットは、sampled_headerです。しかし、もし、サンプリングプロセスにパケットヘッダが存在しない場合、sampled_ethernet, sampled_ipv4, sampled_ipv6のどれか、1つ又は複数を使用します。 v1.00 sFlow.org [Page 34] FINAL sFlow Version 5 July 2004 /* Packet Header Data */ パケットヘッダデータ /* The header_protocol enumeration may be expanded over time. Applications receiving sFlow must be prepared to receive sampled_header structures with unknown sampled_header values. header_protocolの列挙は、いつでも拡張できます。sFlowを受信するアプリケーションは、不明なsampled_headerの値をもつsampled_headerの構造体を受信できる必要があります。 The authoritative list of protocol numbers will be maintained at www.sflow.org */ プロトコル番号の公式なリストは、www.sflow.orgで管理されるでしょう。 enum header_protocol { ETHERNET-ISO88023 = 1, ISO88024-TOKENBUS = 2, ISO88025-TOKENRING = 3, FDDI = 4, FRAME-RELAY = 5, X25 = 6, PPP = 7, SMDS = 8, AAL5 = 9, AAL5-IP = 10, /* e.g. Cisco AAL5 mux */ IPv4 = 11, IPv6 = 12, MPLS = 13, POS = 14 /* RFC 1662, 2615 */ } /* Raw Packet Header */ ロウパケットヘッダ /* opaque = flow_data; enterprise = 0; format = 1 */ struct sampled_header { header_protocol protocol; /* Format of sampled header */ フォーマット unsigned int frame_length; /* Original length of packet before sampling. Note: For a layer 2 header_protocol, length is total number of octets of data received on the network (excluding framing bits but including FCS octets). Hardware limitations may prevent an exact reporting of the underlying frame length, but an agent should attempt to be as accurate as possible. Any octets added to the frame_length to compensate for encapsulations removed by the underlying hardware must also be added to the stripped count. */ サンプリングされる前のパケットのオリジナルサイズ 注意:レイヤー2のheader_protocolでは、長さは、ネットワークから受信したデータの総バイト数です。(フレーミングビットは除外、FCSは含みます。)ハードウェアの制約で、過小サイズのフレームの正確なレポートはできない場合があります。しかし、エージェントは、可能な限り正確に知らせるべきです。ハードウェアで取り除かれたカプセル化のために補正されたフレーム長に何バイトか追加します。strippedカウンタにも追加すべきです。 v1.00 sFlow.org [Page 35] FINAL sFlow Version 5 July 2004 unsigned int stripped; /* The number of octets removed from the packet before extracting the header<> octets. Trailing encapsulation data corresponding to any leading encapsulations that were stripped must also be stripped. Trailing encapsulation data for the outermost protocol layer included in the sampled header must be stripped. ヘッダを抽出する前のパケットから削除されたバイト数、削除されたヘッダに関連するトレイラーデータも削除されるべきです。サンプリングされたヘッダに含まれる最も外側のプロトコルレイヤーのためのトレーラーデータも削除されるべきです。 In the case of a non-encapsulated 802.3 packet stripped >= 4 since VLAN tag information might have been stripped off in addition to the FCS. カプセル化されていない802.3のパケットの場合、4以上削除されます。VLANタグ情報は、削除され、さらにFCSも追加されます。 Outer encapsulations that are ambiguous, or not one of the standard header_protocol must be stripped. */ 曖昧な外部カプセル化や、標準的なヘッダプロトコル以外は、削除されるべきです。 opaque header<>; /* Header bytes */ } typedef opaque mac[6]; /* Ethernet Frame Data */ イーサネットフレームデータ /* opaque = flow_data; enterprise = 0; format = 2 */ struct sampled_ethernet { unsigned int length; /* The length of the MAC packet received on the network, excluding lower layer encapsulations and framing bits but including FCS octets */ ネットワークから受信したMACパケットの長さ、 mac src_mac; /* Source MAC address */ mac dst_mac; /* Destination MAC address */ unsigned int type; /* Ethernet packet type */ } /* Packet IP version 4 data */ IPv4 /* opaque = flow_data; enterprise = 0; format = 3 */ struct sampled_ipv4 { unsigned int length; /* The length of the IP packet excluding lower layer encapsulations */ 下位れーやーのカプセル化を除いたIPパケットの長さ unsigned int protocol; /* IP Protocol type (for example, TCP = 6, UDP = 17) */ プロトコル種別 ip_v4 src_ip; /* Source IP Address */ ip_v4 dst_ip; /* Destination IP Address */ unsigned int src_port; /* TCP/UDP source port number or equivalent */ unsigned int dst_port; /* TCP/UDP destination port number or equivalent */ unsigned int tcp_flags; /* TCP flags */ v1.00 sFlow.org [Page 36] FINAL sFlow Version 5 July 2004 unsigned int tos; /* IP type of service */ } /* Packet IP Version 6 Data */ IPv6 /* opaque = flow_data; enterprise = 0; format = 4 */ struct sampled_ipv6 { unsigned int length; /* The length of the IP packet excluding lower layer encapsulations */ unsigned int protocol; /* IP next header (for example, TCP = 6, UDP = 17) */ ip_v6 src_ip; /* Source IP Address */ ip_v6 dst_ip; /* Destination IP Address */ unsigned int src_port; /* TCP/UDP source port number or equivalent */ unsigned int dst_port; /* TCP/UDP destination port number or equivalent */ unsigned int tcp_flags; /* TCP flags */ unsigned int priority; /* IP priority */ } /* Extended Flow Data 拡張フローデータ Extended data types provide supplimentary information about the sampled packet. All applicable extended flow records should be included with each flow sample. */ サンプルパケットに関する補助的な情報を提供する拡張データタイプ。全ての、有効な拡張されたフローレコードは、各フローサンプルに含まれるべきです。 /* Extended Switch Data */ 拡張スイッチデータ /* opaque = flow_data; enterprise = 0; format = 1001 */ /* Note: For untagged ingress ports, use the assigned vlan and priority of the port for the src_vlan and src_priority values. For untagged egress ports, use the values for dst_vlan and dst_priority that would have been placed in the 802.Q tag had the egress port been a tagged member of the VLAN instead of an untagged member. */ 注意:タグ無し入力ポートのために、ポートのVLANと優先度の割り当てにsrc_vlanとsrc_vlanの値を使用します。タグ無し出力ポートのために、802.Qのタグに設定されたdst_vlanとdst_priorityを使用します。 struct extended_switch { unsigned int src_vlan; /* The 802.1Q VLAN id of incoming frame */ unsigned int src_priority; /* The 802.1p priority of incoming frame */ unsigned int dst_vlan; /* The 802.1Q VLAN id of outgoing frame */ unsigned int dst_priority; /* The 802.1p priority of outgoing frame */ } /* IP Route Next Hop ipForwardNextHop (RFC 2096) for IPv4 routes. ipv6RouteNextHop (RFC 2465) for IPv6 routes. */ typedef next_hop address; v1.00 sFlow.org [Page 37] FINAL sFlow Version 5 July 2004 /* Extended Router Data */ 拡張ルータデータ /* opaque = flow_data; enterprise = 0; format = 1002 */ struct extended_router { next_hop nexthop; /* IP address of next hop router */ unsigned int src_mask_len; /* Source address prefix mask (expressed as number of bits) */ unsigned int dst_mask_len; /* Destination address prefix mask (expressed as number of bits) */ } enum as_path_segment_type { AS_SET = 1, /* Unordered set of ASs */ AS_SEQUENCE = 2 /* Ordered set of ASs */ } union as_path_type (as_path_segment_type) { case AS_SET: unsigned int as_set<>; case AS_SEQUENCE: unsigned int as_sequence<>; } /* Extended Gateway Data */ 拡張ゲートウェイデータ /* opaque = flow_data; enterprise = 0; format = 1003 */ struct extended_gateway { next_hop nexthop; /* Address of the border router that should be used for the destination network */ unsigned int as; /* Autonomous system number of router */ unsigned int src_as; /* Autonomous system number of source */ unsigned int src_peer_as; /* Autonomous system number of source peer */ as_path_type dst_as_path<>; /* Autonomous system path to the destination */ unsigned int communities<>; /* Communities associated with this route */ unsigned int localpref; /* LocalPref associated with this route */ } /* Character Set MIBEnum value of character set used to encode a string - See RFC 2978 Where possible UTF-8 encoding (MIBEnum=106) should be used. A value of zero indicates an unknown encoding. */ 文字コードセット 文字コードセットのMIBの列挙値を文字列のエンコードのために使用します。 RFC2978を参照ください。UTF-8(MIBEnum=106)が利用可能です。値0は、エンコードが不明であることを示します。 typedef unsigned int charset; /* Extended User Data */ 拡張ユーザデータ /* opaque = flow_data; enterprise = 0; format = 1004 */ struct extended_user { v1.00 sFlow.org [Page 38] FINAL sFlow Version 5 July 2004 charset src_charset; /* Character set for src_user */ opaque src_user<>; /* User ID associated with packet source */ charset dst_charset; /* Character set for dst_user */ opaque dst_user<>; /* User ID associated with packet destination */ } enum url_direction { src = 1, /* Source address is server */ dst = 2 /* Destination address is server */ } /* Extended URL Data */ 拡張URLデータ /* opaque = flow_data; enterprise = 0; format = 1005 */ struct extended_url { url_direction direction; /* Direction of connection */ string url<>; /* The HTTP request-line (see RFC 2616) */ string host<>; /* The host field from the HTTP header */ } /* MPLS label stack - Empty stack may be returned if values unknown - If only innermost label is known then stack may contain single entry - See RFC 3032 for label encoding - Labels in network order */ typedef int label_stack<>; /* Extended MPLS Data */ 拡張MPLSデータ /* opaque = flow_data; enterprise = 0; format = 1006 */ struct extended_mpls { next_hop nexthop; /* Address of the next hop */ label_stack in_stack; /* Label stack of received packet */ label_stack out_stack; /* Label stack for transmitted packet */ } /* Extended NAT Data 拡張NATデータ Packet header records report addresses as seen at the sFlowDataSource. The extended_nat structure reports on translated source and/or destination addesses for this packet. If an address was not translated it should be equal to that reported for the header. */ パケットヘッダは、データソースで検出されたアドレスをレポートします。 拡張NAT構造体は、このパケットの変換された送信元/あて先アドレスをレポートします。もし、アドレスが変換されていない場合、ヘッダのレポートと同じです。 /* opaque = flow_data; enterprise = 0; format = 1007 */ struct extended_nat { address src_address; /* Source address */ address dst_address; /* Destination address */ } v1.00 sFlow.org [Page 39] FINAL sFlow Version 5 July 2004 /* Extended MPLS Tunnel */ 拡張MPLSトンネル /* opaque = flow_data; enterprise = 0; format = 1008 */ struct extended_mpls_tunnel { string tunnel_lsp_name<>; /* Tunnel name */ unsigned int tunnel_id; /* Tunnel ID */ unsigned int tunnel_cos; /* Tunnel COS value */ } /* Extended MPLS VC */ 拡張MPLS VC /* opaque = flow_data; enterprise = 0; format = 1009 */ struct extended_mpls_vc { string vc_instance_name<>; /* VC instance name */ unsigned int vll_vc_id; /* VLL/VC instance ID */ unsigned int vc_label_cos; /* VC Label COS value */ } /* Extended MPLS FEC 拡張MPLS FEC - Definitions from MPLS-FTN-STD-MIB mplsFTNTable */ MPLS-FTN-STD-MIBのmplsFTNTableで定義されたものです。 /* opaque = flow_data; enterprise = 0; format = 1010 */ struct extended_mpls_FTN { string mplsFTNDescr<>; unsigned int mplsFTNMask; } /* Extended MPLS LVP FEC 拡張MPLS LVP FEC - Definition from MPLS-LDP-STD-MIB mplsFecTable MPLS-LDP-STD-MIB のmplsFecTableで定義 Note: mplsFecAddrType, mplsFecAddr information available from packet header */ 注意:パケットヘッダにmplsFecAddrType, mplsFecAddrの情報があります。 /* opaque = flow_data; enterprise = 0; format = 1011 */ struct extended_mpls_LDP_FEC { unsigned int mplsFecAddrPrefixLength; } /* Extended VLAN tunnel information Record outer VLAN encapsulations that have been stripped. extended_vlantunnel information should only be reported if all the following conditions are satisfied: 拡張VLANトンネル情報 削除されたVLANカプセル化の情、次の条件が満たされた場合にのみレポートされます。 1. The packet has nested vlan tags, AND 1.パケットに、多重化されたVLANタグがある。 2. The reporting device is VLAN aware, AND 2.リポートデバイスにVLAN機能がある。 3. One or more VLAN tags have been stripped, either because they represent proprietary encapsulations, or because switch hardware automatically strips the outer VLAN encapsulation. 1つ以上のVLANタグが削除された場合、専用カプセル化方式、外部VLANカプセル化をスイッチのハードウェアが自動削除した場合 Reporting extended_vlantunnel information is not a substitute for v1.00 sFlow.org [Page 40] FINAL sFlow Version 5 July 2004 reporting extended_switch information. extended_switch data must always be reported to describe the ingress/egress VLAN information for the packet. The extended_vlantunnel information only applies to nested VLAN tags, and then only when one or more tags has been stripped. */ 拡張VLANトンネル情報は、拡張スイッチ情報の代用ではありません。拡張スイッチ情報は、パケットの入出力VLAN情報を示すために常にレポートされるべきです。拡張VLANトンネル情報は、多重化されたVLANタグで、1つ以上のタグが削除された場合だけ提供されます。 /* opaque = flow_data; enterprise = 0; format = 1012 */ extended_vlantunnel { unsigned int stack<>; /* List of stripped 802.1Q TPID/TCI layers. Each TPID,TCI pair is represented as a single 32 bit integer. Layers listed from outermost to innermost. */ 削除された802.1Q TPID/TCIレイヤーのリスト、各TPID/TCIのペアーは、一つの32ビット整数で示されます。レイヤーは、最外部から、最内部の順番でリストされます。 } /* Counter Data Types カウンタデータタイプ Wherever possible, the if_counters block should be included. Media specific counters can be included as well. */ 可能な場合、インターフェイスカウンタブロックが含まれます。 メディア依存のカウンタが含まれる場合もあります。 /* Generic Interface Counters - see RFC 2233 */ 汎用インターフェイスカウンタ-RFC2233参照 /* opaque = counter_data; enterprise = 0; format = 1 */ struct if_counters { unsigned int ifIndex; unsigned int ifType; unsigned hyper ifSpeed; unsigned int ifDirection; /* derived from MAU MIB (RFC 2668) 0 = unkown, 1=full-duplex, 2=half-duplex, 3 = in, 4=out */ MAU MIB (RFC 2668)に示されたもの unsigned int ifStatus; /* bit field with the following bits assigned bit 0 = ifAdminStatus (0 = down, 1 = up) bit 1 = ifOperStatus (0 = down, 1 = up) */ unsigned hyper ifInOctets; unsigned int ifInUcastPkts; unsigned int ifInMulticastPkts; unsigned int ifInBroadcastPkts; unsigned int ifInDiscards; unsigned int ifInErrors; unsigned int ifInUnknownProtos; unsigned hyper ifOutOctets; unsigned int ifOutUcastPkts; unsigned int ifOutMulticastPkts; unsigned int ifOutBroadcastPkts; unsigned int ifOutDiscards; unsigned int ifOutErrors; unsigned int ifPromiscuousMode; } /* Ethernet Interface Counters - see RFC 2358 */ イーサネットカウンタ RFC2358 v1.00 sFlow.org [Page 41] FINAL sFlow Version 5 July 2004 /* opaque = counter_data; enterprise = 0; format = 2 */ struct ethernet_counters { unsigned int dot3StatsAlignmentErrors; unsigned int dot3StatsFCSErrors; unsigned int dot3StatsSingleCollisionFrames; unsigned int dot3StatsMultipleCollisionFrames; unsigned int dot3StatsSQETestErrors; unsigned int dot3StatsDeferredTransmissions; unsigned int dot3StatsLateCollisions; unsigned int dot3StatsExcessiveCollisions; unsigned int dot3StatsInternalMacTransmitErrors; unsigned int dot3StatsCarrierSenseErrors; unsigned int dot3StatsFrameTooLongs; unsigned int dot3StatsInternalMacReceiveErrors; unsigned int dot3StatsSymbolErrors; } /* Token Ring Counters - see RFC 1748 */ トークンリングカウンタ /* opaque = counter_data; enterprise = 0; format = 3 */ struct tokenring_counters { unsigned int dot5StatsLineErrors; unsigned int dot5StatsBurstErrors; unsigned int dot5StatsACErrors; unsigned int dot5StatsAbortTransErrors; unsigned int dot5StatsInternalErrors; unsigned int dot5StatsLostFrameErrors; unsigned int dot5StatsReceiveCongestions; unsigned int dot5StatsFrameCopiedErrors; unsigned int dot5StatsTokenErrors; unsigned int dot5StatsSoftErrors; unsigned int dot5StatsHardErrors; unsigned int dot5StatsSignalLoss; unsigned int dot5StatsTransmitBeacons; unsigned int dot5StatsRecoverys; unsigned int dot5StatsLobeWires; unsigned int dot5StatsRemoves; unsigned int dot5StatsSingles; unsigned int dot5StatsFreqErrors; } /* 100 BaseVG interface counters - see RFC 2020 */ 100VG AnyLANカウンタ /* opaque = counter_data; enterprise = 0; format = 4 */ struct vg_counters { unsigned int dot12InHighPriorityFrames; unsigned hyper dot12InHighPriorityOctets; v1.00 sFlow.org [Page 42] FINAL sFlow Version 5 July 2004 unsigned int dot12InNormPriorityFrames; unsigned hyper dot12InNormPriorityOctets; unsigned int dot12InIPMErrors; unsigned int dot12InOversizeFrameErrors; unsigned int dot12InDataErrors; unsigned int dot12InNullAddressedFrames; unsigned int dot12OutHighPriorityFrames; unsigned hyper dot12OutHighPriorityOctets; unsigned int dot12TransitionIntoTrainings; unsigned hyper dot12HCInHighPriorityOctets; unsigned hyper dot12HCInNormPriorityOctets; unsigned hyper dot12HCOutHighPriorityOctets; } /* VLAN Counters */ VLANカウンタ /* opaque = counter_data; enterprise = 0; format = 5 */ struct vlan_counters { unsigned int vlan_id; unsigned hyper octets; unsigned int ucastPkts; unsigned int multicastPkts; unsigned int broadcastPkts; unsigned int discards; } /* Percentage expressed in hundredths of a percent (e.g. 100 = 1%). If a percentage value is unknown then use the value -1. */ typedef int percentage; /* Processor Information */ プロセッサ情報 /* opaque = counter_data; enterprise = 0; format = 1001 */ struct processor { percentage 5s_cpu; /* 5 second average CPU utilization */ percentage 1m_cpu; /* 1 minute average CPU utilization */ percentage 5m_cpu; /* 5 minute average CPU utilization */ unsigned hyper total_memory /* total memory (in bytes) */ unsigned hyper free_memory /* free memory (in bytes) */ } The sFlow Datagram and data record specifications make use of definitions from a number of existing RFCs [22], [23], [24], [25], [26], [27], [28], [29], [30] and [31]. sFlowデータグラムとデータレコードは、既存のRFCの定義を使用しています。 6. Security Considerations セキュリティに関する検討 v1.00 sFlow.org [Page 43] FINAL sFlow Version 5 July 2004 Deploying a traffic monitoring system raises a number of security related issues. sFlow does not provide specific security mechanisms, relying instead on proper deployment and configuration to maintain an adequate level of security. トラフィックモニタシステムを配置することは、多くのセキュリティ上の問題に関連しています。sFlowは、特別なセキュリティメカニズムを提供しません。セキュリティの適切なレベルを維持するために、厳密な配置と設定が必要です。 While the deployment of traffic monitoring systems does create some risk, it also provides a powerful means of detecting and tracing unauthorized network activity. トラフィックモニタシステムの配置は、いくつかのリスクを生み出しますが、同時に、許可されないネットワーク活動の検出と追跡に大きな力を発揮します。 This section is intended to provide information that will help understand potential risks and configuration options for mitigating those risks. このセクションでは、リスクの存在を理解するための助けとなり、リスクを軽減するための設定オプションに関する情報を提供します。 6.1 Configuration 設定 The sFlow MIB is used to configure the sFlow Agent. The security of SNMP, with access control lists, is usually considered adequate in an enterprise setting. However, there are situations when these security measures are insufficient (for example when configuring a core Internet router) and SNMP configuration control will be disabled. sFlow MIBは、sFlowエージェントを設定するために使用されます。アクセス制御リスト付のSNMPのセキュリティは、一般的に、企業内の設定において十分と考えられています。しかしながら、(WANルータなど)のように、セキュリティが不十分な場合や、SNMP設定制御が、無効な場合などがあります。 When SNMP is disabled, a command line interface is typically provided. The following arguments are required to configure sFlow sampling on an interface. SNMPが、無効な場合、コマンドラインインターフェイスが通常提供されます。次のパラメータが、インターフェイスでsFlowサンプリングの設定に必要です。 -SFlowDataSource -sFlowFsPacketSamplingRate -sFlowFsMaximumHeaderSize
-sFlowCpInterval -sFlowRcvrMaximumDatagramSize -sFlowRcvrCollectorAddress
-sFlowRcvrCollectorPort If command line and SNMP control of the sFlow Agent coexist then an agent developer should either ensure that the two mechanisms operate independently or ensure that command line changes are reflected via the sFlow MIB. Typically command line changes will have priority over changes made via SNMP. Entries made through the command line should not be alterable via SNMP. Rows in each of the SNMP tables will then either belong to the command line (and not be alterable via SNMP), or belong to the SNMP agent, in which case they can be controlled using SNMP. もし、sFlow AgentにコマンドラインとSNMPによる制御の両方を実装する場合、エージェントの開発者は、2つのメカニズムが独立して動作すること、コマンドラインによる変更が、sFlow MIBに反映されることを保証しなければなりません。一般的にコマンドラインによる変更は、SNMPによる変更よりも優先されます。コマンドラインで作成したエントリーは、SNMPによるものの二次的なものではありません。各SNMPテーブルの行は、コマンドラインに帰属します。(SNMPによるものの二次的なものではありません。)また、SNMPエージェントに帰属します。どちらの場合もSNMPを使って制御できます。 6.2 Transport トランスポート Traffic information is sent unencrypted across the network from the sFlow Agent to the sFlow Collector and is thus vulnerable to evesdropping. This risk can be limited by creating a secure v1.00 sFlow.org [Page 44] FINAL sFlow Version 5 July 2004 measurement network and routing the sFlow Datagrams over this network. The choice of technology for creating the secure measurement network is deployment specific, but could include the use of VLANs and/or VPN tunnels. トラフィック情報が、暗号化なしで、sFlowエージェントからsFlowアナライザーにネットワーク経由で送信されます。そして、それは、盗聴可能です。このリスクは、安全な計測専用ネットワークを作り、このネットワーク上で、sFlowデータグラムを転送すれば、制限可能です。この安全な計測専用ネットワークの作成技術の選択は、配置の仕様です。しかし、VLANやVPNトンネルの使用も含まれます。 The sFlow Collector is vulnerable to attacks involving spoofed sFlow Datagrams. To limit this vulnerability the sFlow Collector should check sequence numbers and verify source addresses. If a secure measurement network has been constructed then only sFlow Datagrams received from that network should be processed. sFlowコレクターは、擬装sFlowデータグラムによる攻撃を受けやすいです。この弱点を制限するためには、sFlowコレクターアナライザーは、シーケンス番号と、送信元アドレスのチェックを行うべきです。安全な計測ネットワークが構築された場合、そのネットワークからsFlowデータグラムのみを処理すべきです。 6.3 Confidentiality 秘密性 Traffic information can reveal confidential information about individual network users. The degree of visibility of application level data can be controlled by limiting the number of header bytes captured by the sFlow Agent. In addition, packet sampling makes it virtually impossible to capture sequences of packets from an individual transaction. トラフィック情報は、個々のネットワークユーザについての秘密情報をあばくことができます。sFlowエージェントでキャプチャされたパケットのヘッダサイズの制限によって、アプリケーションレベルのデータの露出度を制御することができます。更に、パケットサンプリングは、個々のトランザクションのパケットシーケンスをキャプチャすることは現実的に不可能です。 The traffic patterns discernable by decoding the sFlow Datagrams in the sFlow Collector can reveal details of an individuals network related activities and due care should be taken to secure access to the sFlow Collector. sFlowアナライザーにおいて、sFlowデータグラムをデコードすることにより、トラフィックパターンを認識でき、結果、個々のネットワーク関係した活動の詳細を調べることができます。このため、sFlowアナライザーへは、安全なアクセスが必要です。 7. References 参照 [1] Phaal, P., Panchen, S., and N. McKee, "InMon Corporation's sFlow: A Method for Monitoring Traffic in Switched and Routed Networks", RFC 3176, September 2001. [2] Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for Describing SNMP Management Frameworks", RFC 2571, April 1999. [3] Rose, M., and K. McCloghrie, "Structure and Identification of Man- agement Information for TCP/IP-based Internets", STD 16, RFC 1155, May 1990. [4] Rose, M., and K. McCloghrie, "Concise MIB Definitions", STD 16, RFC 1212, March 1991. [5] Rose, M., "A Convention for Defining Traps for use with the SNMP", RFC 1215, March 1991. [6] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Structure of Management Information Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. v1.00 sFlow.org [Page 45] FINAL sFlow Version 5 July 2004 [7] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Textual Conventions for SMIv2", STD 58, RFC 2579, April 1999. [8] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M., and S. Waldbusser, "Conformance Statements for SMIv2", STD 58, RFC 2580, April 1999. [9] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple Network Management Protocol", STD 15, RFC 1157, May 1990. [10] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Introduc- tion to Community-based SNMPv2", RFC 1901, January 1996. [11] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Transport Mappings for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1906, January 1996. [12] Case, J., Harrington D., Presuhn R., and B. Wijnen, "Message Pro- cessing and Dispatching for the Simple Network Management Protocol (SNMP)", RFC 2572, April 1999. [13] Blumenthal, U., and B. Wijnen, "User-based Security Model (USM) for version 3 of the Simple Network Management Protocol (SNMPv3)", RFC 2574, April 1999. [14] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Protocol Operations for Version 2 of the Simple Network Management Protocol (SNMPv2)", RFC 1905, January 1996. [15] Levi, D., Meyer, P., and B. Stewart, "SNMPv3 Applications", RFC 2573, April 1999. [16] Wijnen, B., Presuhn, R., and K. McCloghrie, "View-based Access Con- trol Model (VACM) for the Simple Network Management Protocol (SNMP)", RFC 2575, April 1999. [17] Case, J., Mundy, R., Partain, D., and B. Stewart, "Introduction to Version 3 of the Internet-standard Network Management Framework", RFC 2570, April 1999. [18] S. Waldbusser, "Remote Network Monitoring Management Information Base", RFC 2819, May 2000. [19] Waterman, R., Lahaye, B., Romascanu, D., and S. Waldbusser, "Remote Network Monitoring MIB Extensions for Switched Networks Version 1.0", RFC 2613, June 1999. v1.00 sFlow.org [Page 46] FINAL sFlow Version 5 July 2004 [20] Daniele, M., Haberman, B., Routhier, S., and J. Schoenwaelder, "Textual Conventions for Internet Network Addresses", RFC 2851, June 2000. [21] N. Brownlee, "Traffic Flow Measurement: Meter MIB", RFC 2720, Octo- ber 1999. [22] Smith, A., Flick, J., de Graaf, K., Romanscanu, D., McMaster, D., McCloghrie, K., and S. Roberts, "Definition of Managed Objects for IEEE 802.3 Medium Attachment Units (MAUs)", RFC 2668, August 1999. [23] McCloghrie, K., and F. Kastenholz, "The Interfaces Group MIB", RFC 2863, June 2000. [24] Flick, J., and J. Johnson, "Definition of Managed Objects for the Ethernet-like Interface Types", RFC 2358, June 1998. [25] J. Case, "FDDI Management Information Base", RFC 1512, September 1993. [26] McCloghrie, K., and E. Decker, "IEEE 802.5 MIB using SMIv2", RFC 1748, December 1994. [27] J. Flick, "Definitions of Managed Objects for IEEE 802.12 Inter- faces", RFC 2020, October 1996. [28] Willis, S., Burruss, J., and J. Chu, "Definitions of Managed Objects for the Fourth Version of the Border Gateway Protocol (BGP-4) using SMIv2", RFC 1657, July 1994. [29] Baker, F. (Editor), "Requirements for IP Version 4 Routers", RFC 1812, June 1995. [30] F. Baker, "IP Forwarding Table MIB", RFC 2096, January 1997. [31] D. Haskin and S. Onishi, "Management Information Base for IP Ver- sion 6", RFC 2465, December 1998. [32] R. Srinivasan, "XDR: External Data Representation Standard", RFC 1832, August 1995. 8. Author's Address Peter Phaal InMon Corp. 580 California Street, 5th Floor San Francisco, CA 94104 v1.00 sFlow.org [Page 47] FINAL sFlow Version 5 July 2004 Phone: (415) 283-3263 EMail: peter.phaal@inmon.com Marc Lavine Foundry Networks 2100 Gold Street P.O. Box 649100 San Jose, CA 95164-9100 Phone: (408) 586-1700 EMail: mlavine@foundrynet.com v1.00 sFlow.org [Page 48] FINAL sFlow Version 5 July 2004 Appendix A: Differences Between sFlow Versions 4 and 5 付録A バージョン4と5の違い While the overall sFlow architecture has not changed, there have been numerous changes to the sFlow MIB and Datagram formats. These changes are described in detail in the revision histories contained in each of these specifications. sFlowの全体的なアーキテクチャは変更されていません。sFlow MIBとデータグラム形式に幾つかの変更があります。これらの変更の詳細は、各仕様の変更履歴に説明されています。 The major difference in the sFlow version 5 MIB is the division of the sFlowTable into three separate tables: sFlowバージョン5のMIBの大きな違いは、sFlowTableを3つのテーブルに分割したことです。 o sFlowRcvrTable, for maintaining a session with an sFlow collector. *sFlowRcvrTableは、sFlowコレクタとのセッションを管理します。 o sFlowFsTable, for configuring a packet sampling. *sFlowFsTableは、パケットサンプリングを管理します。 o sFlowCpTable, for configuring interface counter polling. *sFlowCpTableは、インターフェイスのカウンタポーリングを設定します。 The major changes in the sFlow Datagram specification revolve around vendor extensibility. Records within the datagram now have tag, length and value information. A global name space is defined for record types, allowing implementors to add their own record types. Extensibility also permits the addition of new record types without requiring changes to the published sFlow protocol. sFlowデータグラムの仕様の大きな変更は、ベンダー拡張性に関する解決策です。データグラムのレコードは、現在タグ、長さ、値の情報を持っています。レコードの種別を表すために、グローバルな名前空間が定義されました。それにより、独自のレコードタイプを追加した実装が可能となりました。拡張性はまた、公開されたsFlowプロトコルの変更なしに、新規のレコードタイプを追加することが可能です。 v1.00 sFlow.org [Page 49] FINAL sFlow Version 5 July 2004 Appendix B: Random Number Generation 付録B:乱数ジェネレータ The essential property of the random number generator is that the mean value of the numbers it generates converges to the required sampling rate. 乱数ジェネレータの主要な性質は、生成された数値の平均値が、要求されたサンプリングレートを満足することです。 A uniform distribution random number generator is very effective. The range of skip counts (the variance) does not significantly affect results; even small random perturbations are sufficient to ensure that the sampling process will not synchronize with periodicity within the packet stream. 正規分布 乱数ジェネレータは、とても効果的です。スキップカウントの範囲(変動)は、結果に大きな影響を与えません。十分小さな乱数のばらつきは、サンプリング処理がパケットストリームの定期性に同期しないことを保証するために十分です。 The random number generator must ensure that all numbers in the range between its maximum and minimum values of the distribution are possible; a random number generator only capable of generating even numbers, or numbers with any common divisor is unsuitable. 乱数ジェネレータは、すべての数値が分布の最大、最小値の範囲にあることを保証しなければなりません。乱数ジェネレータは、偶数のみ、共通の数値の倍数のみしか生成できないことは、問題です。 A new skip value is only required every time a sample is taken. 新しい、スキップ値は、サンプルが取得された時点毎にのみ必要です。 v1.00 sFlow.org [Page 50]