分散システム特論 rfc3954 cisco systems netflow services export version 9

40
分分分分分分分分 RFC3954 Cisco Systems NetFlow Services Export Version 9 分分分分分分分分分 分分分分分分 分分 1 分 分分 分分

Upload: waldemar-buckminster

Post on 30-Dec-2015

96 views

Category:

Documents


0 download

DESCRIPTION

分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9. システム情報科学府 情報工学専攻 修士 1 年 原田 義明. 概要. RFC3954 とは? Netflow version9 のフォーマットについて書かれている Netflow ネットワーク管理者に対して、データネットワーク上での IP フローに関するデータを提供 ネットワーク構成要素 ( ルータやスイッチ ) からフローデータを収集し、コレクタにエクスポートする 柔軟かつ詳細な計測結果を提供する. 管理者. ネットワーク - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

分散システム特論RFC3954Cisco Systems NetFlow Services

Export Version 9 システム情報科学府

情報工学専攻 修士 1 年原田 義明

Page 2: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

概要

RFC3954 とは? Netflow version9 のフォーマットについて書かれている

Netflow ネットワーク管理者に対して、データネットワーク上での IP

フローに関するデータを提供 ネットワーク構成要素 ( ルータやスイッチ ) からフローデータを収

集し、コレクタにエクスポートする 柔軟かつ詳細な計測結果を提供する

ネットワーク構成要素 Netflow コレクタ

管理者

Page 3: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

概要

フローとは ネットワーク機器を通過した、ある共通した特性

を持つ単一方向のパケットの列 IP アドレス、パケット数、バイト数、タイムス

タンプ、 ToS(Type of Service) 、アプリケーションが使用するポート番号、入出力インターフェースなど

Page 4: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

準備

フロー抽出のタイミング エクスポーターがフローの終わりを検出した場合

TCP コネクションの FIN もしくは RSTbit の検出など フローが一定時間非アクティブだった場合

一定時間パケットが観測されなかったフロー 長寿命のフローに関して、一定時間毎に抽出

タイムアウト時間は設定可能 エクスポーターに何かしらの内部的な制約が発生

した場合 メモリ不足やカウンターが折り返してしまう場合

Page 5: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

NetFlow export version 9

バージョン 9 は、エクスポートフォーマットにテンプレートを使用している IP パケットのフローを柔軟性が高く、拡張性に

富んだ方法で観測することができる エクスポートする情報のフォーマットの構造を

変更せずに、新しいフィールドを NetFlow のレコードに追加できる

必要なデータのみをエクスポートできるので、ネットワーク負荷を軽減できる

Page 6: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

準備

エクスポートされるフローセットの種類 データ・フローセット

フローデータ・レコード エクスポートされたフローのデータ部分

オプション・データ・レコード NetFlow の処理設定など、フロー以外の要求された情報

テンプレート・フローセット 何をエクスポートするのかを定義したフローセット

オプション・テンプレート・フローセット 何をエクスポートするのかを定義したフローセット フロー自体ではなく、 NetFlow の処理設定や処理固有のデー

タを提供するために利用される

Page 7: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

フローセットの種類

フローセット内容

テンプレート・レコード データ・レコード

データ・フローセット /

フローデータ・レコードまたはオプ

ション・データ・レコード

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

テンプレート・レコード /

オプション・テンプレート・レコード

オプション・テンプレート・レコード /

Page 8: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

NetFlow のやり取り

エクスポーター コレクター

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

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

データフローセット

データフローセット フローデータ

これから送信するエクスポートデータのフォーマットを送信する受け取ったデータフローセットの

テンプレートは、コレクター側で保持エクスポーターは、データ・フローセットを送信するコレクターは、送られてきたデータ・フローセットと過去に受け取ったテンプレートを比較(それぞれのフローセットの ID を利用)

テンプレートがあれば、フローデータを作成できる

Page 9: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

エクスポートパケット

エクスポートパケットは、ヘッダに続く 1 つ以上のフローセットから構成される テンプレート、データ、オプションテンプレートのいずれか フローセットにはそのフローセットのタイプを識別するため

に ID が割り振られている ID が 256 より小さいものは、テンプレートやオプションといった

特別なフローセットのために予約されている

パケットヘッダ

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

