O Linux fornece várias ferramentas para seleção de roteamento flexível.
Tabela de roteamento único
No caso mais simples, existe apenas uma tabela de roteamento do kernel e nenhuma rota com o atributo SRC. Esta tabela contém várias rotas, que foram colocadas lá manualmente ( ip route add
), pelo daemon DHCP ou pelos daemons de roteamento. Nesse caso, o kernel escolhe:
- a rota mais específica;
- se houver várias rotas igualmente específicas, aquela com a menor métrica do kernel.
Observe que a métrica do kernel (exibida por ip route show
) é escolhida pelo daemon de roteamento e não está necessariamente relacionada à métrica de nenhum protocolo de roteamento específico. Por exemplo, o Quagga usa a mesma métrica para todas as rotas instaladas no kernel, independentemente da métrica do protocolo.
Rotas específicas da fonte
O Linux também suporta rotas com um atributo SRC, que apenas correspondem aos pacotes com um determinado endereço de origem. O SRC funciona apenas para IPv6 e estava com bugs até muito recentemente (3.11, se a memória servir); Eu não recomendo usá-lo, a menos que você saiba o que está fazendo.
Várias tabelas de roteamento
Se você precisar de mais flexibilidade do que o descrito acima, precisará jogar com várias tabelas de roteamento e escrever regras para escolher uma tabela de roteamento específica para cada pacote. Uma técnica comum é despachar no endereço de origem para simular rotas específicas da fonte. Outra técnica é executar cada daemon de roteamento em sua própria tabela de roteamento e simular a "distância administrativa" da Cisco. Tudo isso é descrito em detalhes no capítulo 4 do LARTC .