Supervision Netflow

1. Netflow

NetFlow est une architecture de surveillance des réseaux développée par Cisco Systems qui permet de collecter des informations sur les flux IP. Elle définit un format d’exportation d’informations sur les flux réseau nommé NetFlow services export format (format d’exportation des services NetFlow, en abrégé protocole NetFlow). Elle permet de superviser de façon fine les ressources du réseau utilisées. Le protocole utilise le port UDP2055.

En 2004, Cisco a publié les caractéristiques de la version 9 du protocole NetFlow dans la RFC 3954. L’IETF en a dérivé le protocole IPFIX (IP Flow Information Export), normalisé en 2008 dans les RFC 5101, RFC 5102 et RFC 5103.

2. Architecture

Des éléments réseau (commutateurs et routeurs) établissent des statistiques sur les données des flux réseau qu’ils exportent vers des collecteurs. Ces statistiques détaillées peuvent porter sur les nombres de paquets et d’octets, les ports applicatifs, les adresses IP, les champs de qualité de service, les interfaces par lesquelles ils transitent, etc.

3. Flux réseau

Un flux réseau NetFlow est unidirectionnel.

Il est caractérisé par 7 champs clés :

  1. le protocole de couche 3 (en général IPv4, mais d’autres protocoles sont possibles)
    • l’adresse IP source
    • l’adresse IP destination
    • le port source (UDP ou TCP, 0 pour les autres protocoles)
    • le port destination
    • le champ Type of Service
    • l’interface en entrée

Les paquets appartenant à un même flux (même adresse IP source, même adresse IP destination, etc.) sont décomptés dans les statistiques. On remarque que l’interface de sortie ne caractérise pas un flux, ce qui est une bonne chose sur les routeurs où les routes de sortie peuvent changer.

Il existe aussi des champs non-clés qui ne caractérisent pas un flux, mais dont la valeur est relevée. En règle générale, seule la valeur pour le premier paquet du flux est indiquée. On peut par exemple relever la date et l’heure du début du flux.

4. Données exportées

L’équipement réseau envoie un enregistrement décrivant le flux quand le flux s’achève. Un flux est considéré comme achevé lorsqu’il n’y a plus de paquets qui passent pendant un certain temps, ou quand la connexion TCP est close. On peut aussi configurer l’équipement pour envoyer des enregistrements à intervalles réguliers, même quand le flux est encore en train de s’écouler.

Ces enregistrements NetFlow sont en général transportés par UDP. L’adresse IP du collecteur auquel ils sont envoyés doit être configurée sur l’équipement émetteur. Un paquet NetFlow peut regrouper plusieurs enregistrements en un seul envoi. Par défaut, on utilise le port UDP 2055, mais il est courant de choisir un autre port.

Pour des raisons d’efficacité, si un de ces enregistrements NetFlow est perdu pour cause de congestion du réseau ou de paquet corrompu, l’équipement réseau est dans l’incapacité de le renvoyer, car il n’en conserve pas une copie. Cela peut conduire à des statistiques dégradées. Pour cette raison, certaines implémentations récentes de NetFlow utilisent SCTP à la place de UDP pour garantir que les statistiques seront reçues (TCP ne convient pas, car il est trop lourd).

5. Version de Netflow

VersionCommentaire
v1Première implémentation, à présent dépassée. Limitée à IPv4 sans masque réseau ni numéro de système autonome.
v2Version interne à Cisco, jamais publiée.
v3Version interne à Cisco, jamais publiée.
v4Version interne à Cisco, jamais publiée.
v5La version la plus courante (en 2009) sur de nombreux équipements de différentes marques, mais restreinte aux flux IPv4.
v6Version qui n’est plus prise en charge par Cisco.
v7Comme la version 5, avec un champ “routeur source”.
v8Agrégation de plusieurs informations.
v9S’appuie sur des modèles (templates), ce qui permet d’ajouter des champs sans redéfinir le standard. Permet de rapporter des flux IPv6, MPLS, ou le prochain saut BGP en IPv4.
v10Connue comme IPFIX. Champs définis par les utilisateurs, champs en longueur variable.

