Il P2P

La velocità nel P2P e C-S: numeri a confronto

Allora la logica del Peer-to-Peer sembra essere molto più utile per la condivisione dei file multimediali (audio, video) che generalmente sono, in termini di dimensioni, molto più consistenti di una pagina web ad esempio. Immaginate ad esempio che un certo film risieda in un determinato Server, ci chiediamo:

Che cosa succederebbe se 1000 Clients volessero recuperare quel file dalla fonte Server? Ma soprattutto quanto tempo ci metterebbero?

A volte i numeri parlano molto di più delle parole, allora facciamo diamo qualche stima.
Il Server dovrebbe rispondere a 30 richieste diverse e distribuire equamente il file a tutti i Clients che lo richiedono. Il Server a sua volta deve fare i conti anche su una sua frequenza di distribuzione o di upload Fu, che si misura in bytes/s, ovvero indica quanti bytes al secondo è capace di erogare al secondo. 

Supponiamo che il file video abbia dimensioni di F = 1GB (10^9 Bytes). Il Server dovrebbe trasferire quindi in totale 10^9 Bytes ad ogni Client, per un totale di 10^9 Bytes * 30 Clients, ovvero 30 GB. 
Supponiamo che la frequenza di upload  del Server F sia di 300 Bytes/s, ogni clients per ricevere il file deve aspettare un tempo di download

Td = (N°Bytes del File / Frequenza Upload) = 10^9 Bytes / 300 Bytes/s = 33333333,33 s

ovvero quasi 5 settimane o, il che equivalente, quasi 1 mese!

Supponiamo la stessa situazione, nel caso di architettura P2P: la differenza è che ogni client, nel momento in cui riceve una quantità di file, comincia a comportarsi da "server" verso altri Clients Peer. Ogni client quindi ha una propria frequenza di upload sulla rete quando si comporta da server, che è strettamente legata alla frequenza di download: in genere più la frequenza di download è alta, più sarà alta quella di upload, e ciò dipende dalla velocità della linea del singolo client. 

Supponiamo che i clients Peer abbiano uguale frequenza di upload Fu = 300 Bytes/s, come il Server nel caso precedente, e che il file da ricevere sia sempre di F = 1 GB. Ogni peer quindi ha capacità inizialmente di download e successivamente anche di upload. Probabilmente guardando la figura 1.1 risulta più facile capire che la frequenza di upload complessiva, ovvero di tutta la rete, non dipende dalla singola frequenza di upload Un del singolo peer, ma è la somma di tutte le frequenze di upload della rete provenienti da tutti i Peers, quindi Ut = U1 + U2 + ... + Un.

Dunque ne consegue che ogni Peer può recuperare il file da uno qualsiasi dei peer presenti, o perché no, qualche parte di file da un peer e qualche altra da un altro. Questo migliora di sicuro il Tempo di download Td per ogni peer, che in questo caso sarà:

Td = (N° Bytes / Frequenza Upload) = F / Ut =  F / (U1 + U2 + ... + U30)

Facendo gli stessi calcoli 

Td = F / Ut = 10^9 (Bytes)/  9000 (Bytes/s) = 111111,1 s. 

Ogni Peer dovrà aspettare solo 1 giorno per ottenere il file, un tempo decisamente molto più ridotto rispetto al caso precedente. E' chiaro quindi che minore è il numero di Clients Peer partecipano alla condivisione (files sharing), maggiore sarà il tempo necessario ad ognuno per ottenere il File.