【发布时间】:2014-07-31 14:15:27
【问题描述】:
我正在寻找一个好的算法(或代码,如果你说得比英语好)来执行以下操作:
对于给定的 IP 范围(例如 1.1.1.1 - 1.1.2.247),找到包含指定范围内所有 IP 的子网/地址的最小组合。忽略广播、子网 0 限制和网络类。
例子:
- 对于 1.1.1.1 - 1.1.2.1,您会得到比 {1.1.1.1, 1.1.1.2, ..., 1.1.1.255, 1.1 更好/更小的 {1.1.1.1/24, 1.1.2.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 的任意范围上匹配网络流量。之所以需要这种优化,是因为硬件交换机/路由器对这些流配置的空间有限,而且编程/修改需要相对较长的时间。
【问题讨论】:
-
没有这样的IP:
1.1.2.347 -
抱歉 347 = 247。现在我只有一组预定义的子网并枚举其余子网,但这并不总是给出最小的集
-
你需要澄清你所说的最小是什么意思。
-
感谢@Raedwald,已编辑。
标签: algorithm subnet openflow space-efficiency sdn