如何確定 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

相關內容