Un aspetto importante da gestire in una rete peer to peer e' la ricerca di una risorsa, come avviene cioe' il routing dei messaggi. Alcuni sistemi(Gnutella,Freenet) adottano una tecnica chiamata flooding. Questa tecnica prevede che un nodo mandi un messaggio in modalita' broadcast a tutti i nodi vicini.




Nell'animazione sopra e' rappresentata la tecnica del flooding



Questi messaggi servono a:

  • segnalare la propria presenza in rete agli altri nodi(es. ping)
  • ricercare una risorsa in rete(es. query)
  • Il nodo che riceve un messaggio di questo tipo, se possiede la risorsa, spedisce un messaggio di risposta al nodo richiedente (es. queryhit), contenente il proprio indirizzo IP, il numero di porta e la risorsa; se non possiede la risorsa, spedisce ai nodi vicini il messaggio ricevuto(es. ping o query) eccetto il nodo da cui lo ha ricevuto. In Gnutella i messaggi sono contraddistinti da un GUID (Global Unified Identificator) che identifica in modo univoco il messaggio, in modo da non spedire il messaggio a chi lo ha gia' ricevuto.

    La tecnnica del flooding determina uno spreco di banda e non soddisfa i requisiti di sicurezza, fondamentali per difendersi da potenziali attacchi sulla rete. Un utente malizioso, attraverso il flooding, potrebbe effettuare un attacco di tipo Dos (Denial of service).

    Un aspetto interessante per la ricerca e' l'approccio dell'architettura CAN (Content-Adressable Network). Il disegno di suddetta rete si basa su uno spazio cartesiano virtuale, che non ha alcuna relazione con il sistema di coordinate fisiche. Ogni nodo "possiede" la sua zona all'interno dello spazio generale. Il nodo quindi giace su un punto nel quale sono memorizzate coppie di (chiave, valore). Ogni nodo gestisce una tabella nella quale sono presenti gli indirizzi IP e le coordinate virtuali dei nodi vicini.


    Un nodo vicino confina sull'asse delle ascisse o sull'asse delle ordinate(es. A e' un vicino di B e di C, ma non di D). Un messaggio nella rete CAN contiene le coordinate di destinazione e la chiave associata alla risorsa richiesta. Questa tecnica rappresenta una valida alternativa al flooding, poiche' riduce l'utilizzo della banda e grazie allo spazio cartesiano permette un routing dei messaggi molto piu' efficiente.

    Trasferimento risorse

  • indirizzo IP
  • numero di porta
  • numero di file condivisi
  • la risorsa richiesta
  • Queste infomazioni sono piu' che sufficienti per aprire una connessione diretta tra i due nodi. Se il nodo che possiede la risorsa non e' "protetto " da un firewall allora, stabilita la connessione diretta, avviene il trasferimento attraverso il protocollo HTTP. Se il nodo e' protetto da un firewall non accetta connessioni in ingresso, quindi, dovra' essere lui stesso ad aprire una connessione con il nodo richiedente e, solo in questo caso, avverra' il trasferimento.































    Articoli:


    Routing Indices For Peer-to-Peer Systems

    Ad hoc, self-supervising peer-to-peer search network

    SIL: Modeling and Measuring Scalable Peer-to-Peer Search Networks