Configuration du protocole Cisco NetFlow

Cet article présente tout d’abord le protocole Cisco NetFlow puis montre un exemple de configuration sur un routeur.

Présentation du protocole Cisco Netflow

Netflow est un protocole de supervision réseau développé par Cisco. Ce protocole collecte des flux réseaux identifiés par différents paramètres (adresse IP, port, …) pour les afficher ou les envoyer vers un serveur pour analyse.

Par exemple, Netflow permet d’afficher:

  • le top 10 des applications utilisées sur le réseau,
  • le top 10 des protocoles,
  • le top 10 des machines les plus consommatrices de bande passante,
  • l’affichage de la bande passante utilisée sur une interface réseau,

Ces données peuvent être utilisées pour la supervision, la sécurité, la planification des ressources ou encore la tarification de l’utilisation d’un service.

D’autres protocoles de supervision similaires sont utilisés par les constructeurs. Citons sFLow, J-flow ou encore NetStream.

Il y a plusieurs versions du protocole Cisco Netflow. La version 5 est historiquement largement utilisée. ce billet concerne la version 9 de Netflow.

La RFC 3954 décrit le protocole NetFlow version 9.

Netflow v9 : comment ça fonctionne

Netflow permet de regrouper un ensemble de flux en fonction de certains paramètres prédéfinis. Tous les paramètres déclarés seront envoyés au serveur qui collecte les flux.

Il y a deux types de paramètres:

  • ceux qui vont servir à discriminer les flux pour les grouper,
  • ceux qui vont servir uniquement pour l’analyse des flux.

Exemple de flux NetFlow

Par exemple, nous pouvons définir un flux NetFlow représenté par les paramètres suivants:

  • une adresse IP source,
  • une adresse IP destination,
  • un port source,
  • un port destination,
  • un numéro de protocole.

Les paramètres présentés ci-dessus vont être utilisés pour regrouper les paquets dans des trames NetFlow qui seront envoyées régulièrement au collecteur.
En vue d’une analyse, on pourra collecter en plus les données suivantes:

  • taille des paquets composant le flux netflow,
  • date et heure de début et fin de l’échange.

Lorsqu’un paquet va traverser le routeur, un flux netflow sera créé. Les autres paquets qui auront les mêmes caractéristiques (même adresses IP source et destination, mêmes ports source et destination et même protocole) seront groupés dans ce flux netflow. Si une de ces caractéristiques changent (par exemple, l’IP destination) un autre flux netflow sera créé.

Les enregistrements Netflow sont stockés dans un cache. Il est donc possible d’afficher les informations directement sur le matériel. Le cache est vidé périodiquement.

Le collecteur Netflow

Un serveur Netflow peut être utilisé pour collecter les flux netflow. Ainsi, régulièrement le routeur enverra les flux Netflow créé au collecteur.
Les paquets pourront ainsi être analysés.

Le protocole utilise par défaut le port UDP 2055 pour communiquer avec le collecteur.

Les flux sont envoyés à leur fermeture, ou après un certain temps si ils sont toujours actifs ou encore après un certain temps d’inactivité.

Comment activer le protocole Cisco Netflow sur un routeur?

Les commandes pour activer Netflow varient en fonction du matériel utilisé.

L’exemple ci-dessous concerne l’activation de NetFlow pour un switch de niveau 3 Cisco 4500.

Nous allons configurer:

    1. les paquets qui serviront à identifier le flux et à identifier les informations souhaitées pour l’analyse,
    2. les coordonnées du collecteur NetFlow,
    3. les caractéristiques d’export et les coordonnées du collecteur,
    4. l’interface réseau concernée par l’activation du protocole.

Création des caractéristiques du flux netflow

Les paramètres qui apparaissent suite aux directives “match” sont utilisés pour regrouper les paquets correspondants dans un flux NetFlow.
Les informations qui correspondent aux directives “collect” sont utilisées uniquement pour apparaître dans les rapports exploitant NetFlow.

Router4500#conf t
 Enter configuration commands, one per line. End with CNTL/Z.
 Router4500(config)#flow record netflow-r
 Router4500(config-flow-record)#match ?
 datalink Datalink (layer2) fields
 interface Interface fields
 ipv4 IPv4 fields
 ipv6 IPv6 fields
 transport Transport layer fields
Router4500(config-flow-record)#match ipv4 source address
Router4500(config-flow-record)# match ipv4 destination address
Router4500(config-flow-record)# match transport source-port
Router4500(config-flow-record)# match transport destination-port
Router4500(config-flow-record)# match interface input
Router4500(config-flow-record)# collect ipv4 protocol
Router4500(config-flow-record)# collect counter bytes long
Router4500(config-flow-record)# collect timestamp sys-uptime first
Router4500(config-flow-record)# collect timestamp sys-uptime last

