💻 Tecnologia

NetFlow e sFlow: analizzare il traffico di rete senza indovinare

Come funzionano NetFlow, IPFIX e sFlow, quando usarli al posto di SNMP e come impostare un collector per capire davvero chi consuma la banda.

Redazione Velix31 luglio 20267 min di lettura
💻

SNMP ti dice quanto traffico passa su una porta. NetFlow e sFlow ti dicono chi lo sta generando, verso quale destinazione, con quale protocollo e su quale porta. È la differenza tra sapere che il link è saturo e sapere che a saturarlo è un backup che parte alle 14:00 verso un IP in Germania.

Come funziona NetFlow

NetFlow nasce in Cisco e oggi esiste in versione standardizzata come IPFIX (RFC 7011). Il principio è il flow record: il router raggruppa i pacchetti che condividono la stessa "chiave" — tipicamente IP sorgente, IP destinazione, porta sorgente, porta destinazione, protocollo, interfaccia, ToS — e mantiene un contatore in cache.

Quando il flusso termina (FIN/RST) o scade un timer, il record viene esportato via UDP verso un collector. I timer che contano:

  • active timeout: ogni quanto viene esportato un flusso ancora in corso (default tipico 60-300 s)
  • inactive timeout: dopo quanti secondi di silenzio il flusso è considerato chiuso (15-30 s)

Un active timeout alto significa grafici in ritardo; troppo basso significa più pacchetti di export e più carico sul collector. Su un router di edge, 60 secondi è un compromesso ragionevole.

Le versioni che incontrerai:

VersioneNote
v5Solo IPv4, campi fissi, ancora diffusissima
v9Template-based, supporta IPv6, MPLS, VLAN
IPFIXStandard IETF, template estendibili, campi custom

Se hai IPv6 in rete, v5 non basta: serve v9 o IPFIX.

Come funziona sFlow

sFlow lavora in modo opposto. Non aggrega nulla: campiona i pacchetti con un rapporto fisso (per esempio 1 ogni 2000) e invia al collector i primi byte dell'header più i contatori di interfaccia. L'aggregazione la fa il collector, moltiplicando per il sampling rate.

Conseguenze pratiche:

  • sFlow è statistico: su volumi alti è accurato, su flussi piccoli e brevi può non vederli affatto
  • sFlow costa poco in CPU: è implementato in ASIC su quasi tutti gli switch datacenter, quindi si può abilitare ovunque senza pensarci
  • NetFlow è esatto sui byte contati, ma richiede memoria per la flow cache e, su hardware entry-level, può essere gestito in software con impatto sulle prestazioni

Regola empirica: sFlow sugli switch di aggregazione, NetFlow/IPFIX sui router di bordo dove ti serve il dato preciso per il billing o per l'analisi di peering.

Scegliere il sampling rate

Con sFlow il rate va tarato sulla velocità della porta, non "a sentimento". Riferimenti usati comunemente:

  • 1 Gbps → 1:1000
  • 10 Gbps → 1:5000
  • 25/40 Gbps → 1:10000

Un rate troppo aggressivo (1:100 su 10G) genera un volume di export che può saturare la CPU di management dello switch. Un rate troppo alto rende invisibili i flussi sotto la soglia di rilevanza.

Il collector

Il router esporta, ma senza collector i dati non esistono. Opzioni self-hosted collaudate:

  • nfdump / nfsen: leggero, a riga di comando, ottimo per analisi forensi puntuali
  • pmacct: il coltellino svizzero — aggrega per AS, per prefisso, per BGP community, e scrive su PostgreSQL, Kafka o file. È lo strumento di riferimento per un ISP che deve capire il proprio traffico di peering
  • Akvorado: front-end moderno con ClickHouse, arricchisce i flussi con dati BGP e GeoIP
  • Elastiflow / ntopng: più orientati all'enterprise, interfaccia pronta all'uso

Per un operatore, il valore vero arriva quando arricchisci il flusso con la tabella BGP: a quel punto non vedi solo "IP x verso IP y", ma "quanto traffico sto scambiando con AS15169 e su quale sessione". È la base per decidere dove aprire un peering e dove no.

Configurazione su MikroTik

RouterOS supporta l'export come Traffic Flow:

# Abilita l'export IPFIX (v9 compatibile) verso il collector
/ip traffic-flow
set enabled=yes interfaces=ether1,ether2 \
    active-flow-timeout=1m inactive-flow-timeout=15s \
    cache-entries=128k

# Destinazione: IP del collector, porta UDP, versione
/ip traffic-flow target
add dst-address=10.10.0.50 port=2055 version=9 v9-template-refresh=20

Due dettagli che fanno perdere tempo se ignorati:

  • cache-entries va dimensionato sul numero di sessioni concorrenti: se la cache si riempie, i flussi vengono esportati prematuramente e i dati risultano frammentati
  • con la v9 il collector non capisce nulla finché non riceve il template: v9-template-refresh controlla ogni quanti pacchetti viene rimandato. Se riavvii il collector e i grafici restano vuoti per qualche minuto, la causa è quasi sempre questa

Cosa ci fai davvero

Al di là dei grafici, i casi d'uso concreti:

  • Diagnosi di saturazione: identificare in pochi secondi l'host o il servizio che sta occupando l'uplink
  • Rilevamento DDoS: un picco di flussi con pochi pacchetti ciascuno verso una singola destinazione è la firma tipica di un attacco volumetrico
  • Verifica delle policy di routing: controllare che il traffico esca davvero dal transit o dal peering che hai scelto
  • Capacity planning: le curve di crescita a 6-12 mesi si costruiscono solo su dati storici

Privacy e retention

I flow record contengono indirizzi IP, quindi sono dati personali ai sensi del GDPR. Vanno definite una finalità (sicurezza e gestione della rete), una retention proporzionata e un accesso limitato. Conservare header di flusso per anni "perché non si sa mai" non è una scelta difendibile: meglio tenere il dato grezzo per settimane e mantenere le aggregazioni anonime per l'analisi storica.

Vuoi portare Velix a casa tua?

Verifica la copertura FTTH al tuo indirizzo in 30 secondi. Gratis, senza impegno.

Verifica copertura →