# Delay-tolerant networking

Redes tolerantes a atraso (DTN) é uma arquitetura de redes de computadores que visa os problemas técnicos em redes heterogêneas nas quais pode haver falta de conectividade de rede contínua (queda de internet). Exemplos de tais redes são as redes móveis, ou de ambientes extremos (guerras, resgates, acidentes, etc.), ou redes planejadas no espaço.
Recentemente, o termo redes tolerantes a “rompimento” (Disruption-tolerant networking - DTN) ganhou espaço nos Estados Unidos, devido ao apoio da DARPA, que fundou vários projetos relacionados a DTN. Esse rompimento pode ocorrer por causa dos limites do alcance da wireless, dispersão dos nós móveis, recursos energéticos, ataques e ruído (interferência).

## História

Nos anos 70, empolgados com a miniaturização da computação, pesquisadores começaram a desenvolver tecnologia para roteamento entre localizações não-fixas de computadores. Enquanto o campo do roteamento ad-hoc estava inativo através dos anos 80, o uso abrangente de protocolos wireless revigorou a área nos anos 90, enquanto as MANETs e as Vehicular Ad-Hoc Networking foram se tornando áreas de interesse crescente.
Concorrentemente com (mas separadamente de) as atividades de MANET, a DARPA proveu fundos para a NASA, o MITRE e outros para desenvolver uma proposta para uma Internet Interplanetária (Interplanetary Networking - IPN). O pioneiro da internet Vint Cerf e outros desenvolveram a arquitetura inicial da IPN, juntando a necessidade de tecnologias de rede que pudesse cooperar com os atrasos e corrupção de pacotes significativos que ocorriam nas comunicações com o espaço. Em 2002, Kevin Fall começou a adaptar algumas ideias do design da IPN para redes terrestres, e criou o termo delay-tolerant networks, e a sigla DTN. Um artigo publicado em 2003 na SIGCOMM determina a motivação para as DTNs. Na metade dos anos 2000, o interesse em DTNs cresceu, incluindo um crescente número de congressos acadêmicos focados em redes tolerantes a atraso e a rompimento, e um interesse crescente na combinação dos usos de redes de sensores e MANETs no que diz respeito a DTNs. Essa área viu a possibilidade de muitas otimizações nos algoritmos de redes ad-hoc clássicas e tolerantes a atraso, e começou a examinar fatores como segurança, confiabilidade, verificabilidade e outras áreas de pesquisa que são bem conhecidas na área de redes de computadores tradicional.

## Roteamento

A habilidade de transportar ou rotear dados de uma fonte para um destino é fundamental, e todas as redes de comunicação deve tê-la. Redes tolerantes a atraso e a rompimento (DTNs) são caracterizadas por sua falta de conectividade, resultando numa falta de caminhos fim-a-fim instantâneos. Nesses ambientes desafiadores, protocolos de roteamento populares de ad-hoc, como o AODV e o DSR falham em estabelecer rotas. Isso se deve ao fato desses protocolos tentarem primeiramente estabelecer uma rota completa, e então, após a rota ter sido estabelecida, encaminhar os dados. No entanto, quando caminhos fim-a-fim são difíceis ou impossíveis de se estabelecer, protocolos de roteamento devem tentar uma estratégia “armazenar e encaminhar” (store-and-forward), onde os dados são movidos incrementalmente e armazenados por toda a rede, esperando-se que eles irão eventualmente atingir o seu destino. Uma técnica comum usada para maximizar a probabilidade de uma mensagem ser transmitida com sucesso é replicar várias cópias da mensagem na esperança de que uma delas terá sucesso atingindo o seu destino. Isso é factível apenas em redes com grandes quantidades de armazenamento local e largura de banda entre os nós proporcional ao tráfego esperado. Em vários cenários, essa ineficiência é superada pela eficiência crescente e pelos tempos de entrega reduzidos possibilitados tomando-se a maior vantagem possível de oportunidades de encaminhamentos não-agendadas disponíveis. Em outros (cenários), onde o armazenamento disponível e as oportunidades entre os nós são mais restritos, um algoritmo menos imparcial é necessário.

### Classificação dos protocolos de roteamento

Embora existam diversas características nos protocolos de roteamento, uma maneira direta de criar uma taxonomia é baseando-se no fato do protocolo criar ou não réplicas das mensagens. Protocolos que nunca replicam uma mensagem são chamados de baseados no encaminhamento (forwarding-based) enquanto que protocolos que criam réplicas são chamados de baseados na replicação (replication-based).

## Bundle Protocol

Visando prover um framework compartilhado para o desenvolvimento de algoritmos e aplicações para DTNs, as RFC 4838 e RFC 5050 foram publicadas em 2007, definindo uma abstração comum para o software rodando em redes “rompidas”. Comumente conhecido como o Bundle Protocol, esse protocolo define uma série de blocos de dados contíguos como um “maço” ou feixe (bundle) - onde cada bundle contém informação semântica suficiente para permitir que a aplicação faça progresso onde um bloco individual não faria. Bundles são roteados de forma store and forward entre os nós participantes em cima de várias tecnologias de transporte de redes (incluindo transportes baseados em IP e não baseados). As camadas de transporte carregando os bundles através de suas redes locais são chamadas de bundle convergence layers (camadas de convergência de feixes). A arquitetura dos bundles opera como uma rede sobreposta (overlay network), provendo uma nova arquitetura de nomes baseada em Endpoint Identifiers (EIDs) e ofertas de classes de serviço grosseiras.
Protocolos utilizando bundling devem influenciar as preferências em nível de aplicação para enviar bundles através de uma rede. Devido à natureza store and forward dos protocolos tolerantes a atraso, soluções de roteamento para redes tolerantes a atraso podem se beneficiar da exposição da informação da camada de aplicação. Por exemplo, o agendamento/escalonamento de redes pode ser influenciado se os dados da aplicação devem ser recebidos inteiramente, rapidamente, ou sem variação de atraso dos pacotes. Protocolos de bundle coletam dados da aplicação em bundles, que podem ser enviados através de configurações de redes heterogêneas com garantias de serviço de alto nível. As garantias de serviço geralmente são definidas pelo nível de aplicação, e a especificação da RFC 5050 de Bundle Protocol inclui as marcações “bulk”, “normal” e “expedited”.

## Segurança

Tratar os problemas de segurança tem sido um dos maiores focos do bundle protocol.
As preocupações de segurança para redes tolerantes a atraso variam dependendo do ambiente e da aplicação, apesar de que os problemas de autenticação e privacidade tendem a ser críticos. Essas garantias de segurança são difíceis de se estabelecer numa rede sem conectividade persistente, porque a rede coloca entraves em protocolos criptográficos complicados, na troca de chaves, e cada dispositivo deve identificar outros dispositivos intermitentemente visíveis. Soluções foram modificadas a partir de outras preexistentes em MANETs e pesquisas de segurança distribuída, tais como o uso de autoridades certificadores distribuídas, e esquemas de PKI. Soluções originais da comunidade de pesquisa de tolerância a atraso incluem: 1) o uso de encriptação baseada em identidade, que permite que nós recebam informação encriptada com seu identificador público; e 2) o uso de tabelas de falsificações evidentes, com um protocolo “fofoqueiro”.