オプションテンプレートフローセット

データフローセット ・・・・・・

Page 10: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

エクスポートパケット

パケットヘッダ

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

オプションテンプレートフローセット

データフローセット ・・・・・・ データ

フローセット

テンプレート、データ、オプションテンプレートが入り混じっている場合 新しく作られたテンプレートを、できる限り早くエクス

ポートするケース テンプレートやオプションテンプレートがスペース上の

都合により、入り混じって配置されていく

Page 11: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

エクスポートパケット

データパケットのみにより構成 適切なテンプレートレコードが定義さ

れ、 Netflow コレクター機器に送信された後 大部分のエクスポートパケットはデータフロー

セットのみで構成される

パケットヘッダ

データフローセット

・・・・ データフローセット

データフローセット ・・・・・・・・

・・・・

Page 12: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

エクスポートパケット

テンプレート、及びオプションテンプレートのみで構成 エクスポーターは、テンプレート、及びオプションテンプレー

トを含むパケットを定期的に NetFlow コレクターに送信する フローデータレコードの正しい定義を保持するために行われる

パケットヘッダ

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

オプションテンプレートフローセット

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

・・・

Page 13: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

パケット・フォーマット

バージョン情報 カウント

sysUpTime

UNIX Secs

シーケンス番号

ソース IDパケットヘッダのフォーマット

Page 14: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

パケットフォーマット

バージョン情報 エクスポートに使用されているフローレコードフォーマッ

トのバージョン番号 最新のバージョンは 9

カウント エクスポート・パケットに含まれるレコード数

オプション・フローセット・レコード、テンプレート・フローセット・レコード、データ・フローセット・レコードの合計数

sysUpTime 機器がブートしてから経過した時間をミリ秒で示したもの

Page 15: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

パケットフォーマット

UNIX Secs エクスポートパケットがエクスポーターから創出された時刻を “ 0000 UTC 1970” を起点とした経過秒数で示したもの

シーケンス番号 エクスポーターが観測ドメインから送信した全てのエクス

ポートパケットにつけられたシーケンス番号 (昇順 ) コレクターがエクスポートパケットの取りこぼしが無い

か判断するときに使用 ソース ID

観測ドメインを特定するための 32bit の値 コレクターは、ソース ID と送信元 IP アドレスの組み合わ

せで、異なるエクスポートストリームを区別する

Page 16: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

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

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

256フィールド数

フィールドタイプ 1 フィールド長 1

フィールドタイプ 2 フィールド長 2

・・・ ・・・フィールドタイプ N フィールド長 N

テンプレート ID = 257

フィールド数

フィールドタイプ 1 フィールド長 1

フィールドタイプ 2 フィールド長 2

・・・ ・・・フィールドタイプ M フィールド長 M

テンプレート・フローセットのフォーマット

Page 17: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

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

フローセット ID テンプレート・フローセットは ID=0 が割り振られている

長さ フローセット全体の長さ テンプレートフローセットの数が可変であるため、記述しなけ

ればならない テンプレート ID

テンプレートレコードに割り振られる、一意なテンプレート ID 生成した観測ドメイン内で、一意性は保障される ID は、 0~ 255 まではテンプレートフローセット、オプション・

フローセット、及び将来定義されるフローセットのために予約

Page 18: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

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

フィールド数 テンプレートレコードに含まれるフィールド数 この値から、次のテンプレートレコードまでの区切りを判断する

フィールドタイプ フィールドのタイプを表す数値

フィールド長 フィールドのタイプに対応した、バイト数を示

Page 19: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

データ・フローセット

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

長さ

レコード 1 – フィールド値 1 レコード 1 – フィールド値 2

レコード 1 – フィールド値 3 ・・・レコード 2 – フィールド値 1 レコード 2 – フィールド値 2

レコード 2 – フィールド値 3 ・・・レコード 2 – フィールド値 1 ・・・

・・・ パディングデータ・フローセットのフォーマット

Page 20: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

データ・フローセット

フローセット ID フローセットごとに ID が割り振られている このフローセットが流れる以前に生成されているテンプ

レート ID と対応付けられている 長さ

本フローセットに含まれる全てのフローレコードの長さ レコード N – フィールド値 M

