O protocolo DSR utiliza duas técnicas para a transmissão de dados dentro de uma rede
wireless Ad hoc:
• descoberta de rota, que é quando um nodo fonte deseja enviar um pacote para um nodo destino, este nodo fonte obtém uma rota para o nodo destino, porém, quando este nodo fonte não possui uma rota armazenada no seu cache, este inicia o mecanismo de descoberta de rotas para que
através da passagem da informação de rota entre os nodos intermediários seja possível chegar ao nodo destino; e
• manutenção de rota, que é um mecanismo onde o nodo fonte, está apto a detectar, enquanto usa uma determinada rota para o nodo destino, se a topologia de rede mudou tal que não possa mais usar a rota corrente para a transmissão até o nodo destino. Quando a manutenção de rota detecta que a rota possui uma quebra ou um erro de transmissão, esta automaticamente inicia um novo processo de descoberta de rota entre o nodo fonte e o nodo destino [Joh96b]. Estes mecanismos serão melhor exemplificados nos próximos tópicos deste capítulo.
O protocolo DSR permite que nodos possam acessar ou deixar a rede de forma muito dinâmica, ou então que características de transmissão das redes wireless - como, por exemplo, o alcance - venham a mudar, e diante disso, todo o roteamento é automaticamente determinado e mantido, sem que haja perdas ou problemas de conexão entre os nodos [Joh96a]. Uma vez que o número ou a sequência de nodos intermediários necessários para atingir qualquer nodo destino pode mudar a qualquer momento, a topologia de rede pode mudar rapidamente para adequar a transmissão dos dados.
O protocolo também permite que os nodos presentes na rede descubram rotas de fonte (source route) [Joh96a] através de múltiplos saltos na rede para qualquer destino na rede Ad hoc.
Cada pacote de dados carrega em seu cabeçalho uma completa e ordenada lista dos nodos através do qual os pacotes devem passar, permitindo que o roteamento dos pacotes seja livre de loops e evitando a necessidade de atualizações de informações de roteamento nos nodos intermediários pelo qual o pacote está sendo repassado.
4.2.1 Descoberta de Rotas – Route Discovery
O protocolo DSR utiliza o mecanismo de descoberta de rotas sempre que um nodo fonte deseja enviar um pacote para um nodo destino e este nodo fonte não tem possui nenhuma rota armazenada em seu cache para o nodo destino. Este armazenamento dá-se na memória de rotas (Route Cache) de cada nodo, que é previamente gravado sempre que um nodo fonte deseja enviar um pacote de dados para algum nodo destino.
Na Figura 4.5, o nodo fonte (Source) deseja trocar informações com o nodo destino (Destination), porém, como não possui uma rota armazenada em seu Route Cache, este inunda a
rede com uma mensagem chamada RREQ (Route Request) contida em um único pacote de transmissão, que será possivelmente recebido por todos os nodos ativos presentes dentro da rede no alcance do nodo destino (Source).
Figura 4.5: Processo de descoberta de rotas do protocolo DSR dentro de uma rede wireless Ad hoc Fonte: O autor
Cada mensagem de requisição de rota identifica o nodo fonte e o nodo destino da descoberta de rota, e grava ao longo do processo de descoberta de rota, juntamente com o fonte e o destino o endereço de cada nodo intermediário através do qual essa requisição foi repassada. Esse processo de gravação de endereços é inicializado em uma lista vazia no nodo fonte que solicitou o processo de descoberta de rota [Joh96a].
Quando um nodo recebe a requisição de rota e este é o nodo destino da descoberta de rota, o mesmo retorna uma mensagem de RREP (Route Reply) para o nodo fonte, onde está contida a rota acumulada percorrida gravada da requisição de rota. Assim que o nodo fonte recebe a resposta de rota, este grava em seu cache esta rota, para ser utilizada em futuros envios para aquele determinado destino.
É possível que um nodo receba mais de uma requisição de rota partindo do mesmo nodo fonte, logo, este descarta a requisição, uma vez que esta já foi feita. Por outro lado, este nodo acrescenta seu próprio endereço à lista de endereços da rota da mensagem de requisição de rota e o propaga para que a transmissão continue até o destino [Joh96a].
Quando a mensagem de resposta de rota retorna para o nodo que gerou a descoberta de rota, tal como apresentado na Figura 4.6 onde o nodo destino (Destination) retorna a rota para o nodo fonte (Source), o nodo destino examina seu próprio cache de rotas para localizar uma rota de volta para o nodo fonte, e se encontra, irá utilizá-lo na rota para o fonte para entregar o pacote de resposta de rota. ) * ) * ) * ) *# ) *+ ) *, ) *- . ) * . ) * . ) *- / . ) * . ) * . ) *- / . ) * . ) * . ) *- / . ) * . ) * . ) *- /
Figura 4.6: Processo de resposta de rota dentro de uma rede wireless Ad hoc Fonte: O autor
É possível que o nodo destino gere seu próprio processo de descoberta de rota para o nodo fonte, o que poderia gerar loops infinitos de resposta de rota. Esse problema é prevenido utilizando- se de processos de piggybacking da mensagem de resposta de rota a partir da mensagem de requisição de rota.
Em especial para redes wireless, que utilizam o protocolo MAC nos padrões 802.11 [Iee07], é utilizado o processo de rota reversa (ou seja, a rota que foi utilizada para a requisição de rota é a mesma para a resposta de rota) para prevenir um segundo processo de descoberta de rota e com isso gastos desnecessários de recursos da rede [Joh96a].
Quando um processo de descoberta de rota é iniciado, o nodo fonte inicia um processo de
buffer para a lista de endereços de nodos intermediários até chegar ao nodo destino. Este processo é
chamado de Send Buffer [Joh96a, Joh96b], e contém uma cópia de cada pacote que não pode ser transmitido por este nodo por não ter uma rota para o destino. Técnicas de FIFO ou outra técnica de
substituição pode ser utilizada para prevenir a sobrecarga desse buffer ou então para desalocar pacotes antes destes expirarem e não serem transmitidos.
4.2.2 Manutenção de rotas – Route Maintenance
Comumente, os protocolos de roteamento utilizam de algum mecanismo de monitoramento de rotas, como o envio de pacotes de atualização a fim de manter as rotas sempre conhecidas. No protocolo DSR, porém, outro método é utilizado para manter suas rotas ativas sem despender recursos computacionais, que é o mecanismo de manutenção de rotas.
Tal mecanismo funciona da seguinte forma: quando um pacote é gerado ou repassado usando uma rota a partir do nodo fonte, cada nodo que transmite tal pacote é responsável pela confirmação que o pacote foi recebido pelo próximo nodo ao longo da rota, utilizando um determinado número de tentativas de entrega, até que o pacote seja entregue ao nodo destino [Joh96a, Joh96b].
Quando um nodo esgota o número de tentativas de entrega do pacote para o nodo seguinte na rota, este gera uma mensagem de Erro de rotas (Route Error) para o nodo que gerou o pacote, para identificar em que ponto da rota a conexão foi quebrada ou interrompida, e com isso, o nodo fonte retira esta rota do seu cache de rotas, gerando um novo processo de descoberta de rotas, para que o pacote seja entregue para o nodo destino de forma correta [Joh96a, Joh96b].