Mostra as entradas de exceção de roteamento do kernel (FIB)

2

O Linux 3.6 removeu o cache de roteamento ipv4 ( commit ). Changelog diz:

Remove the ipv4 routing cache. Now lookups go directly into the FIB trie and use prebuilt routes cached there.

De acordo com essa pergunta , as entradas do cache de roteamento agora são armazenadas em uma estrutura "exceção de roteamento" que faz parte da entrada de roteamento.

No meu kernel de distribuição padrão 3.16 (Debian Jessie), não vejo exceções e ip route show cache não retorna nada. A tabela de roteamento tem apenas uma rota padrão:

~#ip route show
default via 10.11.2.30 dev eth0
10.11.0.0/16 dev eth0 proto kernel scope link src 10.11.1.76

Q1: Como posso listar todas essas exceções de roteamento conhecidas do kernel?
Q2: Como posso seletivamente remover essa exceção?
Q3: Por que o kernel não seleciona o gateway padrão correto ao tentar executar ping em um determinado host:

ping 10.30.104.23
PING 10.30.104.23 (10.30.104.23) 56(84) bytes of data.
From 10.11.1.11 icmp_seq=1 Destination Protocol Unreachable

Adição para Q3: Eu suspeito que esta rota (agora obsoleta) foi provavelmente armazenada (em algum lugar) por causa de um redirecionamento de ICMP. Mas se ip route show cache não listar as exceções de roteamento e a rota padrão indicar o contrário - onde está esse bit de informação armazenado?

    
por Jan 07.04.2016 / 16:24

1 resposta

1

OK, depois de muita escavação eu acho que tenho as respostas:

A1: Desde a 3.6, não é mais possível listar todo o cache de roteamento. Você pode ver o cache de roteamento para IPs específicos usando ip route get to A.B.C.D , mas não pode listar todos eles.

A2: ip route flush cache to A.B.C.D remove uma única entrada do cache de rota.

A3: Argh, poderia saber que: Porque primeiro consulta o cache de roteamento a.k.a. FIB (base de informações de encaminhamento) e depois que procura na tabela de roteamento.
Veja este PDF para um diagrama detalhado.

    
por 07.04.2016 / 19:02