6. Prise en charge de Netflow

En plus de Cisco, de nombreux constructeurs d’équipements réseau offrent une prise en charge de NetFlow sur leurs boîtiers. La liste comprend Juniper, Alcatel-Lucent et Nortel, entre autres. En ce qui concerne les plates-formes logicielles, il y a une prise en charge sur serveurs VMWare et sous Linux.

Certains constructeurs utilisent un autre nom pour cette technologie, sans doute parce que NetFlow est ressenti comme une marque déposée de Cisco:

  • Jflow ou cflowd chez Juniper Networks
  • NetStream chez 3Com/HP
  • NetStream chez Huawei Technologies
  • Cflowd chez Alcatel-Lucent
  • Rflow chez Ericsson
  • AppFlow chez Citrix

Il existe aussi des alternatives. sFlow est un protocole concurrent. IPFIX est le standard de l’IETF dérivé de NetFlow.

7. Configuration de Netflow

Sur l’interface à surveiller :

(config-if)#ip route-cache flow
(config-if)#ip flow {ingress | egress}

En configuration globale :

(config)#ip flow-export destination <ip_address>

Optionnellement :

(config)#ip flow-export source Loopback 0
(config)#ip flow-export version 5

Régularité :

(config)#ip flow-cache timeout active 5
(config)#ip flow-cache timeout inactive 15

8. Vérification Netflow

#sh run | begin ip flow
ip flow-cache timeout active 5
ip flow-export version 5
ip flow-export destination 172.16.124.134 23456
#show ip flow interface
FastEthernet0/0
  ip route-cache flow
FastEthernet0/1
  ip route-cache flow

9. Vérification Export Netflow

#show ip flow export    
Flow export v5 is enabled for main cache
  Export source and destination details :
  VRF ID : Default
    Destination(1)  172.16.124.134 (23456)
  Version 5 flow records
  97 flows exported in 65 udp datagrams
  0 flows failed due to lack of export packet
  0 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

10. Cache Netflow

#show ip cache flow
IP packet size distribution (128 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .000 .101 .296 .421 .093 .007 .000 .062 .000 .015 .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, 278544 bytes
  3 active, 4093 inactive, 98 added
  1570 ager polls, 0 flow alloc failures
  Active flows timeout in 5 minutes
  Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 25800 bytes
  3 active, 1021 inactive, 89 added, 89 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
UDP-NTP             13      0.0         1    76      0.0       0.0      15.3
UDP-other           61      0.0         1   160      0.0       0.0      15.4
ICMP                20      0.0         2   127      0.0       1.9      15.7
Total:              94      0.0         1   138      0.0       0.4      15.5

SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP  Pkts
Fa0/1         74.125.232.146  Local         172.16.124.131  01 0000 0000     5
Fa0/1         172.16.124.1    Null          172.16.124.255  11 445C 445C     1
Fa0/1         172.16.124.2    Local         172.16.124.131  11 0035 D60A     1

11. Collecteur NetFlow

Sous Debian Ubuntu

apt install nfdump
mkdir -p /var/lib/netflow/test
nfcapd -w -D -l /var/lib/netflow/test -p 23456
netstat -an | grep :23456
nfdump -R /var/lib/netflow/test

12. Références

  • http://fr.wikipedia.org/wiki/NetFlow
  • http://gregsowell.com/?p=610
  • http://www.cisco.com/en/US/prod/collateral/iosswrel/ps6537/ps6555/ps6601/prod_white_paper0900aecd80406232.html
  • http://www.cisco.com/en/US/docs/ios/12_2/switch/configuration/guide/xcfnfc.html
  • https://supportforums.cisco.com/thread/2185457
  • http://www.manageengine.com/products/netflow/help/cisco-netflow/cisco-ios-netflow.html

Laisser un commentaire