DiFMon
Distributed Flow Monitor
Claudio Mazzariello, Francesco Oliviero, Dario Salvi
o Contesto: Monitoraggio dei Flussi Internet
o Possibili Usi: Modellizzazione del traffico,
Intrusion Detection
o Contributo: Sviluppo di un software distribuito per il
monitoraggio dei flussi
I flussi sono definiti tramite delle proprietà applicabili alle
intestazioni dei pacchetti
Ad esempio:
1.
Gli indirizzi IP di sorgente e di destinazione
2.
La 5-upla (indirizzo Sorgente, indirizzo Destinazione, Porto Sorgente, Porto Destinazione, Protocollo di livello superiore ad IP)
…e tramite un timeout…
La scelta della definizione di flusso è legata all’applicazione che utilizza
i dati del monitoraggio
Un Flow Monitor deve:
1. Catturare i pacchetti dalla rete
2. Associare ad ogni pacchetto un identificativo di flusso (flow id) in base
alla definizione di flusso stabilita
3. All’ arrivo di un pacchetto aggiornare le metriche del flusso cui il
pacchetto è associato
4. Conservare in memoria le metriche relative ai flussi “vivi” (non ancora
andati in timeout) in apposite strutture dati, flow record
5. Salvare le metriche misurate per ogni flusso andato in timeout per
renderle disponibili alle applicazioni
Architettura proposta:
Applicazione
Applicazione
Applicazione
1. Calcolo delle metriche ad
ogni pacchetto
1. Memorizzazione delle
2. Memorizzazione delle
metriche
di tuttipacchetti
i flussi
1.
Sniffing
metriche
deidei
flussi vivi
andati in timeout
3. “Exporting”
dei flussi
2. Associazione
in timeout
al id
2. andati
Eventuale
segnalazione
pacchetto
– flow
Collector
di flussi vivi “interessanti”
4. Eventuale segnalazaione
di flussi “vivi” interessanti
Collector
Flow Cache
Flow Cache
Meter
Flow Cache
La Flow Cache:
• E’ il componente critico perché richiede la ricerca e l’aggiornamento di un
flow record ad ogni arrivo di pacchetto (approccio distribuito)
• La multiplazione dei pacchetti avviene tramite una hash function (mmh)
effettuata sul flow id
• L’ implementazione delle metriche è libera attraverso un’ API
• L’ordinamento dei flow record è LRU (ordinamento per ultimo accesso)
L’ ordinamento
consenteappena
la ricerca
ottimizzata
Il flow record
relativo a LRU
un pacchetto
giunto
alla flow cache si
dei flussi
andati
in timeout
(basta
troverà con
elevata
probabilità
in testa
allapartire
LRU dalla coda
della lista ordinata)
Alcuni Dettagli:
• La comunicazione tra i moduli avviene tramite protocollo UDP
• E’ previsto un controllo di flusso tra i moduli
• Linguaggio: C
• Sistema operativo: Linux
• Librerie utilizzate: libpcap
• Licenza del software: GPL
• Locazione del progetto: SourceForge.net
Stato del progetto:
Completato:
• Il Meter
• Il Collector
• Protocollo di comunicazione tra i moduli
Mancano:
• Parte dell’ implementazione dell’ API
• Definizione di alcune metriche fondamentali
• Gli algoritmi per la gestione dei flow record
Scarica

La Flow Cache - DiFMon