vérification:

Router4500#show flow record netflow-r
 flow record UBM-netflow-r:
 Description: User defined
 No. of users: 0
 Total field space: 41 bytes
 Fields:
 match ipv4 source address
 match ipv4 destination address
 match transport source-port
 match transport destination-port
 match interface input
 collect ipv4 protocol
 collect counter bytes long
 collect counter packets long
 collect timestamp sys-uptime first
 collect timestamp sys-uptime last

Configuration de l’adresse IP vers laquelle seront envoyés les paquets NetFlow

Nous précisons ici l’IP du collecteur NetFlow, l’IP source des paquets (il est recommandé d’utiliser une interface virtuelle) et les protocole et port qui serviront pour la trame NetFlow.

Router4500(config)#flow exporter netflow-e
 Router4500(config-flow-exporter)# destination 192.168.10.12
 Router4500(config-flow-exporter)# source Loopback0
 Router4500(config-flow-exporter)# transport udp 2055

Vérification:

Router4500#show flow exporter netflow-e
 Flow Exporter UBM-netflow-e:
 Description: User defined
 Export protocol: NetFlow Version 9
 Transport Configuration:
 Destination IP address: 192.168.10.12
 Source IP address: 192.168.250.1
 Source Interface: Loopback0
 Transport Protocol: UDP
 Destination Port: 2055
 Source Port: 50789
 DSCP: 0x0
 TTL: 255
 Output Features: Not Used

Association des caractéristiques d’export et des coordonnées du collecteur

On note ici la configuration du cache avant que le flux NetFlow ne soit envoyé: 15 secondes en cas d’inactivité du flux et 60 seconde si le flux est toujours actif.

Router4500(config)#flow monitor netflow-m
Router4500(config-flow-monitor)#exporter netflow-e
Router4500(config-flow-monitor)#record netflow-r
Router4500(config-flow-monitor)#cache timeout active 60
Router4500(config-flow-monitor)#cache timeout inactive 15
Router4500(config-flow-monitor)#cache entries 1024

Vérification:

Router4500#show flow monitor netflow-m
 Flow Monitor netflow-m:
 Description: User defined
 Flow Record: netflow-r
 Flow Exporter: netflow-e (inactive)
 Cache:
 Type: normal
 Status: not allocated
 Size: 1024 entries / 0 bytes
 Inactive Timeout: 15 secs
 Active Timeout: 60 secs
 Update Timeout: 1800 secs
 Synchronized Timeout: 600 secs

Configuration de l’interface réseau pour laquelle les flux seront enregistrés

En fonction des matériels, il est possible de monitorer le flux en entrée ou en sortie de l’interface.

Router4500(config)#interface gigabitEthernet 1/2/2
Router4500(config-if)#ip flow monitor netflow-m input

Commande de diagnostique

Interface configurée avec NetFlow

Router4500#sh flow interface
 Interface gigabitEthernet 1/2/2
 FNF: monitor: netflow-m
 direction: Input
 traffic(ip): on

Affichage des statistiques pour un flux NetFlow

Router4500#show flow monitor name netflow-m
 Flow Monitor netflow-m:
 Description: User defined
 Flow Record: netflow-r
 Flow Exporter: netflow-e
 Cache:
 Type: normal
 Status: allocated
 Size: 49152 entries / 3276992 bytes
 Inactive Timeout: 15 secs
 Active Timeout: 60 secs
 Update Timeout: 1800 secs
 Synchronized Timeout: 600 secs

Affichage du cache NetFlow

Router4500#sh flow monitor name netflow-m cache

Cache type: Normal
 Cache size: 1024
 Current entries: 361
 High Watermark: 365

IPV4 SOURCE ADDRESS: 192.168.200.3
IPV4 DESTINATION ADDRESS: 195.223.69.8
TRNS SOURCE PORT: 49187
TRNS DESTINATION PORT: 443
INTERFACE INPUT: Gi1/2/2
counter bytes long: 900547
counter packets long: 9766
timestamp first: 13:37:36.036
timestamp last: 13:38:27.040
ip protocol: 6

Affichage des flux avec agrégation ou tri

Router450#show flow monitor name netflow-m cache ?
 aggregate Aggregate on the given field(s)
 filter Display only matching flow records
 format Specify cache display format
 sort Sort the resulting flow records
 | Output modifiers

Router4500#show flow monitor name netflow-m cache aggregate ipv4 source address
 Processed 714 flows
 Aggregated to 134 flows

IPV4 SRC ADDR flows bytes long pkts long
 =============== ========== ==================== ====================
 192.168.56.2 20 455049 5132
 192.168.56.23 2 23032 76
 192.168.56.2 5 105302 305
 172.16.1.3 1 14800 20