Informazioni sulle tabelle di routing distribuite

Esiste una tabella di routing distribuita (DRT) come mesh di nodi di cooperazione, in cui ogni nodo è un'istanza di un'applicazione che usa l'API DRT. I nodi che pubblicano le chiavi sono responsabili dell'assistenza di altri nodi per la pubblicazione e la risoluzione delle chiavi. I nodi possono anche partecipare a una "soluzione solo", che non richiede loro di assistere i peer. Il protocollo DRT viene eseguito su un trasporto UDP/IPv6.

Un nodo che pubblica una chiave compila e gestisce una tabella di routing locale di altri nodi nella mesh. Questa tabella di routing è ottimizzata in modo che il nodo possa individuare rapidamente una chiave specifica nella mesh individuando la chiave direttamente nella tabella di routing locale o chiedendo ad altri nodi che pubblicano chiavi numericamente vicine alla destinazione. Questa azione viene ripetuta fino a quando non viene trovata la chiave richiesta o il nodo determina che tale chiave non esiste.

Le chiavi DRT sono numeri interi senza segno a 256 bit. La vicinanza tra le chiavi è definita dalla differenza numerica tra di esse. Il keyspace DRT è considerato circolare. Ad esempio, il primo valore di chiave possibile e l'ultimo valore di chiave possibile sono considerati vicini.

In una DRT sicura, i nodi sono necessari per autenticare le chiavi pubblicate. Il meccanismo in base al quale i nodi autenticano le chiavi devono essere impostati usando l'API DRT quando la replica DRT viene inizializzata. Questa operazione viene eseguita scegliendo un provider di sicurezza per DRT. Un provider di sicurezza è un modulo che può produrre token usati per autenticare le chiavi e verificare i token prodotti da altri nodi. Deve implementare l'interfaccia del provider di sicurezza definita in questa documentazione. Windows 7 DRT viene fornito con due provider di sicurezza completamente implementati che possono essere usati per compilare applicazioni Windows.

Durante l'inizializzazione, un'applicazione deve anche fornire a DRT un provider bootstrap. Il provider bootstrap è un modulo in grado di recuperare gli endpoint di rete dei nodi già presenti nella mesh DRT e viene chiamato da DRT quando viene stabilito un nuovo nodo. Analogamente al modulo del provider di sicurezza, il provider bootstrap deve implementare un'interfaccia ben definita. Windows 7 DRT viene fornito con due provider bootstrap completamente implementati.

DRT considera i vicini immediati di una chiave speciale. Le cinque chiavi più vicine sono numericamente più piccole e le cinque chiavi più vicine numericamente più grandi di una chiave pubblicata formano il cosiddetto set foglia. DRT segnala le modifiche apportate al set foglia di una chiave tramite l'API DRT.

Transizioni di ciclo di vita e stato DRT

Un'applicazione può inizializzare un'istanza DRT locale usando la funzione DrtOpen . Questa funzione attiva il processo di bootstrap, in cui l'API DRT chiama il provider bootstrap per apprendere le chiavi e gli endpoint di rete di altri nodi che partecipano già a DRT. Se il provider bootstrap individua almeno un altro nodo, DRT entra nello stato DRT_ACTIVE. In questo stato, l'applicazione può cercare chiavi pubblicate da altri nodi e pubblicare chiavi che possono essere risolte. Se il provider bootstrap non è in grado di individuare correttamente altri nodi, il DRT entra nello stato DRT_ALONE. DRT rimarrà nello stato DRT_ALONE e tenterà periodicamente di eseguire il bootstrap per individuare i peer e passare allo stato DRT_ACTIVE.

Un nodo può passare a questi stati da DRT_ACTIVE.

Stato ciclo di vita Condizioni
DRT_ALONE Il nodo locale non ha individuato altri nodi in DRT. In questo stato, il nodo continua ad ascoltare altri nodi all'interno di DRT.
Se un altro nodo viene aggiunto a DRT, il nodo locale passerà allo stato DRT_ACTIVE. Se la rete è inattiva, passerà a DRT_NO_NETWORK. In caso di errore grave con DRT, il nodo passerà allo stato DRT_FAULTED.
DRT_NO_NETWORK Quando un nodo perde la connettività di rete, passa allo stato DRT_NO_NETWORK. A questo punto l'applicazione può attendere il ripristino della connettività di rete e può chiudere DRT.
DRT_FAULTED Si è verificato un errore grave all'interno del nodo locale. Ad esempio, se il computer locale esaurisce la memoria fisica.
Mentre un nodo entra in questo stato, l'applicazione deve chiamare l'API DrtClose , correggere il problema e inizializzare nuovamente DRT con DrtOpen.

Uso dell'API Tabella di routing distribuito

Informazioni di riferimento sulle API tabella di routing distribuito