Sumarização de rota: Como obter o resumo da rota de forma clara. (VLSM, CIDR)

1

Estou procurando uma maneira inteligente e rápida de calcular rotas de resumo. (CIDR, sumarização de rotas)

Sou comum com o assunto de sumarização, supernets, VLSM, CIDR etc. mas nem sempre quero converter todos os endereços IP em formato binário para obter o resultado.
Eu estou procurando uma maneira inteligente de economizar tempo valioso.
Pergunta principal no exemplo 3

Exemplo1:
Vamos dizer que temos esses dois endereços IP:

  • 172.16.64.0/23
  • 172.16.66.0/23

Eu posso ver imediatamente que a rota de resumo será 172.16.64.0/22 .
Eu vejo que estou usando duas sub-redes - > é 1 bit - > Eu subtraio 1 bit do / 23 = / 22

Em formato binário:
172.16.64.0 - - - > 10101100.00010000.01000000.00000000
172.16.66.0 - - - > 10101100.00010000.01000010.00000000

22 bits correspondentes mais à esquerda = / 22
Quando AND-ing estes endereços IP, o resultado é 172.16.64.0 - - - > 10101100.00010000.01000000.00000000

Voila está funcionando sem conversão:)

Exemplo2:

  • 192.168.4.192/29
  • 192.168.4.200/29
  • 192.168.4.208/29
  • 192.168.4.216/29

Uma breve olhada nesses IPs, vejo 4 sub-redes, que são 2 bits. (subtraia 2 de / 29)
Então, meu palpite é 192.168.4.192/27

192.168.4.192 - - - > 10000000.10101000.00000100.11000000
192.168.4.200 - - - > 10000000.10101000.00000100.11001000
192.168.4.208 - - - > 10000000.10101000.00000100.11010000
192.168.4.216 - - - > 10000000.10101000.00000100.11011000

27 bits correspondentes mais à esquerda = / 27
Quando AND-ing estes endereços IP, o resultado é:
192.168.4.192 - - - > 10000000.10101000.00000100.11000000

Voila, temos 192.168.4.192/27. Então parece que está funcionando.

Example3:
(MAS) E se tivermos números ímpares e diferentes sub-máscaras (como no exemplo abaixo)
Como posso obter imediatamente o resumo do percurso? (sem converter para binário?)

  • 192.168.6.000/27 (10000000.10101000.00000110.00000000)
  • 192.168.6.064/27 (10000000.10101000.00000110.01000000)
  • 192.168.6.128/26 (10000000.10101000.00000110.10000000)
  • 192.168.6.160/26 (10000000.10101000.00000110.10100000)
  • 192.168.6.192/28 (10000000.10101000.00000110.11000000)
  • 192.168.6.208/28 (10000000.10101000.00000110.11010000)
  • 192.168.6.224/30 (10000000.10101000.00000110.11100000)
  • 192.168.6.228/30 (10000000.10101000.00000110.11100100)
  • 192.168.6.232/30 (10000000.10101000.00000110.11101000)

uma vez convertido, é fácil ver que são 24 os bits correspondentes mais à esquerda = / 24
Mas existe uma maneira de pular a conversão e descobrir a rota de resumo imediatamente, apenas a partir das máscaras de IPs +?

Exemplo4: Este exemplo é um pouco malvado, porque discorda da minha ideia do exemplo 1:

  • 192.168.1.0/24 - 11000000.10101000.00000001.00000000
  • 192.168.2.0/24 - 11000000.10101000.00000010.00000000

O resultado é 192.168.0.0/22
No entanto, eu não consegui explicar porque, especialmente, isso não está mais funcionando.

Espero que este fórum tenha algumas pessoas inteligentes que possam me ajudar a encontrar uma solução de trabalho. :)
Agradecemos antecipadamente

    
por user179048 09.12.2012 / 12:59

2 respostas

1

Eu criei um método muito simples de calcular endereços de resumo de rotas sem converter em binário. Essencialmente, você apenas compara os números com os valores dos bits e determina se eles correspondem a cada bit.

Exemplo 1.

192.168.1.160/30

192.168.1.164/29

192.168.1.172/29

192.168.1.180/30

você começa levando o maior e o menor número do intervalo a ser resumido.

160, 180.

compare-os com os valores de bit a partir da esquerda.

128 64 32 16 8 4 2 1

Como os dois números são maiores que 128, ambos correspondem nesse bit e têm um valor de um nesse bit.

128 64 32 16 8 4 2 1

1

adicione o valor do próximo bit (128 + 64 = 192) e determine se ambos os números são maiores ou menores que esse valor. porque 160 e 180 são ambos menores do que 192, ambos combinam naquele bit e ambos possuem um valor 0 para aquele bit.

128 64 32 16 8 4 2 1

1 0

agora porque os dois números eram menores que 192, você adiciona 128 ao próximo valor de bit de 32 e desconsidera o valor de bit de 64. (128 + 32 = 160) porque ambos 160 e 180 são maiores que 160 esse bit e ambos têm um valor de 1 para esse bit.

128 64 32 16 8 4 2 1

1 0 1

agora adicione o valor acumulado do endereço do resumo ao próximo valor de bit de 16 (128 + 32 = 160 + 16 = 176) porque 160 é menor que e 180 é maior que 176, eles têm um valor diferente nesse bit Portanto, este bit não está incluído no endereço de resumo.

128 64 32 16 8 4 2 1

1 0 1 x x x x x

para que você possa ver que o endereço do resumo de rota para este exemplo é 192.168.1.160/27

Eu vou dar outro exemplo aqui, mas uma vez que você pegar o jeito dele, você pode elaborar endereços de resumo muito rapidamente em sua cabeça.

Exemplo 2

172.16.146.0/24

172.16.147.0/23

172.16.149.0/23

172.16.151.0/24

valores de bit

: 128 64 32 16 8 4 2 1

olhando para o número mais alto e mais baixo no exemplo, 146 + 151, são ambos maiores ou menores do que o primeiro valor de bit de 128. ambos são mais altos, então este bit combina com um valor de 1.

128 64 32 16 8 4 2 1

1

adicionando o próximo valor de bit (128 + 64 = 192) eles são maiores ou menores que 192? ambos são mais baixos, então esse bit tem um valor igual a 0 para ambos.

128 64 32 16 8 4 2 1

1 0

adicionando o próximo valor de bit de 32 ao valor de resumo acumulado de 128 (128 + 32 = 160), você pode ver 146 e 151 menores que 160, então este bit tem um valor de correspondência de 0 para ambos os bits.

128 64 32 16 8 4 2 1

1 0 0

adicionando o próximo valor de bit de 16 ao valor de resumo acumulado de 128 (128 + 16 = 144) você pode ver que ambos 146 + 151 são maiores que 144, então este bit tem um valor correspondente de 1.

128 64 32 16 8 4 2 1

1 0 0 1

adicionando o próximo valor de bit de 8 ao valor de resumo acumulado de 144 (128 + 16 = 144 + 8 = 152) você pode ver que ambos os números são menores que 152, então ambos os números ainda correspondem neste bit com um valor de 0.

128 64 32 16 8 4 2 1

1 0 0 1 0

adicionando o próximo valor de bit de 4 ao valor de resumo acumulado de 144 (128 + 16 = 144 + 4 = 148) você pode ver que 146 é menor e 151 é maior que 148, então este bit não combina e não é parte do endereço do resumo da rota.

128 64 32 16 8 4 2 1

1 0 0 1 0 x x x

então a resposta para este exemplo é 172.16.144.0/21

No seu exemplo anterior (exemplo 3)

192.168.6.000/27

192.168.6.064/27

192.168.6.128/26

192.168.6.160/26

192.168.6.192/28

192.168.6.208/28

192.168.6.224/30

192.168.6.228/30

192.168.6.232/30

olhe apenas para o número mais alto e mais baixo 0 + 232, um é maior que 128 e um é menor para que você não precise procurar mais nada ou calcular mais nada. O primeiro bit com um valor de 128 não corresponde e não faz parte do endereço de resumo.

Alguns intervalos são mais fáceis do que outros, mas eu acho isso muito mais rápido, então espero que seja útil também.

Aoibheann

    
por 03.08.2014 / 14:16
0

Seu problema é que você deseja comparar números com base em seu valor, usando como eles estão sendo representados e agrupados. Em inglês simples, você está tentando traduzir do alemão para o francês, falando chinês . Embora palavras diferentes possam ser usadas para identificar exatamente o mesmo conceito, você ainda precisa fazer a tradução diretamente .

Antes de usar algum tipo de linguagem de programação ou calculadora com capacidade para binário, não há como simplesmente escrever os números da base 10 na rede e sempre ver um padrão claro. Mesmo em seus exemplos, se você pensar sobre isso, você fez uma simples conversão em sua cabeça para binário com base na idéia de que os valores numéricos dos números eram muito próximos, portanto sua representação binária não seria muito diferente, permitindo agrupar dígitos em sua cabeça e identificar os agrupamentos idênticos. Mas quanto maior a diferença / mais números que você compara, mais difícil é fazer isso na sua cabeça.

No entanto, se você listar os números IP em ordem numérica, poderá começar comparando o primeiro com o segundo para obter um prefixo comum para esses dois números. Para cada número adicional, compare o prefixo anterior com o próximo número, até comparar todos e chegar ao prefixo final. Mas você ainda terá que fazer uma conversão binária em sua cabeça.

    
por 19.07.2014 / 12:16