経路集約(ルート集約)

 IPアドレスの割り当て方法には、クラスフルアドレッシングとクラスレスアドレッシングがあります。現在ではクラスレスアドレッシングが主流になっています。

 サブネットマスクを使うことで、ネットワークをサブネットに分割したり、ルート集約を行うことができます。

 ※ルート集約を行う場合は、静的ルートもしくは、クラスレスルーティングに対応したルーティングプロトコルを使用する必要があります。

 サブネット分割を行うとネットワークを適切なサイズで運用できるので、ネットワークの効率が高まり、運用が容易であると説明しました。

 しかし、サブネットが増えればルータが扱うルーティングテーブルのエントリー数が多くなってしまうという欠点もあります。

 インターネットという広大なネットワークを考えてみれば、ルータが扱わなければならないエントリー数が莫大な数になることが容易に想像できます。

 ネットワークのエントリー数が多くなれば、ルータの負荷も大きくなってしまいます。場合によっては、ルーティングの処理が間に合わなくなるかもしれません。

※ルーティングテーブルとは、ルータが受け取ったパケットを転送する際に参照するテーブルのことです。宛先ネットワークと転送元となるインターフェイスにもしくは、隣のルータのインターフェイスのIPアドレスの対応が記されています。

下のネットワーク構成を見て下さい。

 ルータBにつながるネットワーク「150.10.0.0/16」は、サブネット「150.10.1.0/24」、「150.10.2.0/24」に分割されています。

 もしも、ルータBがルート集約を行わずに、「150.10.1.0/24」、「150.10.2.0/24」のルートをルータAに報告した場合は、どうでしょうか、ルータAのルーティングテーブルのサイズは大きくなってしまいます。 

これが、インターネットレベルで行われた場合、ルータがルーティングテーブルのサイズは、膨大なものとなってしまいます。

ルータBが上位ルータであるルータAに「150.10.0.0/16」でルートを報告した場合、どうでしょうか?

 ルータAのルーティングテーブルのサイズは、小さくなります。これが、インターネットレベルで行われた場合、ルータがルーティングテーブルのサイズは、かなり小さくなります。

 「150.10.1.0/24」、「150.10.2.0/24」のルーティングに関しては、ルータBが行えば済むことです。他のルータが、「150.10.1.0/24」、「150.10.2.0/24」のルートを知る必要がありません。

 このように、分割されたネットワークに関しては、最寄のルータに任せることで、ルータが扱うルーティングテーブルのエントリー数を削減することができます。

不連続サブネットの問題点

 ルート集約を行うことで、ルータの扱う経路情報の数が減り、ルーティングテーブルのサイズが小さくなり、効率よくルーティングが行えると説明しました。

しかし、下の図のネットワーク構成を見て下さい。

ルータBが、サブネット「150.10.1.0/24」を「150.10.0.0/16」でルータA報告しています。
ルータCが、サブネット「150.10.2.0/24」を「150.10.0.0/16」でルータA報告しています。

 その結果、ルータAは、「150.10.0.0」ネットワーク宛のパケットを受信した場合、ルータB、ルータCのどちらに転送してよいか分からなくなってしまいます。

なぜうまく機能しなくなったのでしょうか?

ルーティングが機能しなくなった原因は、ルータB、ルータCが「150.10.0.0/16」の経路情報を報告したからです。

 これは、同じネットワークアドレスが複数存在していることになります。IPアドレスは1つという原則に反しています。そのため、ルータAはどちらにパケットを送ればよいのか判断できなくなったのです。

このようにサブネット分割する際は、ルーティングがうまく機能しなくなる恐れがあります。

 ルーティングプロトコルを使用して、ルーティングを行わせる場合、サブネットを使ったネットワークでもうまく機能する場合もありますが、ルーティングプロトコル自身がルート集約を自動で行い間違ったルートを報告してしまう場合もあります。

 その場合、ルーティングプロトコルの設定で自動集約の機能をOFFにしたり、手動で報告するルートを設定することでこの問題を回避します。