IP 범위에서 가장 큰 cidr을 결정하는 방법

IP 범위에서 가장 큰 cidr을 결정하는 방법

시작 IP와 끝 IP가 있다고 가정해 보겠습니다. 조각화를 줄이기 위해 이 범위에서 할당할 수 있는 가장 큰 CIDR을 알아내는 가장 쉬운 방법은 무엇입니까?

예를 들어 범위는 10.10.1.0 - 10.10.2.128입니다.

/25를 요청합니다. 가장 쉬운 알고리즘은 10.10.1.0/25를 제공하고 이를 완료하는 것입니다. 그러나 이는 /24를 조각화하고 /25(10.10.2.0/25)를 할당하지 않습니다. 내가 보고 싶은 것은 10.10.2.0/25를 할당하고 10.10.1.0-10.10.1.255를 그대로 두는 것입니다.

어떤 아이디어라도 환영받을 것입니다. 이것 때문에 잠시 머리를 쳤습니다.

답변1

메모리 관리에서 페이지(하하)를 빌리기 위해 버디 할당자에 가까운 것을 원하는 것 같습니다.

1단계: 범위 경계를 넘거나 다른 블록과 겹치지 않고 가능한 한 큰 일련의 CIDR 블록으로 범위를 변환합니다.

2단계: 맞추려는 할당이 주어지면 이에 맞을 수 있는 가장 작은 블록을 찾으세요. 이상적으로는 정확히 일치하지만 그렇지 않은 경우 올바른 크기의 블록이 될 때까지 찾은 가장 작은 블록을 (잠재적으로 재귀적으로) 분할합니다.

여기서 내 표현은 특별히 우아하지는 않지만 당신이 아이디어를 얻었기를 바랍니다.

답변2

10.10.1.0 - 10.10.2.128로 제한되는 CIDR이 없습니다.

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입니다.

두 개의 별도 네트워크가 있을 수 있습니다.

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입니다.

관련 정보