我正在寻找一个好的算法(或代码,如果你说得比英语好)来执行以下操作:
对于给定的 IP 范围(例如 1.1.1.1 - 1.1.2.247),找到包含指定范围内所有 IP 的子网/地址的最小组合。忽略广播、子网 0 限制和网络类。
例子:
- 对于 1.1.1.1 - 1.1.2.1 你会得到 {1.1.1.1/24, 1.1.2.1} 比 {1.1.1.1, 1.1.1.2, ..., 1.1.1.255, 1.1.2.1} 更好/更小
- 对于 1.1.1.12 - 1.1.1.31,您会得到 {1.1.1.12/30, 1.1.1.16/28},它比 {1.1.1.12, 1.1.1.13, 1.1.1.14, 1.1.1.15, 1.1 更好/更小。 1.16/28}
出于好奇,用例是使用 Openflow 协议将任意范围的源/目标 IP 上的网络流量与最少的流量匹配。这种优化的需求源于硬件交换机/路由器对这些流配置的空间有限,并且需要相对较长的时间来编程/修改。