Algoritimo de Roteamento
A principal função da camada de rede é rotear pacotes da máquina de origem até a máquina de destino. Nas subredes, em grande maioria, os pacotes necessitam de vários hops para completar o trajeto. Os algoritmos responsáveis por determinar as rotas e as estruturas de dados que eles utilizam constituem um dos elementos mais importantes do projeto da camada de red. Um algoritmo de roteamento é a parte do software da camada de rede responsável pela decisão sobre a linha de saída a ser utilizada na transmissão do pacote de entrada. Se a subrede fizer uso de datagramas, a decisão deverá ser tomada mais uma vez para cada pacote de dados que é recebido, pois a rota mais indicada pode ter sido alterada desde o último pacote. Portanto a finalidade de um algoritmo de roteamento é simples: dado um conjunto de roteadores conectados por enlaces, um algoritmo descore um ‘bom’ caminho entre o roteador de fonte e o roteador de destino. Normalmente um ‘bom’ caminho é aquele que tem o ‘menor custo’. Entretanto será observado que, em algumas situações práticas, questões políticas podem influenciar no roteamento, como por exemplo, o roteador x, de propriedade da organização y, não deverá repassar nenhum pacote originário da rede de propriedade da organização z. Em um algoritmo de roteamento, certas propriedades são desejáveis como correção, simplicidade, robustez, estabilidade, equidade e otimização. Desses termos, talvez o que merece uma explicação mais detalhada é robustez. Uma vez que uma rede de porte considerável utiliza algoritmos de roteamento, espera-se que ela funcione continuamente durante anos sem apresentar problemas. Entretanto, durante esse período, haverá falhas de hardware e software de diversos tipos. Os dispositivos finais, os intermediários e os links iram apresentar falhas e, assim, a topologia terá inúmeras mudanças. O algoritmo de roteamento deve ser capaz de aceitar as alterações na topologia e no tráfego sem exigir