Netflow Ingress/Egress et Top-Talkers

Aujourd’hui je m’intéresse à Netflow, un des topics dans “IP Services” pour le CCIE v5.

Historique

Netflow à évolué pour passer d’une technologie de cache pour le switching à un outil puissant pour l’analyse de flux.

Différentes versions de Netflow sont disponibles, dont la plus basique, largement disponible sur tous les IOS, la version 5.
La version 8 support l’aggregation cache (la 9 aussi donc elle devient inutile), et la version 9, qui est incompatible avec les versions précédentes, permet plus de flexibilités en choisissant un format de template pour l’export.

v1 – 1ere implémentation, toujours supportée sur 12.4T, restreint à l’IPv4 sans subnets.
v2-v4 – Interne chez Cisco, jamais sortie.
v5 – La plus commune, IPv4 seulement, support des masques de sous réseaux.
v6 – Pas d’infos..
v7 – Extension de la v5, utilisée sur quelques Switchs Catalyst.
v8 – 1e version à supporter agrégation
v9 – Dernier standard Cisco, supporte l’IPv6, agrégation, et ‘Flexible Netflow’ (FNF).
v10 – ou IPFIX, est le standard de Netflow.

Ingress/Egress

La collecte de flux sur les interfaces peut être faite en entrée “ingress” ou en sortie “egress“. La différence entre les deux est que l’ingress capture tous les flux entrant dans le routeur, incluant les paquets destinés au routeur en lui-même. La capture Egress ne prends par contre que les paquets switchés au travers du routeur et qui passent par l’interface, elle n’inclue pas les paquets envoyés par le routeur lui-même.

La capture en Egress provoque quelques pertes de performances, mais est intéressante quand vous avez besoin de collecter des informations Netflow sur un flux MPLS par exemple, qui quitte le routeur sans être tagué. C’est important car les flux Ingress, eux ne regardent pas le détail du paquet MPLS.

On peut distinguer les flux Egress dans la commande show ip cache verbose flow grâce au signe “*” près de l’interface de destination.

Protocol         Total    Flows   Packets Bytes  Packets Active(Sec) Idle(Sec)
--------         Flows     /Sec     /Flow  /Pkt     /Sec     /Flow     /Flow
 
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
Et0/1.146      155.1.45.5      Et0/1.67*      155.1.79.9      01 00  10       5

Une autre différence entre les captures Ingress et Egress est leurs interaction avec les autres features IOS, comme le NAT, le rate-limiting, l’encryption.
Les captures Ingress sont appliquées AVANT les ACL et le rate-limiting.
Les captures Egress sont appliquées APRES le rate-limiting et le chiffrement (encryption).

Petite configuration de base pour capturer des flux Ingress et Egress sur R4 et R6 (topo INE v5).
R4 et R5 exportent Netflow en version 5 vers l’hôte 155.1.146.100 sur le port 9999. R4 capture les flux Ingress sur ses interfaces, et R6 capture les flux Egress. On limite la taille du cache à 4096 entrées. On collecte des infos additionnelles sur les messages ICMP et les numéros de VLAN quand c’est possible.

R4

ip flow-export version 5 
ip flow-export destination 155.1.146.100 9999
ip flow-capture vlan-id
ip flow-capture icmp
ip flow-cache entries 4096
!
int e0/1.45
 ip flow ingress
int e0/1.100
 ip flow ingress
int e0/1.146
 ip flow ingress

R5

int e0/1.67
 ip flow egress
int e0/1.146
 ip flow egress
!
ip flow-export version 5
ip flow-export destination 155.1.146.100 9999
ip flow-capture vlan-id
ip flow-capture icmp
ip flow-cache entries 4096

Pour vérifier la configuration, on génère du flux, puis on affiche le cache Netflow.
Je fais passer un ping de R5 à R6, il traverse donc les interfaces de R4 en Ingress, puis un ping vers R9, qui traverse R4 en Ingress et R6 en Egress:

R5#ping 155.1.146.6
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 155.1.146.6, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
 
R5#ping 155.1.79.9
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 155.1.79.9, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms

Et voilà la commande pour vérifier les flux:

