So ermitteln Sie die größte CIDR in einem IP-Bereich

So ermitteln Sie die größte CIDR in einem IP-Bereich

Angenommen, ich habe eine Anfangs-IP und eine End-IP. Was wäre der einfachste Weg, um die größte CIDR zu ermitteln, die ich aus diesem Bereich zuweisen könnte, um die Fragmentierung zu reduzieren?

Ich habe beispielsweise den Bereich 10.10.1.0 – 10.10.2.128.

Ich fordere /25 an. Der einfachste Algorithmus würde mir 10.10.1.0/25 geben und damit wäre es erledigt, aber dann fragmentiert dies /24 und weist /25 (10.10.2.0/25) nicht zu. Was ich gerne sehen würde, ist, 10.10.2.0/25 zuzuweisen und 10.10.1.0-10.10.1.255 unberührt zu lassen.

Ich bin für alle Ideen dankbar. Ich zerbreche mir schon eine Weile den Kopf darüber.

Antwort1

Es hört sich an, als ob Sie etwas in der Nähe des Buddy-Allocators möchten, um eine Seite (ha ha) aus der Speicherverwaltung auszuleihen.

Schritt 1: Wandeln Sie den vorhandenen Bereich in eine Reihe möglichst großer CIDR-Blöcke um, ohne die Bereichsgrenze zu überschreiten oder sich mit einem anderen Block zu überschneiden.

Schritt 2: Suchen Sie den kleinstmöglichen Block, der in die Zuordnung passt, die Sie anpassen möchten. Im Idealfall entspricht dies genau der Zuordnung, andernfalls teilen Sie den kleinsten gefundenen Block auf (möglicherweise rekursiv), bis Sie den Block mit der richtigen Größe gefunden haben.

Meine Formulierung ist hier nicht besonders elegant, aber ich hoffe, Sie verstehen, was ich meine.

Antwort2

Es gibt kein CIDR, das durch 10.10.1.0 - 10.10.2.128 begrenzt ist

10.10.1.0 /22 ist 10.10.0.0 - 10.10.3.255

10.10.1.0 /23 ist 10.10.0.0 - 10.10.1.255

10.10.1.0 /24 ist 10.10.1.0 - 10.10.1.255

Sie könnten zwei separate Netzwerke haben:

10.10.1.0 /24 ist 10.10.1.0 - 10.10.1.255

10.10.2.0 /25 ist 10.10.2.0 - 10.10.2.127

verwandte Informationen