Cisco CNS Netflow Collection Engine

Cisco IOS NetFlow Version 9 Flow-Recordフォーマット

ダウンロード
Cisco IOS NetFlow Version 9 Flow-Recordフォーマット

White Paper


更新日:2003年6月19日

概要

Cisco IOS® NetFlowサービスは、ネットワーク上のIPフローについてネットワーク管理者が情報収集する手段を提供します。エクスポートされたNetFlowデータは、ネットワークの管理やプランニング、社内アカウント管理、部門別の課金、ISP(Internet Service Provider)における課金処理、データ ウェアハウジング、DoS(Denial of Service)攻撃対策、マーケティング向けデータ マイニングなど、様々な用途に利用できます。

NetFlowが出力する基本データは、「フロー レコード」と呼ばれます。NetFlowの成熟とともに、様々なフロー レコードを格納する複数のフォーマットが定義されてきました。フロー レコードの既存のflow-record-formatについては、次のWebページに多くの情報が掲載されています。

http://www.cisco.com/univercd/cc/td/doc/cisintwk/intsolns/netflsol/nfwhite.htm

この文書では、Version 9と呼ばれる最新版のNetFlowフロー レコード フォーマットについて解説します。NetFlow Version 9フォーマットの大きな特徴は、テンプレート ベースのフォーマットである点です。テンプレートの導入によって、フロー レコード フォーマットに拡張性が備わりました。これにより、将来NetFlowサービスに拡張を加える場合でも、基本フォーマットの変更は不要となります。またテンプレートは、主に以下のようなメリットを提供します。

  • サードパーティのパートナーがNetFlow対応のデータ収集または表示アプリケーションを開発する場合、NetFlowの機能追加のたびにアプリケーションの再構築を繰り返す必要がなくなります。あらかじめテンプレートで定義されたドキュメントをそのまま外部データファイルとして使うことで対応できるようになります。

  • 既存のシステムに影響を及ぼすことなく、NetFlowへの新機能の追加をより短期間で行えます。

  • 将来、登場するであろう、また開発中の新しいプロトコルのサポートについて、NetFlowではVersion 9フォーマットをサポートすることで適応可能であり、将来的拡張性に富んでいます。

この文書で使用される用語

NetFlow Version 9フォーマットの各部分を説明する上では、いくつもの紛らわしい用語が出てきます。混乱を前もって避けるため、ここではそれらの用語について解説します。

  • エクスポート パケット――NetFlowサービスが動作するデバイス(ルータなど)が生成するパケットです。他のデバイス(NetFlow Collectorなど)に向けて送信され、受信側のデバイスでこのパケットは処理されます(パースやアグリゲート、IPフロー情報の保存など)。

  • パケット ヘッダー――エクスポート パケットの先頭部分を指します。NetFlowバージョンをはじめ、パケット内のレコード数、パケット ロス検出のためのシーケンス番号など、パケットの基本情報を含みます。

  • フローセット――エクスポート パケットにおいて、パケット ヘッダーの後に続く部分を指します。データ収集デバイスによってパースと解析が行われます。パケット ヘッダーの後ろに位置する一連のレコードの総称として用いられます。フローセットには、「テンプレート」と「データ」の2つのタイプがあります。エクスポート パケットには1つ以上のフローセットが含まれており、テンプレートとデータの両タイプを同じパケット内に混在させることができます。

  • テンプレート フローセット――エクスポート パケット内でグループ化された、1つもしくは複数のテンプレート レコードの集まりを指します。

  • テンプレート レコード――後続のエクスポート パケットに含まれるデータ レコードのフォーマットを指定するために用いられます。このテンプレート レコードは、必ずしも同一パケット内のデータ レコードのフォーマット指定だけに用いられるわけではないことに注意してください。そのためデータ収集アプリケーションでは、受信したすべてのテンプレート レコードを一時保存する必要があります。そして、受信した様々なデータ レコードをパースする際に、一時保存したテンプレート レコードから適切なものを参照します。

  • テンプレートID――同じエクスポート デバイスによって生成される個々のテンプレート レコードを識別するための番号です。複数のデバイスにわたる唯一性は保証されていないので、複数デバイスからエクスポート パケットを受信するデータ収集アプリケーションでは、その点に留意する必要があります。つまり、テンプレートIDを発行したエクスポート デバイスのアドレスも一時保存し、デバイス間での識別を行わなくてはなりません。

  • データ フローセット――エクスポート パケット内でグループ化された、1つもしくは複数のデータ レコードの集まりを指します。

  • データ レコード――エクスポート パケットを生成したデバイスを流れるIPフローの情報を提供します。 データ レコードの各グループ(個々のデータ フローセット)は、それ以前に送信されたテンプレートIDを含んでおり、レコード内のデータをパースするために使用します。

  • オプション テンプレート――NetFlowプロセスに関連するデータのフォーマットを通知するための、特殊なタイプのテンプレート レコードです。

  • オプション データ レコード――オプション テンプレートをベースとする特殊なタイプのデータ レコードです。NetFlowプロセスそのものの情報を表す特定のテンプレートIDを参照します。

