Il progetto
Sviluppato sotto il sistema operativo Linux, prevede la realizzazione di un programma C destinato a gestire una rete composta da un numero limitato di news server. Obiettivo principale e offrire ad un generico client la possibilità di ricevere le stesse informazioni indipendentemente dalla macchina server a cui si e rivolto.
Le informazioni, essendo Usenet largomento trattato, riguardano i post ricevuti dal news server.
Le ipotesi
Per motivi di semplificazione non sono stati sviluppati tutti i servizi previsti nel Network News Transfer Protocol (RFC 977). Il client potrà ricevere l elenco dei messaggi disponibili, richiedere il body di un messaggio e postare un nuovo testo. Non e presente alcun controllo sugli header.
Si considera l esistenza di un solo newsgroup, altri possono essere aggiunti modificando la struttura della directory che contiene i post.
I guasti
E previsto il riconoscimento dei guasti ma non il recovery, ogni server guasto potrà, comunque, ripristinare il proprio stato semplicemente richiedendo i dati mancanti ad una macchina funzionante con lo stesso procedimento con cui li richiede un client.
Una macchina che non ha spedito i propri dati di aggiornamento a tutte le altre o che non ha ricevuto tutti i file necessari per il proprio aggiornamento e considerata guasta dall intera rete.
Ad esempio in una rete composta da 4 news server (etichettati come A B C D) il news server A considera il news server B guasto se risultano verificati uno o più dei seguenti casi:
1) B non ha spedito i propri dati;
2) B non ha accettato i dati inviati da A;
3) Nella fase finale di coordinamento A ha ricevuto da C o D un vettore di stato in cui si indica cheB e guasto. Nell' esempio in figura il server C comunica ad A che B e guasto. Questo significa che o C non ha ricevuto da B il file dei dati di aggiornamento o B non ha accettato da C alcun file oppure infine che D ha comunicato a C l informazione "B guasto" tramite il proprio vettore di stato.
( Nelle figure sono visualizzate solamente le connessioni che riguardano il server A)