aggregate-addressのオプション attribute-map

CiscoルータでBGPルートを集約するaggregate-addressコマンドにはたくさんのオプションがあります。オプションは、以下の2つに分類できます。

  • 集約前のルートをどう扱うか
  • 集約ルートのアトリビュートをどうするか

attribute-mapは、「集約ルートのアトリビュートをどうするか」についてのオプションです。attribute-mapによって集約ルートにアトリビュートを付加することができます。

サンプルトポロジと事前設定

次のサンプルトポロジのR1でaggregate-addressのattribute-mapオプションの動作について考えます。

図 attribute-mapのサンプルトポロジ
図 attribute-mapのサンプルトポロジ

aggregate-addressを設定する前のR1およびR2のBGPに関する設定は次のとおりです。

R1

interface Loopback0
 ip address 100.1.2.1 255.255.255.0 secondary
 ip address 100.1.3.1 255.255.255.0 secondary
 ip address 100.1.4.1 255.255.255.0 secondary
 ip address 100.1.1.1 255.255.255.0
!
router bgp 1
 network 100.1.1.0 mask 255.255.255.0
 network 100.1.2.0 mask 255.255.255.0
 network 100.1.3.0 mask 255.255.255.0
 network 100.1.4.0 mask 255.255.255.0
 neighbor 12.12.12.2 remote-as 2
 neighbor 12.12.12.2 send-community
 ip bgp-community new-format

R1では、R2とEBGPネイバーを確立して100.1.1.0/24~100.1.4.0/24のルートをnetworkコマンドでアドバタイズしています。

R2

router bgp 2
 neighbor 12.12.12.1 remote-as 1
 neighbor 12.12.12.1 send-community
 ip bgp-community new-format

R2は、単純にR1とのEBGPネイバーを設定しているだけです。

また、COMMUNITYアトリビュートを扱うので、R1とR2に以下のコマンドの設定も行っています。

  • neighbor send-community
  • ip bgp-community new-format

neighbor send-communityコマンドで、BGPルートに付加されているCOMMUNITYアトリビュートを削除しないようにしています。ip bgp-community new-formatコマンドは、COMMUNITYの表記をわかりやすくするための設定です。

R1で集約ルートのアドバタイズ

R1で100.1.1.0/24~100.1.4.0/24を集約したルート情報100.1.0.0/16を生成します。

R1 集約ルートの生成

router bgp 1
 aggregate-address 100.1.0.0 255.255.0.0

この設定により、集約ルート100.1.0.0/16が生成されてBGPテーブルに載り、R2へアドバタイズされます。このときの集約ルート100.1.0.0/16のアトリビュートを確認します。そのためにR1でshow ip bgp 100.1.0.0の結果を見ます。

R1 集約ルートのアトリビュートの確認

R1#sh ip bgp 100.1.0.0
BGP routing table entry for 100.1.0.0/16, version 6
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
12.12.12.2
Local, (aggregated by 1 100.1.1.1)
0.0.0.0 from 0.0.0.0 (100.1.1.1)
Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-aggregate, best

集約ルートのアトリビュートは、atomic-aggregateやaggregatorがつけられていますが、それ以外のOriginやLocal_preferenceなどのアトリビュートはnetworkコマンドで生成したルートと同じです。

集約ルートにアトリビュートを付加するには、アドバタイズするときにアウトバウンドでルートマップを適用してもできます。が、attribute-mapを利用すると、集約ルートを生成したときにアトリビュートを付加することができます。

attribute-mapによる集約ルートへのアトリビュート付加

attibute-mapを使って、集約ルートにCOMMUNITYを付加してみましょう。attribute-mapのあとには、ルートマップを指定します。このルートマップはすごくシンプルに考えてください。attribute-mapのあとのルートマップにはmatch条件は要りません。aggregate-addressコマンドで生成した集約ルートが対象になるので、match条件を指定する必要はありません。setコマンドだけで集約ルートに付加したいアトリビュートを設定すればいいだけです。

では、例として集約ルートにCOMMUNITY 1:1000をつけるためのattribute-mapの設定を考えます。まず、COMMUNITYを付加するルートマップ(AGG_COM)を次のように作ります。

R1 アトリビュートマップ用のルートマップの設定

route-map AGG_COM permit 10
 set community 1:1000

そして、このルートマップをaggregate-addressのattribute-mapオプションで適用します。

R1 ルートマップを適用

router bgp 1
 aggregate-ddress 100.1.0.0 255.255.0.0 attribute-map AGG_COM

これによって、集約ルート100.1.0.0/16にCOMMUNITY 1:1000が付加されます。そのことを確認しましょう。R1のBGPテーブルを確認します。

R1 BGPテーブルの確認

R1#sh ip bgp 100.1.0.0
BGP routing table entry for 100.1.0.0/16, version 7
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Advertised to non peer-group peers:
12.12.12.2
Local, (aggregated by 1 100.1.1.1)
0.0.0.0 from 0.0.0.0 (100.1.1.1)
Origin IGP, localpref 100, weight 32768, valid, aggregated, local, atomic-aggregate, best
Community: 1:1000

BGPテーブルの集約ルート100.1.0.0/16の詳細な情報を確認すると、最後の行でCOMMUNITY 1:1000が付加されていることがわかります。

図 attribute-mapで集約ルートにCOMMUNITYを付加
図 attribute-mapで集約ルートにCOMMUNITYを付加

このルートを受信するR2側でも見てみましょう。

R2 BGPテーブルの確認

R2#sh ip bgp 100.1.0.0
BGP routing table entry for 100.1.0.0/16, version 7
Paths: (1 available, best #1, table Default-IP-Routing-Table)
Flag: 0x880
Not advertised to any peer
1, (aggregated by 1 100.1.1.1)
12.12.12.1 from 12.12.12.1 (100.1.1.1)
Origin IGP, metric 0, localpref 100, valid, external, atomic-aggregate, best
Community: 1:1000

R2でもCOMMUNITY 1:1000が付加されている集約ルート100.1.0.0/16を受信していることが確認できます。

ただし、AS-pathプリペンドはattribute-mapではできないようです。

attribute-mapのまとめ

  • 「集約ルートのアトリビュートをどうするか」のオプション
  • 集約ルートにアトリビュートを付加するために利用する
  • attribute-mapのあとにルートマップを指定する
  • ルートマップはmatch条件なしで付加したいアトリビュートをsetで設定する