R4(config)#do sh ip cache verbose flow
IP packet size distribution (422 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .964 .000 .023 .011 .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, 278544 bytes
  6 active, 4090 inactive, 6 added
  1894 ager polls, 0 flow alloc failures
  Active flows timeout in 30 minutes
  Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 34056 bytes
  12 active, 1012 inactive, 12 added, 6 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
 
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
Et0/1.100      169.254.100.5   Local          169.254.100.4   32 C0  10     107
 
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
555D /24 0                     1B79 /0  0     0.0.0.0                64   466.1
VLAN id:       100                            000
 
Et0/1.45       155.1.45.5      Et0/1.146      155.1.146.6     01 00  10       5
0000 /24 0                     0800 /24 0     155.1.146.6           100     0.0
VLAN id:       045                            146
ICMP type:       8                            ICMP code:        0
 
Et0/1.146      155.1.146.1     Null           224.0.0.10      58 C0  10     101
0000 /24 0                     0000 /0  0     0.0.0.0                60   462.1
VLAN id:       146                            000
 
Et0/1.146      155.1.146.6     Null           224.0.0.10      58 C0  10     102
0000 /24 0                     0000 /0  0     0.0.0.0                60   464.7
VLAN id:       146                            000
 
Et0/1.146      155.1.146.6     Et0/1.45       155.1.45.5      01 00  10       5
0000 /24 0                     0000 /24 0     155.1.45.5            100     0.0
VLAN id:       146                            045
ICMP type:       0                            ICMP code:        0
 
Et0/1.45       155.1.45.5      Null           224.0.0.10      58 C0  10     102
0000 /24 0                     0000 /0  0     0.0.0.0                60   469.9
 
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
VLAN id:       045                            000
 
 
R6#show ip cache verbose flow
IP packet size distribution (0 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .000 .000 .000 .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, 278544 bytes
  0 active, 4096 inactive, 0 added
  0 ager polls, 0 flow alloc failures
  Active flows timeout in 30 minutes
  Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 34056 bytes
  0 active, 1024 inactive, 0 added, 0 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
 
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
R6#show ip cache verbose flow
IP packet size distribution (10 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .000 .000 1.00 .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, 278544 bytes
  2 active, 4094 inactive, 2 added
  30 ager polls, 0 flow alloc failures
  Active flows timeout in 30 minutes
  Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 34056 bytes
  4 active, 1020 inactive, 4 added, 2 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
 
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
Et0/1.146      155.1.45.5      Et0/1.67*      155.1.79.9      01 00  10       5
 
SrcIf          SrcIPaddress    DstIf          DstIPaddress    Pr TOS Flgs  Pkts
Port Msk AS                    Port Msk AS    NextHop              B/Pk  Active
0000 /24 0                     0800 /24 0     155.1.67.7            100     0.0
FFlags: 01
VLAN id:       146                            067
ICMP type:       8                            ICMP code:        0
 
Et0/1.67       155.1.79.9      Et0/1.146*     155.1.45.5      01 00  10       5
0000 /24 0                     0000 /24 0     155.1.146.4           100     0.0
FFlags: 01
VLAN id:       067                            146
ICMP type:       0                            ICMP code:        0

Les Top Talkers

Ici je configure R4 et R6 pour collecter des informations sur les 10 flux ICMP les plus actifs. R4 doit compter les paquets, et R6 le nombre d’octets. On capture seulement les flux TCP et ICMP venant du subnet 155.1.0.0/16.

R4:

ip flow-top-talkers
 top 10
 sort-by packets
 match source address 155.1.0.0 255.255.0.0
 match protocol 1         // icmp

R6:

ip flow-top-talkers
 top 10
 sort-by bytes
 match source address 155.1.0.0 255.255.0.0
 match protocol 1         // icmp

La fonctionnalité “top talkers” collecte des informations sur les paquets/traffic les plus importants. L’information qui est affichée concerne les flux actifs, non expirés, donc on peut ne pas voir les conversations trop courtes ou les bursts. Il faut customer la “vue” comme on le souhaite, et la vérifier en effectuant un ping depuis R5 qui traverse R4 et R6, puis on vérifie avec la commande show ip flow top-talkers:

R5#ping 155.1.79.9
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 155.1.79.9, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
 
R4#sh ip flow top-talkers
 
SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP  Pkts
Et0/1.45      155.1.45.5      Et0/1.146     155.1.79.9      01 0000 0800     5
Et0/1.146     155.1.79.9      Et0/1.45      155.1.45.5      01 0000 0000     5
2 of 10 top talkers shown. 2 of 6 flows matched.
 
R6#sh ip flow top-talkers
 
SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP Bytes
Et0/1.146     155.1.45.5      Et0/1.67*     155.1.79.9      01 0000 0800   500
Et0/1.67      155.1.79.9      Et0/1.146*    155.1.45.5      01 0000 0000   500
2 of 10 top talkers shown. 2 of 2 flows matched.

Les flux ne restent pas en cache très longtemps, alors on peut allonger un peu le temps d’affichage avec la commande cache-timeout (en ms):

R6(config-flow-top-talkers)#cache-timeout ?
    Cache timeout in milliseconds

Benoit

Network engineer at CNS Communications. CCIE #47705, focused on R&S, Data Center, SD-WAN & Automation.

More Posts - Website

Follow Me:
TwitterLinkedIn

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *