Quantas tabelas de rotas customizadas posso ter no Linux?

11

Eu tenho trabalhado com tabelas de rotas customizadas no Linux, e estou um pouco confuso com parte da documentação e comportamento do comando "ip route". Parece que os únicos valores válidos devem ser 0-255 mais os nomes definidos em / etc / iproute2 / rt_tables:

255 local
254 main
253 default
0   unspec

Isso deixaria de 1-252 para tabelas personalizadas. A tentativa de usar um nome de tabela indefinido gera um erro:

$ ip route show table kermit
Error: argument "kermit" is wrong: table id value is invalid

No entanto, parece que posso usar números muito maiores que 255 sem erros:

$ ip route show table 1000
[no output]
$ ip route add 10.10.10.0/24 dev eth0 table 1000
[no output]
$ ip route show table 1000
10.10.10.0/24 dev eth0  scope link

Em algum momento, as coisas ficam ainda mais estranhas. No maxint (2 ^ 31), "transborda" para a tabela local (255):

$ ip route show table 2147483647
[no output]
$ ip route show table 2147483648
[exact output of table 255 (local)]

Alguém pode explicar o que está acontecendo? Existem, na verdade, tabelas de roteamento personalizadas maxint que podem ser usadas?

    
por Bob 26.09.2011 / 23:10

2 respostas

7

No que diz respeito ao kernel 2.6, a tabela max é 0xFFFFFFFF (de rtnetlink.h). No entanto, o iproute2 usa um inteiro assinado em seu filtro para fazer a pesquisa, então, em 2 ^ 31 ele acha que você especificou uma tabela inválida e padroniza para mostrar a tabela 255.

    
por 27.09.2011 / 18:46
0

Bem, não posso comentar, mas queria observar o seguinte:

~# ip route list table 79456894975
~# ip route list table 79456894976
... stuff that appears to be table 0 ...

Portanto, parece que 79456894976 é o maior número de tabela de roteamento exclusivo.

Além disso, o número > 79456894976 todos parecem mostrar a tabela de rotas 0. Eu não sei onde o limite entra, mas esse parece ser o limite prático.

    
por 01.02.2014 / 00:23