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 |
Comments are Disabled