AUTOGENERAZIONE e mantenimento denso Scopo dell'algoritmo di autogenerazione e' quello di stabilire una legge matematica atta alla generazione di una rete densa,cioe' priva da pericoli di frammentazione in due o piu' sottoreti piu' piccole, tra loro non comunicanti. Le seguenti definizioni segnano dei criteri generici che garantiscono la corretta generazione e il mantenimento denso della rete. DEFINIZIONI N = numero di connessioni massime che ogni macchina puo' aprire. * Status che una singola macchina puo' assumere all'interno della fase evolutiva del sistema `caotico` pluricellulare : - Embrione : macchina con 0 connessioni aperte - Cellula Fortemente Instabile : macchina con X connessioni aperte, dove X =1,2,...,N-2 - Cellula Instabile : macchina con N-1 connessioni aperte - Cellula Stabile : macchina con N connessioni aperte * Comportamento di una singola macchina in relazione al suo status - Embrione Macchina non ancora presente in GAIA ma che fa girare il software per GAIA, il suo scopo principale e' entrare in rete quindi la priorita' massima e' dedicata alla ricerca di altri nodi GAIA. Se riceve una richiesta di connessione da un altro nodo accetta sempre, un nodo embrione e' attivo. - Cellula Fortemente Instabile E' attiva, cerca altri nodi per rafforzare la sua presenza in rete e quindi per diventare Cellula Instabile. La ricerca di altri nodi GAIA avviene con priorita' minore rispetto all'embrione poiche' la macchina si trova gia' in rete. Accetta connessioni da parte di nodi Embrioni e/o altre Cellule FI. - Cellula Instabile E' passiva nel senso che non cerca altre connessioni, ma accetta eventuali richieste di connessioni da parte di Embrioni e/o cellule FI. - Cellula Stabile Ha raggiunto lo sviluppo massimo e quindi si trova in uno stato di tranquillita' assoluta, ne' accetta connessioni, ne' le richiede. Date le sopraelencate definizioni e comportamenti di ogni nodo, GAIA esiste nel momento in cui esistono due Cellule Fortemente Instabili. * Criteri di scelta di N Il valore di N e' posto in funzione del carico macchina che ogni connessione implica, pertanto dovra' essere scelto in funzione del caso medio. Si noti che N deve essere > 2 per ottenere una rete magliata, inoltre N non dovra' essere eccessivamente grande per evitare che macchine con prestazioni scarse vengano eccessivamente caricate per la sola gestione delle connessioni. Si tenga presente che di fondamentale importanza e' il garantire l'accesso alla rete anche a macchine fuori mercato e/o con ridotte prestazioni. La scelta di N non e' locale, cioe' influisce su tutta le rete, stabilita per esempio, N = 3, tutti i nodi GAIA avranno massimo 3 connessioni aperte. Il valore di N puo' influire anche sull'algoritmo di routing che si intende impiegare, per esempio, se adottiamo un algoritmo di routing `flooding-like` un N grande puo' aumentare la complessita' in modo chiaramente esponenziale. Nella scelta definitiva dovranno quindi venir considerati i seguenti : a) Metodo di routing impiegato b) Compatibilita' verso macchine a basse prestazioni c) Funzionalita' Lo studio concreto del valore ottimale potra' essere svolto solamente nella fase di sperimentazione `su strada` della rete GAIA. Nella fase implementativa si potra' anche prevedere che sia la stessa GAIA a stabilire il valore di N a seconda delle risorse composte dalle singole macchine. Nelle fasi successive di questo documento e negli esempi sara' preso come valore ottimale, il valore minimo che N puo' assumere per formare una rete magliata ossia N = 3. * Come avviene la ricerca Come fa un Embrione e/o una Cellula FI a cercare altri nodi appartenenti alla rete ? Questo quesito e' particolarmente dipendente dal mezzo trasmissivo. Stabilito `internet come mezzo trasmissivo` dovranno essere tenute in considerazione le proprieta' cui la rete deve soddisfare. [ definire principio di ricerca, broadcast,ricerca con listarella di indirizzi di network, etc etc...] * Priorita' nella ricerca Nel caso di N > 3 le Cellule FI dovranno effettuare una ricerca a priorita' scalare. Es: N = 5 CC = connessioni correnti Lo status di ogni macchina e' definito dalle seguenti possibilita': CC = 0 Embrione CC = 1 Cellula FI CC = 2 Cellula FI CC = 3 Cellula FI CC = 4 Cellula I CC = 5 Cellula S Nel caso CC=1,2,3 la Cellula FI nell'effettuare la ricerca avra' priorita' diverse a seconda delle Connessioni Correnti. Piu' CC e' alto e piu' la priorita' di ricerca sara' bassa poiche' la tensione `stabilizzante` si riduce a seconda del valore di CC. Quindi nell'esempio soprastante, la Cellula FI con CC=1 avra' una priorita' >> della Cellula FI con CC=3. In sintesi, la priorita' di ricerca nelle Cellule FI e' inversamente proporzionale al valore delle ConnessioniCorrenti. Si noti che la necessita' di organizzare le priorita' nella ricerca e' presente soltanto per una scelta di N > 3. * Cambiamento dello Status e percezione di se' Ogni nodo e' responsabile di se' stesso e deve essere in grado di riconoscere da solo il suo status. Lo status e' dipendente dal numero di connessioni aperte, e' quindi sufficente che ogni nodo tenga continuamente controllato lo stato delle sue connessioni attraverso delle interrogazioni costanti. Es: il nodo A e' una Cellula FI con CC = 1, in comunicazione con il nodo B. se il nodo B esce dalla rete, A si deve accorgere e modificare conseguentemente il suo status. Non deve essere B ad avvisare i suoi vicini della sua uscita ma devono essere i suoi vicini, in questo caso A, ad accorgersi che il proprio status e' cambiato. Nel caso particolare, B esce dalla rete, A si accorge e modifica il suo status da CC=1 Cellula FI a CC=0 Embrione. [ definire meglio COME avengono le interrogazioni, ping ? ogni quanto ? semaforo sulla variabile CC altrimenti se nel lasso di tempo del ping CC puo' essere incrementata e si genera uno spiacevole fenomeno, vedi problema delle risorse condivise, produttore/consumatore, sveglie perse etc etc (Tanenbaum) ] * Esempi di autogenerazione e mantenimento [ fare disegnini con didascalia in modo da elencare tutti i possibili casi ]