Compartilhar via


Sobre tabelas de roteamento distribuído

Uma DRT (Tabela de Roteamento Distribuído) existe como uma malha de nós de cooperação, em que cada nó é uma instância de um aplicativo usando a API DRT. Os nós que publicam chaves são responsáveis por ajudar outros nós a publicar e resolve chaves. Os nós também podem participar de uma forma "somente resolve", o que não exige que eles ajudem os pares. O protocolo DRT é executado em um transporte UDP/IPv6.

Um nó que publica um build de chave e mantém uma tabela de roteamento local de outros nós na malha. Essa tabela de roteamento é otimizada para que o nó possa localizar rapidamente uma chave específica na malha localizando a chave diretamente na tabela de roteamento local ou solicitando que outros nós publiquem chaves numericamente perto do destino. Essa ação é repetida até que a chave necessária seja encontrada ou o nó determine que essa chave não existe.

As chaves DRT são inteiros sem sinal de 256 bits. A proximidade entre as chaves é definida pela diferença numérica entre elas. O keyspace DRT é considerado circular. Por exemplo, o primeiro valor de chave possível e o último valor de chave possível são considerados vizinhos.

Em um DRT seguro, os nós são necessários para autenticar as chaves que publicam. O mecanismo pelo qual os nós autenticam chaves deve ser definido usando a API DRT quando o DRT é inicializado. Isso é feito escolhendo um provedor de segurança para o DRT. Um provedor de segurança é um módulo que pode produzir tokens usados para autenticar chaves e verificar tokens produzidos por outros nós. Ele deve implementar a interface do provedor de segurança definida nesta documentação. O DRT do Windows 7 é fornecido com dois provedores de segurança totalmente implementados que podem ser usados para criar aplicativos do Windows.

Durante a inicialização, um aplicativo também deve fornecer o DRT com um provedor de inicialização. O provedor de inicialização é um módulo que pode recuperar os pontos de extremidade de rede de nós já presentes na malha DRT e é chamado pelo DRT quando um novo nó é estabelecido. Assim como o módulo do provedor de segurança, o provedor de inicialização deve implementar uma interface bem definida. O DRT do Windows 7 é fornecido com dois provedores de inicialização totalmente implementados.

O DRT considera os vizinhos imediatos de uma chave especial. As cinco teclas mais próximas numericamente menores e as cinco chaves mais próximas numericamente maiores do que uma chave publicada formam o que é chamado de conjunto folha. O DRT relata alterações no conjunto folha de uma chave por meio da API DRT.

Ciclo de vida drt e transições de estado

Um aplicativo pode inicializar uma instância drt local usando a função DrtOpen . Essa função dispara o processo de inicialização, em que a API DRT chama o provedor de inicialização para aprender as chaves e os pontos de extremidade de rede de outros nós que já participam do DRT. Se o provedor de inicialização localizar com êxito pelo menos um outro nó, o DRT entrará no estado DRT_ACTIVE. Nesse estado, o aplicativo pode pesquisar chaves publicadas por outros nós e pode publicar chaves que podem ser resolvidas. Se o provedor de inicialização não conseguir localizar outros nós com êxito, o DRT entrará no estado DRT_ALONE. O DRT permanecerá no estado DRT_ALONE e tentará inicializar periodicamente para localizar pares e ir para o estado DRT_ACTIVE.

Um nó pode fazer a transição para esses estados de DRT_ACTIVE.

Estado do ciclo de vida Condições
DRT_ALONE O nó local não descobriu outros nós no DRT. Nesse estado, o nó continua a escutar outros nós dentro do DRT.
Se outro nó ingressar no DRT, o nó local fará a transição para o estado DRT_ACTIVE. Se a rede estiver inativa, ela fará a transição para DRT_NO_NETWORK. No caso de um erro grave com o DRT, o nó fará a transição para o estado DRT_FAULTED.
DRT_NO_NETWORK Quando um nó perde a conectividade de rede, ele faz a transição para o estado DRT_NO_NETWORK. Neste ponto, o aplicativo pode aguardar a restauração da conectividade de rede e pode fechar o DRT.
DRT_FAULTED Ocorreu um erro grave dentro do nó local. Por exemplo, se o computador local ficar sem memória física.
Enquanto um nó entra nesse estado, o aplicativo deve chamar a API DrtClose , corrigir o problema e inicializar novamente o DRT com DrtOpen.

Usando a API de Tabela de Roteamento Distribuído

Referência da API de Tabela de Roteamento Distribuído