Como determinar o maior cidr em um intervalo de IPs

2

Digamos que eu tenha um ip inicial e um ip final. Qual seria a maneira mais fácil de descobrir o maior cidr que eu poderia alocar nesse intervalo para reduzir a fragmentação?

Por exemplo, eu tenho o intervalo 10.10.1.0 - 10.10.2.128.

Eu solicito um / 25. O algoritmo mais fácil me daria 10.10.1.0/25 e seria feito com ele, mas isso fragmenta o / 24 e não aloca o / 25 (10.10.2.0/25). O que eu gostaria de ver é alocar o 10.10.2.0/25 e deixar 10.10.1.0-10.10.1.255 intocado.

Qualquer ideia seria bem vinda. Tenho batido minha cabeça por um tempo.

    
por Magic Hat 11.08.2010 / 23:34

2 respostas

1

Parece que você quer algo próximo ao alocador de amigos, para emprestar uma página (ha ha) do gerenciamento de memória.

Passo 1: Transforme o intervalo que você tem em uma série de blocos CIDR que são tão grandes quanto possível sem cruzar o limite de alcance ou se sobrepor a outro bloco.

Passo 2: Dada a alocação que você está tentando encaixar, encontre o menor bloco possível que irá se encaixar. O ideal é que isso corresponda exatamente a ele, mas se não, você dividirá o menor bloco que encontrou (potencialmente recursivamente) até que esteja no bloco de tamanho correto.

Meu texto não é particularmente elegante aqui, mas espero que você entenda a ideia.

    
por 12.08.2010 / 01:02
-1

Não há um CIDR limitado por 10.10.1.0 - 10.10.2.128

10.10.1.0 / 22 é 10.10.0.0 - 10.10.3.255

10.10.1.0 / 23 é 10.10.0.0 - 10.10.1.255

10.10.1.0 / 24 é 10.10.1.0 - 10.10.1.255

Você pode ter duas redes separadas:

10.10.1.0 / 24 é 10.10.1.0 - 10.10.1.255

10.10.2.0 / 25 é 10.10.2.0 - 10.10.2.127

    
por 12.08.2010 / 16:35

Tags