NetFlow Version 9パケット レイアウト

NetFlow Version 9のレコード フォーマットは、パケット ヘッダーと、それに続く1つ以上のテンプレート フローセットもしくはデータ フローセットで構成されます。テンプレート フローセットは、後続のデータ フローセットの各フィールドについて記述したものです。対象となるデータ フローセットは、同一のエクスポート パケットもしくは後続のエクスポート パケットに含まれます。

テンプレート フローセットとデータ フローセットは、1つのエクスポート パケット内に混在させることが可能です(表1)。

表1: NetFlow Version 9のエクスポート パケット

パケット ヘッダー

テンプレート フローセット

データ フローセット

データ フローセット

-

テンプレート フローセット

データ フローセット


エクスポート パケット内部には、各フローセットを以下の組み合わせで含めることができます。

  • テンプレート フローセットとデータ フローセットが混在するエクスポート パケット――データ収集デバイスでは、同じエクスポート パケットに含まれるテンプレート フローセットとデータ フローセットが、何らかの関係を持つと仮定することはありません。よって、受信したテンプレートはすべて一時保存しておき、データを解析する際にはその中から適切なテンプレートを選択するようにします。

  • データ フローセットだけで構成されるエクスポート パケット――適切なテンプレートIDが定義され、データ収集デバイスに送信されると、その後の大半のエクスポート パケットはデータ フローセットだけで構成されます。

  • テンプレート フローセットだけで構成されるエクスポート パケット――例外的なケースですが、テンプレート レコードだけを含むエクスポート パケットが送信されることもあります。通常、テンプレートは、データ フローセットに付加される形で送信されます。とはいえ、次のような状況では、テンプレートだけが送信されます。例えば、ルータが起動もしくは再起動した。場合、ルータはただちにデータ収集デバイスとの同期を行おうとします。その際、テンプレート フローセットを頻繁に送信し、後続のデータ フローセットをデータ収集デバイスにて解析するために必要な情報を提供します。また、テンプレート レコードの有効期限は限られているため、定期的にリフレッシュしなくてはなりません。テンプレートの有効期限が切れたとき、データ収集デバイスに送信すべきデータ フローセットがない場合は、テンプレート フローセットだけを含むエクスポート パケットが送信されます。

テンプレート フローセットおよびデータ フローセットそれぞれのフォーマットについては、この文書の後半で説明します。

NetFlow Version 9パケット ヘッダー フォーマット

NetFlow Version 9のパケット ヘッダーは、前バージョンのものとほぼ同一のフォーマットを使用しています。表2に、NetFlow Version 9のパケット ヘッダー フォーマットを示します。これは、NetFlow Version 5のパケット ヘッダーをベースとしています。また、表3に、各フィールドの内容を示します。

表2:NetFlow Version 9パケット ヘッダー フォーマット
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

バージョン

カウント

システム稼働時間

UNIX秒

パケット シーケンス番号

ソースID



表3:NetFlow Version 9パケット ヘッダーのフィールド内容
フィールド名
内容

バージョン

このパケットにエクスポートされたNetFlowレコードのバージョン。Version 9の場合、この値は0x0009となります。

カウント

