フローエクスポート:NetFlow / IPFIX / sFlow の比較
全パケットを保存せずに通信の全体像を把握する手法。フロー集約型のNetFlow/IPFIXとサンプリング型sFlowの原理差を押さえ、可視化や異常検知を低コストで回せます。
- 1.NetFlow/IPFIX はルーターがフロー単位で集約・カウントしてからエクスポートする。誰がどれだけ通信したかを軽量に把握できる。
- 2.sFlow はパケットをN分の1で無作為抽出して即送る。集約を機器でせず、低負荷で全ポート・全レイヤを広く観測する。
- 3.IPFIX はテンプレートで任意フィールドを定義でき、可視化・異常検知・課金の基盤になる。精度はサンプリング率と集約方式で決まる。
フローエクスポートが解く問題
全パケットを保存するパケットキャプチャは中身まで見える反面、10Gbps級の回線では保存量も処理負荷も非現実的になります。フローエクスポートは、パケットそのものではなく「通信の要約」だけを収集サーバー(コレクター)へ送ることで、ネットワーク全体の通信状況を低コストで把握する手法です。
ここでのフローとは、一定時間内に同じ属性を共有するパケットの集まりを指します。古典的には5タプル、すなわち {送信元IP, 宛先IP, 送信元ポート, 宛先ポート, プロトコル} が同一のパケット群を1フローとして扱います。この粒度はECMPのフローハッシュが経路を選ぶ単位とも一致します。
集約型とサンプリング型という二系統
フローエクスポートには設計思想の異なる2系統があります。集約型(NetFlow / IPFIX)は機器内でフローごとにバイト数・パケット数を積算し、フロー終了時に集計結果を送ります。サンプリング型(sFlow)はパケットをN分の1で無作為抽出し、抽出したパケットの先頭断片をほぼ加工せず即座に送ります。
| 観点 | NetFlow / IPFIX(集約型) | sFlow(サンプリング型) |
|---|---|---|
| 観測単位 | フロー(5タプル等で集約) | 個々のパケット標本 |
| 機器側の処理 | フローテーブルで積算 | カウンタで間引いて転送のみ |
| 状態保持 | フローキャッシュが必要 | 実質ステートレス |
| 対象レイヤ | 主にL3/L4のIP情報 | L2フレーム先頭ごと(L2〜L7) |
| 精度の素性 | 原則は全数(集約で誤差小) | 標本なので統計的推定 |
| 遅延 | フロー満了まで待つ | 抽出直後に送る(ほぼリアルタイム) |
NetFlow と IPFIX:フローキャッシュの内部
NetFlow系の機器はフローキャッシュを持ちます。パケットが届くたびにキーを5タプルから計算し、既存エントリがあればバイト数・パケット数・フラグ・先頭/末尾タイムスタンプを更新し、なければ新規エントリを作ります。エントリの送出(エクスポート)は次の満了条件で起きます。
- アクティブタイムアウト: 通信継続中でも一定時間(実装により数分〜数十分。古典的なCisco NetFlowでは既定30分)ごとに区切って送る
- インアクティブタイムアウト: 一定時間パケットが来なければ「終了」とみなす
- TCP終了検知: FIN/RST を観測したらフローを閉じる
- キャッシュ枯渇: テーブルが満杯になったら古いエントリを追い出して送る
この満了モデルゆえに、長時間続くフローはアクティブタイムアウト単位の分割レコードとして到着します。コレクター側で同一フローを足し戻す前提で設計します。
NetFlow v5 はフィールドが固定でしたが、v9 でテンプレート機構が導入されました。IPFIX(IP Flow Information Export、RFC 7011)はこの v9 を標準化・拡張したもので、しばしば「NetFlow v10」とも呼ばれます。
テンプレート機構:可変フォーマットの肝
テンプレート方式の要点は、データレコードのフォーマット定義をデータと分離して送ることです。エクスポータはまず「テンプレートレコード」(各フィールドのID・型・長さの並び)を送り、以後はヘッダにテンプレートIDだけを付けた「データレコード」を送ります。コレクターは受け取ったテンプレートを使ってデータを解釈します。
[テンプレートレコード] ID=256: srcIP(4) dstIP(4) srcPort(2) dstPort(2) proto(1) octets(8) ...
[データレコード ID=256] 10.0.0.1 10.0.0.9 51000 443 6 1048576 ...
[データレコード ID=256] 10.0.0.2 10.0.0.9 51200 443 6 2097152 ...
これにより、固定フォーマットを改版せずに新しいフィールド(送信元/宛先AS番号、TCPフラグ、TTL、MPLSラベル、TOS/DSCP、さらにIPv6やアプリ情報)を柔軟に追加できます。コレクターはテンプレートを受信して初めて後続データを読めるため、UDP転送ではテンプレートを定期再送する必要があります(テンプレートを取りこぼすと、その間のデータは解釈不能になるため)。IPFIX は IANA 登録の Information Element 番号で意味を共有し、企業独自フィールドも Enterprise ID 付きで拡張できます。
資格試験では「IPFIX = NetFlow v9 をベースにした IETF 標準(RFC 7011 系)」「v5 は固定・v9/IPFIX はテンプレート可変」という対応が問われます。IPFIX は転送に SCTP を推奨しつつ UDP/TCP も許容する点、Enterprise ID で独自フィールドを足せる点も押さえておきます。
sFlow:なぜサンプリングなのか
sFlow はASIC上のカウンタで「Nパケットに1回」を判定し、当たったパケットのヘッダ先頭(規定バイト数)をコレクターへ転送します。機器はフローテーブルを持たず集約もしないため、ラインレートでも追加負荷がほぼ一定で、L2フレームごと送るためVLANやMACといった下位情報も観測できます。代償として個々のフローのバイト数は標本からの推定値になります。
サンプリング率 N に対し、観測された標本数を c とすると、母集団のパケット数は概ね 推定パケット数 = c × N で見積もります。ここで誤差は標本数が物を言います。標本数 c に対する相対誤差はおおむね 相対誤差 ≈ 1 / sqrt(c) のオーダーで縮みます。つまり大量に流れる「象のフロー」は少ない標本でも高精度に捉えられる一方、たまにしか流れない「鼠のフロー」は丸ごと取りこぼし得ます。レート N は「精度」と「コレクター負荷」のトレードオフを決める最重要パラメータです。
sFlow で N=2000 なら、1標本は約2000パケット分を代表します。小さなポートスキャンや低速の偵察は標本に乗らず見逃しやすい一方、DDoSのような大量トラフィックは確実に標本へ現れます。検知ルールの閾値はサンプリング率を織り込んで設計しないと、過小評価や誤報の原因になります。
可視化と異常検知への応用
コレクターに集まったフロー/標本は、次のような用途で価値を生みます。
- トラフィック可視化: 送信元/宛先・ポート・AS番号別に集計し、帯域上位(Top Talkers)やアプリ構成比をダッシュボード化する
- 異常検知: 短時間に多数の宛先へ向かう小さなフローの急増はスキャンやワーム、単一宛先への大量フローはDDoS増幅攻撃の兆候として捉える
- キャパシティ計画と課金: 区間別の使用量を長期トレンドで見て増速判断や従量課金の根拠にする
- セキュリティ調査: どのホストがいつ外部のどこへ通信したかを、全パケット保存なしに事後追跡する
集約型はフロー単位の正確な総量を出しやすく課金や容量計画に向き、サンプリング型は全ポートを広く・ほぼリアルタイムに見渡せるので大規模網の異常の即時検知に向きます。両者は排他ではなく、コア網は sFlow で広く監視し、境界ルーターは IPFIX で詳細を取る、といった併用が定石です。
設計上の注意点
- UDPは取りこぼす: NetFlow/sFlow とも既定の UDP 転送ではエクスポートパケット自体がロスし得る。IPFIX が SCTP を推奨するのは輻輳制御と信頼性のため
- 時刻の整合: 複数エクスポータのレコードを突き合わせるには時刻同期(NTP/PTP)が前提。ずれると因果関係を誤読する
- 集約型の状態コスト: 多数の短命フロー(SYNフラッド等)はフローキャッシュを膨張させ、機器側でコネクション追跡同様の枯渇リスクを生む。sFlow はこの点に強い
- サンプリング率の固定誤解: N を上げれば負荷は下がるが、稀少イベントの可視性は犠牲になる。「何を見たいか」から逆算して N を決める
「全部を保存する」のではなく「要約を賢く集める」。フローエクスポートはこの発想で、可視化・異常検知・容量計画を現実的なコストで両立させる基盤になります。
ネットワーク Article
フローエクスポート:NetFlow / IPFIX / sFlow の比較を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
NetFlow
比較で見る軸
難易度: advanced / カテゴリ: ネットワーク / タグ数: 5
導入後に効く点
sFlow はパケットをN分の1で無作為抽出して即送る。集約を機器でせず、低負荷で全ポート・全レイヤを広く観測する。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- ネットワーク
- タグ数
- 5
判断チェックリスト
- 自社の用途が「NetFlow / IPFIX」に近いか確認する。
- 強みである「NetFlow/IPFIX はルーターがフロー単位で集約・カウントしてからエクスポートする。誰がどれだけ通信したかを軽量に把握できる。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。