Differences between revisions 1 and 2
Revision 1 as of 2015-02-26 22:17:29
Size: 3643
Editor: lukisi
Comment:
Revision 2 as of 2015-02-28 08:45:55
Size: 3857
Editor: lukisi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
Prima di iniziare ad usare il modulo QSPN, il nodo deve essere a conoscenza del suo indirizzo Netsukuku; deve essere un indirizzo non ancora preso nella rete; deve essere un indirizzo compatibile con gli archi del nodo, cioè tale che se il nodo entra in un g-nodo esistente ''g'' di livello ''i'' abbia almeno un arco verso un altro nodo appartenente a ''g''. Di fatto per ottenere questo il nodo contatta i suoi vicini e raccoglie informazioni sui loro g-nodi di appartenenza ai vari livelli, compreso il livello più alto; poi valuta quale strategia voglia seguire per scegliere su quale g-nodo tra questi voglia entrare, quindi contatta il Coordinator del g-nodo scelto e si accorda con lui per farsi assegnare un posto al suo interno. Prima di iniziare ad usare il modulo QSPN, il nodo deve essere a conoscenza del suo indirizzo Netsukuku; deve essere un indirizzo non ancora preso nella rete; deve essere un indirizzo compatibile con gli archi del nodo, cioè tale che se il nodo entra in un g-nodo esistente ''g'' di livello ''i'' abbia almeno un arco verso un altro nodo appartenente a ''g''. Di fatto per ottenere questo il nodo contatta i suoi vicini e raccoglie informazioni sui loro g-nodi di appartenenza ai vari livelli, compreso il livello più alto; poi sceglie uno di questi g-nodi per entrarvi, quindi contatta il Coordinator del g-nodo scelto e si accorda con lui per farsi assegnare un posto al suo interno.

La strategia che si adotta per la scelta
del g-nodo non è di competenza del modulo QSPN. Viene descritta nel documento '''TODO: inserire'''.
Line 35: Line 37:
Quando tutte le richieste hanno terminato si avrà una lista di ETP. Se tale lista risultasse vuota allora il modulo emette il segnale ''failed_hook'' di !QspnManager affinché il nodo consideri fallito l'ingresso nella rete e riprovi da capo. Quando tutte le richieste hanno terminato si avrà una lista di ETP. Se tale lista risultasse vuota allora il modulo emette il segnale ''failed_hook'' di !QspnManager affinché il nodo consideri fallito l'ingresso nella rete e riprovi da capo. Quando viene emesso il segnale ''failed_hook'' l'utilizzatore del modulo è tenuto a scartare l'istanza di !QspnManager.

Modulo QSPN - Dettagli Tecnici

Requisiti

L'utilizzatore del modulo QSPN per prima cosa inizializza il modulo richiamando il metodo statico QspnManager.init ( ) .

Prima di iniziare ad usare il modulo QSPN, il nodo deve essere a conoscenza del suo indirizzo Netsukuku; deve essere un indirizzo non ancora preso nella rete; deve essere un indirizzo compatibile con gli archi del nodo, cioè tale che se il nodo entra in un g-nodo esistente g di livello i abbia almeno un arco verso un altro nodo appartenente a g. Di fatto per ottenere questo il nodo contatta i suoi vicini e raccoglie informazioni sui loro g-nodi di appartenenza ai vari livelli, compreso il livello più alto; poi sceglie uno di questi g-nodi per entrarvi, quindi contatta il Coordinator del g-nodo scelto e si accorda con lui per farsi assegnare un posto al suo interno.

La strategia che si adotta per la scelta del g-nodo non è di competenza del modulo QSPN. Viene descritta nel documento TODO: inserire.

Dallo stesso Coordinator del g-nodo g il nodo ottiene anche altre informazioni che servono al modulo QSPN, come l'anzianità di g e dei suoi g-nodi superiori e l'anzianità del g-nodo che il nodo corrente costituirà, per poter produrre il proprio fingerprint di nodo. L'identificativo del fingerprint è generato dal nodo come numero random in uno spazio abbastanza grande di modo che sia presumibilmente univoco a livello di rete.

Quindi il nodo istanzia il suo QspnManager passando al costruttore:

  • Il proprio indirizzo Netsukuku (istanza di IQspnNaddr my_naddr).

  • Il numero massimo di percorsi per destinazione da memorizzare (int max_paths).

  • Il massimo rapporto di hops comuni nella verifica di disgiunzione (double max_common_hops_ratio).

  • Gli archi che esistono tra il nodo e i suoi vicini (lista di istanze di IQspnArc my_arcs).

  • Il suo fingerprint come nodo (istanza di IQspnFingerprint my_fingerprint).

  • Il calcolatore del tempo di tolleranza (istanza di IQspnThresholdCalculator threshold_calculator).

  • La stub factory (istanza di IQspnStubFactory stub_factory).

  • La factory per produrre istanze di ETP (istanza di IQspnEtpFactory etp_factory).

Quando ci sono variazioni sugli archi, richiama sul QspnManager i metodi:

  • arc_add (IQspnArc arc).

  • arc_is_changed (IQspnArc changed_arc).

  • arc_remove (IQspnArc removed_arc).

Deliverables

Quando viene costruito il QspnManager gli viene passata una lista di archi. Se non ci sono archi significa che il nodo sta generando una nuova rete, quindi il modulo si considera da subito maturo. Il modulo lo segnala attraverso il segnale qspn_mature di QspnManager.

Se invece ci sono degli archi il modulo si considera non maturo. In questo caso chiede ai vicini di comunicargli le loro mappe con un ETP completo.

Le richieste sono fatte su ogni singolo arco, in parallelo, con protocollo reliable. Se una richiesta fallisce (per problemi al link) il relativo arco viene rimosso e viene emesso il segnale arc_removed di QspnManager.

Alcuni degli archi possono rifiutare la richiesta perché a loro volta non sono ancora maturi. Per questi non viene rimosso l'arco, ma semplicemente non abbiamo potuto ricevere da loro un ETP.

Quando tutte le richieste hanno terminato si avrà una lista di ETP. Se tale lista risultasse vuota allora il modulo emette il segnale failed_hook di QspnManager affinché il nodo consideri fallito l'ingresso nella rete e riprovi da capo. Quando viene emesso il segnale failed_hook l'utilizzatore del modulo è tenuto a scartare l'istanza di QspnManager.

Se invece la lista contiene uno o più ETP, il modulo li elabora. Poi si considera maturo, quindi emette il segnale qspn_mature di QspnManager.

Il modulo segnala.

Netsukuku/ita/docs/ModuloQSPN/DettagliTecnici (last edited 2016-07-28 08:54:14 by lukisi)