このパケットに含まれるフローセット レコード(テンプレートとデータ双方)の数

システム稼働時間

このデバイスが起動してからの稼働時間(ミリ秒)

UNIX秒

1970年1月1日0時0分UTC(Coordinated Universal Time)からの経過時間(秒)

シーケンス番号

このエクスポート デバイスが送信したすべてのエクスポート パケットに振られるシーケンス番号。この番号は逐次増加するため、エクスポート パケットのロスの検出に利用できます。

注: NetFlow Version 5およびVersion 8のパケット ヘッダーにおける「合計フロー数」は、このフィールドに変更されました。

ソースID

あるデバイスがエクスポートする全パケットにわたって唯一性が保証される32ビットの値(NetFlow Version 5およびVersion 8のパケット ヘッダーにおけるエンジン タイプおよびエンジンIDフィールドに相当します)。このフィールドのフォーマットはベンダー固有となります。シスコ製品の場合、最初の2バイトは拡張用に予約されており、つねにゼロとなります。3バイト目には、エクスポート デバイスのルーティング エンジンを識別する値が入ります。4バイト目には、エクスポート デバイスの各ライン カードやVersatile Interface Processorを識別する値が入ります。データ収集デバイスでは、受信したNetFlowエクスポート パケットを個々のエクスポート デバイス上のIPフローに関連づける手段として、ソースIDとソースIPアドレスの組み合わせを用いる必要があります。


NetFlow Version 5およびVersion 8のパケット ヘッダーに含まれていたその他の値(サンプリング インターバルやアグリゲーション スキーム)は、既定のオプション データ レコードで送信されます。オプション テンプレートおよびオプション データ レコードそれぞれのフォーマットについては、この文書の後半で説明します。

NetFlow Version 9テンプレート フローセット フォーマット

NetFlow Version 9フォーマットの主要な要素と言えるのが、テンプレート フローセットです。テンプレートの導入によって、NetFlow対応のデータ収集または表示用アプリケーションでは、事前に登録されていないフォーマットのNetFlowデータを扱えるようになります。これにより、NetFlowのレコード フォーマットの柔軟性が大幅に改善します。テンプレートは、あるテンプレートIDを持つNetFlowデータについて、各フィールドのタイプや長さを規定するために使用します。

テンプレート フローセットのフォーマットを表4に、各フィールドの内容を表5にそれぞれ示します。


表4:NetFlow Version 9テンプレート フローセット フォーマット
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

フローセットID = 0

レングス

テンプレートID

フィールド数

フィールド1タイプ

フィールド1レングス

フィールド2タイプ

フィールド2レングス

フィールドNタイプ

フィールドNレングス

テンプレートID

フィールド数

フィールド1タイプ

フィールド1レングス

フィールド2タイプ

フィールド2レングス

フィールドNタイプ

フィールドNレングス



表5:NetFlow Version 9テンプレート フローセットの各フィールドの内容
フィールド名
内容

フローセットID

フローセットIDは、テンプレート レコードとデータ レコードを区別するためのIDです。テンプレート レコードのフローセットIDは、つねに0~255の値をとります。現在のところ、テンプレート レコードのフローセットIDはゼロに、オプション テンプレート(後述)のフローセットIDは1にセットされます。データ レコードの場合は、つねに255より大きな値をとります。

レングス

このフローセット全体の長さを表します。表4が示すとおり、個々のテンプレート フローセットは複数のテンプレートを含むことができます。よって、後続のフローセット(テンプレートまたはデータ)の位置を得るためには、このフィールドの値を使用する必要があります。

レングス フィールドは、TLV(type/length/value)形式で表現されています。つまり、フローセットIDとレングスの両フィールドのバイト長、そしてフローセットに含まれるすべてのテンプレート レコードのバイト長を合計した値となります。

テンプレートID

ルータは、エクスポートしようとするNetFlowデータのタイプに応じて、いくつかのテンプレート フローセットを送信します。その際、個々のテンプレートに割り当てられる固有のIDがテンプレートIDです。このIDの唯一性は、それを割り当てたルータ内に限定されています。

テンプレートIDは256以上の値をとり、それぞれがデータ レコードのフォーマットを表します。なお、0~255の値はフローセットID用に予約されているため、テンプレートIDとしては利用されません。

