NetFlow è un protocollo per la raccolta, l'aggregazione e la registrazione dei dati sul flusso di traffico in una rete. I dati di NetFlow forniscono una visione più granulare dell'utilizzo della larghezza di banda e del traffico di rete rispetto ad altre soluzioni di monitoraggio, come SNMP.
NetFlow è stato sviluppato da Cisco ed è integrato nel software IOS di Cisco sui router e sugli switch dell'azienda ed è supportato su quasi tutti i dispositivi Cisco dalla versione 11.1 del software IOS di Cisco. Molti altri produttori di hardware supportano NetFlow o utilizzano tecnologie di flusso alternative, come jFlow o sFlow.
Tecnicamente esistono dieci versioni diverse di NetFlow. Tuttavia, alcune versioni sono state rilasciate solo internamente o non sono mai state ampiamente implementate al di là di un hardware specifico.
La versione 1 di NetFlow è considerata obsoleta e raramente utilizzata oggi. Le versioni da 2 a 4 erano versioni interne e non è mai stata rilasciata alcuna implementazione pubblica.
La versione 5 è ancora oggi comunemente utilizzata, grazie all'ampia base di installazione di router e switch Cisco rilasciati quando era la versione standard. IT ha aggiunto le informazioni del Border Gateway Protocol e i numeri di sequenza dei flussi alle esportazioni NetFlow. Funziona solo con i flussi IPv4.
La versione 6 non è più supportata e non è stata rilasciata su larga scala. La versione 7 ha aggiunto il supporto per gli switch Cisco Catalyst che utilizzano la modalità ibrida o nativa. La versione 8 supporta l'aggregazione di NetFlow basata su router.
La versione 9 è la versione attuale ed è basata su modelli. In quanto tale, consente di ampliare il supporto senza richiedere una modifica del formato del record di flusso. Questa versione è preferita dal WG IPFIX (IP Information Export) e dal WG IETF Pack Sampling (PSAMP) e funziona sia con IPv4 che con IPv6.
IPFIX è spesso indicato come NetFlow v10 perché si basa su NetFlow v9, ma in realtà non è NetFlow.
Quasi tutti i dispositivi Cisco supportano NetFlow. L'unica eccezione è rappresentata dai dispositivi Cisco 2900, 3500, 3660 e 3750. Inoltre, NetFlow è disponibile per molti router e switch di altri produttori.
Gli avvisi personalizzati e la visualizzazione dei dati consentono di identificare e prevenire rapidamente i problemi di salute e di prestazioni della rete.
Un flusso è un modo per raggruppare un flusso unidirezionale di pacchetti in un insieme specifico. Questi set possono essere configurati in base agli attributi corrispondenti di ciascun pacchetto, tra cui:
Quando ogni pacchetto viene inoltrato, vengono esaminati gli attributi di cui sopra. Il primo pacchetto che passa attraverso il percorso di commutazione standard genera un flusso. Ogni altro pacchetto con gli stessi parametri (indirizzo IPS di origine e di destinazione, porta di origine e di destinazione, classe di servizio) viene raggruppato in un unico flusso. Ogni variazione del valore di uno qualsiasi dei parametri crea un nuovo flusso.
I router Cisco di fascia alta supportano il NetFlow a campione, in cui viene esaminato solo uno di un certo numero di pacchetti. Questa funzione è utilizzata nei router in cui l'esame di ogni pacchetto non è pratico a causa del volume di traffico. I flussi campionati riducono in modo significativo l'impatto sulle prestazioni quando si inviano informazioni sul flusso.
Il monitoraggio e il gruppo di ogni pacchetto inoltrato da un router o da uno switch genera molti dati. Questi dati vengono condensati in un database all'interno del dispositivo di rete chiamato NetFlow cache. Per ogni flusso attivo viene conservato un record di flusso. I dati vengono scaduti e quindi esportati dalla cache a un server NetFlow collector a intervalli regolari, in base a timer di flusso. Per impostazione predefinita, la cache NetFlow viene controllata ogni secondo.
I flussi vengono raggruppati per l'esportazione in un datagramma NetFlow Export. Ogni datagramma è composto da un massimo di 30 flussi. Secondo Cisco, le esportazioni NetFlow standard utilizzano circa l'1,5% del traffico commutato totale analizzato.
Il record di flusso della versione 9 è basato su modelli. Ciò significa che i miglioramenti futuri possono essere adattati senza dover modificare il record di flusso di base. Il formato del record è definito da un'intestazione del pacchetto, seguita da almeno un FlowSet modello e da un FlowSet dati. Il FlowSet modello fornisce una descrizione di ciò che è contenuto nei FlowSet dati. Questo è ciò che permette l'estensibilità del record. Invece di predefinire in una specifica quali dati arrivano e dove, la definizione viene fatta all'interno del pacchetto stesso.
L'intestazione del pacchetto è fondamentalmente la stessa della versione 5. Essa contiene, tra l'altro, la versione e il nome del pacchetto. Contiene, tra l'altro, il numero di versione del pacchetto, il tempo di attività del sistema (in millisecondi), un numero di sequenza e l'ID della sorgente.
I dati NetFlow vengono riportati periodicamente a un collettore NetFlow. Il collettore è un altro server o computer che esegue un software di ricezione NetFlow progettato per raccogliere, registrare, filtrare e analizzare i flussi risultanti, come ad esempio PRTG NetFlow Analyzer di Paessler. Il software collettore deve supportare la stessa versione di NetFlow del server di esportazione. Ad esempio, per monitorare un router Cisco che utilizza NetFlow 5, è necessario utilizzare il sensore NetFlow V5 di PRTG Network Monitor. Per un router che utilizza NetFlow 9, è necessario il sensore NetFlow V9. Entrambi i sensori possono essere abilitati contemporaneamente sulla stessa macchina, in modo che un singolo collettore possa ricevere e fare rapporto sui dati di entrambe le versioni di NetFlow.
I datagrammi NetFlow vengono esportati utilizzando il protocollo UDP (User Datagram Protocol). L'indirizzo IPS del collettore e la porta di destinazione devono essere configurati sul router o sullo switch stesso. In alcuni casi, è possibile utilizzare SNMP per attivare NetFlow e configurare l'indirizzo IP del collettore a cui inviare i dati.
In Cisco IOS, il comando ip flow-export può essere utilizzato per configurare l'IP di destinazione dalla riga di comando.
Una delle porte più utilizzate per le esportazioni di NetFlow è la 2055, ma in linea di massima è possibile utilizzare qualsiasi porta, purché sia specificata correttamente nel ricevitore NetFlow. Poiché le esportazioni di NetFlow vengono inviate al collettore, non è necessario eseguire il polling, ma non è disponibile un processo di auto-discovery per NetFlow come nel caso di SNMP.
È possibile accedere ad alcuni dati NetFlow tramite SNMP utilizzando il MIB NetFlow. Sebbene non sia stato progettato per sostituire l'esportazione di NetFlow, offre un modo per accedere ai dati di NetFlow tramite un altro meccanismo. I dati disponibili comprendono il numero di flussi, i flussi al secondo e i pacchetti o byte per flusso. Anche la possibilità di accedere a un elenco di "top talkers" potrebbe essere utile in alcuni casi, ma questi dati si ottengono comunque quando si ricevono e si monitorano i flussi.
Sono molte le categorie di traffico che possono essere monitorate con NetFlow. Il sensore NetFlow V9 per PRTG, ad esempio, consente il monitoraggio e la categorizzazione di numerosi tipi di traffico per impostazione predefinita,
Notifiche in tempo reale significano una risoluzione più rapida dei problemi, in modo da poter intervenire prima che si verifichino problemi più gravi.
Di seguito viene mostrato il comando Top Talkers di NetFlow, che elenca i maggiori consumatori di pacchetti e byte della rete. Prima di utilizzare il comando Top Talkers, è necessario configurarlo:
Router(config)#ip flow-top-talkers
Router(config-flow-top-talkers)#top 10#
I Top 10 talkers della rete ordinati per pacchetti:
R3#show ip flow top-talkers
SrcIf SrcIPaddress DstIf DstIPaddress Pr SrcP DstP Pkts
Et1/0 172.16.10.2 Et0/0 172.16.1.84 06 0087 0087 2100
Et1/0 172.16.10.2 Et0/0 172.16.1.85 06 0089 0089 1892
Et1/0 172.16.10.2 Et0/0 172.16.1.86 06 0185 0185 1762
Et1/0 172.16.10.2 Et0/0 172.16.1.86 06 00B3 00B3 2
Et1/0 172.16.10.2 Et0/0 172.16.1.84 06 0050 0050 1
Et1/0 172.16.10.2 Et0/0 172.16.1.85 06 0050 0050 1
7 of 10 top talkers shown. 7 flows processed.
L'uso più ovvio di NetFlow è il monitoraggio della rete. I dati NetFlow forniscono informazioni dettagliate sull'utilizzo della larghezza di banda che possono essere segmentate in numerosi modi, tra cui per utente, sistema client, tempo e applicazione. I dati che arrivano al collettore NetFlow sono quasi in tempo reale e consentono un monitoraggio granulare specifico e l'aggregazione dei dati per osservare il quadro generale nel momento in cui si verifica.
Il monitoraggio degli schemi di traffico, degli schemi degli utenti e degli schemi delle applicazioni può avvisare l'amministratore di potenziali problemi prima che si verifichino e fornire una preziosa risorsa per la risoluzione dei problemi. Un singolo computer o servizio che utilizza una quantità sufficientemente grande di larghezza di banda può influire sulle prestazioni della rete per gli altri utenti. Un amministratore che osservi un'interfaccia utente o un dashboard completo può essere in grado di rilevare questo risultato prima che si verifichi, oppure può generare un avviso per informare l'amministratore di rete di modelli insoliti.
La panoramica del sensore NetFlow V9 di PRTG, ad esempio, indica i Top Talkers, le Top Connections, i Top Protocols e una ripartizione per protocollo, mostrando a colpo d'occhio se un server o un'applicazione sta utilizzando troppa (o troppo poca) larghezza di banda.
La capacità di rilevare e reagire alle mutevoli condizioni della rete è un'abilità preziosa. Ancora meglio è la capacità di vedere cosa sta per accadere e di affrontare in modo proattivo eventuali problemi.
L'acquisizione di dati NetFlow su periodi di tempo più lunghi e l'analisi delle tendenze riscontrate nei dati offre l'opportunità di conoscere in anticipo le esigenze della rete. Forse diverse applicazioni in esecuzione alla fine del mese generano un traffico aggiuntivo che influisce sulle prestazioni della rete. In questo caso, si potrebbero programmare altre attività ad alta larghezza di banda in periodi diversi del mese per evitare colli di bottiglia.
Inoltre, i dati NetFlow possono aiutare a determinare quando la crescita del traffico sta diventando troppo elevata per essere gestita dall'hardware attuale, offrendo un ampio margine di tempo per acquistare, installare e configurare router e switch aggiuntivi o più veloci.
Grazie alla capacità di identificare flussi di traffico specifici (compresa la loro origine e le applicazioni che li hanno generati), i dati NetFlow possono essere analizzati per consentire la fatturazione ai clienti, l'addebito dei costi interni o per mostrare quanta parte della rete viene utilizzata da utenti, gruppi o applicazioni specifici. Con una raccolta di dati così dettagliata, è facile regolare le tariffe di fatturazione in base all'ora del giorno, all'utilizzo delle applicazioni o alla larghezza di banda totale.
I dati NetFlow possono mostrare non solo quanto traffico genera un'applicazione, ma anche quando e per chi. NetFlow può dire se l'applicazione è ottimizzata per il gruppo contabile, ma genera molto traffico per un altro reparto.
NetFlow può essere utile anche per la sicurezza della rete. Un utente sta improvvisamente generando grandi quantità di traffico non necessarie per il suo lavoro? Forse l'account è stato compromesso? I dati NetFlow rivelano rapidamente le anomalie nel traffico di rete, sia che si tratti di un worm che cerca di diffondersi, di un malware che cerca di contattare un server di controllo o di un dipendente scontento che copia dati aziendali sensibili.
PRTG Network Monitor è un software di monitoraggio di rete completo e tiene traccia dell'intera infrastruttura IT.
Sebbene il traffico complessivo generato da NetFlow sia relativamente basso, è importante localizzare i collettori NetFlow in modo strategico per evitare di inviare i dati su connessioni costose o su quelle che non sono in grado di gestire il traffico aggiuntivo. La raccolta locale è la soluzione migliore per la maggior parte degli ambienti.