Cisco IOS IPサービス – NetFlowの設定

スポンサーリンク

NetFlowとはネットワークの状態を監視サーバに通知するCisco独自のプロトコルです。Ciscoルータでパケットを収集し、NetFlow形式でNMS(Network Management System)に転送する設定をまとめます。

NetFlow 基本設定

基本設定

以下のコマンドでパケットを収集する対象を定義します。

Router(config)# interface <interface>
Router(config-if)# ip flow { egress | ingress }

NetFlowのversion, 宛先IPアドレス, 送信元interfaceを指定します。

Router(config)# ip flow-export version { 1 | 5 | 9 }
Router(config)# ip flow-export destination <nms_addr> <udp_port>
Router(config)# ip flow-export source <interface>

デフォルトで収集される情報に加え、以下の情報も含めて収集する事ができます。なお、BGP関連の情報はNetFlowのバージョンによって取得可能な情報が異なります。

Router(config)# ip flow-export version { 1 | 5 | 9 } [ origin-as | peer-as ] [ bgp-nexthop ]
Router(config)# ip flow-capture [ icmp | ip-id | mac-addresses | packet-length | ttl | vlan-id ]

メモリに保存するフロー数やキャッシュに記憶する時間を定義する事ができます。

timeout activeで定義される時間は、active flowがキャッシュ内に保存される時間です。この時間(デフォルト30分)がタイムアウトすると収集した情報をNetFlowを収集するサーバへ通知します。端的に言えば、active flowをサーバに通知する間隔と同じような意味です。23分かかる大きなファイル転送でtimeoutが5分の場合を例に挙げると、5分経過, 10分経過, 15分経過, 20分経過の時点で収集したflowをサーバに転送するという意味になります。

timeout inactiveで定義される時間は、最後のパケットが検出されてからflowが削除される時間です。このパラメータはactiveではないflowを削除する事によって、リソース不足により新しいフローが検出できなくなる事を防止するためのパラメータです。

Router(config)# ip flow-cache entries <num>
Router(config)# ip flow-cache timeout active <min>
Router(config)# ip flow-cache timeout inactive <sec>

設定確認

以下showコマンドで、NetFlowをどのサーバに転送するのかを確認する事ができます。

R1#show ip flow export
Flow export v5 is enabled for main cache
  Exporting flows to 192.168.1.254 (9999)
  Exporting using source IP address 192.168.1.1
  Version 5 flow records, origin-as
  34 flows exported in 20 udp datagrams
  0 flows failed due to lack of export packet
  19 export packets were sent up to process level
  0 export packets were dropped due to no fib
  0 export packets were dropped due to adjacency issues
  0 export packets were dropped due to fragmentation failures
  0 export packets were dropped due to encapsulation fixup failures
R1#

以下showコマンドでメモリ内にキャッシュされたNetFlowに関する情報を表示させる事ができます。

