Algoritmos Distribuídos para Roteamento em Redes Ad Hoc Tiago Rodrigues Chaves, Ricardo Augusto Rabelo Oliveira PPGCC - Programa de Pós-Graduação em Ciência da Computação UFOP - Universidade Federal de Ouro Preto Ouro Preto, Minas Gerais, Brasil email: tiagochaves@gmail.com, rrabelo@gmail.com Resumo—Este trabalho introduz a aplicação de algoritmos distribuídos de roteamento em redes ad hoc. Os algoritmos Flooding e Ad hoc On-demand Distance Vector (AODV) serão apresentados em maiores detalhes introduzindo o seu funci- onamento. As ações básicas relacionadas com o processo de roteamento serão estudadas e aplicadas em diferentes topolo- gias de rede. Análise quantitativa será realizada em relação aos diferentes tipos de mensagens enviadas pelo algoritmo Flooding. Este trabalho tratará de algoritmos distribuídos de roteamento com atenção ao envio de mensagens entre os canais de comunicação. Os algoritmos Flooding e AODV serão implementados em linguagem Java e testados no Distributed Algorithms in Java (DAJ), simulador de algoritmos distribuídos. Também apresentaremos a análise de complexidade destes algoritmos. Keywords-Algoritmos Distribuídos, Roteamento, Redes Ad Hoc, Auto-Estabilização, Análise de Complexidade. I. I NTRODUÇÃO A demanda de tecnologia para comunicação sem fio está aumentando diariamente, dado a redução do custo dos equipamentos digitais aliado ao avanço da tecnologia, percebemos a popularização dos computadores portáteis e dos dispositivos móveis como smartphones e tablets. Com esse crescimento, não torna-se prático ter uma arquitetura fixa para comunicação entre os dispositivos, uma vez que estes estão em todos os lugares. Uma rede ad hoc, também conhecida como MANET (Mo- bile Ad hoc NETwork), é formada por nós móveis de alcance limitado, capazes de trocar informações diretamente entre si. Ao contrário do que ocorre em redes convencionais, não existem pontos de acesso, ou seja, não há infraestrutura de conexão, os nós dependem uns dos outros para manter a rede conectada [1]. Por esse motivo, redes ad hoc são indicadas principalmente em situações onde não se pode, ou não faz sentido, instalar uma rede fixa. Os nós de uma rede ad hoc podem se mover arbitrariamente, tornando a topologia altamente mutável [2]. Assim, a conectividade entre os nós mudam constantemente, demandando permanente adaptação e reconfiguração de rotas, o que torna o roteamento em rede ad hoc um grande desafio. A função de um algoritmo de roteamento é encontrar, estabelecer e manter rotas entre dois nós que desejam se comunicar. Os algoritmos de roteamento para rede sem fio ad hoc devem ser capaz de lidar com um número muito grande de nós com recursos limitados, tais como largura de banda e de energia. Outro desafio para os algoritmos de roteamento é que eles também precisam lidar com mobilidade dos nós, o que significa que nós podem aparecer e desaparecer em vários locais. Assim, todos os nós da rede ad hoc desempenham o papel de roteadores e devem participar na descoberta e manutenção das rotas para os outros nós. Mas o principal desafio para os algoritmos de roteamento em redes ad hoc consiste em reduzir a sobrecarga de mensagens enviadas para o roteamento, possibilitando o bom funcionamento da rede sem congestionamento dos canais de comunicação. Existem vários algoritmos de roteamento ad hoc, com vantagens e desvantagens de acordo com situações especí- ficas. A principal divisão dos algoritmos de roteamento é baseado sobre como e quando as rotas para o destino são descobertas. No contexto de redes ad hoc, os algoritmos de roteamento podem ser classificados como pró-ativos ou reativos. Nos algoritmos pró-ativos, todo nó da rede possui na sua tabela de roteamento as informações para todos os possíveis destinos. A grande vantagem desses algoritmos é o fato dos pacotes serem enviados com um atraso mínimo já que os nós conhecem previamente as rotas. Porém, é preciso que as redes possuam banda suficiente para evitar congestionamento e seus recursos de energia não sejam escassos, já que a troca de mensagens de roteamento é elevada para garantir o conhecimento de rotas válidas. Nos algoritmos reativos, uma rota é determinada quando um nó deseja enviar um pacote para outro nó, ou seja, o algoritmo atua sob demanda. Desta forma, os recursos como banda e energia podem ser utilizados de uma forma mais eficiente, pois só são gastos quando há a necessidade de descoberta de rotas. A desvantagem desses algoritmos é o maior atraso no envio dos pacotes, pois se a rota do destino do pacote não for conhecida, o procedimento de descoberta de rota deve ser realizado. As abordagens mais clássicas ao problema de roteamento são inundamento (flooding) e vetor distancia (distance vec-