
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