スーパーネット
連続する複数のネットワークを、より短いプレフィックス長の1つのネットワークとしてまとめたもの。経路表のエントリ数を減らすために使う。
イマシルちゃんの解説
同じ方向へ行く町の道案内を、丁目ごとに別々の看板にすると数が増えてしまうよね。
「〇〇町はこっち」ってまとめられれば、すっきりする!
スーパーネットは、複数のネットワークを含む大きなアドレス範囲のことだよ。
アドレスの先頭側のビット列をプレフィックスというんだ。
各ネットワークで共通している部分までを使って、全体をひとまとまりに表すよ。
このようにスーパーネットを作って経路をまとめることが、CIDRによる経路集約なんだ。
同じ方向へ送れる経路をまとめれば、ルータが持つ行き先の一覧である経路表を小さくできるよ。
この解説はわかりやすかったですか?
より深い解説
定義
スーパーネットは、アドレスが連続する複数のネットワークを、それらに共通する上位のビット(共通プレフィックス)だけで表した、より大きな1つのネットワークである。スーパーネットを作ること(スーパーネッティング)は、CIDRによる経路集約(ルート集約)と同じ意味で使われる。
| 操作 | プレフィックス長 | ネットワークの大きさ |
|---|---|---|
| サブネット化 | 長くする(/24 → /26) | 小さく分ける |
| スーパーネット化 | 短くする(/24 → /22) | 大きくまとめる |
求め方
- まとめたいネットワークアドレスを2進数で書く(変化しているオクテットだけでよい)
- 上位から見て、すべてのアドレスで共通しているビットの数を数える
- 共通しているビット数をプレフィックス長とし、共通部分以外のビットを0にしたものをネットワークアドレスとする
例:10.20.8.0/24、10.20.9.0/24、10.20.10.0/24、10.20.11.0/24 を最小のスーパーネットにまとめる
| ネットワーク | 第3オクテット |
|---|---|
| 10.20.8.0 | 000010 00 |
| 10.20.9.0 | 000010 01 |
| 10.20.10.0 | 000010 10 |
| 10.20.11.0 | 000010 11 |
- 共通しているビット:8 + 8 + 6 = 22ビット
- ネットワークアドレス:10.20.8.0
- サブネットマスク:255.255.252.0
よくある間違い
| 間違い | 正しくは |
|---|---|
| ネットワークアドレスを、まとめた中の最後のネットワーク(10.20.11.0)にする | 共通部分以外を0にした、先頭のアドレスになる |
| 4つまとめるのに、/21(255.255.248.0)を選ぶ | /21は/24を8つ含む。4つなら/22で足りる |
| 4つまとめるのに、/23(255.255.254.0)を選ぶ | /23は/24を2つしか含まない |
/24のネットワークを隙間なくまとめられる個数は2の累乗であり、先頭アドレスも集約後の境界にそろえる必要がある。境界がそろった2^k個なら、プレフィックス長は/(24 − k)になる。個数だけで長さを決めず、実際の共通ビットとアドレス範囲を確認する。
「最小の」スーパーネット
まとめるネットワークの先頭が、まとめる数の倍数の位置にないと、共通ビットが少なくなり、余計なネットワークまで含む大きなスーパーネットになる。
例:10.20.9.0/24 ~ 10.20.12.0/24 の4つ
| 第3オクテット | 2進数 |
|---|---|
| 9 | 00001 001 |
| 12 | 00001 100 |
共通するのは上位5ビットだけなので、最小のスーパーネットは 10.20.8.0/21 となり、8.0、13.0~15.0 という、含めたくないネットワークまで入ってしまう。このような場合は、/24 と /23 と /24 のように、複数の経路に分けて集約するほうが正確である。
集約の効果と注意点
| 効果 | 内容 |
|---|---|
| 経路表の縮小 | ルータのメモリと検索の負荷を減らす |
| 安定性の向上 | 集約した内側のネットワークの1つが不安定になっても、外側には影響が伝わらない |
一方、集約した範囲の中に実際には存在しないネットワークがあると、そこ宛てのパケットも引き寄せてしまい、ルーティングループの原因になることがある。これを防ぐため、集約するルータでは、集約経路に対応する宛先を破棄する経路(Null0へのルート)を設定するのが一般的である。