• Nenhum resultado encontrado

Mecanismos de Descoberta e Manuten¸c˜ao de Rotas

2.4 PROTOCOLO DYNAMIC SOURCE ROUTING

2.4.2 Mecanismos de Descoberta e Manuten¸c˜ao de Rotas

O protocolo DSR ´e formado por dois mecanismos que trabalham em conjunto para permitir a conectividade em uma rede ad hoc (JOHNSON et al., 2001a):

• Descoberta de Rotas: ocorre quando um n´o A deseja enviar pacotes para um n´o E, por´em A desconhece uma rota para chegar em E. Para isso ´e iniciado o processo de descoberta a fim de obter uma rota para o n´o E.

• Manuten¸c˜ao de Rotas: possibilita que o n´o A seja avisado sobre a ocorrˆencia de quebra de enlaces usando determinado rota com o destino E. Nesse caso, o n´o A poder´a usar outra rota que conhe¸ca ou poder´a disparar novamente o mecanismo de Descoberta de Rotas.

11

MACA (Multiple Access with Collision Detection) ´e um protocolo de acesso ao meio usado em redes sem fio que evita colis˜oes causadas pelos problemas de terminal exposto e terminal escon- dido (KARN, 1990). Simplificando, o n´o emite um aviso antes de enviar os quadros fazendo com que os demais tenham que aguardar.

12

MACAW (Multiple Access with Collision Avoidance for Wireless) ´e um protocolo de acesso ao meio concebido para as redes ad hoc (BHARGHAVAN; DEMERS, 1994). Seu mecanismo resolve o problema de terminal escondido, sendo incorporado em outros protocolos, como o IEEE 802.11.

Tanto o mecanismo de descoberta de rotas quanto o de manuten¸c˜ao de rotas somente s˜ao invocados quando existe a comunica¸c˜ao entre A e E, refor¸cando a abordagem reativa do protocolo. Logo o DSR n˜ao requer qualquer tipo de pacote de controle peri´odico, tais como para avisos de rotas, estado de enlaces, detec¸c˜ao de n´os vizinhos, controle de topologia, etc.

Quando a rede ad hoc ´e relativamente est´atica - a mobilidade existe, mas mant´em um padr˜ao que preserve a topologia -, o n´umero de pacotes de controle tende a zerar. Em ambientes mais dinˆamicos, por sua vez, o protocolo escalar´a em rela¸c˜ao a sobrecarga de mensagens de controle, visto que estas ser˜ao geradas exclusivamente para resolver as rotas em uso.

Um efeito importante do mecanismo de descoberta de rotas, devido ao uso de men- sagens em broadcast, ´e que permite que os n´os vizinhos aprendam novas rotas para os destinos, poupando mensagens futuras de descoberta de rotas. Essa capacidade de armazenar novas rotas no cache de rotas para um mesmo destino foi um aspecto im- portante desta pesquisa, pois possibilitou a investiga¸c˜ao de novas m´etricas para escolha de rotas, visto que a implementa¸c˜ao padr˜ao do protocolo DSR prioriza o uso de rotas com menor n´umero de saltos.

Os algoritmos de descoberta e manuten¸c˜ao de rotas foram desenhados para suportar tanto enlaces unidirecionais, quanto bidirecionais, permitindo a presen¸ca de rotas as- sim´etricas entre um par de n´os. Isso ´e poss´ıvel gra¸cas a possibilidade de um n´o detectar que um caminho reverso foi interrompido e iniciar um novo processo de descoberta de rotas ou, ainda, usar um rota alternativa presente em seu cache de rotas.

2.4.2.1 Funcionamento do Mecanismo de Descoberta de Rotas

Quando um n´o A envia um novo pacote ao n´o de destino E, ele adiciona no cabe¸calho do pacote uma Source Route que carrega a sequˆencia de saltos que o pacote deve seguir para alcan¸car E. Geralmente um Source Route ´e obtido a partir de uma consulta no cache de rotas, que ´e uma estrutura de dados especial de armazenamento das rotas aprendidas, mas, caso n˜ao encontre uma rota para o destino, ele inicia o processo de descoberta de rotas para encontrar uma nova rota para E.

A Figura 2.7 ilustra o processo de descoberta de rotas, no qual o n´o A tenta se comunicar com o n´o E. Inicialmente, o n´o A envia uma mensagem Route Request (RREQ) em broadcast. Todos os n´os que est˜ao ao alcance de A receber˜ao a mensagem. As

mensagens RREQ carregam o endere¸co da origem e do destino, um identificador ´unico (ID), que foi determinado pelo n´o A, e um registro que armazenar´a a lista de endere¸cos dos n´os intermedi´arios que repassar˜ao a mensagem RREQ.

Figura 2.7: Exemplo de descoberta de rotas

(JOHNSON et al., 2001b)

