나는 넷 블럭과 그 안에 할당 된 목록이 주어진 CIDR 넷 블럭 내에서 "프리 픽스 (free prefixes)"를 결정하는 방법을 찾으려고합니다.CIDR 넷 블럭 내에서 프리픽스 찾기
예를 들어:
하자 netblock = 10.0.0.0/22
하자 할당 = {10.0.0.0/24, 10.0.1.0/24}
가장 효율적인 계산이 될 것입니다 무엇 10.0.0.0/22에서 '무료'넷 블록을 파악하는 방법은 무엇입니까? 위 예제의 경우 10.0.2.0/23을 출력해야합니다.
나는 연구를 시도했으며 대부분 비어있었습니다. IP를 확장 일반적인 IP를에
- CIDR : 내 마음에 (아마도 네트워크 프로그래밍 내 경험 부족에) 오는 유일한 방법입니다 수정 된 목록을 다시 CIDR 표기법으로 변환하십시오.
그러나 이것은 상당히 비효율적 인 것으로들합니다. (나는 그것을 "bruteforce"접근이라고 부릅니다.)
저는 일반적인 알고리즘으로 문제가 없지만 Java 관련 답변 일 필요는 없습니다.
감사합니다. :)
예제는 부모 블록의 시작 부분에 할당되어 있고 비트 경계에 따라 잘 정렬되어 있으므로 "완벽한 경우"이지만 "10.0.2.111/30"과 같은 값을 가질 수도 있습니다. 리스트의 경우 10.0.0.0-10.0.2.110을 커버하기 위해 하나의 연속 블록을 정의 할 수 없으며 10.0.0.0-10.0.2.107과 M 개의 출력 블록을 포함하는 N 개의 출력 블록을 정의해야합니다 10.0.2.112-10.0.3.255를 커버하십시오. 그래도 여전히 할 수 있지만 더 어려운 작업입니다 (적어도 N과 M을 가능한 한 작게 유지하면서 최적의 솔루션을 찾고 싶다면). – zeppelin
@zeppelin 참으로. 내 경우에는 할당 크기가 적어도 항상/24로 보장되지만, 당신이 말하는 것을 이해합니다. –