DART
Approccio: Dynamic Addressing
Linee guida:
- I cambiamenti locali devono essere il più circoscritti possibile
- La Responsabilità è ugualmente distribuita su ciascun nodo
- Zero-Configuration dei nodi
Ogni nodo è dotato di un identificatore (uguale per tutta la durata della vita del nodo) e di un indirizzo di routing mutevole nel tempo.
Il mapping identificatore ed indirizzo di routing viene fatto attraverso funzioni di lookup implementate sullo stile delle Distributed Hash Tables perciò ogni volta che un nodo acquisisce o modifica il proprio indirizzo di routing, pubblicherà in rete l'associazione indirizzo di routing-identificatore.
Gli indirizzi di routing sono stringhe da l bits. I diversi indirizzi presenti in rete possono essere visti come un albero tale che:
- i Nodi della rete sono le foglie dell'albero stesso
- Nodi con indirizzo vicino sono vicini fisicamente nella rete
- Dato un indirizzo è possibile identificare un "sibling sub-tree" di livello k come composto dall'insieme degli indirizzo aventi i primi l-k-1 bit in comune con l'indirizzo dato
- Ogni nodo ha una entry nella tabella di routing corrispondente ad ogni ogni "sibling sub-tree" (quindi ha un numero di rotte che cresce come il log_2 del numero dei nodi)
Procedura Appena un nodo si connette alla rete riceve gli aggiornamenti sulle rotte dei suoi vicini e pubblicherà a sua volta inizierà a pubbicare le sue. Una volta connesso alla rete, un nodo sceglierà un indirizzo coerente con il sotto-albero fornito dai vicini dei vicini e tale per cui esiste uno spazio di indirizzi vuoto dei suoi vicini per quell'indirizzo. Le rotte sono propagate in maniera loop-free utilizzando l'albero stesso attraverso un campo travel-log che accompagna il pacchetto oltre al classico meccanismo del time-to-live dei pacchetti.
Maggiori informazioni