Seleção de roteamento: especificidade vs métrica

12

Eu entendo que o Linux escolhe a rota mais específica para o destino quando ela faz o roteamento seleção . Mas e a métrica de uma rota? Tem uma prioridade mais alta que a especificidade da rota?

Uma referência aos detalhes do algoritmo de seleção de roteamento usado pelo Linux também seria apreciada.

    
por Eugene Yarmash 01.12.2014 / 17:31

2 respostas

20

A métrica de rotas é definir a preferência entre rotas com igual especificidade. Isso é verdade para o roteamento em geral (ou seja, Cisco, Windows, etc). Então o modelo funciona como:

  1. Encontre a rota mais específica (também conhecida como a correspondência de prefixo mais longa * )
  2. Se houver várias rotas com a mesma especificidade, escolha aquela com menor distância administrativa (distingue entre coisas como rotas diretamente conectadas, rotas estáticas e vários protocolos de roteamento).
  3. Dentro desse protocolo de roteamento e rota específica (se a especificidade de rota e a distância administrativa forem as mesmas), escolha a rota com a menor métrica

Observe que há outras coisas que podem estar ocorrendo em um roteamento baseado em política que permite fazer coisas como rota baseada no endereço IP de origem. Mas a especificidade de rota, a distância administrativa e, em seguida, a métrica são o que eu considero serem as três principais coisas.

* É chamada a correspondência de prefixo mais longa porque uma sub-rede em binário (/ 24 por exemplo) se parece com 11111111.11111111.11111111.00000000 . Assim, um roteador pode apenas varrer o prefixo binário 1s e parar assim que ele chegar a zero, e então corresponder ao prefixo.

    
por 01.12.2014 / 17:40
9

O Linux fornece várias ferramentas para seleção de roteamento flexível.

Tabela de roteamento única

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 manualmente ( ip route add ), pelo daemon do DHCP ou por daemons de roteamento. Neste caso, o kernel escolhe:

  • o caminho mais específico;
  • 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 qualquer 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 origem

O Linux também suporta rotas com um atributo SRC que correspondem apenas aos pacotes com um determinado endereço de origem. O SRC funciona apenas para o IPv6 e estava com problemas 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 as fornecidas acima, você 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 é distribuir no endereço de origem para simular rotas específicas da origem. 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 .

    
por 20.12.2014 / 23:59