R1#show ip cache flow
IP packet size distribution (27147 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .003 .002 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

    512  544  576 1024 1536 2048 2560 3072 3584 4096 4608
   .993 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

IP Flow Switching Cache, 278544 bytes
  2 active, 4094 inactive, 86 added
  1267 ager polls, 0 flow alloc failures
  Active flows timeout in 1 minutes
  Inactive flows timeout in 10 seconds
IP Sub Flow Cache, 21640 bytes
  4 active, 1020 inactive, 145 added, 75 added to flow
  0 alloc failures, 0 force free
  1 chunk, 1 chunk added
  last clearing of statistics never
Protocol         Total    Flows   Packets Bytes  Packets Active(Sec) Idle(Sec)
--------         Flows     /Sec     /Flow  /Pkt     /Sec     /Flow     /Flow
TCP-Telnet           3      0.0        31    41      0.0      12.6      10.8
UDP-other           75      0.0         1    72      0.0       0.0      11.6
ICMP                 6      0.0      4495   500     10.1      42.0       5.3
Total:              84      0.0       323   497     10.1       3.4      11.1

SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP  Pkts
Et0/0         192.168.12.2    Null          224.0.0.9       11 0208 0208     1
Et0/0         192.168.12.2    Local         10.1.1.1        06 7B75 0017     3
R1#

showコマンドの読み方がやや複雑なので、詳しく説明します。”packet size distribution”はパケットサイズの分散と表します。例えば以下の出力ならば、96byteから127byteの範囲のパケットが全体の0.2%である事を表します。

IP packet size distribution (27147 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .003 .002 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

    512  544  576 1024 1536 2048 2560 3072 3584 4096 4608
   .993 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

以下の部分からactive flows timeoutとinactive flows timeoutを確認する事ができます。

IP Flow Switching Cache, 278544 bytes
  2 active, 4094 inactive, 86 added
  1267 ager polls, 0 flow alloc failures
  Active flows timeout in 1 minutes
  Inactive flows timeout in 10 seconds

flowの統計情報が以下の部分から読み取れます。

  last clearing of statistics never
Protocol         Total    Flows   Packets Bytes  Packets Active(Sec) Idle(Sec)
--------         Flows     /Sec     /Flow  /Pkt     /Sec     /Flow     /Flow
TCP-Telnet           3      0.0        31    41      0.0      12.6      10.8
UDP-other           75      0.0         1    72      0.0       0.0      11.6
ICMP                 6      0.0      4495   500     10.1      42.0       5.3
Total:              84      0.0       323   497     10.1       3.4      11.1

現在、キャッシュ上に保存されているflowを読み取る事ができます。実践的ではありませんが、inactive timeoutを長めに設定すると、キャッシュ上のflowを確認しやすくなります。

SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP  Pkts
Et0/0         192.168.12.2    Null          224.0.0.9       11 0208 0208     1
Et0/0         192.168.12.2    Local         10.1.1.1        06 7B75 0017     3

NetFlow Top Talkers

基本設定

NetFlow Top Talkersとはflowを大きい順に並び変える機能です。”ip flow egress”などのコマンドで収集対象を定義した後に、以下のようなコマンドを入力する事でTop Talkersを使用する事ができます。

Router(config)# interface <interface>
Router(config-if)#  ip flow { egress | ingress }

Router(config)# ip flow-top-talkers
Router(config-flow-top-talkers)# top <num>
Router(config-flow-top-talkers)# sort-by { bytes | packets }
Router(config-flow-top-talkers)# match protocol { <protocol_number> | tcp | udp }
Router(config-flow-top-talkers)# match source address <addr>/<mask>
Router(config-flow-top-talkers)# cache-timeout <milisec>

設定確認

集計結果を確認するには以下のようなコマンドを使用します。実践的ではありませんが、cache-timeoutを大きめの値に設定すると、動作確認しやすくなります。

R2#show ip flow top-talkers

SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP  Pkts
Et0/0         10.3.3.3        Et0/1         10.11.11.11     01 0000 0800    10
Et0/0         10.33.33.33     Et0/1         10.11.11.11     01 0000 0800    10
Et0/1         10.11.11.11     Et0/0*        10.3.3.3        01 0000 0000    10
Et0/1         10.11.11.11     Et0/0*        10.33.33.33     01 0000 0000    10
Et0/0         192.168.23.3    Et0/1         10.11.11.11     01 0000 0800    10
Et0/1         10.11.11.11     Et0/0*        192.168.23.3    01 0000 0000    10
6 of 10 top talkers shown. 6 flows processed.

R2#

現時点(2012/04/08)では、以下のようなprotocol numberの指定は機能しないようです。pingの通信を発生させても、top-talkerの対象として集計させませんでした。

Router(config)# ip flow-top-talkers
Router(config-flow-top-talkers)# top 10
Router(config-flow-top-talkers)# match protocol 1

NetFlow Aggregation Cache

基本設定

通常のNetFlowは送信元IPアドレスと宛先IPアドレスの組でflowを集計します。一方、Aggregation Cacheという機能は、送信元IPアドレスまたは宛先IPアドレスをある程度集約して集計する機能です。NetFlowによる分析結果が細かすぎて使いづらい場合は、Aggregation Cacheを使用する事でマクロな視点の分析が可能になります。

“ip flow egress”などのコマンドで収集対象を定義した後に、以下のようなコマンドを入力する事でAggregation Cacheを使用する事ができます。なお、“enable”を入力しないとこの機能が有効にならない事に注意して下さい。

Router(config)# ip flow-aggregation cache {source-prefix | destination-prefix }
Router(config-flow-cache)# cache entries <num>
Router(config-flow-cache)# cache timeout active <sec>
Router(config-flow-cache)# cache timeout inactive <sec>
Router(config-flow-cache)# export version { 8 | 9 }
Router(config-flow-cache)# export destination <addr>
Router(config-flow-cache)# mask { source | destination } minimum 8
Router(config-flow-cache)# enable

設定確認

集計結果を確認するには以下のようなコマンドを使用します。

R2#show ip cache flow aggregation destination-prefix

IP Flow Switching Cache, 69636 bytes
  2 active, 1022 inactive, 9 added
  1209 ager polls, 0 flow alloc failures
  Active flows timeout in 30 minutes
  Inactive flows timeout in 10 seconds
IP Sub Flow Cache, 5896 bytes
  2 active, 254 inactive, 9 added, 9 added to flow
  0 alloc failures, 0 force free
  1 chunk, 1 chunk added

Minimum destination mask is configured to /30

Dst If         Dst Prefix      Msk  AS    Flows  Pkts B/Pk  Active
Et0/1          192.168.12.0    /30  0        1     6    48     2.2
Et0/0          10.3.3.3        /32  0        1     9    43     2.2
R2#

IPv6 NetFlow

基本設定

IPv6もNetFlowを使用する事ができます。以下設定例のように、コマンドライン体系はIPv4と殆ど同じです。

ipv6 cef
!
interface Ethernet0/0
 ipv6 flow ingress
 ipv6 flow egress
!
ipv6 flow-export version 9 origin-as
ipv6 flow-export destination 10.1.1.1 9999

デフォルトで無効化されているIPv6 CEFの有効化が必要である事に注意して下さい。ちなみに、CEFの無効化を忘れた場合は、以下のような親切なエラーメッセージが表示されます。

R2(config-if)#ipv6 flow egress
% IPv6 cef is not enabled
R2(config-if)#

設定確認

確認コマンドもIPv4と同じです。

R2#show ipv6 flow cache
IP packet size distribution (2884 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .000 .000 .998 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

    512  544  576 1024 1536 2048 2560 3072 3584 4096 4608
   .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

IP Flow Switching Cache, 475168 bytes
  3 active, 4093 inactive, 6 added
  87 ager polls, 0 flow alloc failures
  Active flows timeout in 30 minutes
  Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 33928 bytes
  3 active, 1021 inactive, 6 added, 6 added to flow
  0 alloc failures, 0 force free
  1 chunk, 1 chunk added
SrcAddress        InpIf    DstAddress       OutIf    Prot SrcPrt DstPrt Packets
FE80::3           Et0/0    FF02::9          Local    0x11 0x0209 0x0209 1
2001:0:0:23::3    Et0/0    2001:1:1:1::1    Et0/1    0x3A 0x0000 0x8000 1441
2001:1:1:1::1     Et0/1    2001:0:0:23::3   Et0/0    0x3A 0x0000 0x8100 1440
R2#
タイトルとURLをコピーしました