現在のルーティングで使われているアドレスは,クラスレスアドレッシングが主流となっています。その中でも,経路集約は非常に重要な位置にあります。今回は経路集約を学びましょう。

経路集約

 現在のネットワークが抱える悩みの1つとして,ルーティングテーブルの増大があります。ルーティングテーブルにはあて先ネットワーク1つごとに1つエントリが作成されています。このため,ネットワーク数が増えるにつれ,ルーティングテーブルにエントリ数が増えることになります。それにより,ルーティングテーブルからあて先ネットワークを見つけるための時間が長くなったり,ルーティングテーブルを保存するためのメモリ量が大量に必要になったりします。実際,インターネット上には数万~数百万のネットワークが存在しており,インターネットの基幹ルータともなると,それらすべてのエントリを扱う必要があるため,膨大なリソースが必要になっています。

 このルーティングテーブル増大の解決策の1つが経路集約です。それは複数のエントリを1つにまとめ,ルーティングテーブルを圧縮させる方法です。まず経路集約をしていない場合を見てみましょう(図1)。

図1 経路集約していない場合
図1 経路集約していない場合

 図1のルータXはルータAの先の8つのネットワークの情報をルーティングテーブルに記載しています。この場合,8つのエントリが存在します。これを集約すると図2のようになります。

図2●経路集約した場合
図2●経路集約した場合

 172.16.40.0/24~172.16.47.0/24では上位21ビットが「10101100.00010000.00101」で共通なため,プレフィックス長/21の1つのエントリにまとめることができます。これにより8つのエントリを1つのエントリにまとめることができ,ルーティングテーブルの圧縮が可能になるわけです。

 経路集約の方法はまとめたいネットワークで共通のビットを見つけ出すことにあります。ただし,アドレッシングによっては上手く経路集約できない場合があります(図3)。

図3●経路集約が上手くできない場合
図3●経路集約が上手くできない場合

 172.16.0.0/24~172.16.3.0/24,172.16.100.0/24~172.16.101.0/24は経路集約できますが,他の部分は不連続なため経路集約できません。このような場合,上位16ビットが共通なことは確かなので,172.16.0.0/16という形に集約することも可能ですが,図4のような点で不備が発生することがあります。

図4●経路集約で起こるループ

 このような事態を避けるため,経路集約には注意が必要です。またアドレッシングの際にもなるべく経路集約できるようにアドレスを割り振る必要があります。

ルーティングプロトコルの対応

 ルーティングプロトコルにはその機能として,クラスフルアドレッシング対応のものと,クラスレスアドレッシング対応のものの2種類があります。クラスフルアドレッシング対応のルーティングプロトコルは「クラスフルルーティングプロトコル」,クラスレスアドレッシング対応のルーティングプロトコルは「クラスレスルーティングプロトコル」と呼ばれます。明確な違いとしては,ルーティング情報の交換の際に,サブネットマスク(プレフィックス長)を含まないものがクラスフルルーティングプロトコル,含むものがクラスレスルーティングプロトコルになります。

 クラスフルルーティングプロトコルはRIPv1(RIPバージョン1)とIGRPが当てはまります。それ以外の,RIPv2(RIPバージョン2),OSPF,EIGRP,IS-IS,BGPはすべてクラスレスルーティングプロトコルです。クラスレスルーティングプロトコルは,CIDR,VLSM,経路集約すべてに対応しています。

 経路集約はクラスフルルーティングプロトコル,クラスレスルーティングプロトコルの双方で可能ですが,クラスフルルーティングプロトコルの場合,デフォルトマスク(クラスA:255.0.0.0,クラスB:255.255.0.0,クラスC:255.255.255.0)よりも小さいビットでは経路集約できません(図5)。

図5●クラスフルとクラスレスの経路集約
図5●クラスフルとクラスレスの経路集約

 図5の構成では,クラスレスの場合は192.168.0.0/24~192.168.3.0/24の上位22ビットが共通なため192.168.0.0/22に集約可能です。ところが,クラスフルの場合はクラスCのネットワークになるのでサブネットマスク(プレフィックス長)を24ビット以下にできません。したがって,経路集約できないことになります。

 経路集約は現在では必須の機能の1つです。このため,多くのルーティングプロトコルに実装されています。

クラスフル境界での経路集約

 クラスフルルーティングプロトコルでは,クラスを中心にしてアップデートを送信するため,クラスフル境界での経路集約が行われます。クラスフル境界とは,複数のネットワークのクラスフルでのネットワークアドレスが異なる境界線のことを指します(図6)。

図6●クラスフル境界
図6●クラスフル境界

 クラスフルルーティングプロトコルでは,クラスフル境界がある場合に他ルータにアップデートを送る際には,次のルールに従います(図7)。

  • クラスフルネットワークアドレスが異なるインタフェースから送信
    • クラスフルネットワークアドレス
  • クラスフルネットワークアドレスが同じインタフェースから送信
    • サブネットワークアドレス

図7●クラスフル境界でのアップデート

 このように,クラスフル境界が存在する場合,「クラスフルネットワークアドレスへの経路集約」が行われていると言ってもいいでしょう。

 ただし,この「クラスフルネットワークアドレスへの経路集約」は「不連続サブネット」の問題を抱えています。不連続サブネットとは,同一のクラスフルネットワークのサブネットがクラスフル境界を挟んで存在することを指します。(図8

図8●不連続サブネットの問題

 この問題のため,クラスフルルーティングプロトコルを使用する場合,クラスフル境界を考慮してアドレッシングする必要があります。

(改定履歴)
・「VLSMと経路集約」のリンクにあった「経路集約」の部分を掲載し,「クラスフル境界での経路集約」部分を追加しました。(2008/7/24)