Differences between revisions 2 and 4 (spanning 2 versions)
Revision 2 as of 2009-04-08 21:40:05
Size: 3069
Editor: anonymous
Comment:
Revision 4 as of 2009-05-21 13:16:04
Size: 2646
Editor: lukisi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 4: Line 4:
<<BR>>
--(In seguito aggiunta la classe {{{NodeInfo}}}.)--
Line 7: Line 5:
--(~+La classe {{{NodeInfo}}}+~ rappresenta un nodo all'interno della ip_table della classe Neighbour. Ne memorizza queste informazioni:)--
 * --(devs: a dict which maps a device to the average rtt)--
 * --(bestdev: a pair (d, avg_rtt), where devs[d] is the best element of devs.)--
 * --(ntk: node's ntk remote instance)--

~+La classe
Radar+~, quando viene istanziata, si memorizza --(se lavora in multipath e)-- il numero massimo di vicini memorizzati (gestiti in una nuova istanza della classe Neighbour) e il numero di pacchetti nel bouquet (li prende dalla [[../VariabileGlobaleSettings|variabile globale settings]]).
~+La classe Radar+~, quando viene istanziata, si memorizza il numero massimo di vicini memorizzati (gestiti in una nuova istanza della classe Neighbour) e il numero di pacchetti nel bouquet (li prende dalla [[../VariabileGlobaleSettings|variabile globale settings]]).
Line 16: Line 9:
Queste statistiche sono in forma di un dictionary di ip -> Neigh --({{{NodeInfo}}})-- --([bestdev, rtt])-- dove: Queste statistiche sono in forma di un dictionary di {{{ip -> Neigh}}}, dove:
Line 18: Line 11:
 . ip = [4, 3, 2, 1]
 . --(bestdev = None se in multipath, altrimenti 'eth0' o la migliore)--
 . --(rtt = rtt medio di quel nodo vicino passando per bestdev)--
 . {{{ip}}} = intero rappresentante il NIP
 . in {{{neigh}}} vengono memorizzati solo {{{devs}}} e {{{bestdev}}}
Line 26: Line 18:
~+La classe Neigh+~ rappresenta un nodo vicino di LAN. Viene usata per passare (ad esempio negli eventi, o nel metodo neigh_list) le informazioni che riguardano un nodo. Anche per rappresentare un nodo all'interno della ip_table della classe Neighbour. Ne memorizza queste informazioni: ~+La classe Neigh+~ rappresenta un nodo vicino di LAN. Viene usata per passare (ad esempio negli eventi, o nel metodo neigh_list) le informazioni che riguardano un nodo. Ne memorizza queste informazioni:
Line 32: Line 24:
 . '''bestdev''': a pair (d, avg_rtt), where devs[d] is the best element of
                    devs.
 . '''netid''': network id of the node; per evitare delle collisioni; ogni host genera casualmente il proprio netid; lo comunica ai suoi vicini di LAN durante il [[../FunzionamentoDelRadar|Radar Scan]].
 . '''bestdev''': a pair (d, avg_rtt), where devs[d] is the best element of devs.
 . '''netid''': network id come è conosciuto da questo vicino; si tratta di un identificativo della rete usato per rilevare la [[../NetworkCollision|collisione]] di 2 reti Netsukuku nate separatamente.

Anche per rappresentare un nodo all'interno della {{{ip_table}}} della classe {{{Neighbour}}} si usa la classe {{{Neigh}}}, ma valorizzando solo i membri {{{devs}}} e {{{bestdev}}}.

Il modulo Radar

Nel modulo Radar vengono definite le classi Radar, Neighbour e Neigh. Servono a gestire la conoscenza del proprio vicinato da parte dell'host corrente. Cioè quali sono gli altri nodi della sua LAN.

La classe Radar, quando viene istanziata, si memorizza il numero massimo di vicini memorizzati (gestiti in una nuova istanza della classe Neighbour) e il numero di pacchetti nel bouquet (li prende dalla variabile globale settings).

Il suo metodo radar() manda n pacchetti in broadcast e calcola delle statistiche (la media dei RTT degli n pacchetti inviati - vedi il metodo get_avg_rtt) che poi passa all'istanza di Neighbour, tramite il suo metodo store(ip_table) (vedi Funzionamento del Radar).
Queste statistiche sono in forma di un dictionary di ip -> Neigh, dove:

  • ip = intero rappresentante il NIP

  • in neigh vengono memorizzati solo devs e bestdev

La classe Neighbour nel suo metodo store fa il merge dell'ip_table passata con quella di cui era già a conoscenza. Oltre a ricordare gli ip dei suoi vicini, assegna ad ognuno un id univoco all'interno di questo host. A questo serve la sua translation_table.
Nel gestire la sua ip_table, questa classe emette i signal NEIGH_NEW, NEIGH_DEL e NEIGH_REM_CHGED.

La classe Neigh rappresenta un nodo vicino di LAN. Viene usata per passare (ad esempio negli eventi, o nel metodo neigh_list) le informazioni che riguardano un nodo. Ne memorizza queste informazioni:

  • ip: neighbour's ip; si tratta di un intero che rappresenta tutti i byte dell'indirizzo IP, e.g. 185999660;

  • nip: neighbour's nip; si tratta di una sequenza, e.g. [44, 33, 22, 11];

  • ntkd: neighbour's ntk remote instance; si tratta di un TCPClient (vedi il modulo RPC) istanziato nei metodi store() o ip_change() della classe Neighbour;

  • idn: neighbour's id; id univoco all'interno di questo host, associato al ip nella translation_table;

  • devs: a dict which maps a device to the average rtt

  • bestdev: a pair (d, avg_rtt), where devs[d] is the best element of devs.

  • netid: network id come è conosciuto da questo vicino; si tratta di un identificativo della rete usato per rilevare la collisione di 2 reti Netsukuku nate separatamente.

Anche per rappresentare un nodo all'interno della ip_table della classe Neighbour si usa la classe Neigh, ma valorizzando solo i membri devs e bestdev.

Netsukuku/ita/ModuloRadar (last edited 2009-05-21 13:16:04 by lukisi)