说我有一个开始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