フィールド数

このテンプレート レコードのフィールド数を表します。1つのテンプレート フローセットには、複数のテンプレート レコードを含めることができます。よってパーサでは、この数を参照することで、現在のテンプレート レコードの終端と次のテンプレート レコードの始点を決定します。

フィールド タイプ

フィールドのタイプを表す数値です。フィールドのタイプを表す値は、ベンダー固有となります。シスコでは、NetFlow Version 9をサポートするすべてのプラットフォームに共通の値を設定しています。

シスコでは、NetFlow Version 9ソフトウェア(および新しいフィールド タイプ定義を加えた追加版)の初回リリースの時点で、既定のフィールド タイプとその長さを記述したファイルを提供します。

表6に、現在定義されているフィールド タイプの詳細を示します。

フィールド長

先に定義されたフィールドのバイト長を表します。


以下の点に留意してください。

  • テンプレートIDは、ルータの再起動によって変化します。その他の状況では、エクスポート デバイスのNetFlow設定が変化した場合のみ、テンプレートIDが変化します。
  • テンプレートがリフレッシュされない場合、一定期間後に無効となります。テンプレートのリフレッシュ方法には、次の2種類があります。1つは、エクスポート パケットをN個送信するたびに、テンプレートを再送信する方法です。もう1つは、タイマーによってN分間隔で再送信し、リフレッシュする方法です。いずれの方法もユーザ設定によって選択できます。

表6:NetFlow Version 9フィールド タイプ定義
フィールド タイプ
内容
長さ
内容

BYTES_32

1

4

特定のIPフローに対応する32ビットのバイト数カウンタ

PKTS_32

2

4

特定のIPフローに対応する32ビットのパケット数カウンタ

FLOWS

3

4

アグリゲートされたフロー数。Nのデフォルト値は4です。

PROT

4

1

IPプロトコルを表すバイト値

SRC_TOS

5

1

入力インタフェースで受信されたときのToS(Type of Service)バイト値

TCP_FLAGS

6

1

このIPフローで検出されたすべてのTCPフラグの累計値

L4_SRC_PORT

7

2

TCP/UDPのソース ポート番号(例:FTP、Telnetその他)

IPV4_SRC_ADDR

8

4

IPv4ソース アドレス

SRC_MASK

9

1

ソール ルート マスクのビット長。連続マスクを前提とします。

INPUT_SNMP

10

2

入力インタフェース インデックス

L4_DST_PORT

11

2

TCP/UDPの宛先ポート番号(例:FTP、Telnet、その他)

IPV4_DST_ADDR

12

4

IPv4宛先アドレス

DST_MASK

13

1

宛先ルート マスクのビット長。連続マスクを前提とします。

OUTPUT_SNMP

14

N

出力インタフェース インデックス。Nのデフォルトは2ですが、より高い値を設定できます。

IPV4_NEXT_HOP

15

4

ネクスト ホップ ルータのIPv4アドレス

SRC_AS

16

N

BGP(Border Gateway Protocol)のソースAS(Autonomous System)番号

DST_AS

17

N

BGPの宛先AS番号

BGP_IPV4_NEXT_HOP

18

4

BGPドメイン内のネクスト ホップ ルータ

MUL_DST_PKTS

19

N

このIPフローに対応するIPマルチキャスト出力パケット数カウンタ。N×8ビットの長さを持ちます。

MUL_DST_BYTES

20

N

このIPフローに対応するIPマルチキャスト出力バイト数カウンタ。N×8ビットの長さを持ちます。

LAST_SWITCHED

21

4

このIPフローの最後のパケット転送時のシステム稼働時間

FIRST_SWITCHED

22

4

このIPフローの最初のパケット転送時のシステム稼働時間

BYTES_64

25

N

出口側IPフローに対応する出力バイト数カウンタ

PKTS_64

24

N

IPフローに対応する出力パケット数カウンタ

MAC_ADDR

25

6

IPフローに対応するレイヤ2MAC(Media Access Control)アドレス

VLAN_ID

26

2

IPフローに対応するVLAN ID

