3. Un nuovo approccio al calcolo distribuito volontario 33
3.4. Altri aspetti importanti
consentiti. Dopo che un nodo invia una data unità di lavoro ad un eventuale richiedente, aspetterà intervalli via via crescenti (secondo uno schema di backo esponenziale) prima di restituire di nuovo la stessa unità di lavoro allo stesso richiedente. Il limite massimo di download consentiti permette di non impegnare più volontari del necessario con la stessa unità di lavoro.
Vale la pena notare che non c'è nessuna correlazione apparente tra la tipologia dell'u-nità di lavoro e il nodeId del nodo su cui viene salvata. Questo assicura una distribuzione uniforme del carico su tutta la rete, il che deriva direttamente dalle proprietà di PAST/-Pastry. L'utilizzo dei riferimenti serve proprio ad evitare situazioni di sbilanciamento del carico in cui parti dello spazio dei nodeId vengono sfruttate più di altre. I riferimenti alle unità di lavoro hanno tutti la stessa dimensione, non occupano molto spazio, e cosa più importante, vengono distribuiti uniformemente sullo spazio dei nodeId.
Lo stesso risultato non sarebbe ottenibile invece, utilizzando le unità di lavoro diretta-mente, al posto dei riferimenti. Anche riuscendo ad avere una distribuzione abbastanza equa per quanto riguarda il numero di unità di lavoro per nodo volontario, le unità di lavoro appartenenti a tipologie diverse hanno comunque dimensioni diverse (i riferimenti sono tutti uguali), e questo porterebbe ad un notevole sbilanciamento del carico sullo spazio dei nodeId.
Inne, osserviamo che, se un'unità di lavoro raggiunge la sua deadline senza mai essere stata elaborata, essa viene ripubblicata sullo storage distribuito con un nuovo leId, come se si trattasse di una nuova unità di lavoro.
3.4. Altri aspetti importanti
3.4.1. Utilizzo dello storage distribuito
I nodi volontari che si uniscono alla rete di calcolo distribuito volontario forniscono, oltre al tempo CPU, parte della loro banda di comunicazione e del loro spazio di storage locale. I volontari possono scegliere, coerentemente con quanto abbiamo discusso nella sezione 2.2 a pagina 25 riguardo a PAST, di contribuire allo storage distribuito con una quantità di memoria a loro scelta. Per incentivare questo comportamento, i progetti di ricerca potrebbero introdurre una misura di credito che tenga conto anche dello spazio donato allo storage distribuito.
Per quanto riguarda i nodi dedicati valgono le stesse considerazioni: essi possono partecipare con una quantità di memoria locale a scelta (anche nulla) allo storage distribuito.
Nella sezione 2.2.3.4 a pagina 28 abbiamo discusso la possibilità di introdurre delle quote di storage in PAST. Questa possibilità risulta molto utile nel modello di calcolo distribuito volontario proposto, in quanto impone dei limiti di storage ai partecipanti. In sostanza, un nodo volontario ha un limite massimo di storage che non può eccedere, che è utile per prevenire situazioni in cui nodi malevoli cerchino di occupare lo storage distribuito generando risultati calcolati ttizi, atti solamente ad occupare spazio.
3.4.2. Sicurezza
Le quote di storage sono denite nelle smartcard di PAST. Possiamo immaginare che i progetti di ricerca mettano a disposizione un broker per la generazione delle smartcard, come discusso nella sezione 2.2.1 a pagina 25. Poiché un utente potrebbe esaurire la sua quota di storage producendo risultati calcolati, deve di volta in volta, reclamare lo spazio dai risultati più vecchi, oppure, impostare una durata di vita massima dei le contenenti i risultati. Tale time-out, una volta scaduto, permette di cancellare i
Capitolo 3 Un nuovo approccio al calcolo distribuito volontario le vecchi e ripristinare le quote di storage utilizzate. Ovviamente, il valore del time-out deve essere tale da permettere ai nodi dedicati di raccogliere in tempo i risultati calcolati. Si osservi che questo meccanismo è necessario, in quanto solo in nodo che crea un le, ne può richiedere la cancellazione, o può impostare il suo tempo massimo di vita nello storage distribuito.
Come già discusso in precedenza nella sezione 2.2.3.2 a pagina 27, le smartcard per-mettono la verica dell'autenticità dei le e delle richieste. Un nodo volontario è sicuro di eseguire le unità di lavoro rilasciate dai nodi dedicati e non da nodi malevoli grazie alle rme digitali. I nodi dedicati, possono rmare le unità di lavoro prima di pub-blicarle sullo storage distribuito, in modo che ogni nodo volontario ne possa accertare l'originalità.
Un nodo volontario può riutare richieste di salvataggio di unità di lavoro che non presentano la rma dei progetti di ricerca a cui il volontario aerisce. Questa è una protezione in più da attacchi dove eventuali nodi malevoli si ngono nodi dedicati, e cercano di esaurire le risorse di storage della rete generando unità di lavoro ttizie.
Un nodo volontario può anche riutare richieste per il download dei risultati calco-lati se queste non provengono dai nodi persistenti. Un'altra misura di sicurezza, per impedire il furto dei risultati già calcolati (ad esempio a scopo di ottenere credito in modo disonesto) consiste nel cifrare i risultati ottenuti con la chiave pubblica dei nodi dedicati. In questo modo solo chi possiede la chiave privata, e cioè il vero nodo dedicato, potrà ottenere i risultati.
I nodi volontari possono rmare i le contenenti i risultati calcolati prima di salvarli sullo storage distribuito. Questo meccanismo permette ai nodi dedicati di vericare l'identità dell'autore di un dato risultato, ed eventualmente aerire l'adeguata quantità di credito per il lavoro svolto. In questo modo, nessun nodo partecipante può rubare il lavoro di altri nodi volontari.
Le rme possono essere usate per vericare anche l'integrità dei dati, sia di quelli provenienti dai nodi dedicati, sia di quelli prodotti dai nodi volontari.
3.4.3. k-replicazione
Per garantire la persistenza3 e la disponibilità dei le sullo storage distribuito, PAST mette a disposizione un meccanismo di replicazione con fattore k di tutti i le in es-so contenuti. Come già discuses-so nella sezione 2.2.3.6, il sistema garantisce anche il ripristino delle copie dei le perse a causa dei fallimenti dei nodi. Questa è una pro-prietà desiderabile per il modello di calcolo volontario distribuito proposto, dove i nodi volontari sono assolutamente inadabili.
La k-replicazione può portare a problemi di consistenza nella distribuzione dei riferi-menti alle unità di lavoro sullo spazio degli nodeId. Più precisamente, questo problema si presenta nelle situazioni in cui il leId di un riferimento venga inoltrato ad un nodo con nodeId vicino al conne tra due intervalli diversi di nodeId. In questa situazione, la k-replicazione potrebbe far sì che alcune copie di un riferimento vadano su nodi con nodeId in un intervallo che non corrisponde alla tipologia di unità di lavoro puntata dal riferimento.
Per far fronte a questo problema si possono utilizzare le tecniche di deviazione delle repliche e dei le discusse nelle sezioni 2.2.4.2 e 2.2.4.3 a pagina 31. Un nodo deve controllare il leId dei riferimenti ed assicurarsi che essi siano inclusi nel suo stesso intervallo di nodeId. Nel caso in cui un nodo riceva un riferimento con leId non incluso nel suo intervallo di appartenenza, allora lo può tranquillamente riutare come se non
3In alternativa, o anche in combinazione con la ridondanza, si possono usare gli erasure coding descritti nella sezione 2.3 a pagina 32.
3.4 Altri aspetti importanti
avesse abbastanza storage libero per contenerlo. A questo punto verranno attuati i meccanismi di deviazione delle repliche o dei le.