次のことを行うための優れたアルゴリズム(または英語よりも上手に話す場合はコード)を探しています。
特定の 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.2.1} よりも優れている/小さい {1.1.1.1/24, 1.1.2.1} が得られます。
- 1.1.1.12 - 1.1.1.31 の場合、{1.1.1.12、1.1.1.13、1.1.1.14、1.1.1.15、1.1 よりも優れている/小さい {1.1.1.1.12/30、1.1.1.16/28} が得られます。 1.16/28}
興味深いことに、ユース ケースは、Openflow プロトコルを使用して、任意の範囲のソース/宛先 IP のネットワーク トラフィックを最小数のフローと照合することです。この最適化の必要性は、ハードウェア スイッチ/ルーターがこれらのフロー構成のためのスペースが限られており、プログラム/変更に比較的長い時間がかかるという事実から生じます。