IPV6_SRC_ADDR

27

16

IPv6ソース アドレス

IPV6_DST_ADDR

28

16

IPv6宛先アドレス

IPV6_SRC_MASK

29

1

IPv6ソース マスクの連続ビット長

IPV6_DST_MASK

30

1

IPv6宛先マスクの連続ビット長

FLOW_LABEL

31

3

RFC 2460仕様に基づくIPv6フロー ラベル

ICMP_TYPE

32

2

ICMP(Internet Control Message Protocol)パケット タイプ。「(ICMPタイプ×256)+ICMPコード」の値で表されます。

MUL_IGMP_TYPE

33

1

IGMP(Internet Group Management Protocol)パケット タイプ

SAMPLING_INTERVAL

34

4

NetFlowによるパケット サンプリングの間隔。例えば「100」は、100パケットごとに1回のサンプリングを行うことを表します。

SAMPLING_ALGORITHM

35

1

NetFlowのサンプリングに用いられたアルゴリズムのタイプを表します。
0x01 一定間隔サンプリング

FLOW_ACTIVE_TIMEOUT

36

2

NetFlowキャッシュにおけるアクティブなフロー エントリーのタイムアウト値(秒)

FLOW_INACTIVE_TIMEOUT

37

2

NetFlowキャッシュにおける非アクティブなフロー エントリーのタイムアウト値(秒)

ENGINE_TYPE

38

1

フロー スイッチング エンジンのタイプ

ENGINE_ID

39

1

フロー スイッチング エンジンのID番号

TOTAL_BYTES_EXPORTED

40

4

このルータがエクスポートしたバイト数

TOTAL_EXPORT_PKTS_SENT

41

4

このルータがエクスポートしたパケット数

TOTAL_FLOWS_EXPORTED

42

4

このルータがエクスポートしたIPフロー数

FLOW_SAMPLER_ID

48

1

「show flow-sampler」コマンドで表示されるID

FLOW_SAMPLER_MODE

49

1

データ サンプリングに用いられたアルゴリズムのタイプを表します。
0x01 一定間隔のパケット サンプリング
0x02 擬似ランダム サンプリング

FLOW_SAMPLER_RANDOM_INTERVAL

50

4

サンプリング間隔のパケット数。一定間隔のパケット サンプリングにて参照されます。

IP_PROTOCOL_VERSION

60

1

IPプロトコルのバージョン。IPv4の場合は4、IPv6の場合は6にセットされます。テンプレート内に含まれない場合は、IPv4と仮定されます。

DIRECTION

61

1

フロー方向:

  • 0 - 入力フロー
  • 1 - 出力フロー

IPV6_NEXT_HOP

62

16

ネクスト ホップ ルータのIPv6アドレス

BPG_IPV6_NEXT_HOP

63

16

BGPドメイン内のネクスト ホップ ルータ

IPV6_OPTION_HEADERS

64

4

IPフロー中のIPv6オプション ヘッダーを表すビット列フィールド

MPLS_LABEL_1

70

3

スタック順位1のMPLSラベル

MPLS LABEL 2

71

3

スタック順位2のMPLSラベル

MPLS LABEL 3

72

3

スタック順位3のMPLSラベル

MPLS LABEL 4

73

3

スタック順位4のMPLSラベル

MPLS LABEL 5

74

3

スタック順位5のMPLSラベル

MPLS LABEL 6

75

3

スタック順位6のMPLSラベル

MPLS LABEL 7

76

3

スタック順位7のMPLSラベル

MPLS_LABEL_8

77

3

スタック順位8のMPLSラベル

MPLS_LABEL_9

78

3

スタック順位9のMPLSラベル

MPLS LABEL 10

79

3

スタック順位10のMPLSラベル


エンコード済みフィールドの内容

IPV6_OPTIONS_HEADERS

このフィールドは以下のようにエンコードされています。

Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8
予約 予約 予約 予約 予約 ESP(Encapsulating Security Payload)(50) AH(認証ヘッダー)(51)
ペイロード圧縮ヘッダー(108)

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
宛先オプション ヘッダー(60) ホップバイホップ オプション ヘッダー(0) 予約 レイヤ4到達不可ヘッダー(compressed, encrypted, not supported) フラグメンテーション ヘッダー(44)――先頭フラグメント ルーティング ヘッダー(43) フラグメンテーション ヘッダー(44)――先頭フラグメント以外 予約

