Não consigo apontar para o código-fonte, mas a tabela de rotas é interpretada da seguinte forma:
Rotas mais específicas - ou seja, aquelas com uma máscara de rede mais específica (Genmask) - têm prioridade sobre aquelas com uma máscara de rede maior.
Se você tiver duas entradas para a mesma rota com a mesma máscara de rede, o número mais baixo será visto como uma distância menor e o tráfego será enviado.
Dentro da tabela de roteamento padrão, não há fórmulas dinâmicas para calcular a métrica com base na velocidade da interface, é apenas uma tabela, mas você pode modificar essa métrica. (No ubuntu, o / etc / interfaces permitirá que você especifique uma métrica de opção com uma dada métrica, da mesma forma que o OpenVPN permitirá que você especifique métricas de rota para determinadas rotas). Uma métrica de 100 parece ser o padrão.
Observe que você pode ter várias tabelas de roteamento configuradas de maneira diferente e roteamento de origem. Lógica semelhante se aplica, e eu não acredito que investigar isso está dentro do escopo da questão.