BGPルート集約の2つの方法

BGPでは8ビット単位のクラス境界だけでなく、任意の境界での手動集約も可能です。集約は基本的には手動集約を行います。CiscoルータでBGPのルート集約を行うには、次の方法があります。

  • networkコマンド
  • aggregate-addressコマンド

基本的にはaggregate-addressコマンドで集約を行います。一応、networkコマンドでの集約の設定についても紹介します。


aggregate-addressコマンドによるBGPルートの集約について、以下の記事で解説しています。


networkコマンドによる集約

networkコマンドは、BGPルートを生成するためのコマンドです。networkコマンドでBGPルートを生成するためには、ルーティングテーブル上に完全一致するルート情報が必要です。完全に一致しなくてはいけないのがポイントです。たとえば、ルーティングテーブルに次のようなルート情報があるとします。

  • 192.168.0.0/24
  • 192.168.1.0/24
  • 192.168.2.0/24
  • 192.168.3.0/24

この4つのルートを集約した192.168.0.0/22のルート情報を生成しようとして、以下のようにnetworkコマンドを設定します。

router bgp <AS>
 network 192.168.0.0 mask 255.255.252.0

ただ、この設定で集約ルートは生成されません。ルーティングテーブルには、networkコマンドで指定した192.168.0.0/22というルート情報が存在していないからです。networkコマンドが機能するように、ルーティングテーブル上に一致するルート情報を登録すればいいという考え方が、networkコマンドを利用した集約ルートの設定です。

次のようにnull0を出力インタフェースにするスタティックルートを追加で設定すれば、networkコマンドが機能するようになります。

ip route 192.168.0.0 255.255.252.0 null0

null0を出力インタフェースとしているのは、集約ルートの範囲に含まれているが実際には存在しないネットワーク宛てのパケットのループを防止するためです。

図 networkコマンドによる集約ルートの設定
図 networkコマンドによる集約ルートの設定

networkコマンドによる集約の設定の問題点

このようにnetworkコマンドでも集約ルートの設定はできるのですが、問題点があります。

  • 常に集約ルートを送信する
  • 集約ルートのアトリビュートを柔軟に設定できない

null0を出力インタフェースとするスタティックルートは常にルーティングテーブルに存在します。そのため、たとえ集約前のネットワークがすべてダウンしていたとしても、networkコマンドが常に有効になりネイバーに集約ルートが送信されることになります。その結果、ダウンしているネットワークへのパケットがルーティングされ、ネットワークリソースが無駄になってしまう可能性があります。

また、networkコマンドで集約ルートを生成しているので、アトリビュートも普通にnetworkコマンドで生成したルートと同じ、柔軟な設定ができません。

図 networkコマンドによる集約の問題点
図 networkコマンドによる集約の問題点

一方、aggregate-addressコマンドで集約ルートを生成すれば、集約前ルートがすべてダウンしてしまうと集約ルートの送信を止めます。また、コマンドのオプションの設定によって、集約前ルートに付加されているアトリビュートを集約ルートに継承することもできます。

関連記事

「ネットワークのおべんきょしませんか?」内の記事を検索

BGPの仕組み