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