
假設我有一個開始 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