フローデータ・レコードの並び N個のフローレコードと、テンプレート ID で示された

フィールドのタイプと数のデータを含む パディング

4 バイトごとに区切られるように、 0 で埋められたパディング

Page 21: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

データ・フローセット

フローセット  ID = 1 長さテンプレート ID オプション・スコープ長

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

スコープ 1 フィールド長 ・・・

スコープ N フィールド長 オプション 1 フィールドタイプ

オプション 1 フィールド長 ・・・オプション M フィールド長 パディングオプション・テンプレート・フローセットのフォーマット

Page 22: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

データ・フローセット

フローセット ID オプション・テンプレートには ID = 1 が予約

長さ オプション・テンプレート・フローセット全部の長

さ テンプレート ID

256 以上の値が入っており、このオプション・テンプレートの ID を示す

オプション・スコープ長 オプション・テンプレート・レコードに含まれてい

るスコープ・フィールドの長さ

Page 23: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

データ・フローセット

オプション長 オプション・テンプレート・レコード中のフィールド定義のバ

イト数 スコープ N フィールドタイプ

オプション・テンプレート・レコードが示しているエクスポーターや NetFlow 処理部の指定

スコープ・フィールドは必ずオプションフィールドの前に来る

1 : システム2 : インターフェース3 : ラインカード4 : キャッシュ5 : テンプレート

Page 24: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

データ・フローセット

スコープ N フィールド長 スコープ・フィールドのバイト長

オプション M フィールド・タイプ オプション・テンプレートの中にフィールドの型を指定

オプション M フィールド長 オプションフィールドのバイト長

パディング 4 バイトごとの境界で区切れるように 0 でパディン

Page 25: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

オプション・フローセット

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

長さ

レコード長 = スコープ値 1 レコード 1 – オプションフィールド値 1

レコード 1 – オプションフィールド値 2

・・・

レコード長 = スコープ値 2 レコード 2 – オプションフィールド値 1

レコード 2 – オプションフィールド値 2

・・・

レコード 3 – スコープ値 1 レコード 3 – オプションフィールド値

レコード 3 – オプションフィールド値 2

・・・

・・・ パディング

データ・フローセット・フィールドのオプション・データ・レコードの説明

Page 26: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

オプション・フローセット

フローセット ID データフローセットに対応するテンプレートの ID

長さ このフローセット全体の長さ

レコード N – オプション・フィールド値 スコープとオプションフィールド値の長さや種類

は、テンプレートにより定義されており、そのデータ部分

パディング

Page 27: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

オプション・フローセット

フィールドタイプ

値 長さ ( バイト )

説明

IN_BYTES 1 N IP フローのバイト数N * 8ビット長で表した受信カウンターデフォルトの N は 4

IN_PKTS 2 N IP フローのパケット数N * 8ビット長で表した受信カウンターデフォルトの N は 4

FLOWS 3 N 集約されたフロー数デフォルトの N は 4

PROTOCOL 4 1 IP プロトコルタイプ

FLOW_SAMPLER_MODE

49 1 サンプリングに使用されているアルゴリズムのタイプ

DIRECTION 61 1 フローの方向

Page 28: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

テンプレートの管理

テンプレートの管理 テンプレート・レコードとフローデータ・レコードは同じエ

クスポートパケットに表れてもよい 必ずしもエクスポートパケットはテンプレートレコード

を含む必要はないが、コレクタはテンプレートレコードを保持しなければならない テンプレートがないと、フローデータを解釈できない

エクスポーター側で何か変更 (再起動や時計の変更 ) がなされた場合は、既存のテンプレートは全て破棄する 新しいテンプレートレコードには、未使用のテンプレート

ID がふられる

Page 29: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

エクスポーターの動作

次の場合に ( オプション ) テンプレートが送信される NetFlow 処理部分が再起動した場合

データ・フローセットと同時か、またそれ以前にテンプレート・フローセットを送信しなければならない

設定が変更された場合 できる限り速やかにテンプレート・フローセットを送信

する必要がある

早急にテンプレートを送信しなければならないため、この2つの場合はデータ・フローセットを含まずにパケットをエクスポートしてもよい

Page 30: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

エクスポーターの動作

テンプレート情報のリフレッシュ 定期的に全ての ( オプション ) テンプレート・レコード