NetFlow Version 9データ フローセット フォーマット

データ フローセットのフォーマットを表7に、各フィールドの内容を表8にそれぞれ示します。

表7:NetFlow Version 9データ フローセット フォーマット
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

フローセットID = テンプレートID

レングス

レコード1――フィールド1の値

レコード1――フィールド2の値

レコード1――フィールド3の値

レコード1――フィールド4の値

レコード1――フィールドNの値

レコード2――フィールド1の値

レコード2――フィールド2の値

レコード2――フィールド3の値

レコード2――フィールドNの値

パディング


表8:NetFlow Version 9データ フローセットの各フィールドの内容
フィールド名
内容

フローセットID =
テンプレートID

NetFlow Version 9のデータ フローセットでは、先頭にフローセットIDが位置し、その後に各レコードが続
く形となります。フローセットIDは、事前に送信されたテンプレートIDに対応しています。コレクター及び表
示アプリケーション側では、このフローセットIDに基づいて、後続の各フィールド値に適切なタイプと長さを
対応付けます。

レングス

データ フローセットの長さを表します。

レングス フィールドは、TLV(type/length/value)形式で表現され
ています。つまり、フローセットIDとレングスの両フィールドのバイト長、そしてフローセットに含まれるすべて
のデータ レコードのバイト長を合計した値となります。

レコードN ――
フィールドNの値

データ フローセットの残りの部分は、フィールド値の集まりで構成されます。各フィールドのタイプと長さ
は、上記フローセットID(テンプレートID)が示すテンプレート レコードによって事前に定義されています。

パディング

フローセットの終端を32ビットの境界に合わせるため、パディングが挿入されます。レングスフィールドに
は、このパディングの長さも含まれることに留意してください。


NetFlow Version 9のデータ フローセット フォーマットを解釈する際には、対応するテンプレートIDが必要となることに注意してください。対応するテンプレートIDを事前に受信していない場合は、データ レコードを破棄しなくてはなりません。

NetFlow Version 9オプション テンプレート フォーマット

オプション テンプレート(および対応するオプション データ レコード)は、NetFlow Version 9における仕様で重要な役割を担う新しいレコード タイプです。オプション テンプレートは、IPフローに関する情報ではなく、NetFlowプロセスそのもののメタデータを提供するために使用します。オプション テンプレートのフォーマットを表9に、各フィールドの内容を表10にそれぞれ示します。

表9: NetFlow Version 9のオプション テンプレート
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

フローセットID = 1

レングス

テンプレートID

オプション スコープ レングス

オプション レングス

スコープ フィールド1タイプ

スコープ フィールド1レングス

スコープ フィールドNレングス

オプション フィールド1タイプ

オプション フィールド1レングス

オプション フィールドNレングス

パディング



表10: NetFlow Version 9のオプション テンプレートのフィールド定義
フィールド名
内容

フローセットID = 1

フローセットIDは、テンプレート レコードとデータ レコードを区別するためのIDです。オプション テ
ンプレートのフローセットIDは、つねに1にセットされます。データ レコードの場合は、つねに255より
大きな値をとります。

レングス

このフローセットの長さを表します。個々のテンプレート フローセットは複数のテンプレートを含むこ
とができます。よって、後続のフローセット(テンプレートまたはデータ)の位置を得るためには、この
フィールドの値を使用する必要があります。

レングス フィールドは、TLV(type/length/value)形式で表現されています。つまり、フローセットIDと
レングスの両フィールドのバイト長、そしてフローセットに含まれるすべてのテンプレート レコードのバ
イト長を合計した値となります。

テンプレートID

ルータは、エクスポートしようとするNetFlowデータのタイプに応じて、いくつかのテンプレート フ
ローセットを送信します。その際、個々のテンプレートに割り当てられる固有のIDがテンプレートIDで
す。このIDの唯一性は、それを割り当てたルータ内に限定されています。テンプレートIDは255より
大きな値をとり、255以下は予約されています。

