■Flexible NetFlowとは?
Traditional NetFlowはversion 5であるのに対し、Flexible NetFlowはversion 9になります。全てのシスコルータでサポートされているわけではなく、比較的新しい機種 ( IOS ) でのみサポートされています。但し、機種によってはTraditional NetFlowはサポートされずFlexible NetFlowのみをサポートするというのも出てきており、今後の主流になってくると思われます。
Traditional NetFlowでは以下の7つのキーが固定で利用されていました。
○ 宛先IPアドレス
○ 送信元IPアドレス
○ 宛先ポート番号
○ 送信元ポート番号
○ L3プロトコル
○ ToS
○ 入力インターフェイス
Flexible NetFlowの最大の特徴は上記の7つのキーと収集できるフィールドが大幅に拡張されており、自身で任意に選択して設定できるようになっています。またキーだけでなくフィールドの設定も任意に行えます。具体的に設定できるキーやフィールドは以下のURLが参考になります。
http://www.cisco.com/web/JP/news/cisco_news_letter/tech/FNF/index.html
Flexible NetFlowはIOS 15系のルータであればサポートされています。厳密には12.4(9)Tからサポートされています。Catalystシリーズでは6500/4500はサポートされておりCatalyst3750X/3560Xなどでもサポートされていますが、IOSが15系でネットワークモジュールを搭載し、そのインターフェイスのみ収集可能というのが条件となります。また、IOSはIP BaseまたはIP Serviceに限定され、LAN Baseではサポートされません。2960シリーズでは現状サポートされていませんが新しくリリースされた2960-XからNetFlow Liteというのがサポートされています。
■フローレコードの設定
まず以下のコマンドでフローレコードを作成します。
# TESTという名前でフローレコードを作成 (config)# flow record TEST # matchでKey(項目)フィールドを定義 (config-flow-record)# match ipv4 protocol (config-flow-record)# match ipv4 source address (config-flow-record)# match ipv4 destination address (config-flow-record)# match transport source-port (config-flow-record)# match transport destination-port # collectでNon-Key(収集)フィールドを定義 (config-flow-record)# collect counter packets (config-flow-record)# collect counter bytes |
■エクスポートの設定
次にキャッシュしたデータをエクスポートする宛先を定義します。
(config)# flow exporter EXPORT (config-flow-exporter)# destination 1.1.1.1 (config-flow-exporter)# source FastEthernet0/0 (config-flow-exporter)# transport udp 9996 |
■フローモニターの設定
次にNetFlowのモニタをカスタマイズします。これには上記で設定したフローエクスポートおよびフローレコードを合わせて定義します。
# フローモニターを定義 (config)# flow monitor FLOW # フローレコードを定義 (config-flow-monitor)# record TEST # フローエクスポーターを定義 (config-flow-monitor)# exporter EXPORT # フローがなくなってからキャッシュをエクスポートする間隔。単位は秒でデフォルト値は15 (config-flow-monitor)# cache timeout inactive 15 # フローの有無に関わらずキャッシュをエクスポートする間隔。単位は分でデフォルト値は30 (config-flow-monitor)# cache timeout active 1 # キャッシュのエントリ数。デフォルトは64536 (config-flow-monitor)# cache entries 100000 |
そしてこれをインターフェイスに適用します。
(config)# interface FastEthernet0/0 (config-if)# ip flow monitor FLOW input (config-if)# ip flow monitor FLOW output |
■サンプルの設定
NetFlowでは全てのパケットをサンプリングするのではなく例えば100パケットに1パケットのみを収集ということも可能です。小中規模環境であれば全てのフローを採取したほうが、より正確な状態を把握することが可能なのですが、例えば10GBインターフェイスが必須となるような大規模環境においては100パケットまたは1000パケットに1パケットを採取するのが一般的です。但しリソースが許容するようであれば全パケットを採取するのに越したことはありません。以下がその設定例です。
(config)# sampler SAMPLE (config-sampler)# mode random 1 out-of 100 |
これをインターフェイスに適用します。
(config)# interface FastEthernet0/0 (config-if)# ip flow monitor FLOW sampler SAMPLE input (config-if)# ip flow monitor FLOW sampler SAMPLE output |
■設定のまとめ
上記で設定したConfigをまとめて表示すると以下のようになります。
flow record TEST description Fleible NetFlow Monitor match ipv4 protocol match ipv4 source address match ipv4 destination address match transport source-port match transport destination-port collect counter packets collect counter bytes ! ! flow exporter EXPORT destination 1.1.1.1 source FastEthernet0/0 transport udp 9996 ! ! flow monitor FLOW record TEST exporter EXPORT cache timeout inactive 15 cache timeout active 1 cache entries 100000 sampler SAMPLE mode random 1 out-of 100 interface FastEthernet0/0 ip flow monitor FLOW sampler SAMPLE input ip flow monitor FLOW sampler SAMPLE output |
■キャッシュデータの確認
収集したキャッシュデータは以下のコマンドで確認可能です。
# show flow monitor FLOW cache format table Cache type: Normal Cache size: 100000 Current entries: 1 High Watermark: 1 Flows added: 1 Flows aged: 0 - Active timeout ( 60 secs) 0 - Inactive timeout ( 20 secs) 0 - Event aged 0 - Watermark aged 0 - Emergency aged 0 IP PROT IPV4 SRC ADDR IPV4 DST ADDR TRNS SRC PORT TRNS DST PORT pkts bytes ======= =============== =============== ============= ============= ========== ========== 1 192.168.0.2 192.168.0.1 0 0 1 100 |