O algoritmo de roteamento é a parte do software da camada de rede responsável por decidir sobre qual linha de saída (enlace) um pacote, que chega a determinado nó, deve ser transmitido. Contudo, independente de um algoritmo específico há algumas propriedades desejáveis para assegurar a eficácia dos mesmos [Tanembaun, 97]:
!
Correção: calcular corretamente as melhores rotas, tendo o cuidado para nãoinformar, erroneamente, rotas inexistentes;
!
Simplicidade: deve agir com eficiência sem sobrecarregar a máquina com cálculoscomplexos. O administrador da rede deve entender o funcionamento do algoritmo;
!
Resistência: o algoritmo deve estar apto a funcionar continuamente, suportando eagindo corretamente sob várias falhas de hardware e software que os nós venham a sofrer. Falhas estas, causam mudanças na topologia e no tráfego;
!
Estabilidade: os nós da rede devem convergir rapidamente. Convergir diz-sequando todos os nós ficam com suas tabelas de roteamento completas e atualizadas com as rotas ótimas;
!
Consideração com o usuário e eficiência global: estas duas propriedades muitasvezes são contraditórias, pois, muitas vezes, para melhorar a eficiência global deve- se sacrificar a comunicação entre alguns usuários. Contudo, esses usuários podem não estar de acordo com esta decisão. Deve-se decidir o que se busca otimizar para tomar decisões ponderadas.
!
Estáticos (não adaptativos): as rotas são computadas com antecedência e alocadas na tabela de roteamento de cada nó que, uma vez criada, não é mais alterada. Os nós recebem suas tabelas no momento da inicialização da rede. Se o tráfego da rede não for regular e bem conhecido, haverá uma má utilização dos meios de comunicação;!
Dinâmicos (adaptativos): alteram dinamicamente suas tabelas de roteamento,baseando-se nas mudanças na topologia e no tráfego corrente. Este tipo de encaminhamento pode ser subdividido de acordo com a forma de atualização das tabelas, tais como, centralizados, isolados ou distribuídos.
A seguir, são descritos dois dos algoritmos de roteamento mais conhecidos: Vetor Distância e Estado de Enlace. Mais detalhes sobre algoritmos de roteamento encontram-se em [Tanembaun, 97]).
C.1. Algoritmo Vetor de Distância (Distance Vector Algorithm)
A primeira descrição, conhecida, desta classe de algoritmo é [Ford, 62] e por este motivo este algoritmo também é conhecido como Ford-Fulkerson, contudo o termo Bellman-Ford também é usado devido ao fato de que sua formulação foi baseada na equação de Bellman, a base da programação dinâmica [Hendrick, 88]. Segue um resumo de seu funcionamento descrito em [Schimitt, 96]:
!
Em intervalos de tempo regulares cada nó da rede envia toda a sua tabela deroteamento para, e somente para, os seus vizinhos;
!
Após algum tempo os diversos nós da rede convergem, ou seja ficam com as suastabelas de roteamento completas (uma entrada para cada destino) e atualizadas;
!
As tabelas de roteamento contém, pelo menos, o endereço destino, a métrica, e opróximo nó para onde a mensagem deve ser enviada;
!
Exige poucos recursos de memória e de processamento dos nós da rede;Contudo, apesar da convergência mais lenta, existem alguns problemas relacionados com o algoritmo Vetor de Distância [Soares, 97b]:
!
Bouncing Effect: este problema corresponde à formação de laços durante a fasede convergência do algoritmo. As mensagens enviadas ficam rebatendo de um roteador para outro e nunca chegam ao seu destino, sendo eliminadas por causa do TTL (Time To Live);
!
Count to infinity: corresponde à impossibilidade do algoritmo convergir emalgumas situações de queda de enlaces. A rota nunca é marcada como inatingível e os pacotes ficam novamente rebatendo de um nó para outro.
A seguir apresentam-se várias soluções encontradas para resolução total ou parcial dos problemas citados acima:
!
Hop-count Limit: o infinito é representado por um número. Este número deve serescolhido de maneira tal que o algoritmo não demore muito para convergir, mas também que a distância máxima entre dois nós da rede não fique muito limitada;
!
Split Horizon: as informações de roteamento não devem ser enviadas de voltapara a máquina que as originou. Este mecanismo soluciona o problema de laço entre 2 nós, mas não soluciona o problema de laços entre mais de 2 nós;
!
Hold-down: determina que quando uma rota torna-se inatingível ela só possa serrestabelecida após algum tempo. Isto impede que uma rota que caia volte precipitadamente. Este período deve ser maior do que o tempo necessário para que uma mensagem se propague por toda a rede;
!
Triggered Updates (atualizações disparadas): na ocorrência de uma modificaçãona tabela de roteamento, imediatamente mensagens de atualização são disparadas. Não sendo aguardado o intervalo normal de transmissão das mensagens de atualização.
C.2. Algoritmo Estado do Enlace (Link State Algorithm).
Esta classe de algoritmo utiliza mais de um algoritmo de roteamento, tais como o algoritmo de roteamento pelo caminho mais curto desenvolvido por [Dijkstra, 59] e o algoritmo Dilúvio (Flood), entre outros. Segue seu funcionamento básico:
!
Descobre quem são os vizinhos e qual o estado dos enlaces deles;!
Mede os custos associados aos diversos enlaces que possui;!
Transmite as informações sobre os enlaces para todos os nó da rede;!
Recebe o estado de todos os enlaces da rede;!
Constrói um mapa completo da rede;!
Constrói o melhor caminhos para cada roteador da rede utilizando o algoritmo deDijkstra;
!
Cada roteador constrói uma árvore de melhor caminho, sendo ele próprio a raiz.As principais características deste algoritmo são [Shimitt, 96]:
!
As atualizações ocorrem somente quando há uma modificação da rede;!
As atualizações são enviadas para todos os roteadores da rede;!
Para realizar o envio da atualização para toda a rede, existe um protocolo que"inunda" a rede com a mensagem, chamado de flooding protocol;
!
Quando dois nós se "descobrem", durante a inicialização de um roteador, elestrocam mensagens entre si para sincronizarem os seus bancos de dados. Depois de os bancos de dados estarem iguais, a nova configuração é comunicada ao restante da rede;