オプション スコープ レングス


このオプション テンプレートに含まれるすべてのスコープ フィールドのバイト長を表します(スコープ
については後述)。

オプション レングス

このオプション テンプレートに含まれるすべてのオプション フィールドのバイト長を表します。

スコープ フィールド1タイプ

オプション レコードが対象とする、NetFlowプロセスの関連部分を示します。現在、以下の値が定 義されています。オプション レコードが対象とする、NetFlowプロセスの関連部分を示します。現在、以下の値が定 義されています。

  • 0x0001 システム
  • 0x0002 インタフェース
  • 0x0003 ライン カード
  • 0x0004 NetFlowキャッシュ
  • 0x0005 テンプレート

例えば、NetFlowのサンプリングは、インタフェース単位で実施できます。このとき、オプション レコードによってサンプリングの構成がレポートされた場合、そのスコープが0x0002(インタフェース) であると示されます。

スコープ フィールド1レングス

オプション レコード上のスコープ フィールドのバイト長を表します。

オプション フィールド1タイプ

オプション レコード上のフィールドのタイプを表す数値です。このフィールドがとりうる値を表6に示し
ます。

オプション フィールド1レングス

オプション レコード上のオプション フィールドのバイト長を表します。

パディング

フローセットの終端を32ビットの境界に合わせるため、パディングが挿入されます。長さフィールドには、このパディングの長さも含まれることに留意してください。


例1:

図1に、オプション テンプレートを示します。

図1:
オプション テンプレートの例

以下の3つのフロー レコードをレポートする例を示します。

ソースIPアドレス |  宛先IPアドレス |ネクスト ホップ アドレス| パケット数| バイト数
198.168.1.12    |    10.5.12.254   |       192.168.1.         |    5009   | 5344385 
192.168.1.27    |    10.5.12.23    |       192.168.1.1        |    748    | 388934 
192.168.1.56    |    10.5.12.65    |       192.168.1.1        |    5      | 6534 

図2は、NetFlow Version 9のエクスポート パケットを表す図です。以下の点に注目してください。

  • エクスポート パケットは、テンプレート フローセットとデータ フローセットの両方を含むことができる。

  • テンプレート フローセットとデータ フローセットは混在できる。

  • テンプレート レコードのテンプレートIDは、データ フローセットのフローセットIDに対応する。

  • データ レコードにおけるデータ配置は、対応するテンプレート レコードで定義されたフィールド フォーマットに従う。

  • ここでは、テンプレートID「256」のテンプレート フローセットに続き、同IDを参照するデータ フローセットを受信した例を紹介していますが、実際には、あるエクスポート パケットにおいて、テンプレートとそれを参照するデータが連続するとは限らないことに注意してください。
図2:
NetFlow Version 9 エクスポート パケットの例

データ収集 中継デバイス

通常、コレクターは、エクスポート デバイスからフロー レコードを受信し始める前に、テンプレート定義を受信します。その後、フロー レコードのデコードを行い、コレクター内に保存します。フロー レコードを受信した時点でテンプレート定義が届いていない場合は、コレクターは、同レコードを保存し、追ってテンプレート定義が届いた時点でデコードするようにします。コレクターでは、データ フローセットとそれに対応するテンプレートが同じエクスポート パケットに含まれると仮定してはいけません。

また、1つのエクスポート パケットには1つのテンプレート フローセットだけ含まれると仮定することもできません。まれに、複数のテンプレート フローセットが1つのエクスポート パケットに入ることがあります。

テンプレートは、一定の有効期限を備えています。データ収集デバイスでは、エクスポート デバイスからテンプレート フローセットを最後に受信した時間に基づき、テンプレートの有効期限を計算する必要があります。有効期限の切れたテンプレートを用いてフロー レコードのデコードを行ってはいけません。よって、データ収集デバイスでは、以下のようなリストを管理する必要があります。

<エクスポート デバイス、エクスポート インタフェース、テンプレートID、テンプレート定義、最終受信時間>

エクスポート デバイスの再起動などによって、新しいテンプレート定義を受信した場合は、直ちに古いテンプレート定義を置き換える必要があります。