如何确定一系列IP中最大的cidr

说我有一个开始IP和结束IP。 找出我可以从这个范围内分配的最大的cidr来减less碎片,最简单的方法是什么?

例如,我有范围10.10.1.0 – 10.10.2.128。

我要求一个/ 25。 最简单的algorithm会给我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保持不变。

任何想法都会受到欢迎。 一直在打我的头了一下。

这听起来像你想要的东西靠近好友分配器,从内存pipe理借用一页(哈哈)。

步骤1:将您所具有的范围转换为尽可能大的一系列CIDR块,而不跨越范围边界或与另一个块重叠。

步骤2:给定你想要的分配,find适合它的最小的块。 理想情况下,这将与其完全匹配,但是如果不匹配,则会将您find的最小块(可能recursion)分割,直到您处于正确的大小块为止。

我的措辞在这里不是特别优雅,但我希望你明白。

没有一个以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

你可以有两个独立的networking:

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