概要

BGPルートをアドバタイズするときに、BGPテーブル上に特定のBGPルートがある or ないという条件をつけることができます。BGPルートの条件付きアドバタイズについて解説します。

BGPルートの条件付きアドバタイズとは

BGPでは、特定のルート情報がBGPテーブルにあるorないという条件にしたがって、ルートをアドバタイズすることができます。これをルートの条件付きアドバタイズと呼んでいます。

図 図 条件付きアドバタイズの概要

BGPルートの条件付きアドバタイズの設定

条件付きアドバタイズには、neighbor advertise-mapコマンドを使います。コマンドの構文は次の通りです。

BGPルート 条件付きアドバタイズ

(config)#router bgp <AS>
(config-router)#neighbor <ip-address> advertise-map <route-map-name> {exist-map <route-map-name>|non-exist-map <route-map-name>}

<AS>:AS番号
<ip-address>:ネイバーのIPアドレス
advertise-map <route-map-name>:条件を満足したときにアドバタイズするルートの指定をルートマップで行います。
exist-map <route-map-name>:ルートマップで指定したルートがBGPテーブル存在すれば条件を満足。
non-exist-map <route-map-name>:ルートマップで指定したルートがBGPテーブルに存在しなければ条件を満足。

条件付きアドバタイズの動作は、まずexist-mapまたはnon-exist-mapでBGPテーブル上のルートをトラッキングして、条件を満足するかどうかを確認します。条件を満足すれば、advertise-mapで指定したルートがネイバーにアドバタイズされることになります。

図 条件付きアドバタイズの動作
図 条件付きアドバタイズの動作

BGPルートの条件付きアドバタイズの設定例(neighbor advertise-map non-exist-map)

次のネットワーク構成で条件付きアドバタイズの動作を確認します。

図 条件付きアドバタイズ 設定例
図 条件付きアドバタイズ 設定例

R1で100.1.1.0/24がないときに、R3へ199.1.1.0/24を送信するように条件付きアドバタイズの設定を行います。「条件となるBGPルートがない」ことからnon-exist-mapを利用します。R1では、次のような設定になります。

R1 条件付きアドバタイズの設定

access-list 3 permit 199.1.1.0
access-list 4 permit 100.1.1.0
!
route-map ADV-MAP permit 10
 match ip address 3
!
route-map NON-EXIST permit 10
 match ip address 4
!
router bgp 100
 network 199.1.1.0
 neighbor 3.3.3.3 advertise-map ADV-MAP non-exist-map NON-EXIST

標準ACL4で条件となるBGPルート「100.1.1.0/24」を指定しています。このACL4をルートマップ「NON-EXIT」で参照しています。また、条件付きアドバタイズの対象となるBGPルート「199.1.1.0/24」を標準ACL5で指定しています。最終的にはルートマップ「ADV-MAP」でACL5を参照します。

ネイバー3.3.3.3に対して、neighbor advertise-map non-exist-mapのコマンドで ADV-MAPとNON-EXITを関連付ければOKです。

R1のBGPテーブルおよびR3へ送信しているルートを確認します。

R1 BGPテーブル、R3へ送信しているルート

R1#show ip bgp
BGP table version is 26, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.1.0/24     172.16.1.11              0             0 1 i
*> 100.1.2.0/24     172.16.1.11              0             0 1 i
*> 100.1.3.0/24     172.16.1.11              0             0 1 i
*> 199.1.1.0        0.0.0.0                  0         32768 i
R1#show ip bgp neighbors 3.3.3.3 advertised-routes
BGP table version is 26, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.1.0/24     172.16.1.11              0             0 1 i
*> 100.1.2.0/24     172.16.1.11              0             0 1 i
*> 100.1.3.0/24     172.16.1.11              0             0 1 i

BGPテーブルには、networkコマンドによって199.1.1.0/24が載せられています。ですが、BGPテーブルに100.1.1.0/24が存在しているために、R3へ199.1.1.0/24はアドバタイズされていません。

ここでISP1から100.1.1.0/24の送信を止めます。すると、R1のBGPテーブルから100.1.1.0/24が削除され、non-exist-mapの条件が満足されるようになります。そして、R1はadvertise-mapで指定した199.1.1.0/24のルートをR3へ199.1.1.0/24のルートを送信するようになります。

R1 BGPテーブル、R3へ送信しているルート(non-exit-mapの条件を満足)

R1#show ip bgp
BGP table version is 31, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.2.0/24     172.16.1.11              0             0 1 i
*> 100.1.3.0/24     172.16.1.11              0             0 1 i
*> 199.1.1.0        0.0.0.0                  0         32768 i
R1#show ip bgp neighbors 3.3.3.3 advertised-routes
BGP table version is 32, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 100.1.2.0/24     172.16.1.11              0             0 1 i
*> 100.1.3.0/24     172.16.1.11              0             0 1 i
*> 199.1.1.0        0.0.0.0                  0         32768 i

まとめ

ポイント

  • BGPルートのアドバタイズをするときに、BGPテーブル上に特定のBGPルートがある or ないという条件をつけることができます。
  • BGPルートの条件付きアドバタイズのコマンドは次の通りです。
    • (config)#router bgp <AS>
      (config-router)#neighbor <ip-address> advertise-map <route-map-name> {exist-map <route-map-name>|non-exist-map <route-map-name>}
    • advertise-mapでルートマップを参照して、条件付きでアドバタイズするBGPルートを指定します。
    • exist-mapまたはnon-exist-mapでルートマップを参照して、条件となるBGPルートを指定します。

BGPの仕組み