Progetti L attività sperimentale del corso di Reti Mobili Distribuite prevede lo sviluppo di un applicazione distribuita. Alcuni esempi Gestione e controllo della rete e dei suoi dispositivi; Instradamento ottimale del traffico Metriche ottimizzate di routing Filtraggio e shaping del traffico Il progetto implementato può essere testato e verrà verificato all interno del framework Netkit
Progetti Di seguito sono illustrati alcuni progetti con la relativa valutazione, che possono essere sviluppati da gruppi di persone formate al massimo da 3 studenti. Ad ogni progetto è associato un livello di difficoltà (L1, L2, L3) a cui corrisponde un punteggio massimo crescente, come definito durante l'introduzione al corso dal Prof. Capone. I progetti L1 e L2 possono essere scelti da un solo gruppo (politica FCFS)
STATIC-ROUTING-ECMP (L1) Equal Cost Multi Path (ECMP). Sviluppo di shell scripts che aggiungono o rimuovono le diverse rotte statiche verso una destinazione in base allo stato UP/DOWN dei nodi intermedi presenti sul percorso. Tip: la verifica dello stato di ogni nodo può essere eseguita attraverso l invio di messaggi ICMP.
AODV-ETX (L2) Implementazione della metrica di routing ETX (Expected Transmission Counter). Il progetto richiede l estensione del demone aodvd per effettuare la selezione del percorso migliore utilizzando la metrica ETX, che modella il costo di ogni link in funzione della sua qualità.
AODV-MULTI-INTERFACE (L2.5) Estensione del demone aodvd per il supporto di interfacce di rete multiple. Il progetto richiede sia la riprogettazione del software che implementa le procedure definite dal protocollo AODV e l'implementazione delle necessarie funzioni che garantiscono il supporto di una molteplicità di interfacce di rete.
AODV-CRYPTO (L3) Implementazione della cifratura e dell autenticazione del traffico di routing e dati. Il progetto richiede l'implementazione di funzioni crittografiche al fine di proteggere i messaggi di routing e il traffico dati Protezione della segretezza del traffico Protezione dell'autenticità dei messaggi trasmessi tra i nodi (HMAC)
AODV-MOBILITY (L3) Estendere il protocollo per supportare la mobilità degli utenti collegati a una seconda interfaccia di ogni nodo Tips: Un sottoinsieme di routers fornisce accesso a dispositivi mobili attraverso una seconda interfaccia di rete Ogni dispositivo mobile instaura un tunnel ip over ip verso un gateway Gestione della mobilità delle connessioni instaurate verso un gateway
OLSR-UNICAST-LQ (L2) Estendere il sistema di stima della qualità dei link di olsrd in modo che utilizzi anche degli hello unicast al posto dei soli hello broadcast utilizzati attualmente. Tale estensione potrebbe essere sviluppata come plugin aggiuntivo di olsrd oppure direttamente all'interno del corpo principale del programma
OLSR-LQ-RTT (L3) Estendere il sistema di stima della qualità dei link di olsrd in modo che utilizzi una metrica di ogni link il Round Trip Time del link stesso. E' necessario quindi sviluppare un sistema di probing che permetta di stimare il RTT dei link con i propri vicini e integrare questa metrica nel sistema di LQ. Tale estensione potrebbe essere sviluppata come plugin aggiuntivo di olsrd oppure direttamente all'interno del corpo principale del programma.
OLSR-DIRECT-GRAPH (L3) Estensione del demone olsrd per la rappresentazione della topologia ed il calcolo dello shortest path attraverso un grafo diretto (attualmente il grafo è indiretto). Tale estensione permette quindi di considerare l'asimmetria dei link permettendo che possano essere utilizzati percorsi distinti nella comunicazione tra due nodi a seconda della direzione del traffico.
WIFIDOG-NFQUEUE (L3) Modificare il sistema di marking dei pacchetti del gateway di wifidog sostituendo l'inserimento delle due regole per ogni client attivo con il marking effettuato direttamente dal processo wifidog attraverso il target NFQUEUE Bisogna quindi implementare due thread, uno per la coda del traffico uscente e uno per la coda del traffico entrante, che per ogni pacchetto verifichino se l'utente è attivo o meno consultando la lista dei client attivi e tengano traccia per ogni utente del traffico effettuato
NFQUEUE-HT (L2) Implementare un demone che permetta di effettuare il filtraggio iptables (ACCEPT/DROP) sulla base di una lista di indirizzi IP e/o indirizzi MAC del pacchetto (MAC, IP o MAC-IP) utilizzando la libreria NFQUEUE. La lista di filtraggio dovrà essere caricata da un file di configurazione di tipo csv e dovrà poter essere aggiornabile a runtime La struttura dati contenente la lista deve essere una hash table (HT) dinamica Per ogni elemento della hash table bisogna salvare le statistiche sui pacchetti e byte transitati e tali statistiche dovranno essere stampate periodicamente
NFQUEUE-BST (L2) Implementare un demone che permetta di effettuare il filtraggio iptables (ACCEPT/DROP) sulla base di una lista di indirizzi IP e/o porte del pacchetto (IP, PORTA o IP-PORTA) utilizzando la libreria NFQUEUE. La lista di filtraggio dovrà essere caricata da un file di configurazione di tipo csv e dovrà poter essere aggiornabile a runtime La struttura dati contenente la lista deve essere un albero di ricerca binario (BST) Per ogni elemento della hash table bisogna salvare le statistiche sui pacchetti e byte transitati e tali statistiche dovranno essere stampate periodicamente
NFQUEUE-ENDEC (L2) Implementare un demone che gestisca due code NFQUEUE, la prima per la cifratura del payload dei pacchetti che la attraversano e la seconda per la decifratura. Il metodo di cifratura può essere arbitrario, l'unico vincolo è che non cambi la dimensione dei pacchetti. Bisognerà prestare particolare attenzione all'aggiornamento del checksum dei pacchetti modificati.
NFQUEUE-PROB (L1) Implementare un demone che gestisca una coda NFQUEUE effettuando per ogni flusso di traffico attivo (identificato dalla coppia IP sorgente, IP destinazione) il DROP di un pacchetto ogni N pacchetti ricevuti (con N configurabile da linea di comando). Si può condiderare un flusso di traffico non più attivo se negli ultimi 60 secondi non sono stati ricevuti pacchetti.