Progetto di programmazione

Link State Routing

(Descrizione delle specifiche del progetto durante la lezione di lunedi 27/1)


Ogni gruppo deve inviare il codice prodotto (programmi sorgente) per posta elettronica a rdc@dei.unipd.it
Per i gruppi costituiti da due o piu' studenti la scadenza e':

                                                                     ore 24 del giorno 6 marzo 2003

Per i gruppi costituiti da un singolo studente la scadenza e':

                                                                     ore 24 del giorno 13 marzo 2003

Sara' applicata una penalita'  del 10% nel punteggio per ogni giorno di ritardo nella consegna del programma.

Il programma puo' essere scritto in un linguaggio di programmazione scelto fra C, C++, e Java.
 

Descrizione del progetto

Il progetto consiste della simulazione del protocollo di routing link state per una data topologia di rete. La rete e' simulata mediante la creazione e gestione di processi, uno per ogni nodo della rete. I processi  utilizzano l'interfaccia socket per la comunicazione.
Il protocollo Simple Link State Routing da realizzare e' una versione ridotta  e modificata dei protocolli di rete link state (ad esempio OSPF ) ed ha le seguenti caratteristiche:

Input

Il programma legge da file la topologia della rete, con il seguente formato. La prima riga del file specifica il numero dei nodi della rete. Ogni riga successiva consiste di tre campi, i primi due contengono un numero intero identificatore di un nodo e il terzo campo il costo del link tra i due nodi.

Inizializzazione

Questa fase (decisamente diversa dal protocollo OSPF) consiste di uno scambio di messaggi fra un processo (master) e tutti i processi corrispondenti ai nodi della rete (slave) per distribuire l'informazione ai nodi circa la topologia della rete. Alla fine di questa fase ogni nodo avra' un certo numero di socket aperti e avra' comunicato al master i numeri di porta di tali socket. Questa comunicazione prevede l'invio di messaggio di ACK dagli slaves al master. Quando il master ha ricevuto gli ACK da tutti gli slaves, fa partire il Link State Routing mediante l'invio di un messaggio di START a tutti i nodi.

Formato dei Pacchetti

Il formato del pacchetto e' a scelta dello studente. Si suggerisce che ogni messaggio contenga un campo TYPE per identificare il tipo di messaggio.
Piu' precisamente tale campo  specifica se si tratta di un messaggio di  Hello tra master e slave per la inizializzazione, oppure di un ACK inviato da uno slave al master, oppure e' un messaggio del tipo Link State Update inviato da un nodo ad un altro per aggiornare le informazioni, e cosi via.

Output

L'output e' un insieme di file, ogni file e' associato ad un nodo della rete e contiene la lunghezza del cammino minimo ad ogni altro nodo. Alternativamente, ogni file di output contiene una rappresentazione (a scelta) dell'albero di costo minimo con radice nel nodo dato. Altre forme di output, ad esempio mediante interfacce grafiche, sono a scelta dello studente.
 

IMPORTANTE:
I gruppi costituiti da tre studenti devono seguire una delle due strade:
1) realizzare un flooding come nell'algoritmo standard di link state, che prevede l'invio periodico di pacchetti di aggiornamento circa la connettivita' (con simulazione di guasti)
2) proporre al docente una versione diversa del protocollo

I gruppi costituiti da due studenti devono seguire una delle due strade:
1) realizzare una interfaccia grafica per l'output del programma
2) proporre al docente una versione diversa del protocollo
Ci sara' un premio (in termini di punteggio assegnato) per versioni  piu' sofisticate del protocollo.