を送信しなければならない テンプレートには、一定の寿命を設定する

一定個数のエクスポートパケット毎 時間ベースの寿命 (○○ 分毎 )

時刻設定の変更時 できる限りすばやくテンプレート定義を送信する必要

がある

Page 31: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

コレクタ側の動作

コレクタ側の動作 テンプレートが無いフローレコードを受け取っ

た場合 保存しておき、テンプレートが届き次第デコードを行

う エクスポーターで時刻の設定が変更になった時

そのエクスポーターに関連するテンプレートを全て破棄する必要がある

新しいテンプレートを受け取った場合 ただちに過去のテンプレートを上書きする

Page 32: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

セキュリティ上の考慮点

NetFlow v9 は、エクスポーターとコレクターが単一のプライベートネットワーク上に存在すると過程 秘匿性や整合性、認証といった要求はプロトコル

に課されていない 現在、 IPFIX(IP Flow Information eXport) という

プロトコルが開発されている NetFlow v9 のセキュリティ上の問題を考慮しているプ

ロトコル RFC3917参照

Page 33: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

疑問点

いくつかデータ長が可変のものがあったが、受信の際にサイズが違ったらどうなるのか? 送信元MAC アドレスは 6 バイト、など

エクスポーター側で時間設定が変更された場合、関連するテンプレートは全て破棄する必要がある コレクターはそのタイミングをどうやって知る

のか?

Page 34: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

使用したプログラム

nfdump-1.5.2 NetFlow の version 5,7,9 に対応 NetFlow コレクタ netflow_v9.c ( nftdump の netflow のヴァージョ

ン 9への対応が書かれている部分)

Page 35: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

データ長が違う場合は?

タイプごとに設定はされているが、テンプレートにデータ長も載せるため、別に違ってもそのまま受け付ける 可変長のデータと、固定長のデータの扱いに差は無い

for(i=0; i<count; i++ ) {field_type = ntohs(template->record[i].type) &

0x007f; // make sure field < 128field_length = ntohs(template->record[i].length);input_template[field_type].offset = offset;input_template[field_type].length = field_length;offset += field_length;

Page 36: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

参考にしたプログラム

エクスポーター側から送信される、時間に関するデータは SysUptime と unix_secs の 2 つだけであるが、この二つに関する比較や操作は行われていなかった

typedef struct netflow_v9_header {uint16_t version;uint16_t count;uint32_t SysUptime;uint32_t unix_secs;uint32_t sequence;uint32_t source_id;

} netflow_v9_header_t;

Page 37: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

テンプレートのリフレッシュ

では、テンプレートのリフレッシュのタイミングは? エクスポートパケット数と時間の 2 種類があった

if ( (record_count & 0xFFF) == 0 ) {// every 4096 flow records// terminate the current data flowsetdata_flowset = NULL;・・・・・・

if ( now - template->time_sent > MAX_LIFETIME ) {// refresh template is needed・・・・・・

Page 38: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

テンプレートのリフレッシュ

エクスポーター側で時間設定が変更された場合、関連するテンプレートは全て破棄する必要がある これは、テンプレート情報 ( エクスポーター ID

や観測ドメイン情報など ) を更新できるようにするため、と RFC には書かれている

エクスポーター ID の更新は、テンプレートを受け取る時 ( のみ ) に毎回行われている

Page 39: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

テンプレートのリフレッシュ

void Process_v9_templates(exporter_domain_t *exporter, template_flowset_t *template_flowset) {template_record_t *template;

・・・while (size_left) {

・・・setup_translation_table(exporter, id, offset);size_left -= template_size;

・・・}

setup_translation_table で、エクスポーターIDやテンプレートのテーブルを保存、追加しているこの関数が使われているのはこの部分のみ

Page 40: 分散システム特論 RFC3954 Cisco Systems NetFlow Services Export Version 9

結論

可変長のフローセットでなくても、データ長は変更できる コレクタ側は、エクスポートさせるデータの意味を知る必要はない ( 数値だけであれば、受け取ることができる )

時刻変更がされても、エクスポーター側でテーブルの変更はされない 更新はテンプレートを受け取る際に行われ続け

ている上、指定された時間を過ぎたテーブルは使用されないため、問題は無い