Como determinar o maior cidr em um intervalo de IPs

Como determinar o maior cidr em um intervalo de IPs

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, tenho o intervalo 10.10.1.0 - 10.10.2.128.

Solicito um /25. O algoritmo mais fácil me daria 10.10.1.0/25 e pronto, mas isso fragmenta o/24 e não aloca o/25 (10.10.2.0/25). O que eu gostaria de ver é alocar 10.10.2.0/25 e deixar 10.10.1.0-10.10.1.255 intacto.

Alguma idéia seria bem-vinda. Estou batendo a cabeça por causa disso há um tempo.

Responder1

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

Etapa 1: transforme o intervalo que você possui em uma série de blocos CIDR tão grandes quanto possível, sem cruzar o limite do intervalo ou se sobrepor a outro bloco.

Etapa 2: Dada a alocação que você está tentando ajustar, encontre o menor bloco possível que caiba nela. Idealmente, isso corresponderá exatamente, mas se não, você dividirá o menor bloco que encontrou (potencialmente recursivamente) até chegar ao bloco do tamanho certo.

Minha redação não é particularmente elegante aqui, mas espero que você tenha entendido.

Responder2

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ê poderia 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

informação relacionada