Size: 1730
Comment:
|
Size: 2444
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 11: | Line 11: |
. {{{etp = (R, atp, flag)}}} | . {{{etp = (R, TPL, flag)}}} |
Line 15: | Line 15: |
. {{{L}}}''{{{i}}}''{{{ = [TP0, TP1, ...]}}} | . {{{L}}}''{{{i}}}''{{{ = [tuple0, tuple1, ...]}}} |
Line 17: | Line 17: |
. {{{TP}}}''{{{j}}}''{{{ = (dst, rem)}}} | . {{{tuple}}}''{{{j}}}''{{{ = (dst, rem)}}} |
Line 19: | Line 19: |
. {{{dst}}} è l'ID di un (g)nodo di livello {{{i}}} di cui abbiamo una route nota all'host che ha spedito l'ETP | . {{{dst}}} è l'ID di un (g)nodo di livello ''{{{i}}}'' di cui abbiamo una route nota all'host che ha spedito l'ETP |
Line 21: | Line 21: |
. {{{atp = [block0, block1, ...]}}} | . {{{TPL = [block0, block1, ...]}}} |
Line 23: | Line 23: |
. {{{block}}}''{{{y}}}''{{{ = (lvl, TP)}}} | . {{{block}}}''{{{m}}}''{{{ = (lvl, TP)}}} |
Line 26: | Line 26: |
. {{{TP = [pair1, pair2, ...]}}} | . {{{TP = [pair0, pair1, ...]}}} |
Line 30: | Line 30: |
. {{{hop}}} è l'ID a livello {{{lvl}}} del (g)nodo rappresentato da questo {{{pair}}} . {{{rem}}} è un'istanza di Rem che indica l'efficienza del link tra il (g)nodo {{{pair}}}''{{{n}}}'' e {{{pair}}}''{{{(n-1)}}}'', oppure il blocco precedente, oppure il nodo che ha inviato l'ETP. |
. {{{hop}}} se siamo al livello {{{lvl == 0}}} è l'ID a livello 0 del nodo rappresentato da questo {{{pair}}}; altrimenti è l'intero netsukuku-ip (vedi la [[../ClasseMap|classe Map]]) del g-nodo rappresentato da questo {{{pair}}} . {{{rem}}} è un'istanza di Rem che indica l'efficienza del link tra il (g)nodo {{{pair}}}''{{{n}}}'' e {{{pair}}}''{{{(n+1)}}}''; se questo {{{pair}}} è l'ultimo del {{{block}}} la Rem si riferisce al link verso il primo {{{pair}}} del {{{block}}} successivo; se questo {{{block}}} è l'ultimo del {{{TPL}}} la Rem si riferisce al link verso me stesso e sarà sicuramente una {{{NullRem}}}. <<BR>> Considera che ad ogni passo percorso dall'ETP il successivo nodo si mette in coda a questa TPL. Il nodo che '''riceve''' un {{{ETP}}} valorizza il REM del link da lui stesso verso il nodo che glielo ha appena trasmesso. Quindi il contenuto di {{{TPL[-1][1][-1]}}} al momento della ricezione di un {{{ETP}}} è sempre {{{NullRem}}}. '''TODO''' verifica. |
Extended Tracer Packet (ETP)
Come concetto generale, un ETP è un Acyclic Tracer Packet (ATP) che contiene una porzione di una mappa di routes.
Siccome una route è rappresentata da un Tracer Packet (TP) possiamo dire che un ETP è composto da un ATP e un insieme di TP.
Inoltre l'ETP contiene anche un flag di interesse, perché è sottoposto alla "Interesting Information Rule".
Per un maggiore dettaglio dei concetti di Tracer Packet e derivati rimandiamo al documento qspn.pdf.
Dal punto di vista della struttura dati che il programma Netsukuku usa e che i nodi si scambiano, un ETP è:
etp = (R, TPL, flag)
- dove:
R = [L0, L1, L2, L3]
- dove:
Li = [tuple0, tuple1, ...]
- dove:
tuplej = (dst, rem)
- dove:
dst è l'ID di un (g)nodo di livello i di cui abbiamo una route nota all'host che ha spedito l'ETP
rem è l'efficienza della route di cui sopra
TPL = [block0, block1, ...]
- dove:
blockm = (lvl, TP)
- dove:
lvl è il livello a cui si trovano i (g)nodi rappresentati in questo block
TP = [pair0, pair1, ...]
- dove:
pairn = (hop, rem)
- dove:
hop se siamo al livello lvl == 0 è l'ID a livello 0 del nodo rappresentato da questo pair; altrimenti è l'intero netsukuku-ip (vedi la classe Map) del g-nodo rappresentato da questo pair
rem è un'istanza di Rem che indica l'efficienza del link tra il (g)nodo pairn e pair(n+1); se questo pair è l'ultimo del block la Rem si riferisce al link verso il primo pair del block successivo; se questo block è l'ultimo del TPL la Rem si riferisce al link verso me stesso e sarà sicuramente una NullRem.
Considera che ad ogni passo percorso dall'ETP il successivo nodo si mette in coda a questa TPL. Il nodo che riceve un ETP valorizza il REM del link da lui stesso verso il nodo che glielo ha appena trasmesso. Quindi il contenuto di TPL[-1][1][-1] al momento della ricezione di un ETP è sempre NullRem. TODO verifica.
flag = 1 # oppure 0