Quando um n´o qualquer recebe a mensagem RREQ, ele primeiramente verifica se ´e o destino E da descoberta de rotas. Em caso positivo, ele envia uma mensagem Route Reply (RREP) contendo uma c´opia do registro que armazena os endere¸cos por onde a mensagem passou. Quando o n´o A recebe o RREP, ele armazena o registro como uma Source Route no seu cache de rotas para ser usado na transmiss˜ao de pacotes de dados ao destino E. Caso o n´o intermedi´ario constate que j´a recebeu a RREQ, comparando o ID, ou que foi inserido no registro de endere¸cos, ele descartar´a o pacote. Caso contr´ario, o n´o intermedi´ario adiciona seu endere¸co no registro e repassa a RREQ, preservando o ID, por meio de broadcast local.

Para enviar a RREP, o n´o E, mostrado na Figura 2.7, consulta primeiramente o seu cache de Rotas em busca de uma rota para o A e, se encontrar, a utiliza no envio do pacote. Se n˜ao possuir uma rota, ele pode disparar o processo de descoberta de rotas, mas a fim de evitar recursividade infinita, deve transportar a mensagem RREP anexada ao pacote de RREQ para A. Por fim, se forem usados enlaces bidirecionais e protocolos MAC com esse suporte, como no caso do IEEE 802.11, o n´o E poderia simplesmente inverter a rota recebida no RREQ.

O n´o de origem pode receber v´arios pacotes de RREP para um mesmo destino, sendo necess´ario escolher uma das rotas a partir de algum crit´erio como o n´umero de saltos, atraso, etc. Tipicamente ´e escolhida a rota com menor n´umero de saltos para deter- minado destino. Todos os n´os que participam no encaminhamento dos pacotes ou que apenas escutam os demais n´os tamb´em podem armazenar as informa¸c˜oes de rotas em seu cache de rotas, visando um uso futuro.

Para a manuten¸c˜ao da rota, caso os n´os intermedi´arios descubram que uma rota foi quebrada, enviam uma mensagem Route Error (RERR) usando o caminho inverso at´e

aquele ponto. Os n´os que recebem a RERR retiram aquele caminho do cache de rotas e o n´o de origem dever´a enviar uma nova RREQ para descobrir uma rota alternativa.

Antes de iniciar a descoberta de rotas, o n´o de origem armazena os pacotes de dados, que est˜ao aguardando por uma Source Route, em um buffer interno chamado de Send Buffer. No Send Buffer os pacotes de dados recebem uma marca¸c˜ao de tempo para possibilitar o descarte ap´os certo per´ıodo, evitando estouro da ´area. ´E poss´ıvel ocorrer novos processos de descoberta de rotas para o mesmo destino enquanto os pacotes aguardam no Send Buffer, mas o n´umero ´e limitado, pois o n´o de destino pode estar em uma regi˜ao particionada da rede e n˜ao existir uma sequˆencia de saltos que o alcance. A ocorrˆencia de parti¸c˜oes na rede depender´a da densidade da rede e dos padr˜oes de movimenta¸c˜ao dos n´os.

2.4.2.2 Funcionamento da Manuten¸c˜ao de Rotas

Quando um n´o envia algum pacote usando determinado Source Route, ele tem a res- ponsabilidade de verificar se foi recebido pelo pr´oximo salto. Caso n˜ao possa confirmar a recep¸c˜ao, poder´a fazer retransmiss˜oes (em um n´umero limitado) at´e que seja rece- bido. Na Figura 2.8, por exemplo, o n´o A deve verificar se o pacote foi recebido por B, j´a o n´o B deve verificar a recep¸c˜ao do n´o C e assim por diante.

Essa verifica¸c˜ao n˜ao exige mensagens de controle adicionais por parte do DSR, pois pode ser utilizado, por exemplo, as mensagens de acknowledgement em n´ıvel MAC existentes no IEEE 802.11 (MAN; SOCIETY, 2007). Outra alternativa ´e usar a t´ecnica de acknowledgement passivo, proposta em (JUBIN; TORNOW, 1987), por meio do qual o n´o B poderia confirmar a recep¸c˜ao do pacote em C averiguando que o pacote foi retransmitido para D. Caso nenhuma confirma¸c˜ao seja poss´ıvel, o DSR ainda prevˆe uma mensagem de verifica¸c˜ao (Acknowledgement Request) que pode ser solicitada pelo n´o transmissor.

Caso o n´umero m´aximo de retransmiss˜oes de pacotes de dados seja atingido sem que seja recebida qualquer confirma¸c˜ao, o n´o dever´a retornar uma mensagem RERR ao n´o de origem com a identifica¸c˜ao do enlace que foi rompido. Por exemplo, na Figura 2.8, se C n˜ao conseguir transmitir o pacote para D, ent˜ao C deve retornar uma mensagem RREP para o n´o de origem A, informando que o enlace entre C e D foi rompido.

Em seguida, o n´o A remove a rota quebrada do seu cache de rotas e poder´a escolher outra rota proveniente de descobertas de rota anteriores ou da observa¸c˜ao das men-

sagens de roteamento em broadcast. Se n˜ao possuir uma rota, deve iniciar um novo processo de descoberta de rotas em busca de nova rota.

Figura 2.8: Exemplo de manuten¸c˜ao de rotas

(JOHNSON et al., 2001b)