Encaminhamento de datagramas em roteadores IP Objetivo
Transcrição
Encaminhamento de datagramas em roteadores IP Objetivo
Encaminhamento de datagramas em roteadores IP Objetivo Modelar e implementar um algoritmo para encaminhamento de datagramas1 IP2 em um roteador. Introdução Um roteador IP encaminha datagramas recebidos para as interfaces correspondentes às rotas apropriadas. Uma rota apropriada é aquela que aponta um caminho para chegar ao endereço de destino do datagrama, e contém as seguintes informações: Prefixo de rede, Máscara de rede, Endereço do próximo roteador Ex: 192.168.1.0, 255.255.255.0, 200.135.37.62 As rotas conhecidas ficam guardadas em uma tabela de rotas. Assim, ao receber um datagrama o roteador busca nessa tabela a rota mais adequada para chegar a seu endereço destino. Por exemplo, se o datagrama recebido tiver como endereço destino o IP 192.168.1.10, e a tabela do roteador contiver as seguintes rotas: 192.168.0.0, 255.255.0.0, 10.0.0.2 192.168.1.0,255.255.255.0, 10.0.0.6 0.0.0.0, 0.0.0.0, 200.135.37.254 ... a rota escolhida será a segunda (192.168.1.0,255.255.255.0, 10.0.0.6). Se chegar outro datagrama endereçado a 192.168.10.18, a rota escolhida será a primeira. Por fim, se um terceiro datagrama chegar, desta vezes endereçado a 150.162.14.10, a rota escolhida será a terceira (também conhecida como rota default). O roteador sempre escolhe a rota mais específica para um determinado endereço de destino. A rota mais específica é aquela que possui a maior máscara de rede. Uma máscara de rede tem 32 bits (o mesmo que um endereço IP), e seu tamanho é dado pelo número de bits em 1 que possui. Assim, no exemplo anterior a maior máscara de rede é 255.255.255.0 (possui 24 bits em 1), seguida por 255.255.0.0 (16 bits em 1) e finalmente 0.0.0.0 (nenhum bit em 1). Isto fica mais claro ao se observarem essas máscaras em binário: 11111111 11111111 11111111 00000000 255 255 255 0 11111111 11111111 00000000 00000000 255 255 0 0 00000000 00000000 00000000 00000000 0 0 0 0 1 Datagrama é nome dado a uma mensagem do protocolo IP 2 Internet Protocol O teste de uma rota, para verificar se é adequada para determinado endereço IP de destino, se faz com o seguinte procedimento: 1. Faz uma operação AND bit-a-bit entre o IP de destino e a máscara de rede 2. Compara-se o resultado dessa operação com o prefixo de rede da rota testada: se for igual, então a rota é adequada ao IP de destino Voltando-se ao exemplo do roteador com a tabela de rotas: 192.168.0.0, 255.255.0.0, 10.0.0.2 192.168.1.0,255.255.255.0, 10.0.0.6 0.0.0.0, 0.0.0.0, 200.135.37.254 Para identificar a rota para o IP de destino 192.168.18.10, o roteador começa pela rota mais específica (no caso, 192.168.1.0,255.255.255.0, 10.0.0.6): 192.168.18.10 AND 255.255.255.0 = 192.168.18.0 Em binário: 11000000 10101000 00010010 00001010 192.168.18.10 AND 11111111 11111111 11111111 00000000 255.255.255.0 ----------------------------------------------------------11000000 10101000 00010010 00000000 192.168.18.0 ... que é diferente do prefixo de rede dessa rota (192.168.1.0). O roteador então testa a próxima rota mais específica (192.168.0.0, 255.255.0.0, 10.0.0.2): 192.168.18.10 AND 255.255.0.0 = 192.168.0.0 Em binário: 11000000 10101000 00010010 00001010 192.168.18.10 AND 11111111 11111111 00000000 00000000 255.255.0.0 ----------------------------------------------------------11000000 10101000 00000000 00000000 192.168.0.0 ... que desta vez é igual ao prefixo de rede da rota (192.168.0.0). Portanto, o roteador escolhe essa rota para encaminhar o datagrama. Exercício Modele um algoritmo para escolher a rota mais adequada para o encaminhamento de um datagrama IP. Assuma que a tabela de rotas reside em memória – na verdade, você deve inclui-la em seu algoritmo como se fosse uma constante. Identifique os dados de entrada e de saída, e informe como devem ser modelados (que variáveis e de que tipos). O algoritmo deve ser inicialmente modelado em fluxograma e pseudo-linguagem, para então ser traduzido para linguagem C.