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