| | | corso | | | |
Peer to Peer
Codice: | AA547 | Crediti: | 6 | Semestre: | 2 | Sigla: | P2P | |
|
Settore disciplinare: | INF/01 - Informatica |
Docente
Laura Ricci
Tel. 0502212768Ultima versione disponibile: programma da confermare per l’a.a. 2008/2009
Prerequisiti
Reti, Laboratorio Programmazione di Rete
Obiettivi di apprendimento
L'obiettivo principale del corso e'
quello di esporre i principi, gli algoritmi e le tecnologie
fondamentali nella realizzazione di sistemi peer to peer.
Il corso e'
strutturato in due parti. La prima parte espone i fondamenti relativi
ai sistemi distribuiti, che vengono esemplificati attraverso algoritmi
e soluzioni che fanno parte del bagaglio fondamentale di questo campo.
Questa parte ha lo scopo di far comprendere allo studente i problemi
fondamentali che vanno affrontati nella definizione di un sistema peer to peer, esaminandone le soluzioni.
Esempi di concetti base che verranno affrontati durante il corso sono: naming, sincronizzazione, consistenza e replicazione.
La
seconda parte e' invece orientata alla presentazione sia di sistemi P2P
esistenti sia sistemi attualmente studio di ricerca. In particolare
verranno presenate le problematiche relative alla definizione di un
opportuno middleware per questo tipo di sistemi, passando in rassegna
sia tecnologie di uso comune come JXTA che proposte di
ricerca (sistemi publish-subscribe, a spazi di tuple, application level multicast).
Verranno
infine mostrati un insieme di sistemi P2P, sia sistemi classici per la
condivisione di files come Gnutella, Kazaa, Freenet, che sistemi P2P meno convenzionali, come sistemi basati su Distributed Hash Tables, sistemi di supporto a giochi multiplayer massivi, CSCW, etc.
Descrizione
Il corso intende presentare le problematiche principali relative alla progettazione di applicazioni peer to
peer.
Nella prima parte vengono introdotti i problemi relativi alla progettazione di sistemi distribuiti. La seconda
parte riguarda l'analisi di acune applicazioni P2P esistenti, sia applicazioni commerciali come Napster, Gnutella, Freenet, che
proposte di ricerca (Chord, CAN, Tapestry). Nell'ultima parte del corso verra' introdotta la piattaforma JXTA, come
supporto per la realizzazione di sistemi peer to peer
Programma
Prima Parte. Sistemi Distribuiti: Fondamenti
- Concetti Introduttivi
- Naming di entita' in un ambiente distribuito, localizzazione di entita' mobili}
- Sincronizzazione: Clock logici, Clock fisici, il protocollo NTP
- Consistenza e Replicazione: Modelli di consistenza, Consistenza in applicazioni discrete ed in applicazioni real-time
Seconda Parte: Sistemi Peer to Peer- Concetti introduttivi, applicazioni peer-to-peer, evoluzione
- Sistemi peer to peer puri ed ibridi
- Sistemi P2P non Strutturati: Gnutella, Kazaa, Freenet
- Distributed Hash Tables, algoritmi
- Sistemi P2P Strutturati: Chord, Tapestry, CAN, Pastry
- P2P Multiplayer Games: strutture di comunicazione e sincronizzazione in ambiente real time
- Parallel Computing su Desktop Grids
- P2P middleware:Overlay Networks, Application Level Multicast, Sistemi Publish Subscribe
- JXTA
Bibliografia
- Peer-to-Peer Systems and
Applications, Lecture Notes in Computer Science, Volume 3485 Editori:
Ralf Steinmetz, Klaus Wehrle, Settembre 2005
- A. S. Tanenbaum, M. Van Steen, "Distributed Systems", Prentice Hall, 2002
- Articoli Distribuiti a Lezione
Modalità di esame
Gli studenti possono scegliere se svolgere un compito scritto oppure sviluppare un piccolo progetto.
L'orale e' obbligatorio per tutti
L'orario definitivo del corso e' il seguente:
martedi' ore 14.00 -16.00 - aula B
venerdi' ore 14.00 - 16.00 - aula C
La prima lezione si terra' martedi' 21 febbraio